From 3955b55edd6035c7eded938ccd1cf3676098edbd Mon Sep 17 00:00:00 2001 From: hemm00 Date: Wed, 1 Apr 2026 19:16:04 +0100 Subject: [PATCH] Update Akeneo PIM API.postman_collection.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Comprehensive quality pass on the Akeneo PIM API Postman collection — fixing functional bugs, aligning with official documentation, and restructuring for discoverability. ## Changes ### Bug fixes (functional) - **Auth variables**: `{{basicAuthUsername}}`/`{{basicAuthPassword}}` → `{{clientId}}`/`{{secret}}` to match collection-level variable definitions - **Prerequest script**: `pm.environment.get/set` → `pm.collectionVariables.get/set` so auto-auth works without a separate Postman environment - **Hardcoded credentials**: Replaced `"admin"/"admin"` in auth body with `{{username}}`/`{{password}}` variables - **Product media file upload**: Fixed formdata `file` field from `type: "text"` → `type: "file"` - **Submit draft body**: Made all 3 "Submit a draft for approval" requests (Product identifier, UUID, Product model) consistent — body, headers, and structure now match - **Typo**: `"occured"` → `"occurred"` in prerequest script error message ### Response example corrections - 6 endpoints with empty-body 200 responses corrected to **204 No Content** (Extensions update, job launches, mapping schema update, workflow task update) — confirmed against docs - Added **Location header** to 7 `201 Created` responses that were missing it (catalogs, extensions, draft submissions, data architect agent) ### Directory restructure (docs-aligned) Reorganized from a flat list of 38 folders into 9 top-level groups matching the [official API reference](https://api.akeneo.com/api-reference-index.html): | Group | Subfolders | |---|---| | Products | Product [uuid], Product [identifier], Product model, Product media file | | Jobs | Jobs | | Catalog structure | Family, Family variant, Attribute, Attribute option, Attribute group, Association type, Category | | Utilities | Authentication, Overview, System, Rule definition, Permissions, Extensions, Data Architect Agent | | Target market settings | Channel, Locale, Currency, Measurement family | | Reference entities | Reference entity, Reference entity attribute, Reference entity attribute option, Reference entity record, Reference entity media file | | Asset Manager | Asset family, Asset attribute, Asset attribute option, Asset media file, Asset | | Catalogs for Apps | Catalogs, Catalog products, Mapping schema for products | | Workflows | Workflows, Workflow executions, Workflow tasks | ### What was intentionally NOT changed - Endpoint names left as-is (verified against docs — naming varies by section intentionally) - HTTP methods left as-is (e.g. "Update a UI extension with file upload" is POST per docs) - All 150 requests and their URLs, query params, test scripts, and JSON schemas preserved --- .../Akeneo PIM API.postman_collection.json | 20857 +++++++++++----- 1 file changed, 14817 insertions(+), 6040 deletions(-) diff --git a/content/files/Akeneo PIM API.postman_collection.json b/content/files/Akeneo PIM API.postman_collection.json index 492f05d43..e27542845 100644 --- a/content/files/Akeneo PIM API.postman_collection.json +++ b/content/files/Akeneo PIM API.postman_collection.json @@ -1,6042 +1,14819 @@ { - "info": { - "name": "Official Akeneo PIM REST API Serenity", - "description": "The Akeneo REST API brought to you!\n\nFind out how this Postman collection works by visiting https://api.akeneo.com", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - }, - "item": [ - { - "name": "Catalogs for Apps", - "item": [ - { - "name": "catalog", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{appToken}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/catalogs/6c046434-4501-4f85-94b7-d0194b3d9fb1", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "catalogs", - "6c046434-4501-4f85-94b7-d0194b3d9fb1" - ] - }, - "description": "Assuming that the given uuid is the unique identifier of an existing catalog" - }, - "response": [] - }, - { - "name": "catalogs", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{appToken}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/catalogs", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "catalogs" - ] - } - }, - "response": [] - }, - { - "name": "catalog", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{appToken}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"name\": \"Store US\"\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/catalogs", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "catalogs" - ] - } - }, - "response": [] - }, - { - "name": "catalog", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{appToken}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"name\": \"New Store US\"\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/catalogs/6c046434-4501-4f85-94b7-d0194b3d9fb1", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "catalogs", - "6c046434-4501-4f85-94b7-d0194b3d9fb1" - ] - } - }, - "response": [] - }, - { - "name": "catalog", - "request": { - "method": "DELETE", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{appToken}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/catalogs/6c046434-4501-4f85-94b7-d0194b3d9fb1", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "catalogs", - "6c046434-4501-4f85-94b7-d0194b3d9fb1" - ] - } - }, - "response": [] - }, - { - "name": "catalog product uuids", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{appToken}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/catalogs/6c046434-4501-4f85-94b7-d0194b3d9fb1/product-uuids", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "catalogs", - "6c046434-4501-4f85-94b7-d0194b3d9fb1", - "product-uuids" - ] - }, - "description": "Assuming that the given uuid is the unique identifier of an existing catalog" - }, - "response": [] - } - ], - "description": "App catalog\" folder: \"Make sure the variable \"appToken\" is completed before calling the API with Catalog endpoints." - }, - { - "name": "Association type (>= v2)", - "item": [ - { - "name": "association type (>= v2)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/association-types/upsell", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "association-types", - "upsell" - ] - }, - "description": "Assuming that the given code is the code of an existing association type" - }, - "response": [] - }, - { - "name": "association types (>= v2)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/association-types", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "association-types" - ] - } - }, - "response": [] - }, - { - "name": "association type (>= v2)", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"new_association_type\",\n \"labels\": {\n \"de_DE\": \"new association type label DE\",\n \"en_US\": \"new association type label US\",\n \"fr_FR\": \"new association type label FR\"\n },\n \"is_quantified\": false,\n \"is_two_way\": false\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/association-types", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "association-types" - ] - }, - "description": "Assuming that there is no \"new_association_type\" already existing" - }, - "response": [] - }, - { - "name": "association type (>= v2)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"UPSELL\",\n \"labels\": {\n \"en_US\": \"Upsell\",\n \"fr_FR\": \"Vente incitative\"\n },\n \"is_quantified\": false,\n \"is_two_way\": false\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/association-types/upsell", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "association-types", - "upsell" - ] - } - }, - "response": [] - }, - { - "name": "association types (>= v2)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\": \"new_association_type\"}\n{\"code\": \"upsell\", \"labels\":{\"en_US\":\"new association type US label\"}}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/association-types", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "association-types" - ] - }, - "description": "\n" - }, - "response": [] - } - ] - }, - { - "name": "Attribute", - "item": [ - { - "name": "attribute", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/attributes/auto_exposure", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attributes", - "auto_exposure" - ], - "query": [ - { - "key": "with_table_select_options", - "value": "false", - "description": "(boolean ) • Return the options of 'select' column types (of a table attribute) in the response. (Only available since the 7.0 version) ", - "disabled": true - } - ] - }, - "description": "Assuming that the given code is the code of an existing attribute" - }, - "response": [] - }, - { - "name": "attributes", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/attributes", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attributes" - ], - "query": [ - { - "key": "search", - "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2020-07-04T10:00:00Z\"}]}", - "description": "Get the attributes that have been updated since July 4th, 2020 at 10 am (UTC), you can use the following URL.", - "disabled": true - }, - { - "key": "search", - "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"code1\",\"code2\"]}]}", - "description": "Get the attributes that code is in the given list", - "disabled": true - }, - { - "key": "search", - "value": "{\"type\":[{\"operator\":\"IN\",\"value\":[\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\"]}]}", - "description": "Get the attributes of types pim_catalog_simpleselect and pim_catalog_multiselect, you can use the following URL.", - "disabled": true - }, - { - "key": "search", - "value": "{\"is_main_identifier\":[{\"operator\":\"=\",\"value\":true}]}", - "description": "Get the main identifier attribute.", - "disabled": true - }, - { - "key": "page", - "value": "1", - "description": "(integer , 1 by default ) • Number of the page to retrieve when using the `page` pagination method type.", - "disabled": true - }, - { - "key": "limit", - "value": "10", - "description": "(integer , 10 by default ) • Number of results by page.", - "disabled": true - }, - { - "key": "with_count", - "value": "false", - "description": "(boolean ) • Return the count of items in the response. Be carefull with that, on a big catalog, it can decrease performance in a significative way.", - "disabled": true - }, - { - "key": "with_table_select_options", - "value": "false", - "description": "(boolean ) • Return the options of 'select' column types (of a table attribute) in the response. (Only available since the 7.0 version)", - "disabled": true - } - ] - } - }, - "response": [] - }, - { - "name": "attribute", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"new_attribute\",\n \"type\": \"pim_catalog_boolean\",\n \"group\": \"technical\",\n \"unique\": false,\n \"useable_as_grid_filter\": true,\n \"allowed_extensions\": [],\n \"metric_family\": null,\n \"default_metric_unit\": null,\n \"reference_data_name\": null,\n \"available_locales\": [],\n \"max_characters\": null,\n \"validation_rule\": null,\n \"validation_regexp\": null,\n \"wysiwyg_enabled\": null,\n \"number_min\": null,\n \"number_max\": null,\n \"decimals_allowed\": null,\n \"negative_allowed\": null,\n \"date_min\": null,\n \"date_max\": null,\n \"max_file_size\": null,\n \"minimum_input_length\": null,\n \"sort_order\": 39,\n \"localizable\": false,\n \"scopable\": false,\n \"labels\": {\n \"de_DE\": \"new attribute label DE\",\n \"en_US\": \"new attribute label US\",\n \"fr_FR\": \"new attribute label FR\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/attributes", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attributes" - ] - }, - "description": "Assuming that there is no \"new_attribute\" already existing" - }, - "response": [] - }, - { - "name": "attribute", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"auto_exposure\",\n \"type\": \"pim_catalog_boolean\",\n \"group\": \"technical\",\n \"unique\": false,\n \"useable_as_grid_filter\": true,\n \"allowed_extensions\": [],\n \"metric_family\": null,\n \"default_metric_unit\": null,\n \"reference_data_name\": null,\n \"available_locales\": [],\n \"max_characters\": null,\n \"validation_rule\": null,\n \"validation_regexp\": null,\n \"wysiwyg_enabled\": null,\n \"number_min\": null,\n \"number_max\": null,\n \"decimals_allowed\": null,\n \"negative_allowed\": null,\n \"date_min\": null,\n \"date_max\": null,\n \"max_file_size\": null,\n \"minimum_input_length\": null,\n \"sort_order\": 39,\n \"localizable\": false,\n \"scopable\": false,\n \"labels\": {\n \"de_DE\": \"Auto exposure\",\n \"en_US\": \"Auto exposure\",\n \"fr_FR\": \"Auto exposure\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/attributes/auto_exposure", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attributes", - "auto_exposure" - ] - } - }, - "response": [] - }, - { - "name": "attributes", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\": \"new_attribute\", \"type\":\"pim_catalog_boolean\", \"group\":\"other\"}\n{\"code\": \"auto_exposure\", \"labels\":{\"en_US\":\"Auto exposure\"}}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/attributes", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attributes" - ] - }, - "description": "\n" - }, - "response": [] - } - ] - }, - { - "name": "Attribute option", - "item": [ - { - "name": "attribute option", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/attributes/main_color/options/white", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attributes", - "main_color", - "options", - "white" - ] - }, - "description": "Assuming that the given codes are respectively the code of an existing attribute and an existing option of this attribute" - }, - "response": [] - }, - { - "name": "attribute options", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/attributes/main_color/options", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attributes", - "main_color", - "options" - ] - } - }, - "response": [] - }, - { - "name": "attribute option", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\":\"yellow\",\n \"attribute\": \"main_color\",\n \"sort_order\": 10,\n \"labels\": {\n \"de_DE\": \"Gelb\",\n \"en_US\": \"Yellow\",\n \"fr_FR\": \"Jaune\"\n }\n}\n" - }, - "url": { - "raw": "{{url}}/api/rest/v1/attributes/main_color/options", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attributes", - "main_color", - "options" - ] - }, - "description": "Assuming that there is no \"yellow\" option already existing for the given attribute" - }, - "response": [] - }, - { - "name": "attribute option", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"white\",\n \"attribute\": \"main_color\",\n \"sort_order\": 1,\n \"labels\": {\n \"de_DE\": \"Weiß\",\n \"en_US\": \"White\",\n \"fr_FR\": \"Blanc\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/attributes/main_color/options/white", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attributes", - "main_color", - "options", - "white" - ] - }, - "description": "Assuming that the given code is the code of an existing attribute" - }, - "response": [] - }, - { - "name": "attribute options (2.1 only)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\": \"new_attribute_option\", \"attribute\":\"main_color\", \"labels\": { \"de_DE\": \"new attribute option label DE\"}}\n{\"code\": \"red\", \"labels\": { \"fr_FR\": \"Rouge\"}}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/attributes/main_color/options", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attributes", - "main_color", - "options" - ] - }, - "description": "Assuming that the given code is the code of an existing attribute" - }, - "response": [] - } - ] - }, - { - "name": "Attribute groups (>= v2)", - "item": [ - { - "name": "attribute group (>= v2)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/attribute-groups/technical", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attribute-groups", - "technical" - ] - }, - "description": "Assuming that the given code is the code of an existing attribute group" - }, - "response": [] - }, - { - "name": "attribute groups (>= v2)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/attribute-groups", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attribute-groups" - ], - "query": [ - { - "key": "search", - "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"marketing\",\"technical\"]}]}", - "description": "Only returns attribute groups that are in the list.", - "disabled": true - }, - { - "key": "search", - "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2020-07-04T10:00:00Z\"}]}", - "description": "Only returns attribute groups that were updated after the given day and hour.", - "disabled": true - }, - { - "key": "page", - "value": "2", - "description": "(integer , 1 by default ) • Number of the page to retrieve when using the `page` pagination method type. Should never be set manually.", - "disabled": true - }, - { - "key": "limit", - "value": "20", - "description": "(integer , 10 by default ) • Number of results by page.", - "disabled": true - }, - { - "key": "with_count", - "value": "true", - "description": "(boolean ) • Return the count of items in the response. Be carefull with that, on a big catalog, it can decrease performance in a significative way.", - "disabled": true - } - ] - } - }, - "response": [] - }, - { - "name": "attribute group (>= v2)", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"new_attribute_group\",\n \"sort_order\": 10,\n \"attributes\": [\n \"main_color\",\n \"secondary_color\"\n ],\n \"labels\": {\n \"de_DE\": \"new attribute group label DE\",\n \"en_US\": \"new attribute group label US\",\n \"fr_FR\": \"new attribute group label FR\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/attribute-groups", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attribute-groups" - ] - }, - "description": "Assuming that there is no \"new_attribute_group\" already existing" - }, - "response": [] - }, - { - "name": "attribute group (>= v2)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"technical\",\n \"sort_order\": 2,\n \"attributes\": [\n \"weight\",\n \"maximum_scan_size\",\n \"color_scanning\",\n \"power_requirements\",\n \"maximum_print_size\",\n \"sensor_type\",\n \"total_megapixels\",\n \"optical_zoom\",\n \"image_stabilizer\",\n \"camera_type\",\n \"thd\",\n \"snr\",\n \"headphone_connectivity\",\n \"maximum_video_resolution\",\n \"maximum_frame_rate\",\n \"multifunctional_functions\",\n \"display_srgb\",\n \"display_color\",\n \"display_diagonal\",\n \"viewing_area\",\n \"camera_brand\",\n \"camera_model_name\",\n \"short_description\",\n \"max_image_resolution\",\n \"image_resolutions\",\n \"supported_aspect_ratios\",\n \"supported_image_format\",\n \"lens_mount_interface\",\n \"focus\",\n \"focus_adjustement\",\n \"auto_focus_modes\",\n \"auto_focus_points\",\n \"auto_focus_lock\",\n \"auto_focus_assist_beam\",\n \"iso_sensitivity\",\n \"light_exposure_modes\",\n \"light_exposure_corrections\",\n \"light_metering\",\n \"auto_exposure\",\n \"iso_sensitivity_max\",\n \"iso_sensitivity_min\"\n ],\n \"labels\": {\n \"en_US\": \"Technical\",\n \"fr_FR\": \"Technique\",\n \"de_DE\": \"Technische\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/attribute-groups/technical", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attribute-groups", - "technical" - ] - } - }, - "response": [] - }, - { - "name": "attribute groups (>= v2)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\": \"new_attribute_group\"}\n{\"code\": \"technical\", \"labels\":{\"en_US\":\"new attribute group US label\"}}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/attribute-groups", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "attribute-groups" - ] - }, - "description": "\n" - }, - "response": [] - } - ] - }, - { - "name": "Category", - "item": [ - { - "name": "category", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/categories/master", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "categories", - "master" - ], - "query": [ - { - "key": "with_position", - "value": "false", - "description": "Return information about category position into its category tree (Only available since the 7.0 version)", - "disabled": true - } - ] - }, - "description": "Assuming that the given code is the code of an existing category" - }, - "response": [] - }, - { - "name": "categories", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/categories", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "categories" - ], - "query": [ - { - "key": "search", - "value": "{\"is_root\":[{\"operator\":\"=\",\"value\":true}]}", - "description": "Get only root categories", - "disabled": true - }, - { - "key": "search", - "value": "{\"parent\":[{\"operator\":\"=\",\"value\":\"categoryA\"}]}", - "description": "Get the child categories of the parent category categoryA, you can use the following URL.", - "disabled": true - }, - { - "key": "search", - "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"category_code1\",\"category_code2\"]}]}", - "description": "Get only categories that are in the list", - "disabled": true - }, - { - "key": "search", - "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2021-05-17T10:00:00Z\"}]}", - "description": "Get the categories that have been updated since May 17th, 2021 at 10 am (UTC), you can use the following URL.", - "disabled": true - }, - { - "key": "page", - "value": "1", - "description": "(integer , 1 by default ) • Number of the page to retrieve when using the `page` pagination method type.", - "disabled": true - }, - { - "key": "limit", - "value": "10", - "description": "(integer , 10 by default ) • Number of results by page.", - "disabled": true - }, - { - "key": "with_count", - "value": "false", - "description": "(boolean ) • Return the count of items in the response. Be carefull with that, on a big catalog, it can decrease performance in a significative way.", - "disabled": true - }, - { - "key": "with_position", - "value": "false", - "description": "(boolean ) • Return information about category position into its category tree (Only available since the 7.0 version)", - "disabled": true - } - ] - } - }, - "response": [] - }, - { - "name": "category", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\":\"new_category\",\n \"parent\":\"master\",\n \"labels\": {\n \"de_DE\":\"new category label DE\",\n \"en_US\":\"new category label US\",\n \"fr_FR\":\"new category label FR\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/categories", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "categories" - ] - }, - "description": "Assuming that there is no \"new_category\" already existing" - }, - "response": [] - }, - { - "name": "category", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"audio_video\",\n \"parent\": \"master\",\n \"labels\": {\n \"en_US\": \"new Audio and Video label\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/categories/audio_video", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "categories", - "audio_video" - ] - } - }, - "response": [] - }, - { - "name": "categories", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\": \"new_category\", \"parent\": \"master\"}\n{\"code\": \"new_category_tree\"}\n{\"code\": \"master\", \"labels\":{\"en_US\":\"Main catalog\"}}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/categories", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "categories" - ] - }, - "description": "\n" - }, - "response": [] - } - ] - }, - { - "name": "Channel", - "item": [ - { - "name": "channel", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/channels/ecommerce", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "channels", - "ecommerce" - ] - }, - "description": "Assuming that the given code is the code of an existing channel" - }, - "response": [] - }, - { - "name": "channels", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/channels", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "channels" - ] - } - }, - "response": [] - }, - { - "name": "channel (2.x only)", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"new_channel\",\n \"currencies\": [\n \"USD\",\n \"EUR\"\n ],\n \"locales\": [\n \"de_DE\",\n \"en_US\",\n \"fr_FR\"\n ],\n \"category_tree\": \"master\",\n \"conversion_units\":{\n \"weight\": \"GRAM\"\n },\n \"labels\": {\n \"en_US\": \"new category label US\",\n \"de_DE\": \"new category label DE\",\n \"fr_FR\": \"new category label FR\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/channels", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "channels" - ] - }, - "description": "Assuming that there is no \"new_channel\" already existing" - }, - "response": [] - }, - { - "name": "channel (2.x only)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"my_new_channel_3\",\n \"currencies\": [\n \"USD\",\n \"EUR\"\n ],\n \"yo\":\"\",\n \"locales\": [\n \"de_DE\",\n \"en_US\",\n \"fr_FR\"\n ],\n \"category_tree\": \"master\",\n \"conversion_units\":{\n \"weight\": \"GRAM\"\n },\n \"labels\": {\n \"en_US\": \"new category label US\",\n \"de_DE\": \"new category label DE\",\n \"fr_FR\": \"new category label FR\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/channels/my_new_channel_3", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "channels", - "my_new_channel_3" - ] - } - }, - "response": [] - }, - { - "name": "channels (2.x only)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\": \"new_channel\",\"category_tree\":\"master\",\"locales\":[\"de_DE\"], \"currencies\":[\"EUR\",\"USD\"], \"labels\":{\"fr_FR\": \"Mon canal\"}, \"conversion_units\":{\"weight\":\"GRAM\"}}\n{\"code\": \"new_channel_2\",\"category_tree\":\"master\",\"locales\":[\"de_DE\", \"en_US\"], \"currencies\":[\"USD\"]}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/channels", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "channels" - ] - }, - "description": "\n" - }, - "response": [] - } - ] - }, - { - "name": "Currency (>= v2)", - "item": [ - { - "name": "currency (>= v2)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/currencies/USD", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "currencies", - "USD" - ] - }, - "description": "Assuming that the given code is the code of an existing currency" - }, - "response": [] - }, - { - "name": "currencies (>= v2)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/currencies", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "currencies" - ], - "query": [ - { - "key": "search", - "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":true}]}", - "description": "Get enabled currencies", - "disabled": true - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Family", - "item": [ - { - "name": "family", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/families/camcorders", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families", - "camcorders" - ] - }, - "description": "Assuming that the given code is the code of an existing family" - }, - "response": [] - }, - { - "name": "families", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/families", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families" - ], - "query": [ - { - "key": "search", - "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"family_code1\",\"family_code2\"]}]}", - "description": "Only returns families that are in the list.", - "disabled": true - }, - { - "key": "search", - "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2020-07-04T10:00:00Z\"}]}", - "description": "Only returns families that were updated after the given day and hour.", - "disabled": true - }, - { - "key": "search", - "value": "{\"has_products\":[{\"operator\":\"=\",\"value\":true}]}", - "description": "When true, only returns families with at least one product (true) or families with no products (false).", - "disabled": true - }, - { - "key": "page", - "value": "2", - "description": "(integer , 1 by default ) • Number of the page to retrieve when using the `page` pagination method type. Should never be set manually.", - "disabled": true - }, - { - "key": "limit", - "value": "20", - "description": "(integer , 10 by default ) • Number of results by page.", - "disabled": true - }, - { - "key": "with_count", - "value": "true", - "description": "(boolean ) • Return the count of items in the response. Be carefull with that, on a big catalog, it can decrease performance in a significative way.", - "disabled": true - } - ] - } - }, - "response": [] - }, - { - "name": "family", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"new_family\",\n \"attributes\": [\n \"container_material\",\n \"description\",\n \"main_color\",\n \"name\",\n \"picture\",\n \"price\",\n \"sku\"\n ],\n \"attribute_as_label\": \"name\",\n \"attribute_as_image\": \"picture\",\n \"attribute_requirements\": {\n \"ecommerce\": [\n \"container_material\",\n \"description\",\n \"main_color\",\n \"name\",\n \"price\",\n \"sku\"\n ],\n \"mobile\": [\n \"description\",\n \"main_color\",\n \"name\",\n \"price\",\n \"sku\"\n ],\n \"print\": [\n \"description\",\n \"name\",\n \"price\",\n \"sku\"\n ]\n },\n \"labels\": {\n \"de_DE\": \"new family label DE\",\n \"en_US\": \"new family label US\",\n \"fr_FR\": \"new family label FR\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/families", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families" - ] - }, - "description": "Assuming that there is no \"new_family\" already existing" - }, - "response": [] - }, - { - "name": "family", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"camcorders\",\n \"attribute_as_label\": \"sku\",\n \"labels\": {\n \"en_US\": \"new Camcorders label\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/families/camcorders", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families", - "camcorders" - ] - } - }, - "response": [] - }, - { - "name": "families", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\": \"new_family\", \"attribute_as_label\": \"name\", \"attributes\":[\"name\",\"picture\",\"price\",\"sku\"]}\n{\"code\": \"camcorders\", \"labels\":{\"de_DE\":\"\"}}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/families", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families" - ] - }, - "description": "\n" - }, - "response": [] - }, - { - "name": "family", - "request": { - "method": "DELETE", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/families/camcorders", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families", - "camcorders" - ] - }, - "description": "Delete family assuming that the given code is the code of an existing family" - }, - "response": [] - } - ] - }, - { - "name": "Family variant (>= v2)", - "item": [ - { - "name": "family variant (>= v2)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/families/clothing/variants/clothing_colorsize", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families", - "clothing", - "variants", - "clothing_colorsize" - ] - }, - "description": "Assuming that the given codes are respectively the code of an existing family and an existing family variant" - }, - "response": [] - }, - { - "name": "family variants (>= v2)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/families/clothing/variants", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families", - "clothing", - "variants" - ] - } - }, - "response": [] - }, - { - "name": "family variant (>= v2)", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"new_family_variant\",\n \"labels\": {\n \"de_DE\": \"new family variant label DE\",\n \"en_US\": \"new family variant label US\",\n \"fr_FR\": \"new family variant label FR\"\n },\n \"variant_attribute_sets\": [\n {\n \"level\": 1,\n \"axes\": [\n \"color\"\n ],\n \"attributes\": [\"composition\", \"material\", \"variant_name\", \"variant_image\"]\n },\n {\n \"level\": 2,\n \"axes\": [\n \"size\"\n ],\n \"attributes\": [\"ean\", \"sku\", \"weight\"]\n }\n ]\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/families/clothing/variants", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families", - "clothing", - "variants" - ] - }, - "description": "Assuming that the given code is the code of an existing family" - }, - "response": [] - }, - { - "name": "family variant (>= v2)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"clothing_colorsize\",\n \"labels\": {\n \"de_DE\": \"Kleidung nach Farbe/Größe\",\n \"en_US\": \"Clothing by color/size\",\n \"fr_FR\": \"Vêtements par couleur/taille\"\n },\n \"variant_attribute_sets\": [\n {\n \"level\": 1,\n \"axes\": [\n \"color\",\n \"size\"\n ],\n \"attributes\": [\n \"sku\",\n \"variation_name\",\n \"variation_image\",\n \"composition\",\n \"color\",\n \"size\",\n \"ean\"\n ]\n }\n ]\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/families/clothing/variants/clothing_colorsize", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families", - "clothing", - "variants", - "clothing_colorsize" - ] - }, - "description": "Assuming that the given codes are respectively the code of an existing family and an existing family variant" - }, - "response": [] - }, - { - "name": "family variants (>= v2)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\": \"new_family_variant\", \"labels\": { \"de_DE\": \"new family variant label DE\"}, \"variant_attribute_sets\": [{\"level\": 1, \"axes\": [\"color\"], \"attributes\": [\"composition\", \"material\"]}]}\n{\"code\": \"clothing_colorsize\", \"variant_attribute_sets\": [{\"level\": 1, \"axes\": [\"color\", \"size\"], \"attributes\": [\"sku\", \"composition\", \"color\", \"size\", \"ean\"]}]}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/families/clothing/variants", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "families", - "clothing", - "variants" - ] - }, - "description": "Assuming that the given code is the code of an existing family" - }, - "response": [] - } - ] - }, - { - "name": "Locale", - "item": [ - { - "name": "locale", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/locales/en_US", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "locales", - "en_US" - ] - }, - "description": "Assuming that the given code is the code of an existing locale" - }, - "response": [] - }, - { - "name": "locales", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/locales", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "locales" - ], - "query": [ - { - "key": "search", - "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":true}]}", - "description": "Get enabled locales", - "disabled": true - }, - { - "key": "page", - "value": "1", - "description": "(integer , 1 by default ) • Number of the page to retrieve when using the `page` pagination method type", - "disabled": true - }, - { - "key": "limit", - "value": "10", - "description": "(integer , 10 by default ) • Number of results by page, see Pagination section", - "disabled": true - }, - { - "key": "with_count", - "value": "false", - "description": "(boolean ) • Return the count of items in the response. Be carefull with that, on a big catalog, it can decrease performance in a significative way", - "disabled": true - } - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Reference entity (>= v3 and EE only)", - "item": [ - { - "name": "reference entity", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand" - ] - }, - "description": "Assuming that the given code is the code of an existing reference entity" - }, - "response": [] - }, - { - "name": "reference entities", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities" - ], - "query": [ - { - "key": "search_after", - "value": "maincolor", - "disabled": true - } - ] - } - }, - "response": [] - }, - { - "name": "reference entity", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"brand\",\n \"labels\": {\n \"en_US\": \"Brand\",\n \"fr_FR\": \"Marque\"\n },\n \"image\": \"0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png\"\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Reference entity attribute (>= v3 and EE only)", - "item": [ - { - "name": "reference entity attribute", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand/attributes/description", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand", - "attributes", - "description" - ] - }, - "description": "Assuming that the first given code is the code of an existing reference entity and the second given code is the code of an existing reference entity attribute" - }, - "response": [] - }, - { - "name": "reference entity attributes", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand/attributes", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand", - "attributes" - ] - }, - "description": "Assuming that the given code is the code of an existing reference entity" - }, - "response": [] - }, - { - "name": "reference entity attribute", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"salesarea\",\n \"labels\": {\n \"en_US\": \"Sales area\"\n },\n \"type\": \"single_option\",\n \"value_per_locale\": false,\n \"value_per_channel\": false,\n \"is_required_for_completeness\": true\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand/attributes/salesarea", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand", - "attributes", - "salesarea" - ] - }, - "description": "Assuming that the first given code is the code of an existing reference entity" - }, - "response": [] - } - ] - }, - { - "name": "Reference entity attribute option (>= v3 and EE only)", - "item": [ - { - "name": "reference entity attribute option", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand/attributes/nationality/options/french", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand", - "attributes", - "nationality", - "options", - "french" - ] - }, - "description": "Assuming that the first given code is the code of an existing reference entity, the second given code is the code of an existing reference entity attribute of type single or multiple options, and the third given code is the code of an existing option of this reference entity attribute" - }, - "response": [] - }, - { - "name": "reference entity attribute options", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand/attributes/nationality/options", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand", - "attributes", - "nationality", - "options" - ] - }, - "description": "Assuming that the given code is the code of an existing reference entity and the second given code is the code of an existing reference entity attribute" - }, - "response": [] - }, - { - "name": "reference entity attribute option", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"usa\",\n \"labels\": {\n \"en_US\": \"United States\",\n \"fr_FR\": \"Etats Unis\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand/attributes/salesarea/options/usa", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand", - "attributes", - "salesarea", - "options", - "usa" - ] - }, - "description": "Assuming that the first given code is the code of an existing reference entity and the second given code is the code of an existing attribute for this reference entity that is a single or multiple options attribute" - }, - "response": [] - } - ] - }, - { - "name": "Reference entity record (>= v3 and EE only)", - "item": [ - { - "name": "reference entity record", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand/records/kartell", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand", - "records", - "kartell" - ] - }, - "description": "Assuming that the first given code is the code of an existing reference entity and the second given code is the code of an existing reference entity record" - }, - "response": [] - }, - { - "name": "reference entity records", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand/records", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand", - "records" - ], - "query": [ - { - "key": "search", - "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"bangolufsen\",\"kartell\"]}]}", - "disabled": true - }, - { - "key": "search", - "value": "{\"complete\":{\"operator\":\"=\",\"value\":true,\"channel\":\"ecommerce\",\"locales\":[\"en_US\"]}}", - "disabled": true - }, - { - "key": "search", - "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2022-05-01T10:00:00Z\"}]}", - "disabled": true - }, - { - "key": "locales", - "value": "en_US,fr_FR", - "disabled": true - }, - { - "key": "channel", - "value": "ecommerce", - "disabled": true - }, - { - "key": "search_after", - "value": "absorb_atmosphere_2", - "disabled": true - } - ] - }, - "description": "Assuming that the given code is the code of an existing reference entity" - }, - "response": [] - }, - { - "name": "reference entity record", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"kartell\",\n \"values\": {\n \"label\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Kartell\"\n },\n {\n \"locale\": \"fr_FR\",\n \"channel\": null,\n \"data\": \"Kartell\"\n }\n ],\n \"nationality\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"Italy\"\n }\n ],\n \"founder\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"Philippe Starck\"\n }\n ],\n \"founded\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"1949\"\n }\n ],\n \"image\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"8/f/2/4/8f244c7911e1e70125e224f53273583a7b3a7883_kartell_products.jpg\",\n \"_links\": {\n \"download\": {\n \"href\": \"http://test-dev-feature-14.core.akeneo.com/api/rest/v1/reference-entities-media-files/8/f/2/4/8f244c7911e1e70125e224f53273583a7b3a7883_kartell_products.jpg\"\n }\n }\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"channel\": \"ecommerce\",\n \"data\": \"

‘’Kartell - The Culture of Plastics’’… In just over 50 years, this famous Italian company has revolutionised plastic, elevating it and propelling it into the refined world of luxury. Today, Kartell has more than a hundred showrooms all over the world and a good number of its creations have become cult pieces on display in the most prestigious museums. The famous Kartell Louis Ghost armchair has the most sales for armchairs in the world, with 1.5 million sales! Challenging the material, constantly researching new tactile, visual and aesthetic effects - Kartell faces every challenge! 

\\n\"\n },\n {\n \"locale\": \"fr_FR\",\n \"channel\": \"ecommerce\",\n \"data\": \"

Entreprise leader du design, fondée à Milan en 1949 par Giulio Castelli, Kartell est depuis près de 70 ans une des entreprises symbole de la conception Made in Italy. Une histoire pleine de succès racontée à travers un incroyable éventail de produits - meubles, accessoires de décoration, éclairage - devenus partie intégrante du paysage domestique, et même de véritables icônes du design contemporain.

\\n

Depuis 1988, Claudio Luti, l’héritier de l’«esprit Kartell», insuffle une prodigieuse dynamique à la marque. 

\\n\"\n }\n ]\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand/records/kartell", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand", - "records", - "kartell" - ] - }, - "description": "Assuming that the first given code is the code of an existing reference entity" - }, - "response": [] - }, - { - "name": "reference entity records", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "[\n {\n \"code\": \"kartell\",\n \"values\": {\n \"label\": [\n {\n \t\t\"locale\": \"en_US\",\n \t\t\"channel\": null,\n \t\t\"data\": \"Kartell\"\n },\n {\n \"locale\": \"fr_FR\",\n \"channel\": null,\n \"data\": \"Kartell\"\n }\n ],\n \"nationality\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"Italy\"\n }\n ],\n \"founder\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"Philippe Starck\"\n }\n ],\n \"founded\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"1949\"\n }\n ],\n \"image\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"8/f/2/4/8f244c7911e1e70125e224f53273583a7b3a7883_kartell_products.jpg\",\n \"_links\": {\n \"download\": {\n \"href\": \"http://test-dev-feature-14.core.akeneo.com/api/rest/v1/reference-entities-media-files/8/f/2/4/8f244c7911e1e70125e224f53273583a7b3a7883_kartell_products.jpg\"\n }\n }\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"channel\": \"ecommerce\",\n \"data\": \"

‘’Kartell - The Culture of Plastics’’… In just over 50 years, this famous Italian company has revolutionised plastic, elevating it and propelling it into the refined world of luxury. Today, Kartell has more than a hundred showrooms all over the world and a good number of its creations have become cult pieces on display in the most prestigious museums. The famous Kartell Louis Ghost armchair has the most sales for armchairs in the world, with 1.5 million sales! Challenging the material, constantly researching new tactile, visual and aesthetic effects - Kartell faces every challenge! 

\\n\"\n },\n {\n \"locale\": \"fr_FR\",\n \"channel\": \"ecommerce\",\n \"data\": \"

Entreprise leader du design, fondée à Milan en 1949 par Giulio Castelli, Kartell est depuis près de 70 ans une des entreprises symbole de la conception Made in Italy. Une histoire pleine de succès racontée à travers un incroyable éventail de produits - meubles, accessoires de décoration, éclairage - devenus partie intégrante du paysage domestique, et même de véritables icônes du design contemporain.

\\n

Depuis 1988, Claudio Luti, l’héritier de l’«esprit Kartell», insuffle une prodigieuse dynamique à la marque. 

\\n\"\n }\n ]\n }\n},\n {\n \"code\": \"ligneroset\",\n \"values\": {\n \"label\": [\n {\n \t\t\"locale\": \"en_US\",\n \t\t\"channel\": null,\n \t\t\"data\": \"Ligne Roset\"\n },\n {\n \"locale\": \"fr_FR\",\n \"channel\": null,\n \"data\": \"Ligne Roset\"\n }\n ],\n \"image\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"4/b/0/1/0cb0c0e115dedde78b8d1ad8343ec980cd5daa54_ligne_roset.jpg\",\n \"_links\": {\n \"download\": {\n \"href\": \"http://test-dev-feature-14.core.akeneo.com/api/rest/v1/reference-entities-media-files/4/b/0/1/0cb0c0e115dedde78b8d1ad8343ec980cd5daa54_ligne_roset.jpg\"\n }\n }\n }\n ],\n \"description\": [\n {\n \"data\": \"Very well known French brand of modern and luxury furniture\",\n \"locale\": \"en_US\",\n \"channel\": null\n },\n {\n \"data\": \"La marque renommée des meubles de luxe à la française\",\n \"locale\": \"fr_FR\",\n \"channel\": null\n }\n ],\n \"country\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"france\"\n }\n ]\n }\n },\n {\n \"code\": \"usm\",\n \"values\": {\n \"label\": [\n {\n \t\t\"locale\": \"en_US\",\n \t\t\"channel\": null,\n \t\t\"data\": \"USM\"\n },\n {\n \"locale\": \"fr_FR\",\n \"channel\": null,\n \"data\": \"USM\"\n }\n ],\n \"image\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"4/b/0/1/0cb0c0e115dedde78b8d1ad8343ec980cd5daa54_usm.jpg\",\n \"_links\": {\n \"download\": {\n \"href\": \"http://test-dev-feature-14.core.akeneo.com/api/rest/v1/reference-entities-media-files/4/b/0/1/0cb0c0e115dedde78b8d1ad8343ec980cd5daa54_usm.jpg\"\n }\n }\n }\n ],\n \"description\": [\n {\n \"data\": \"Modular furniture from Switzerland for your home and office\",\n \"locale\": \"en_US\",\n \"channel\": null\n },\n {\n \"data\": \"L'éditeur de meubles modulaires suisse pour votre intérieur et pour les entreprises\",\n \"locale\": \"fr_FR\",\n \"channel\": null\n }\n ],\n \"country\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"switzerland\"\n }\n ]\n }\n }\n]" - }, - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities/brand/records", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities", - "brand", - "records" - ] - }, - "description": "Assuming that the given code is the code of an existing reference entity" - }, - "response": [] - } - ] - }, - { - "name": "Reference entity media file (>= v3 and EE only)", - "item": [ - { - "name": "reference entity media file", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities-media-files/c/f/9/e/cf9e5fad2fe33e326b6def8f4e433537eb7f6633_8z2q6xwlya4_test.jpg", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities-media-files", - "c", - "f", - "9", - "e", - "cf9e5fad2fe33e326b6def8f4e433537eb7f6633_8z2q6xwlya4_test.jpg" - ] - } - }, - "response": [] - }, - { - "name": "reference entity media file", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "multipart/form-data" - } - ], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "file", - "type": "file", - "src": [] - } - ] - }, - "url": { - "raw": "{{url}}/api/rest/v1/reference-entities-media-files", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "reference-entities-media-files" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Asset family (>= v3.2 and EE only)", - "item": [ - { - "name": "asset family", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures" - ] - }, - "description": "Assuming that the given code is the code of an existing asset family" - }, - "response": [] - }, - { - "name": "asset families", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/asset-families", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families" - ], - "query": [ - { - "key": "search_after", - "value": "video", - "disabled": true - } - ] - } - }, - "response": [] - }, - { - "name": "asset family", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"model_pictures\",\n \"labels\": {\n \"en_US\": \"Model pictures\",\n \"fr_FR\": \"Photos mannequin\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures" - ] - } - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Asset attribute (>= v3.2 and EE only)", - "item": [ - { - "name": "asset attribute", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures/attributes/warning_mention", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures", - "attributes", - "warning_mention" - ] - }, - "description": "Assuming that the first given code is the code of an existing asset family and the second given code is the code of an existing asset attribute" - }, - "response": [] - }, - { - "name": "asset attributes", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures/attributes", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures", - "attributes" - ] - }, - "description": "Assuming that the given code is the code of an existing asset family" - }, - "response": [] - }, - { - "name": "asset attribute", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"warning_mention\",\n \"labels\": {\n \"en_US\": \"Warning mention\"\n },\n \"type\": \"text\",\n \"value_per_locale\": true,\n \"value_per_channel\": false,\n \"is_required_for_completeness\": true\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures/attributes/warning_mention", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures", - "attributes", - "warning_mention" - ] - }, - "description": "Assuming that the first given code is the code of an existing asset family" - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Asset attribute option (>= v3.2 and EE only)", - "item": [ - { - "name": "asset attribute option", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures/attributes/model_is_wearing_size/options/small", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures", - "attributes", - "model_is_wearing_size", - "options", - "small" - ] - }, - "description": "Assuming that the first given code is the code of an existing asset family, the second given code is the code of an existing asset attribute of type single or multiple options, and the third given code is the code of an existing option of this asset attribute" - }, - "response": [] - }, - { - "name": "asset attribute options", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures/attributes/model_is_wearing_size/options", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures", - "attributes", - "model_is_wearing_size", - "options" - ] - }, - "description": "Assuming that the given code is the code of an existing asset family and the second given code is the code of an existing asset attribute" - }, - "response": [] - }, - { - "name": "asset attribute option", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"small\",\n \"labels\": {\n \"en_US\": \"S\",\n \"fr_FR\": \"S\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures/attributes/model_is_wearing_size/options/small", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures", - "attributes", - "model_is_wearing_size", - "options", - "small" - ] - }, - "description": "Assuming that the first given code is the code of an existing asset family and the second given code is the code of an existing attribute for this asset family that is a single or multiple options attribute" - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Asset media file (>= v3.2 and EE only)", - "item": [ - { - "name": "asset media file", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/asset-media-files/c/f/9/e/cf9e5fad2fe33e326b6def8f4e433537eb7f6633_8z2q6xwlya4_test.jpg", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-media-files", - "c", - "f", - "9", - "e", - "cf9e5fad2fe33e326b6def8f4e433537eb7f6633_8z2q6xwlya4_test.jpg" - ] - } - }, - "response": [] - }, - { - "name": "asset media file", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "multipart/form-data" - } - ], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "file", - "type": "file", - "src": [] - } - ] - }, - "url": { - "raw": "{{url}}/api/rest/v1/asset-media-files", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-media-files" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Asset (>= v3.2 and EE only)", - "item": [ - { - "name": "asset", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures/assets/allie_jean_model_picture", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures", - "assets", - "allie_jean_model_picture" - ] - }, - "description": "Assuming that the first given code is the code of an existing asset family and the second given code is the code of an existing asset" - }, - "response": [] - }, - { - "name": "assets", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/atmosphere/assets", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "atmosphere", - "assets" - ], - "query": [ - { - "key": "search", - "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"absorb_atmosphere_1\",\"absorb_atmosphere_2\"]}]}", - "disabled": true - }, - { - "key": "search", - "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2022-05-01T10:00:00Z\"}]}", - "disabled": true - }, - { - "key": "channel", - "value": "ecommerce", - "disabled": true - }, - { - "key": "locales", - "value": "en_US,fr_FR", - "disabled": true - }, - { - "key": "search_after", - "value": "absorb_atmosphere_2", - "disabled": true - } - ] - }, - "description": "Assuming that the given code is the code of an existing asset family" - }, - "response": [] - }, - { - "name": "asset", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"allie_jean_model_picture\",\n \"values\": {\n \t\"label\": [\n \t\t{\n \t\t\t\"locale\": \"en_US\",\n \t\t\t\"channel\": null,\n \t\t\t\"data\": \"Allie jean model picture\"\n \t\t}\n \t],\n\t \"model_is_wearing_size\": [\n\t {\n\t \"locale\": null,\n\t \"channel\": null,\n\t \"data\": \"small\"\n\t }\n\t ],\n\t \"warning_mention\": [\n\t {\n\t \"locale\": \"fr_FR\",\n\t \"channel\": null,\n\t \"data\": \"Photo retouchée.\"\n\t },\n\t {\n\t \"locale\": \"en_US\",\n\t \"channel\": null,\n\t \"data\": \"Photo retouched.\"\n\t }\n\t ]\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures/assets/allie_jean_model_picture", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures", - "assets", - "allie_jean_model_picture" - ] - }, - "description": "Assuming that the first given code is the code of an existing asset family" - }, - "response": [] - }, - { - "name": "assets", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "[\n\t{\n\t\t\"code\": \"allie_jean_model_picture\",\n\t\t\"values\": {\n\t\t\t\"media_link\": [\n\t\t {\n\t\t \"locale\": null,\n\t\t \"channel\": null,\n\t\t \"data\": \"allie_jean_model_picture.jpg\"\n\t\t }\n\t\t ],\n\t\t \"model_is_wearing_size\": [\n\t\t {\n\t\t \"locale\": null,\n\t\t \"channel\": null,\n\t\t \"data\": \"small\"\n\t\t }\n\t\t ],\n\t\t \"warning_mention\": [\n\t\t {\n\t\t \"locale\": \"en_US\",\n\t\t \"channel\": null,\n\t\t \"data\": \"Photo retouched.\"\n\t\t }\n\t\t ]\n\t }\n\t},\n\t{\n\t\t\"code\": \"amy_socks_model_picture\",\n\t\t\"values\": {\n\t\t\t\"media_link\": [\n\t\t {\n\t\t \"locale\": null,\n\t\t \"channel\": null,\n\t\t \"data\": \"amy_socks_model_picture.jpg\"\n\t\t }\n\t\t ],\n\t\t \"model_is_wearing_size\": [\n\t\t {\n\t\t \"locale\": null,\n\t\t \"channel\": null,\n\t\t \"data\": \"unique_size\"\n\t\t }\n\t\t ],\n\t\t \"warning_mention\": [\n\t\t {\n\t\t \"locale\": \"en_US\",\n\t\t \"channel\": null,\n\t\t \"data\": \"Photo not retouched.\"\n\t\t }\n\t\t ]\n\t }\n\t},\n\t{\n\t\t\"code\": \"alice_blouse_model_picture\",\n\t\t\"values\": {\n\t\t\t\"media_link\": [\n\t\t\t {\n\t\t \"locale\": null,\n\t\t \"channel\": null,\n\t\t \"data\": \"alice_blouse_model_picture.jpg\"\n\t\t }\n\t\t ],\n\t\t \"model_is_wearing_size\": [\n\t\t {\n\t\t \"locale\": null,\n\t\t \"channel\": null,\n\t\t \"data\": \"small\"\n\t\t }\n\t\t ],\n\t\t \"warning_mention\": [\n\t\t {\n\t\t \"locale\": \"en_US\",\n\t\t \"channel\": null,\n\t\t \"data\": \"Photo retouched.\"\n\t\t }\n\t\t ]\n\t }\n\t}\n]" - }, - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures/assets", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures", - "assets" - ] - }, - "description": "Assuming that the given code is the code of an existing asset family" - }, - "response": [] - }, - { - "name": "asset", - "request": { - "method": "DELETE", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{url}}/api/rest/v1/asset-families/model_pictures/assets/allie_jean_model_picture", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "asset-families", - "model_pictures", - "assets", - "allie_jean_model_picture" - ] - }, - "description": "Assuming that the first given code is the code of an existing asset family and the second given code is the code of an existing asset" - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Measure family (>= v2 and deprecated > v4.0)", - "item": [ - { - "name": "measure family (>= v2 and deprecated > v4.0)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/measure-families/area", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "measure-families", - "area" - ] - }, - "description": "Assuming that the given code is the code of an existing measure family" - }, - "response": [] - }, - { - "name": "measure families (>= v2 and deprecated > v4.0)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/measure-families", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "measure-families" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Measurement family (Only available since the 7.0 version)", - "item": [ - { - "name": "measurement families (Only available since the 7.0 version)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/measurement-families", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "measurement-families" - ] - } - }, - "response": [] - }, - { - "name": "measurement families (Only available since the 7.0 version)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json", - "type": "text" - } - ], - "body": { - "mode": "raw", - "raw": "[\n {\n \"code\": \"Area\",\n \"labels\": {\n \"ca_ES\": \"Àrea\",\n \"da_DK\": \"Areal\",\n \"de_DE\": \"Fläche\",\n \"en_GB\": \"Area\",\n \"en_NZ\": \"Area\",\n \"en_US\": \"Area\",\n \"es_ES\": \"Superficie\",\n \"fi_FI\": \"Alue\",\n \"fr_FR\": \"Surface\",\n \"it_IT\": \"Area\",\n \"ja_JP\": \"エリア\",\n \"pt_BR\": \"Área\",\n \"ru_RU\": \"Площадь\",\n \"sv_SE\": \"Område\"\n },\n \"standard_unit_code\": \"SQUARE_METER\",\n \"units\": {\n \"SQUARE_MILLIMETER\": {\n \"code\": \"SQUARE_MILLIMETER\",\n \"labels\": {\n \"ca_ES\": \"Mil·límetre quadrat\",\n \"da_DK\": \"Kvadrat millimeter\",\n \"de_DE\": \"Quadratmillimeter\",\n \"en_GB\": \"Square millimetre\",\n \"en_NZ\": \"Square millimetre\",\n \"en_US\": \"Square millimeter\",\n \"es_ES\": \"Milímetro cuadrado\",\n \"fi_FI\": \"Neliömillimetri\",\n \"fr_FR\": \"Millimètre carré\",\n \"it_IT\": \"Millimetro quadrato\",\n \"ja_JP\": \"平方ミリメートル\",\n \"pt_BR\": \"Milímetro quadrado\",\n \"ru_RU\": \"Квадратный миллиметр\",\n \"sv_SE\": \"Kvadratmillimeter\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"0.000001\"\n }\n ],\n \"symbol\": \"mm²\"\n },\n \"SQUARE_CENTIMETER\": {\n \"code\": \"SQUARE_CENTIMETER\",\n \"labels\": {\n \"ca_ES\": \"Centímetre quadrat\",\n \"da_DK\": \"Kvadratcentimeter\",\n \"de_DE\": \"Quadratzentimeter\",\n \"en_GB\": \"Square centimetre\",\n \"en_NZ\": \"Square centimetre\",\n \"en_US\": \"Square centimeter\",\n \"es_ES\": \"Centímetro cuadrado\",\n \"fi_FI\": \"Neliösenttimetri\",\n \"fr_FR\": \"Centimètre carré\",\n \"it_IT\": \"Centimetro quadrato\",\n \"ja_JP\": \"平方センチメートル\",\n \"pt_BR\": \"Centímetro quadrado\",\n \"ru_RU\": \"Квадратный сантиметр\",\n \"sv_SE\": \"Kvadratcentimeter\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"0.0001\"\n }\n ],\n \"symbol\": \"cm²\"\n },\n \"SQUARE_DECIMETER\": {\n \"code\": \"SQUARE_DECIMETER\",\n \"labels\": {\n \"ca_ES\": \"Decímetre quadrat\",\n \"da_DK\": \"Kvadrat decimeter\",\n \"de_DE\": \"Quadratdezimeter\",\n \"en_GB\": \"Square decimetre\",\n \"en_NZ\": \"Square decimetre\",\n \"en_US\": \"Square decimeter\",\n \"es_ES\": \"Decímetro cuadrado\",\n \"fi_FI\": \"Neliödesimetri\",\n \"fr_FR\": \"Décimètre carré\",\n \"it_IT\": \"Decimetro quadrato\",\n \"ja_JP\": \"平方デシメートル\",\n \"pt_BR\": \"Decímetro quadrado\",\n \"ru_RU\": \"Квадратный дециметр\",\n \"sv_SE\": \"Kvadratdecimeter\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"0.01\"\n }\n ],\n \"symbol\": \"dm²\"\n },\n \"SQUARE_METER\": {\n \"code\": \"SQUARE_METER\",\n \"labels\": {\n \"ca_ES\": \"Metre quadrat\",\n \"da_DK\": \"Kvadratmeter\",\n \"de_DE\": \"Quadratmeter\",\n \"en_GB\": \"Square metre\",\n \"en_NZ\": \"Square metre\",\n \"en_US\": \"Square meter\",\n \"es_ES\": \"Metro cuadrado\",\n \"fi_FI\": \"Neliömetri\",\n \"fr_FR\": \"Mètre carré\",\n \"it_IT\": \"Metro quadrato\",\n \"ja_JP\": \"平方メートル\",\n \"pt_BR\": \"Metro quadrado\",\n \"ru_RU\": \"Квадратный метр\",\n \"sv_SE\": \"Kvadratmeter\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"1\"\n }\n ],\n \"symbol\": \"m²\"\n },\n \"CENTIARE\": {\n \"code\": \"CENTIARE\",\n \"labels\": {\n \"ca_ES\": \"Centiàrees\",\n \"da_DK\": \"Centiare\",\n \"de_DE\": \"Quadratmeter\",\n \"en_GB\": \"Centiare\",\n \"en_NZ\": \"Centiare\",\n \"en_US\": \"Centiare\",\n \"es_ES\": \"Centiáreas\",\n \"fi_FI\": \"Senttiaari\",\n \"fr_FR\": \"Centiare\",\n \"it_IT\": \"Centiara\",\n \"ja_JP\": \"センチアール\",\n \"pt_BR\": \"Centiare\",\n \"ru_RU\": \"Центнер\",\n \"sv_SE\": \"Kvadratmeter\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"1\"\n }\n ],\n \"symbol\": \"ca\"\n },\n \"SQUARE_DEKAMETER\": {\n \"code\": \"SQUARE_DEKAMETER\",\n \"labels\": {\n \"ca_ES\": \"Decàmetre quadrat\",\n \"da_DK\": \"Kvadrat dekameter\",\n \"de_DE\": \"Quadratdekameter\",\n \"en_GB\": \"Square decametre\",\n \"en_NZ\": \"Square dekametre\",\n \"en_US\": \"Square dekameter\",\n \"es_ES\": \"Dekametro cuadrado\",\n \"fi_FI\": \"Neliödekametri\",\n \"fr_FR\": \"Décamètre carré\",\n \"it_IT\": \"Decametro quadrato\",\n \"ja_JP\": \"平方デカメートル\",\n \"pt_BR\": \"Decametro quadrado\",\n \"ru_RU\": \"Квадратный декаметр\",\n \"sv_SE\": \"Kvadratdekameter\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"100\"\n }\n ],\n \"symbol\": \"dam²\"\n },\n \"ARE\": {\n \"code\": \"ARE\",\n \"labels\": {\n \"ca_ES\": \"Àrea\",\n \"da_DK\": \"Are\",\n \"de_DE\": \"Ar\",\n \"en_GB\": \"Sú\",\n \"en_NZ\": \"Are\",\n \"en_US\": \"Are\",\n \"es_ES\": \"Área\",\n \"fi_FI\": \"Aari\",\n \"fr_FR\": \"Are\",\n \"it_IT\": \"Ara\",\n \"ja_JP\": \"アール\",\n \"pt_BR\": \"Area\",\n \"ru_RU\": \"Ар\",\n \"sv_SE\": \"Hektar\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"100\"\n }\n ],\n \"symbol\": \"a\"\n },\n \"SQUARE_HECTOMETER\": {\n \"code\": \"SQUARE_HECTOMETER\",\n \"labels\": {\n \"ca_ES\": \"Hectòmetre quadrat\",\n \"da_DK\": \"Kvadrat hectometer\",\n \"de_DE\": \"Quadrathektometer\",\n \"en_GB\": \"Square hectometre\",\n \"en_NZ\": \"Square hectometre\",\n \"en_US\": \"Square hectometer\",\n \"es_ES\": \"Hectómetro cuadrado\",\n \"fi_FI\": \"Neliöhehtometri\",\n \"fr_FR\": \"Hectomètre carré\",\n \"it_IT\": \"Ettometro quadrato\",\n \"ja_JP\": \"平方ヘクトメートル\",\n \"pt_BR\": \"Hectómetro quadrado\",\n \"ru_RU\": \"Квадратный гектометр\",\n \"sv_SE\": \"Kvadrathektameter\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"10000\"\n }\n ],\n \"symbol\": \"hm²\"\n },\n \"HECTARE\": {\n \"code\": \"HECTARE\",\n \"labels\": {\n \"ca_ES\": \"Hectàrees\",\n \"da_DK\": \"Hektar\",\n \"de_DE\": \"Hektar\",\n \"en_GB\": \"Hectare\",\n \"en_NZ\": \"Hectare\",\n \"en_US\": \"Hectare\",\n \"es_ES\": \"Hectárea\",\n \"fi_FI\": \"Hehtaari\",\n \"fr_FR\": \"Hectare\",\n \"it_IT\": \"Ettaro\",\n \"ja_JP\": \"ヘクタール\",\n \"pt_BR\": \"Hectare\",\n \"ru_RU\": \"Гектар\",\n \"sv_SE\": \"Hektar\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"10000\"\n }\n ],\n \"symbol\": \"ha\"\n },\n \"SQUARE_KILOMETER\": {\n \"code\": \"SQUARE_KILOMETER\",\n \"labels\": {\n \"ca_ES\": \"Quilòmetre quadrat\",\n \"da_DK\": \"Kvadrat kilometer\",\n \"de_DE\": \"Quadratkilometer\",\n \"en_GB\": \"Square kilometre\",\n \"en_NZ\": \"Square kilometre\",\n \"en_US\": \"Square kilometer\",\n \"es_ES\": \"Kilómetro cuadrado\",\n \"fi_FI\": \"Neliökilometri\",\n \"fr_FR\": \"Kilomètre carré\",\n \"it_IT\": \"Chilometro quadrato\",\n \"ja_JP\": \"平方キロメートル\",\n \"pt_BR\": \"Quilômetro quadrado\",\n \"ru_RU\": \"Квадратный километр\",\n \"sv_SE\": \"Kvadratkilometer\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"1000000\"\n }\n ],\n \"symbol\": \"km²\"\n },\n \"SQUARE_MIL\": {\n \"code\": \"SQUARE_MIL\",\n \"labels\": {\n \"ca_ES\": \"Mil quadrat\",\n \"da_DK\": \"Kvadrat mil\",\n \"de_DE\": \"Quadratmil\",\n \"en_GB\": \"Square mil\",\n \"en_NZ\": \"Square mil\",\n \"en_US\": \"Square mil\",\n \"es_ES\": \"Mil cuadrado\",\n \"fi_FI\": \"Neliötuhannesosatuuma\",\n \"fr_FR\": \"Mil carré\",\n \"it_IT\": \"Mil quadrati\",\n \"ja_JP\": \"平方ミル\",\n \"pt_BR\": \"Mil quadrada\",\n \"ru_RU\": \"Квадратная миля\",\n \"sv_SE\": \"Kvadratmil\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"0.00000000064516\"\n }\n ],\n \"symbol\": \"sq mil\"\n },\n \"SQUARE_INCH\": {\n \"code\": \"SQUARE_INCH\",\n \"labels\": {\n \"ca_ES\": \"Polzada quadrada\",\n \"da_DK\": \"Kvadrattomme\",\n \"de_DE\": \"Quadratzoll\",\n \"en_GB\": \"Square inch\",\n \"en_NZ\": \"Square inch\",\n \"en_US\": \"Square inch\",\n \"es_ES\": \"Pulgada cuadrada\",\n \"fi_FI\": \"Neliötuuma\",\n \"fr_FR\": \"Pouce carré\",\n \"it_IT\": \"Pollice quadrato\",\n \"ja_JP\": \"平方インチ\",\n \"pt_BR\": \"Polegada quadrada\",\n \"ru_RU\": \"Квадратный дюйм\",\n \"sv_SE\": \"Kvadrattum\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"0.00064516\"\n }\n ],\n \"symbol\": \"in²\"\n },\n \"SQUARE_FOOT\": {\n \"code\": \"SQUARE_FOOT\",\n \"labels\": {\n \"ca_ES\": \"Peu quadrat\",\n \"da_DK\": \"Kvadratfod\",\n \"de_DE\": \"Quadratfuß\",\n \"en_GB\": \"Square foot\",\n \"en_NZ\": \"Square foot\",\n \"en_US\": \"Square foot\",\n \"es_ES\": \"Pies cuadrados\",\n \"fi_FI\": \"Neliöjalka\",\n \"fr_FR\": \"Pied carré\",\n \"it_IT\": \"Piede quadrato\",\n \"ja_JP\": \"平方フィート\",\n \"pt_BR\": \"Pé quadrado\",\n \"ru_RU\": \"Квадратный фут\",\n \"sv_SE\": \"Kvadratfot\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"0.09290304\"\n }\n ],\n \"symbol\": \"ft²\"\n },\n \"SQUARE_YARD\": {\n \"code\": \"SQUARE_YARD\",\n \"labels\": {\n \"ca_ES\": \"Iarda quadrada\",\n \"da_DK\": \"Kvadrat yard\",\n \"de_DE\": \"Quadratyard\",\n \"en_GB\": \"Square yard\",\n \"en_NZ\": \"Square yard\",\n \"en_US\": \"Square yard\",\n \"es_ES\": \"Yarda cuadrada\",\n \"fi_FI\": \"Neliöjaardi\",\n \"fr_FR\": \"Yard carré\",\n \"it_IT\": \"Yard quadrata\",\n \"ja_JP\": \"平方ヤード\",\n \"pt_BR\": \"Jarda quadrada\",\n \"ru_RU\": \"Квадратный ярд\",\n \"sv_SE\": \"Kvadratyard\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"0.83612736\"\n }\n ],\n \"symbol\": \"yd²\"\n },\n \"ARPENT\": {\n \"code\": \"ARPENT\",\n \"labels\": {\n \"ca_ES\": \"Arpent\",\n \"da_DK\": \"Arpent\",\n \"de_DE\": \"Arpent\",\n \"en_GB\": \"Arpent\",\n \"en_NZ\": \"Arpent\",\n \"en_US\": \"Arpent\",\n \"es_ES\": \"Arpende\",\n \"fi_FI\": \"Eekkeri\",\n \"fr_FR\": \"Arpent\",\n \"it_IT\": \"Arpenti\",\n \"ja_JP\": \"アルパン\",\n \"pt_BR\": \"Arpent\",\n \"ru_RU\": \"Арпан\",\n \"sv_SE\": \"Arpent\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"3418.89\"\n }\n ],\n \"symbol\": \"arpent\"\n },\n \"ACRE\": {\n \"code\": \"ACRE\",\n \"labels\": {\n \"ca_ES\": \"Acre\",\n \"da_DK\": \"Tønder\",\n \"de_DE\": \"Morgen\",\n \"en_GB\": \"Acre\",\n \"en_NZ\": \"Acre\",\n \"en_US\": \"Acre\",\n \"es_ES\": \"Acre\",\n \"fi_FI\": \"Eekkeri\",\n \"fr_FR\": \"Acre\",\n \"it_IT\": \"Acri\",\n \"ja_JP\": \"エーカー\",\n \"pt_BR\": \"Acre\",\n \"ru_RU\": \"Акр\",\n \"sv_SE\": \"Tunnland\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"4046.856422\"\n }\n ],\n \"symbol\": \"A\"\n },\n \"SQUARE_FURLONG\": {\n \"code\": \"SQUARE_FURLONG\",\n \"labels\": {\n \"ca_ES\": \"Furlong quadrat\",\n \"da_DK\": \"Kvadratisk furlong\",\n \"de_DE\": \"Quadrat-Achtelmeile\",\n \"en_GB\": \"Square furlong\",\n \"en_NZ\": \"Square furlong\",\n \"en_US\": \"Square furlong\",\n \"es_ES\": \"Estadio cuadrado\",\n \"fi_FI\": \"Vakomitta\",\n \"fr_FR\": \"Furlong carré\",\n \"it_IT\": \"Furlong quadrato\",\n \"ja_JP\": \"平方ハロン\",\n \"pt_BR\": \"Furlong quadrado\",\n \"ru_RU\": \"Квадратный фурлонг\",\n \"sv_SE\": \"Kvadratfurlong\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"40468.726\"\n }\n ],\n \"symbol\": \"fur²\"\n },\n \"SQUARE_MILE\": {\n \"code\": \"SQUARE_MILE\",\n \"labels\": {\n \"ca_ES\": \"Milla quadrada\",\n \"da_DK\": \"Kvadrat mil\",\n \"de_DE\": \"Quadratmeile\",\n \"en_GB\": \"Square mile\",\n \"en_NZ\": \"Square mile\",\n \"en_US\": \"Square mile\",\n \"es_ES\": \"Milla cuadrada\",\n \"fi_FI\": \"Neliömaili\",\n \"fr_FR\": \"Mile carré\",\n \"it_IT\": \"Miglio quadrato\",\n \"ja_JP\": \"平方マイル\",\n \"pt_BR\": \"Milha quadrada\",\n \"ru_RU\": \"Квадратная миля\",\n \"sv_SE\": \"Kvadratmile\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"2589988.110336\"\n }\n ],\n \"symbol\": \"mi²\"\n }\n }\n }\n]", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{url}}/api/rest/v1/measurement-families", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "measurement-families" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Media file", - "item": [ - { - "name": "media", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json", - "disabled": true - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/media-files/d/d/b/6/ddb6ad393f81503b6be7380785e3b32bbd28cd08_test.png", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "media-files", - "d", - "d", - "b", - "6", - "ddb6ad393f81503b6be7380785e3b32bbd28cd08_test.png" - ] - }, - "description": "Assuming that the given code is the code of an existing media file" - }, - "response": [] - }, - { - "name": "medias", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/media-files", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "media-files" - ] - } - }, - "response": [] - }, - { - "name": "media", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "multipart/form-data" - } - ], - "body": { - "mode": "formdata", - "formdata": [ - { - "key": "product", - "value": "{\"identifier\":\"AKNTS_BPS\", \"attribute\":\"picture\", \"scope\": null,\"locale\":null}", - "type": "text" - }, - { - "key": "file", - "type": "file", - "src": [] - } - ] - }, - "url": { - "raw": "{{url}}/api/rest/v1/media-files", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "media-files" - ] - }, - "description": "Assuming that the given identifier is the identifier of an existing product and that the given attribute code exists" - }, - "response": [] - } - ] - }, - { - "name": "Product", - "item": [ - { - "name": "product", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/products/AKNSTK", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products", - "AKNSTK" - ], - "query": [ - { - "key": "with_attribute_options", - "value": "true", - "description": "(boolean ) • Return labels of attribute options in the response. (Only available since the 5.0 version).", - "disabled": true - }, - { - "key": "with_quality_scores", - "value": "true", - "description": "(boolean ) • Return product quality scores in the response. (Only available since the 5.0 version).", - "disabled": true - }, - { - "key": "with_completenesses", - "value": "true", - "description": "(boolean ) • Return product completenesses in the response. (Only available since the 7.0 version).", - "disabled": true - }, - { - "key": "with_asset_share_links", - "value": "true", - "description": "(boolean ) • Return asset collection share link urls in the response. (Only available in the SaaS version).", - "disabled": true - }, - { - "key": "with_workflow_execution_statuses", - "value": "true", - "description": "Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response.\nStatuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests.\nEach workflow object contains:\n- The overall execution status (e.g., in_progress, completed).\n- A list of all associated tasks.\n", - "disabled": true - } - ] - }, - "description": "Assuming that the given identifier is the identifier of an existing product" - }, - "response": [] - }, - { - "name": "products", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Cookie", - "value": "" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/products", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products" - ], - "query": [ - { - "key": "attributes", - "value": "description,name", - "description": "Get products with only product values regarding the description and name attributes.", - "disabled": true - }, - { - "key": "locales", - "value": "en_US,fr_FR", - "description": "Get products with only product values regarding the en_US and fr_FR locales.", - "disabled": true - }, - { - "key": "scope", - "value": "ecommerce", - "description": "Get products from the tree linked to the ecommerce channel with only product values regarding the ecommerce channel (+ the product values of the non scopable attributes).", - "disabled": true - }, - { - "key": "search", - "value": "{\"main_color\":[{\"operator\":\"IN\",\"value\":[\"purple\"]}]}", - "description": "Get products that are purple, purple being an option of the simple select main_color attribute and this attribute being neither localizable nor scopable.", - "disabled": true - }, - { - "key": "search", - "value": "{\"short_description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\"}]}\n", - "description": "Get products having a description begining with Amazing on the en_US locale, the short_description attribute being localizable but not scopable.", - "disabled": true - }, - { - "key": "search", - "value": "{\"release_date\":[{\"operator\":\">\",\"value\":\"2016-07-04\",\"scope\":\"ecommerce\"}]}", - "description": "Get products that have a release date due after the 4th of July 2016 for the ecommerce channel, the release_date attribute being scopable but not localizable.", - "disabled": true - }, - { - "key": "search", - "value": "{\"name\":[{\"operator\":\"CONTAINS\",\"value\":\"shirt\",\"locale\":\"en_US\",\"scope\":\"mobile\"}]}", - "description": "Get products that have a name that contains with shirt on the en_US locale for the mobile channel, the name attribute being both localizable and scopable.", - "disabled": true - }, - { - "key": "search", - "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}],\"main_color\":[{\"operator\":\"IN\",\"value\":[\"purple\"]}]}\n", - "description": "Get you the products with description starting with Amazing on the en_US locale for the ecommerce channel, and of purple color.", - "disabled": true - }, - { - "key": "search", - "value": "{\"description\":[{\"operator\":\"NOT EMPTY\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"},{\"operator\":\"EMPTY\",\"locale\":\"fr_FR\",\"scope\":\"ecommerce\"}]}\n", - "description": "Get you the products with not empty description on the en_US locale and empty description on the fr_FR locale for the ecommerce channel.", - "disabled": true - }, - { - "key": "search", - "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}],\"short_description\":[{\"operator\":\"CONTAINS\",\"value\":\"shoes\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}]}", - "description": "If you need to filter on several attributes on the same locale, you can use the search_locale query parameter, to avoid repeating yourself for each attribute. This parameter expect an existing locale code.", - "disabled": true - }, - { - "key": "search", - "value": "{\"release_date\":[{\"operator\":\">\",\"value\":\"2016-07-04\",\"scope\":\"ecommerce\"}],\"short_description\":[{\"operator\":\"CONTAINS\",\"value\":\"shoes\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}]}", - "description": "If you need to filter on several attributes on the same scope, you can use the search_scope query parameter, to avoid repeating yourself for each attribute. This parameter expect an existing scope code.", - "disabled": true - }, - { - "key": "search", - "value": "{\"categories\":[{\"operator\":\"IN\",\"value\":[\"winter_collection\"]}]}", - "description": "Get the products of the winter_collection category.", - "disabled": true - }, - { - "key": "search", - "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":false}]}", - "description": "Get the disabled products.", - "disabled": true - }, - { - "key": "search", - "value": "{\"completeness\":[{\"operator\":\"=\",\"value\":100,\"scope\":\"ecommerce\"}]}", - "description": "Get the products that are 100% complete for the ecommerce channel.", - "disabled": true - }, - { - "key": "search", - "value": "{\"completeness\":[{\"operator\":\"GREATER OR EQUALS THAN ON ALL LOCALES\",\"value\":100,\"locales\":[\"en_US\",\"fr_FR\"],\"scope\":\"ecommerce\"}]}", - "description": "Get the products that are 100% complete on both the en_US and fr_FR locales for the ecommerce channel.", - "disabled": true - }, - { - "key": "search", - "value": "{\"groups\":[{\"operator\":\"IN\",\"value\":[\"promotion\"]}]}", - "description": "Get the products that are in the promotion group.", - "disabled": true - }, - { - "key": "search", - "value": "{\"family\":[{\"operator\":\"NOT IN\",\"value\":[\"camcorders\",\"digital_cameras\"]}]}", - "description": "Get the products that are not in the camcorders and digital_cameras family.", - "disabled": true - }, - { - "key": "search", - "value": "{\"created\":[{\"operator\":\"=\",\"value\":\"2016-07-04 10:00:00\"}]}", - "description": "Get the products that were created on the 4th of July 2016 at 10am.", - "disabled": true - }, - { - "key": "search", - "value": "{\"updated\":[{\"operator\":\"SINCE LAST N DAYS\",\"value\":4}]}", - "description": "Get the products that were updated during the last 4 days.", - "disabled": true - }, - { - "key": "search", - "value": "{\"parent\":[{\"operator\":\"=\",\"value\":\"apollon\"}]}", - "description": "Get all the variant products of the apollon root product model without having to filter on all its sub-product models.", - "disabled": true - }, - { - "key": "search", - "value": "{\"parent\":[{\"operator\":\"IN\",\"value\":[\"tshirt_armor_blue\",\"tshirt_armor_red\"]}]}", - "description": "Get all the variant products of the sub product models with the codes tshirt_armor_blue and tshirt_armor_red.", - "disabled": true - }, - { - "key": "search", - "value": "{\"parent\":[{\"operator\":\"NOT EMPTY\"}]}", - "description": "Get all the variant products.", - "disabled": true - }, - { - "key": "search", - "value": "{\"parent\":[{\"operator\":\"EMPTY\"}]}", - "description": "Get all the simple products.", - "disabled": true - }, - { - "key": "search", - "value": "{\"quality_score\":[{\"operator\":\"IN\",\"value\":[\"D\"],\"scope\":\"ecommerce\",\"locale\":\"en_US\"}]}", - "description": "Get the products with a \"D\" for the ecommerce channel and en_US locale.", - "disabled": true - }, - { - "key": "search", - "value": "{\"quality_score\":[{\"operator\":\"IN\",\"value\":[\"A\",\"B\"],\"scope\":\"mobile\",\"locale\":\"en_GB\"}]}", - "description": "Get the products with an \"A\" or \"B\" for the mobile channel and en_GB locale", - "disabled": true - }, - { - "key": "page", - "value": "3", - "description": "(integer , 1 by default ) • Number of the page to retrieve when using the `page` pagination method type.", - "disabled": true - }, - { - "key": "with_count", - "value": "true", - "description": "(boolean ) • Return the count of items in the response. Be carefull with that, on a big catalog, it can decrease performance in a significative way.", - "disabled": true - }, - { - "key": "pagination_type", - "value": "search_after", - "description": "(string , page by default ) • Pagination method type.", - "disabled": true - }, - { - "key": "limit", - "value": "20", - "description": "(integer , 10 by default ) • Number of results by page.", - "disabled": true - }, - { - "key": "with_quality_scores", - "value": "true", - "description": "(boolean ) • Return product quality scores in the response. (Only available since the 5.0 version).", - "disabled": true - }, - { - "key": "search_after", - "value": "qaXbcde", - "description": "(string , cursor to the first page by default ) • Cursor when using the `search_after` pagination method type. Should never be set manually.", - "disabled": true - }, - { - "key": "with_attribute_options", - "value": "true", - "description": "(boolean ) • Return labels of attribute options in the response. (Only available since the 5.0 version).", - "disabled": true - }, - { - "key": "with_completenesses", - "value": "true", - "description": "(boolean ) • Return product completenesses in the response. (Only available since the 7.0 version).", - "disabled": true - }, - { - "key": "with_asset_share_links", - "value": "true", - "description": "(boolean ) • Return asset collection share link urls in the response. (Only available in the SaaS version).", - "disabled": true - }, - { - "key": "with_workflow_execution_statuses", - "value": "true", - "description": "Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response.\nStatuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests.\nEach workflow object contains:\n- The overall execution status (e.g., in_progress, completed).\n- A list of all associated tasks.\n", - "disabled": true - } - ] - }, - "description": "\n" - }, - "response": [] - }, - { - "name": "product", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"identifier\": \"new_product\",\n \"family\": \"tshirts\",\n \"groups\": [],\n \"parent\": null,\n \"categories\": [\n \"tvs_projectors\"\n ],\n \"enabled\": true,\n \"values\": {\n \"clothing_size\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"s\"\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"scope\": \"mobile\",\n \"data\": \"Akeneo T-Shirt 77777\"\n },\n {\n \"locale\": \"en_US\",\n \"scope\": \"print\",\n \"data\": \"Akeneo T-Shirt with short sleeve\"\n }\n ],\n \"main_color\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"black\"\n }\n ],\n \"name\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"Akeneo T-Shirt black and purple with short sleeve\"\n }\n ],\n \"secondary_color\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"purple\"\n }\n ],\n \"tshirt_materials\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"cotton\"\n }\n ],\n \"tshirt_style\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n \"crewneck\",\n \"short_sleeve\"\n ]\n }\n ],\n \"price\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n {\n \"amount\": 10,\n \"currency\": \"EUR\"\n },\n {\n \"amount\": 14,\n \"currency\": \"USD\"\n }\n ]\n }\n ]\n },\n \"created\": \"2017-03-30T14:55:26+02:00\",\n \"updated\": \"2017-05-04T23:56:09+02:00\",\n \"associations\": {\n \"SUBSTITUTION\": {\n \"groups\": [],\n \"products\": [\n \"AKNSTK\"\n ]\n }\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products" - ] - }, - "description": "Assuming that there is no \"new_product\" already existing" - }, - "response": [] - }, - { - "name": "product", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"identifier\": \"AKNSTK\",\n \"family\": \"tshirts\",\n \"groups\": [],\n \"parent\": null,\n \"categories\": [\n \"goodies\",\n \"tshirts\"\n ],\n \"enabled\": true,\n \"values\": {\n \"clothing_size\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"s\"\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"scope\": \"mobile\",\n \"data\": \"Akeneo T-Shirt 77777\"\n },\n {\n \"locale\": \"en_US\",\n \"scope\": \"print\",\n \"data\": \"Akeneo T-Shirt with short sleeve\"\n },\n {\n \"locale\": \"fr_FR\",\n \"scope\": \"mobile\",\n \"data\": \"T-Shirt Akeneo\"\n },\n {\n \"locale\": \"fr_FR\",\n \"scope\": \"print\",\n \"data\": \"T-Shirt Akeneo manches courtes\"\n }\n ],\n \"main_color\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"black\"\n }\n ],\n \"name\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"Akeneo T-Shirt black and purple with short sleeve\"\n }\n ],\n \"secondary_color\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"purple\"\n }\n ],\n \"tshirt_materials\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"cotton\"\n }\n ],\n \"tshirt_style\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n \"crewneck\",\n \"short_sleeve\"\n ]\n }\n ],\n \"price\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n {\n \"amount\": 10,\n \"currency\": \"EUR\"\n },\n {\n \"amount\": 14,\n \"currency\": \"USD\"\n }\n ]\n }\n ]\n },\n \"created\": \"2017-03-30T14:55:26+02:00\",\n \"updated\": \"2017-05-04T23:56:09+02:00\",\n \"associations\": {\n \"SUBSTITUTION\": {\n \"groups\": [],\n \"products\": []\n }\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products/AKNSTK", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products", - "AKNSTK" - ] - } - }, - "response": [] - }, - { - "name": "products", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"identifier\": \"new_product\"}\n{\"identifier\": \"AKNSTK\", \"family\": \"tshirts\"}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products" - ] - }, - "description": "\n" - }, - "response": [] - }, - { - "name": "product", - "request": { - "method": "DELETE", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products/AKNTS_BPXS", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products", - "AKNTS_BPXS" - ] - }, - "description": "Assuming that the given identifier is the identifier of an existing product" - }, - "response": [] - }, - { - "name": "draft (2.x and EE only)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/products/AKNTS_BPS/draft", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products", - "AKNTS_BPS", - "draft" - ] - }, - "description": "Assuming that there is already a draft for the given product. The draft was created by the same user that using this request.\nThe user has only an edition permission through categories on the given product." - }, - "response": [] - }, - { - "name": "proposal (2.x and EE only)", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products/AKNTS_BPS/proposal", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products", - "AKNTS_BPS", - "proposal" - ] - }, - "description": "Assuming that there is already a draft for the given product. The draft was created by the same user using this request.\nThe user has only an edition permission through categories on the given product." - }, - "response": [] - } - ] - }, - { - "name": "Product (uuid, only available since the 7.0 version)", - "item": [ - { - "name": "product", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/products-uuid/f62190e8-8314-4360-8ff8-7dbdb4af6312", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products-uuid", - "f62190e8-8314-4360-8ff8-7dbdb4af6312" - ], - "query": [ - { - "key": "with_attribute_options", - "value": "true", - "description": "(boolean ) • Return labels of attribute options in the response.", - "disabled": true - }, - { - "key": "with_quality_scores", - "value": "true", - "description": "(boolean ) • Return product quality scores in the response.", - "disabled": true - }, - { - "key": "with_completenesses", - "value": "true", - "description": "(boolean ) • Return product completenesses in the response.", - "disabled": true - }, - { - "key": "with_asset_share_links", - "value": "true", - "description": "(boolean ) • Return asset collection share link urls in the response. (Only available in the SaaS version).", - "disabled": true - }, - { - "key": "with_workflow_execution_statuses", - "value": "true", - "description": "Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response.\nStatuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests.\nEach workflow object contains:\n- The overall execution status (e.g., in_progress, completed).\n- A list of all associated tasks.\n", - "disabled": true - } - ] - }, - "description": "Assuming that the given uuid is the uuid of an existing product" - }, - "response": [] - }, - { - "name": "products", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Cookie", - "value": "" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/products-uuid", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products-uuid" - ], - "query": [ - { - "key": "attributes", - "value": "description,name", - "description": "Get products with only product values regarding the description and name attributes.", - "disabled": true - }, - { - "key": "locales", - "value": "en_US,fr_FR", - "description": "Get products with only product values regarding the en_US and fr_FR locales.", - "disabled": true - }, - { - "key": "scope", - "value": "ecommerce", - "description": "Get products from the tree linked to the ecommerce channel with only product values regarding the ecommerce channel (+ the product values of the non scopable attributes).", - "disabled": true - }, - { - "key": "search", - "value": "{\"main_color\":[{\"operator\":\"IN\",\"value\":[\"purple\"]}]}", - "description": "Get products that are purple, purple being an option of the simple select main_color attribute and this attribute being neither localizable nor scopable.", - "disabled": true - }, - { - "key": "search", - "value": "{\"short_description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\"}]}\n", - "description": "Get products having a description begining with Amazing on the en_US locale, the short_description attribute being localizable but not scopable.", - "disabled": true - }, - { - "key": "search", - "value": "{\"release_date\":[{\"operator\":\">\",\"value\":\"2016-07-04\",\"scope\":\"ecommerce\"}]}", - "description": "Get products that have a release date due after the 4th of July 2016 for the ecommerce channel, the release_date attribute being scopable but not localizable.", - "disabled": true - }, - { - "key": "search", - "value": "{\"name\":[{\"operator\":\"CONTAINS\",\"value\":\"shirt\",\"locale\":\"en_US\",\"scope\":\"mobile\"}]}", - "description": "Get products that have a name that contains with shirt on the en_US locale for the mobile channel, the name attribute being both localizable and scopable.", - "disabled": true - }, - { - "key": "search", - "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}],\"main_color\":[{\"operator\":\"IN\",\"value\":[\"purple\"]}]}\n", - "description": "Get you the products with description starting with Amazing on the en_US locale for the ecommerce channel, and of purple color.", - "disabled": true - }, - { - "key": "search", - "value": "{\"description\":[{\"operator\":\"NOT EMPTY\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"},{\"operator\":\"EMPTY\",\"locale\":\"fr_FR\",\"scope\":\"ecommerce\"}]}\n", - "description": "Get you the products with not empty description on the en_US locale and empty description on the fr_FR locale for the ecommerce channel.", - "disabled": true - }, - { - "key": "search", - "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}],\"short_description\":[{\"operator\":\"CONTAINS\",\"value\":\"shoes\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}]}", - "description": "If you need to filter on several attributes on the same locale, you can use the search_locale query parameter, to avoid repeating yourself for each attribute. This parameter expect an existing locale code.", - "disabled": true - }, - { - "key": "search", - "value": "{\"release_date\":[{\"operator\":\">\",\"value\":\"2016-07-04\",\"scope\":\"ecommerce\"}],\"short_description\":[{\"operator\":\"CONTAINS\",\"value\":\"shoes\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}]}", - "description": "If you need to filter on several attributes on the same scope, you can use the search_scope query parameter, to avoid repeating yourself for each attribute. This parameter expect an existing scope code.", - "disabled": true - }, - { - "key": "search", - "value": "{\"categories\":[{\"operator\":\"IN\",\"value\":[\"winter_collection\"]}]}", - "description": "Get the products of the winter_collection category.", - "disabled": true - }, - { - "key": "search", - "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":false}]}", - "description": "Get the disabled products.", - "disabled": true - }, - { - "key": "search", - "value": "{\"completeness\":[{\"operator\":\"=\",\"value\":100,\"scope\":\"ecommerce\"}]}", - "description": "Get the products that are 100% complete for the ecommerce channel.", - "disabled": true - }, - { - "key": "search", - "value": "{\"completeness\":[{\"operator\":\"GREATER OR EQUALS THAN ON ALL LOCALES\",\"value\":100,\"locales\":[\"en_US\",\"fr_FR\"],\"scope\":\"ecommerce\"}]}", - "description": "Get the products that are 100% complete on both the en_US and fr_FR locales for the ecommerce channel.", - "disabled": true - }, - { - "key": "search", - "value": "{\"groups\":[{\"operator\":\"IN\",\"value\":[\"promotion\"]}]}", - "description": "Get the products that are in the promotion group.", - "disabled": true - }, - { - "key": "search", - "value": "{\"family\":[{\"operator\":\"NOT IN\",\"value\":[\"camcorders\",\"digital_cameras\"]}]}", - "description": "Get the products that are not in the camcorders and digital_cameras family.", - "disabled": true - }, - { - "key": "search", - "value": "{\"created\":[{\"operator\":\"=\",\"value\":\"2016-07-04 10:00:00\"}]}", - "description": "Get the products that were created on the 4th of July 2016 at 10am.", - "disabled": true - }, - { - "key": "search", - "value": "{\"updated\":[{\"operator\":\"SINCE LAST N DAYS\",\"value\":4}]}", - "description": "Get the products that were updated during the last 4 days.", - "disabled": true - }, - { - "key": "search", - "value": "{\"parent\":[{\"operator\":\"=\",\"value\":\"apollon\"}]}", - "description": "Get all the variant products of the apollon root product model without having to filter on all its sub-product models.", - "disabled": true - }, - { - "key": "search", - "value": "{\"parent\":[{\"operator\":\"IN\",\"value\":[\"tshirt_armor_blue\",\"tshirt_armor_red\"]}]}", - "description": "Get all the variant products of the sub product models with the codes tshirt_armor_blue and tshirt_armor_red.", - "disabled": true - }, - { - "key": "search", - "value": "{\"parent\":[{\"operator\":\"NOT EMPTY\"}]}", - "description": "Get all the variant products.", - "disabled": true - }, - { - "key": "search", - "value": "{\"parent\":[{\"operator\":\"EMPTY\"}]}", - "description": "Get all the simple products.", - "disabled": true - }, - { - "key": "search", - "value": "{\"quality_score\":[{\"operator\":\"IN\",\"value\":[\"D\"],\"scope\":\"ecommerce\",\"locale\":\"en_US\"}]}", - "description": "Get the products with a \"D\" for the ecommerce channel and en_US locale.", - "disabled": true - }, - { - "key": "search", - "value": "{\"quality_score\":[{\"operator\":\"IN\",\"value\":[\"A\",\"B\"],\"scope\":\"mobile\",\"locale\":\"en_GB\"}]}", - "description": "Get the products with an \"A\" or \"B\" for the mobile channel and en_GB locale", - "disabled": true - }, - { - "key": "page", - "value": "3", - "description": "(integer , 1 by default ) • Number of the page to retrieve when using the `page` pagination method type.", - "disabled": true - }, - { - "key": "with_count", - "value": "true", - "description": "(boolean ) • Return the count of items in the response. Be carefull with that, on a big catalog, it can decrease performance in a significative way.", - "disabled": true - }, - { - "key": "pagination_type", - "value": "search_after", - "description": "(string , page by default ) • Pagination method type.", - "disabled": true - }, - { - "key": "limit", - "value": "20", - "description": "(integer , 10 by default ) • Number of results by page.", - "disabled": true - }, - { - "key": "with_quality_scores", - "value": "true", - "description": "(boolean ) • Return product quality scores in the response.", - "disabled": true - }, - { - "key": "search_after", - "value": "qaXbcde", - "description": "(string , cursor to the first page by default ) • Cursor when using the `search_after` pagination method type. Should never be set manually.", - "disabled": true - }, - { - "key": "with_attribute_options", - "value": "true", - "description": "(boolean ) • Return labels of attribute options in the response.", - "disabled": true - }, - { - "key": "with_completenesses", - "value": "true", - "description": "(boolean ) • Return product completenesses in the response. (Only available since the 7.0 version).", - "disabled": true - }, - { - "key": "with_asset_share_links", - "value": "true", - "description": "(boolean ) • Return asset collection share link urls in the response. (Only available in the SaaS version).", - "disabled": true - }, - { - "key": "with_workflow_execution_statuses", - "value": "true", - "description": "Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response.\nStatuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests.\nEach workflow object contains:\n- The overall execution status (e.g., in_progress, completed).\n- A list of all associated tasks.\n", - "disabled": true - } - ] - }, - "description": "\n" - }, - "response": [] - }, - { - "name": "product", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"family\": \"tshirts\",\n \"groups\": [],\n \"parent\": null,\n \"categories\": [\n \"tvs_projectors\"\n ],\n \"enabled\": true,\n \"values\": {\n \"sku\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"new_product\"\n }\n ],\n \"clothing_size\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"s\"\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"scope\": \"mobile\",\n \"data\": \"Akeneo T-Shirt 77777\"\n },\n {\n \"locale\": \"en_US\",\n \"scope\": \"print\",\n \"data\": \"Akeneo T-Shirt with short sleeve\"\n }\n ],\n \"main_color\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"black\"\n }\n ],\n \"name\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"Akeneo T-Shirt black and purple with short sleeve\"\n }\n ],\n \"secondary_color\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"purple\"\n }\n ],\n \"tshirt_materials\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"cotton\"\n }\n ],\n \"tshirt_style\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n \"crewneck\",\n \"short_sleeve\"\n ]\n }\n ],\n \"price\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n {\n \"amount\": 10,\n \"currency\": \"EUR\"\n },\n {\n \"amount\": 14,\n \"currency\": \"USD\"\n }\n ]\n }\n ]\n },\n \"created\": \"2017-03-30T14:55:26+02:00\",\n \"updated\": \"2017-05-04T23:56:09+02:00\",\n \"associations\": {\n \"SUBSTITUTION\": {\n \"groups\": [\"promotion\"],\n \"products\": []\n }\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products-uuid", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products-uuid" - ] - }, - "description": "Assuming that there is no \"new_product\" already existing" - }, - "response": [] - }, - { - "name": "product", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"family\": \"tshirts\",\n \"groups\": [],\n \"parent\": null,\n \"categories\": [\n \"goodies\",\n \"tshirts\"\n ],\n \"enabled\": true,\n \"values\": {\n \"sku\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"updated_product\"\n }\n ],\n \"clothing_size\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"s\"\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"scope\": \"mobile\",\n \"data\": \"Akeneo T-Shirt 77777\"\n },\n {\n \"locale\": \"en_US\",\n \"scope\": \"print\",\n \"data\": \"Akeneo T-Shirt with short sleeve\"\n },\n {\n \"locale\": \"fr_FR\",\n \"scope\": \"mobile\",\n \"data\": \"T-Shirt Akeneo\"\n },\n {\n \"locale\": \"fr_FR\",\n \"scope\": \"print\",\n \"data\": \"T-Shirt Akeneo manches courtes\"\n }\n ],\n \"main_color\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"black\"\n }\n ],\n \"name\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"Akeneo T-Shirt black and purple with short sleeve\"\n }\n ],\n \"secondary_color\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"purple\"\n }\n ],\n \"tshirt_materials\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"cotton\"\n }\n ],\n \"tshirt_style\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n \"crewneck\",\n \"short_sleeve\"\n ]\n }\n ],\n \"price\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n {\n \"amount\": 10,\n \"currency\": \"EUR\"\n },\n {\n \"amount\": 14,\n \"currency\": \"USD\"\n }\n ]\n }\n ]\n },\n \"created\": \"2017-03-30T14:55:26+02:00\",\n \"updated\": \"2017-05-04T23:56:09+02:00\",\n \"associations\": {\n \"SUBSTITUTION\": {\n \"groups\": [],\n \"products\": []\n }\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products-uuid/f62190e8-8314-4360-8ff8-7dbdb4af6312", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products-uuid", - "f62190e8-8314-4360-8ff8-7dbdb4af6312" - ] - } - }, - "response": [] - }, - { - "name": "products", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"uuid\": \"cddd85f6-9152-4709-8a05-9f4d3db799c8\", \"values\": {\"sku\": [{\"locale\": null, \"scope\": null, \"data\": \"updated_product_1\"}]}}\n{\"uuid\": \"7ecf581d-2945-451e-93b5-46cf739d6a1c\", \"values\": {\"sku\": [{\"locale\": null, \"scope\": null, \"data\": \"updated_product_2\"}]}, \"family\": \"tshirts\"}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products-uuid", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products-uuid" - ] - }, - "description": "\n" - }, - "response": [] - }, - { - "name": "product", - "request": { - "method": "DELETE", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products-uuid/f62190e8-8314-4360-8ff8-7dbdb4af6312", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products-uuid", - "f62190e8-8314-4360-8ff8-7dbdb4af6312" - ] - }, - "description": "Assuming that the given uuid is the uuid of an existing product" - }, - "response": [] - }, - { - "name": "draft (2.x and EE only)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/products-uuid/f62190e8-8314-4360-8ff8-7dbdb4af6312/draft", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products-uuid", - "f62190e8-8314-4360-8ff8-7dbdb4af6312", - "draft" - ] - }, - "description": "Assuming that there is already a draft for the given product. The draft was created by the same user that using this request.\nThe user has only an edition permission through categories on the given product." - }, - "response": [] - }, - { - "name": "proposal (2.x and EE only)", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products-uuid/f62190e8-8314-4360-8ff8-7dbdb4af6312/proposal", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products-uuid", - "f62190e8-8314-4360-8ff8-7dbdb4af6312", - "proposal" - ] - }, - "description": "Assuming that there is already a draft for the given product. The draft was created by the same user using this request.\nThe user has only an edition permission through categories on the given product." - }, - "response": [] - } - ] - }, - { - "name": "Product model (>= v2)", - "item": [ - { - "name": "product model (>= v2)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/product-models/amor", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "product-models", - "amor" - ], - "query": [ - { - "key": "with_asset_share_links", - "value": "true", - "disabled": true - }, - { - "key": "with_quality_scores", - "value": "true", - "description": "(boolean ) • Return product model quality scores in the response. (Only available since the 7.0 version).", - "disabled": true - }, - { - "key": "with_workflow_execution_statuses", - "value": "true", - "description": "Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response.\nStatuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests.\nEach workflow object contains:\n- The overall execution status (e.g., in_progress, completed).\n- A list of all associated tasks.\n", - "disabled": true - } - ] - }, - "description": "Assuming that the given code is the code of an existing product model" - }, - "response": [] - }, - { - "name": "product models (>= v2)", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/product-models", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "product-models" - ], - "query": [ - { - "key": "search", - "value": "{\"categories\":[{\"operator\":\"IN\",\"value\":[\"winter_collection\"]}]}", - "description": "Get the product models of the winter_collection category", - "disabled": true - }, - { - "key": "search", - "value": "{\"completeness\":[{\"operator\":\"ALL COMPLETE\",\"locale\":\"fr_FR\",\"scope\":\"ecommerce\"}]}", - "description": "Get the product models that are 100% complete for the ecommerce channel on fr_FR locale, you can use the following URL.", - "disabled": true - }, - { - "key": "search", - "value": "{\"family\":[{\"operator\":\"NOT IN\",\"value\":[\"camcorders\",\"digital_cameras\"]}]}", - "description": "Get the product models that are not in the camcorders and digital_cameras family, you can use the following URL", - "disabled": true - }, - { - "key": "search", - "value": "{\"created\":[{\"operator\":\"=\",\"value\":\"2016-07-04 10:00:00\"}]}", - "description": "Get the product models that were created on the 4th of July 2016 at 10am, you can use the following URL", - "disabled": true - }, - { - "key": "scope", - "value": "ecommerce", - "description": "(string ) • Filter product values to return scopable attributes for the given channel as well as the non localizable/non scopable attributes.", - "disabled": true - }, - { - "key": "locales", - "value": "en_US,fr_FR", - "description": "(string ) • Filter product values to return localizable attributes for the given locales as well as the non localizable/non scopable attributes.", - "disabled": true - }, - { - "key": "attributes", - "value": "description,name", - "description": "(string ) • Filter product values to only return those concerning the given attributes.", - "disabled": true - }, - { - "key": "pagination_type", - "value": "search_after", - "description": "(string , page by default ) • Pagination method type.", - "disabled": true - }, - { - "key": "page", - "value": "3", - "description": "(integer , 1 by default ) • Number of the page to retrieve when using the `page` pagination method type. Should never be set manually.", - "disabled": true - }, - { - "key": "search_after", - "value": "qaXbcde", - "description": "(string , cursor to the first page by default ) • Cursor when using the `search_after` pagination method type. Should never be set manually.", - "disabled": true - }, - { - "key": "limit", - "value": "20", - "description": "(integer , 10 by default ) • Number of results by page.", - "disabled": true - }, - { - "key": "with_count", - "value": "true", - "description": "(boolean ) • Return the count of items in the response. Be carefull with that, on a big catalog, it can decrease performance in a significative way.", - "disabled": true - }, - { - "key": "with_asset_share_links", - "value": "true", - "disabled": true - }, - { - "key": "with_quality_scores", - "value": "true", - "description": "(boolean ) • Return product model quality scores in the response. (Only available since the 7.0 version).", - "disabled": true - }, - { - "key": "with_workflow_execution_statuses", - "value": "true", - "description": "Return an array of workflow_execution_statuses directly associated with the requested entity (product or product model) in the response.\nStatuses are level-specific and are not inherited from parent models. For a complete overview of a variant product, you must query the variant itself and its parent model(s) in separate requests.\nEach workflow object contains:\n- The overall execution status (e.g., in_progress, completed).\n- A list of all associated tasks.\n", - "disabled": true - } - ] - }, - "description": "\n" - }, - "response": [] - }, - { - "name": "product model (>= v2)", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"new_product_model\",\n \"family_variant\": \"clothing_colorsize\",\n \"parent\": null,\n \"categories\": [\n \"master_men_blazers\",\n \"supplier_zaro\"\n ],\n \"values\": {\n \"name\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"A new product model\"\n }\n ],\n \"price\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n {\n \"amount\": \"999.00\",\n \"currency\": \"EUR\"\n },\n {\n \"amount\": null,\n \"currency\": \"USD\"\n }\n ]\n }\n ],\n \"erp_name\": [\n {\n \"locale\": \"en_US\",\n \"scope\": null,\n \"data\": \"Amor\"\n }\n ],\n \"supplier\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"zaro\"\n }\n ],\n \"collection\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n \"summer_2016\"\n ]\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\",\n \"data\": \"Heritage jacket navy blue tweed suit with single breasted 2 button. 53% wool, 22% polyester, 18% acrylic, 5% nylon, 1% cotton, 1% viscose. Dry Cleaning uniquement.Le mannequin measuring 1m85 and wears UK size 40, size 50 FR\"\n }\n ],\n \"wash_temperature\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"800\"\n }\n ]\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/product-models", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "product-models" - ] - } - }, - "response": [] - }, - { - "name": "product model (>= v2)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"apollon_truc\",\n \"family\": \"clothing\",\n \"family_variant\": \"clothing_color_size\",\n \"parent\": null,\n \"categories\": [\n \"master_men_blazers_deals\"\n ],\n \"values\": {\n \"supplier\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"zaro\"\n }\n ],\n \"collection\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n \"winter_2016\"\n ]\n }\n ],\n \"price\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": [\n {\n \"amount\": \"2\",\n \"currency\": \"EUR\"\n }\n ]\n }\n ],\n \"name\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"Long gray suit jacket and matching pants unstructured\"\n }\n ],\n \"erp_name\": [\n {\n \"locale\": \"en_US\",\n \"scope\": null,\n \"data\": \"Apollon\"\n }\n ],\n \"image\": [\n {\n \"locale\": null,\n \"scope\": null,\n \"data\": \"c/1/8/4/c18427acc3ead60121d3bbeecea5ccc6d96550a9_apollon.jpg\",\n \"_links\": {\n \"download\": {\n \"href\": \"http://test-dev-feature-10.core.akeneo.com/api/rest/v1/media-files/c/1/8/4/c18427acc3ead60121d3bbeecea5ccc6d96550a9_apollon.jpg/download\"\n }\n }\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\",\n \"data\": \"Long gray suit jacket and matching pants unstructured. 61% wool, 30% polyester, 9% ramie. Dry clean only.\"\n }\n ]\n },\n \"created\": \"2019-05-28T09:29:59+00:00\",\n \"updated\": \"2019-05-28T15:21:18+00:00\",\n \"associations\": {\n \"PACK\": {\n \"products\": [],\n \"product_models\": [],\n \"groups\": []\n },\n \"SUBSTITUTION\": {\n \"products\": [],\n \"product_models\": [],\n \"groups\": []\n },\n \"UPSELL\": {\n \"products\": [],\n \"product_models\": [],\n \"groups\": []\n },\n \"X_SELL\": {\n \"products\": [],\n \"product_models\": [],\n \"groups\": []\n }\n },\n \"metadata\": {\n \"workflow_status\": \"working_copy\"\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/product-models/apollon_truc", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "product-models", - "apollon_truc" - ] - }, - "description": "Assuming that the given code is the code of an existing product model" - }, - "response": [] - }, - { - "name": "product models (>= v2)", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/vnd.akeneo.collection+json" - } - ], - "body": { - "mode": "raw", - "raw": "{\"code\": \"new_product_model\", \"parent\":\"jack\", \"values\":{\"color\":[{\"scope\":null, \"locale\":null, \"data\":\"pink\"}]}}\n{\"code\": \"amor\", \"values\":{\"brand\":[{\"scope\":null, \"locale\":null, \"data\":\"akeneo\"}]}}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/product-models", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "product-models" - ] - }, - "description": "\n" - }, - "response": [] - }, - { - "name": "product model (Only available since the 7.0 version)", - "request": { - "method": "DELETE", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/product-models/amor", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "product-models", - "amor" - ] - }, - "description": "Assuming that the given code is the code of an existing product model" - }, - "response": [] - }, - { - "name": "product model draft (>= v2 and EE only)", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/product-models/amor/draft", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "product-models", - "amor", - "draft" - ] - }, - "description": "Assuming that there is already a draft for the given product. The draft was created by the same user that using this request.\nThe user has only an edition permission through categories on the given product." - }, - "response": [] - }, - { - "name": "product model proposal (>= v2 and EE only)", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/product-models/amor/proposal", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "product-models", - "amor", - "proposal" - ] - }, - "description": "Assuming that there is already a draft for the given product. The draft was created by the same user using this request.\nThe user has only an edition permission through categories on the given product." - }, - "response": [] - } - ] - }, - { - "name": "Published product (>= v2 and EE only)", - "item": [ - { - "name": "published product (>= v2 and EE only)", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/published-products/13527420", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "published-products", - "13527420" - ] - }, - "description": "Assuming that the given identifier is the identifier of an existing product that is currently published" - }, - "response": [] - }, - { - "name": "published products (>= v2 and EE only)", - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{token}}" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/published-products", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "published-products" - ], - "query": [ - { - "key": "attributes", - "value": "description,name", - "description": "Get published products with only published product values regarding the description and name attributes.", - "disabled": true - }, - { - "key": "locales", - "value": "en_US,fr_FR", - "description": "Get published products with only published product values regarding the en_US and fr_FR locales.", - "disabled": true - }, - { - "key": "scope", - "value": "ecommerce", - "description": "Get published products from the tree linked to the ecommerce channel with only published product values regarding the ecommerce channel (+ the published product values of the non scopable attributes).", - "disabled": true - }, - { - "key": "search", - "value": "{\"main_color\":[{\"operator\":\"IN\",\"value\":[\"purple\"]}]}", - "description": "Get published products that are purple", - "disabled": true - }, - { - "key": "search", - "value": "{\"short_description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\"}]}", - "description": "Get published products having a description begining with Amazing on the en_US locale", - "disabled": true - }, - { - "key": "search", - "value": "{\"release_date\":[{\"operator\":\">\",\"value\":\"2016-07-04\",\"scope\":\"ecommerce\"}]}", - "description": "Get published products that have a release date due after the 4th of July 2016 for the ecommerce channel", - "disabled": true - }, - { - "key": "search", - "value": "{\"name\":[{\"operator\":\"CONTAINS\",\"value\":\"shirt\",\"locale\":\"en_US\",\"scope\":\"mobile\"}]}", - "description": "Get published products that have a name that contains with shirt on the en_US locale for the mobile channel", - "disabled": true - }, - { - "key": "search", - "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}],\"main_color\":[{\"operator\":\"IN\",\"value\":[\"purple\"]}]}", - "description": "Get the published products with description starting with Amazing on the en_US locale for the ecommerce channel, and of purple color", - "disabled": true - }, - { - "key": "search", - "value": "{\"description\":[{\"operator\":\"NOT EMPTY\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"},{\"operator\":\"EMPTY\",\"locale\":\"fr_FR\",\"scope\":\"ecommerce\"}]}", - "description": "Get the published products with not empty description on the en_US locale and empty description on the fr_FR locale for the ecommerce channel", - "disabled": true - }, - { - "key": "search", - "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"scope\":\"ecommerce\"}],\"short_description\":[{\"operator\":\"CONTAINS\",\"value\":\"shoes\",\"scope\":\"ecommerce\"}]}&search_locale=en_US", - "description": "Filter on several attributes on the same locale", - "disabled": true - }, - { - "key": "search", - "value": "{\"release_date\":[{\"operator\":\">\",\"value\":\"2016-07-04\"}],\"short_description\":[{\"operator\":\"CONTAINS\",\"value\":\"shoes\",\"locale\":\"en_US\"}]}&search_scope=ecommerce", - "description": "Filter on several attributes on the same channel", - "disabled": true - }, - { - "key": "search", - "value": "{\"categories\":[{\"operator\":\"IN\",\"value\":[\"winter_collection\"]}]}", - "description": "Get the published products of the winter_collection category.", - "disabled": true - }, - { - "key": "search", - "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":false}]}", - "description": "Get the disabled published products.", - "disabled": true - }, - { - "key": "search", - "value": "{\"completeness\":[{\"operator\":\"=\",\"value\":100,\"scope\":\"ecommerce\"}]}", - "description": "Get the published products that are 100% complete for the ecommerce channel.", - "disabled": true - }, - { - "key": "search", - "value": "{\"completeness\":[{\"operator\":\"GREATER OR EQUALS THAN ON ALL LOCALES\",\"value\":100,\"locales\":[\"en_US\",\"fr_FR\"],\"scope\":\"ecommerce\"}]}", - "description": "Get the published products that are 100% complete on both the en_US and fr_FR locales for the ecommerce channel.", - "disabled": true - }, - { - "key": "search", - "value": "{\"groups\":[{\"operator\":\"IN\",\"value\":[\"promotion\"]}]}", - "description": "Get the published products that are in the promotion group.", - "disabled": true - }, - { - "key": "search", - "value": "{\"family\":[{\"operator\":\"NOT IN\",\"value\":[\"camcorders\",\"digital_cameras\"]}]}", - "description": "Get the published products that are not in the camcorders and digital_cameras family.", - "disabled": true - }, - { - "key": "search", - "value": "{\"created\":[{\"operator\":\"=\",\"value\":\"2016-07-04 10:00:00\"}]}", - "description": "Get the published products that were created on the 4th of July 2016 at 10am.", - "disabled": true - }, - { - "key": "search", - "value": "{\"updated\":[{\"operator\":\"SINCE LAST N DAYS\",\"value\":4}]}", - "description": "Get the published products that were updated during the last 4 days.", - "disabled": true - }, - { - "key": "search", - "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}],\"short_description\":[{\"operator\":\"CONTAINS\",\"value\":\"shoes\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}]}", - "description": "If you need to filter on several attributes on the same locale, you can use the search_locale query parameter, to avoid repeating yourself for each attribute. This parameter expect an existing locale code.", - "disabled": true - }, - { - "key": "search", - "value": "{\"release_date\":[{\"operator\":\">\",\"value\":\"2016-07-04\",\"scope\":\"ecommerce\"}],\"short_description\":[{\"operator\":\"CONTAINS\",\"value\":\"shoes\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}]}", - "description": "If you need to filter on several attributes on the same channel, you can use the search_scope query parameter, to avoid repeating yourself for each attribute. This parameter expect an existing channel code.", - "disabled": true - }, - { - "key": "pagination_type", - "value": "search_after", - "description": "(string , page by default ) • Pagination method type.", - "disabled": true - }, - { - "key": "page", - "value": "3", - "description": "(integer , 1 by default ) • Number of the page to retrieve when using the `page` pagination method type. Should never be set manually.", - "disabled": true - }, - { - "key": "search_after", - "value": "qaXbcde", - "description": "(string , cursor to the first page by default ) • Cursor when using the `search_after` pagination method type. Should never be set manually.", - "disabled": true - }, - { - "key": "limit", - "value": "20", - "description": "(integer , 10 by default ) • Number of results by page.", - "disabled": true - }, - { - "key": "with_count", - "value": "true", - "description": "(boolean ) • Return the count of items in the response. Be carefull with that, on a big catalog, it can decrease performance in a significative way.", - "disabled": true - } - ] - }, - "description": "\n" - }, - "response": [] - } - ] - }, - { - "name": "Quantified associations (Serenity only)", - "item": [ - { - "name": "Product", - "item": [ - { - "name": "Create product with quantified associations", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"identifier\": \"new_product1\",\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [\n {\"identifier\": \"AKNSTK\", \"quantity\": 4}\n ],\n \"product_models\": [\n {\"identifier\": \"apollon\", \"quantity\": 2}\n ]\n }\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products" - ] - }, - "description": "Assuming that there is no \"new_product\" already existing \nAssuming that association type \"PRODUCT_SET\" already exist and is quantified" - }, - "response": [] - }, - { - "name": "Update product with quantified associations", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"identifier\": \"AKNSTK\",\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [],\n \"product_models\": [{\"identifier\": \"amor\", \"quantity\": 111}]\n }\n }\n}\n" - }, - "url": { - "raw": "{{url}}/api/rest/v1/products/AKNSTK", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "products", - "AKNSTK" - ] - }, - "description": "Assuming that the given identifier is the identifier of an existing product \nAssuming that association type \"PRODUCT_SET\" already exist and is quantified" - }, - "response": [] - } - ] - }, - { - "name": "Product Model", - "item": [ - { - "name": "Create product model with quantified associations", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"new_product_model\",\n \"family_variant\": \"clothing_colorsize\",\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [\n {\"identifier\": \"AKNSTK\", \"quantity\": 4}\n ],\n \"product_models\": [\n {\"identifier\": \"apollon\", \"quantity\": 2}\n ]\n }\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/product-models", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "product-models" - ] - }, - "description": "Assuming that there is no \"new_product_model\" already existing \nAssuming that association type \"PRODUCT_SET\" already exist and is quantified" - }, - "response": [] - }, - { - "name": "Update product model with quantified associations", - "request": { - "method": "PATCH", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-Type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"code\": \"apollon_truc\",\n \"family_variant\": \"clothing_colorsize\",\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [\n {\"identifier\": \"AKNSTK\", \"quantity\": 4}\n ],\n \"product_models\": [\n {\"identifier\": \"amor\", \"quantity\": 111}\n ]\n }\n }\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/product-models/apollon_truc", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "product-models", - "apollon_truc" - ] - }, - "description": "Assuming that the given code is the code of an existing product model \nAssuming that association type \"PRODUCT_SET\" already exist and is quantified" - }, - "response": [] - } - ] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] - }, - { - "name": "Job (Serenity only)", - "item": [ - { - "name": "Launch export", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/jobs/export", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "jobs", - "export" - ] - } - }, - "response": [] - }, - { - "name": "Launch import", - "request": { - "method": "POST", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"import_mode\": \"create_only\"\n}" - }, - "url": { - "raw": "{{url}}/api/rest/v1/jobs/import", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "jobs", - "import" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Permissions", - "item": [ - { - "name": "Get User Channels Permissions", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/permissions/{{userUuid}}/channels", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "permissions", - "{{userUuid}}", - "channels" - ] - } - }, - "response": [] - }, - { - "name": "Get User Locales Permissions", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{token}}" - }, - { - "key": "Content-type", - "value": "application/json" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/permissions/{{userUuid}}/locales", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "permissions", - "{{userUuid}}", - "locales" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "Extensions", - "item": [ - { - "name": "Extension", - "item": [ - { - "name": "List extensions", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/ui-extensions - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", - "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/ui-extensions - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", - "// Response Validation\nconst schema = {\"type\":\"array\",\"description\":\"Represents a list of extensions\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"position\":{\"type\":\"string\",\"default\":\"pim.product.header\",\"enum\":[\"pim.product.header\",\"pim.product-model.header\",\"pim.sub-product-model.header\"]},\"type\":{\"type\":\"string\",\"default\":\"link\"},\"configuration\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"default_label\":{\"type\":\"string\"},\"labels\":{\"type\":\"object\",\"properties\":{\"en_US\":{\"type\":\"string\"},\"fr_FR\":{\"type\":\"string\"}}}}}}},{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"position\":{\"type\":\"string\",\"default\":\"pim.product.tab\",\"enum\":[\"pim.product.tab\",\"pim.category.tab\",\"pim.product-grid.action-bar\"]},\"type\":{\"type\":\"string\",\"default\":\"iframe\"},\"configuration\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"default_label\":{\"type\":\"string\"},\"labels\":{\"type\":\"object\",\"properties\":{\"en_US\":{\"type\":\"string\"},\"fr_FR\":{\"type\":\"string\"}}}}}}},{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"position\":{\"type\":\"string\",\"default\":\"pim.product.tab\",\"enum\":[\"pim.product.header\",\"pim.product-model.header\",\"pim.sub-product-model.header\",\"pim.product-grid.action-bar\"]},\"type\":{\"type\":\"string\",\"default\":\"action\"},\"configuration\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"default_label\":{\"type\":\"string\"},\"labels\":{\"type\":\"object\",\"properties\":{\"en_US\":{\"type\":\"string\"},\"fr_FR\":{\"type\":\"string\"}}}}}}}]}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/ui-extensions - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" - ] - } - } - ], - "request": { - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "application/json" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/ui-extensions", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "ui-extensions" - ] - }, - "description": "List all extensions associated with your token" - }, - "response": [] - }, - { - "name": "Add an extension", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/rest/v1/ui-extensions - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", - "// Validate if response has JSON Body \npm.test(\"[POST]::/api/rest/v1/ui-extensions - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", - "// Response Validation\nconst schema = {\"oneOf\":[{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"position\":{\"type\":\"string\",\"default\":\"pim.product.header\",\"enum\":[\"pim.product.header\",\"pim.product-model.header\",\"pim.sub-product-model.header\"]},\"status\":{\"type\":\"string\",\"default\":\"active\"},\"type\":{\"type\":\"string\",\"default\":\"link\"},\"configuration\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"default_label\":{\"type\":\"string\"},\"labels\":{\"type\":\"object\",\"properties\":{\"en_US\":{\"type\":\"string\"},\"fr_FR\":{\"type\":\"string\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"position\":{\"type\":\"string\",\"default\":\"pim.product.tab\",\"enum\":[\"pim.product.tab\",\"pim.category.tab\",\"pim.product-grid.action-bar\"]},\"type\":{\"type\":\"string\",\"default\":\"iframe\"},\"configuration\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"default_label\":{\"type\":\"string\"},\"labels\":{\"type\":\"object\",\"properties\":{\"en_US\":{\"type\":\"string\"},\"fr_FR\":{\"type\":\"string\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"position\":{\"type\":\"string\",\"default\":\"pim.product.tab\",\"enum\":[\"pim.product.header\",\"pim.product-model.header\",\"pim.sub-product-model.header\",\"pim.product-grid.action-bar\"]},\"type\":{\"type\":\"string\",\"default\":\"action\"},\"configuration\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"default_label\":{\"type\":\"string\"},\"labels\":{\"type\":\"object\",\"properties\":{\"en_US\":{\"type\":\"string\"},\"fr_FR\":{\"type\":\"string\"}}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/rest/v1/ui-extensions - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" - ] - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Accept", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"name\": \"my_awesome_button_extension\",\n \"version\": \"V1.02.3\",\n \"description\": \"A short human readable description.\",\n \"position\": \"pim.product.header\",\n \"type\": \"link\",\n \"configuration\": {\n \"url\": \"https://www.example.com\",\n \"default_label\": \"My awesome link extension\",\n \"labels\": {\n \"en_US\": \"My awesome link extension\",\n \"fr_FR\": \"Ma super link extension\"\n }\n }\n}", - "options": { - "raw": { - "headerFamily": "json", - "language": "json" - } - } - }, - "url": { - "raw": "{{url}}/api/rest/v1/ui-extensions", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "ui-extensions" - ] - }, - "description": "The `configuration` depends on the `position`. Available positions are `pim.product.tab`, `pim.category.tab` and `pim.product.header`, `pim.product-model.header`, `pim.sub-product-model.header`, `pim.product-grid.action-bar`.\nFor now, the only configuration keys are the same for all the position.\n\nThe `type` available are `iframe`, `link` and `action`. It depends on the `position` :\n- `iframe` for `pim.product.tab`, `pim.category.tab` and `pim.product-grid.action-bar`\n- `link` for `pim.product.header`, `pim.product-model.header` and `pim.sub-product-model.header`\n- `action` for `pim.product.header`, `pim.product-model.header`, `pim.sub-product-model.header` and `pim.product-grid.action-bar`\n" - }, - "response": [] - }, - { - "name": "Update an extension", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/ui-extensions/:ui_extension_uuid - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", - "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/ui-extensions/:ui_extension_uuid - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", - "// Response Validation\nconst schema = {\"oneOf\":[{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"position\":{\"type\":\"string\",\"default\":\"pim.product.header\",\"enum\":[\"pim.product.header\",\"pim.product-model.header\",\"pim.sub-product-model.header\"]},\"status\":{\"type\":\"string\",\"default\":\"active\"},\"type\":{\"type\":\"string\",\"default\":\"link\"},\"configuration\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"default_label\":{\"type\":\"string\"},\"labels\":{\"type\":\"object\",\"properties\":{\"en_US\":{\"type\":\"string\"},\"fr_FR\":{\"type\":\"string\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"position\":{\"type\":\"string\",\"default\":\"pim.product.tab\",\"enum\":[\"pim.product.tab\",\"pim.category.tab\",\"pim.product-grid.action-bar\"]},\"type\":{\"type\":\"string\",\"default\":\"iframe\"},\"configuration\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"default_label\":{\"type\":\"string\"},\"labels\":{\"type\":\"object\",\"properties\":{\"en_US\":{\"type\":\"string\"},\"fr_FR\":{\"type\":\"string\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"position\":{\"type\":\"string\",\"default\":\"pim.product.tab\",\"enum\":[\"pim.product.header\",\"pim.product-model.header\",\"pim.sub-product-model.header\",\"pim.product-grid.action-bar\"]},\"type\":{\"type\":\"string\",\"default\":\"action\"},\"configuration\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"},\"default_label\":{\"type\":\"string\"},\"labels\":{\"type\":\"object\",\"properties\":{\"en_US\":{\"type\":\"string\"},\"fr_FR\":{\"type\":\"string\"}}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/ui-extensions/:ui_extension_uuid - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" - ] - } - } - ], - "request": { - "method": "PATCH", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Accept", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"name\": \"my_awesome_button_extension\",\n \"version\": \"V1.02.3\",\n \"description\": \"A short human readable description.\",\n \"position\": \"pim.product.header\",\n \"type\": \"link\",\n \"configuration\": {\n \"url\": \"https://www.example.com\",\n \"default_label\": \"My awesome link extension\",\n \"labels\": {\n \"en_US\": \"My awesome link extension\",\n \"fr_FR\": \"Ma super link extension\"\n }\n }\n}", - "options": { - "raw": { - "headerFamily": "json", - "language": "json" - } - } - }, - "url": { - "raw": "{{url}}/api/rest/v1/ui-extensions/:ui_extension_uuid", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "ui-extensions", - ":ui_extension_uuid" - ], - "variable": [ - { - "key": "ui_extension_uuid", - "value": "e175d525-8fbf-4b26-9242-1daccf301f8b", - "description": "(Required) " - } - ] - }, - "description": "The `configuration` depends on the `position`. Available positions are `pim.product.tab`, `pim.category.tab` and `pim.product.header`, `pim.product-model.header`, `pim.sub-product-model.header`, `pim.product-grid.action-bar`.\nFor now, the only configuration keys are the same for all the position.\n\nThe `type` available are `iframe`, `link` and `action`. It depends on the `position` :\n- `iframe` for `pim.product.tab`, `pim.category.tab` and `pim.product-grid.action-bar`\n- `link` for `pim.product.header`, `pim.product-model.header` and `pim.sub-product-model.header`\n- `action` for `pim.product.header`, `pim.product-model.header`, `pim.sub-product-model.header` and `pim.product-grid.action-bar`\n" - }, - "response": [] - }, - { - "name": "Delete an extension", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "// Validate if response has empty Body \npm.test(\"[DELETE]::/api/rest/v1/ui-extensions/:ui_extension_uuid - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" - ] - } - } - ], - "request": { - "method": "DELETE", - "header": [], - "url": { - "raw": "{{url}}/api/rest/v1/ui-extensions/:ui_extension_uuid", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "ui-extensions", - ":ui_extension_uuid" - ], - "variable": [ - { - "key": "ui_extension_uuid", - "value": "e175d525-8fbf-4b26-9242-1daccf301f8b", - "description": "(Required) " - } - ] - }, - "description": "Delete an extension" - }, - "response": [] - } - ], - "description": "Manipulate Extensions" - } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pim_access_token}}", - "type": "string" - } - ] - }, - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "/*\n For simplicity, we acquire a new token before each API call.\n This is not recommended to do the same in production. \n \n Benefit from the 1 hour validity of the access_token and leverage the refresh_token grant type.\n Explore the official PIM API documentation for details https://api.akeneo.com/documentation/authentication.html\n\n*/\n\nappAccessToken = pm.environment.get(\"app_access_token\")\nif (appAccessToken!==undefined) {\n pm.environment.set(\"pim_access_token\", appAccessToken)\n console.log(\"Used the token provided in the \\\"app_access_token\\\" variable instead of authenticating with the PIM.\")\n return\n}\n\nbase64ClientIdSecret = require('btoa')(pm.environment.get(\"clientId\") + ':' + pm.environment.get(\"secret\"))\n\npm.sendRequest({\n url: pm.environment.get(\"url\").replace(/\\/$/, '') + '/api/oauth/v1/token',\n method: 'POST',\n header: {\n 'Authorization': 'Basic ' + base64ClientIdSecret,\n 'Content-Type': 'application/json',\n },\n body: {\n mode: 'raw',\n raw: JSON.stringify(\n {\n \"username\" : pm.environment.get(\"username\"),\n \"password\" : pm.environment.get(\"password\"),\n \"grant_type\": \"password\"\n }\n )\n }\n}, function (err, res) {\n if(err !== null ){\n console.error(\"The following error occured during pre-script execution\");\n console.error(err);\n return;\n }\n console.warn(\"For simplicity, we acquire a new token before each API call, this is not recommended in production. Benefit from the 1 hour validity of the access_token.\");\n pm.environment.set(\"pim_access_token\", res.json().access_token);\n});" - ] - } - } - ] - }, - { - "name": "Workflows", - "item": [ - { - "name": "Get list of workflows", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "// Validate if response header has matching content-type", - "pm.test(\"[GET]::/api/rest/v1/workflows - Content-Type is application/json\", function () {", - " pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");", - "});", - "", - "// Validate if response has JSON Body ", - "pm.test(\"[GET]::/api/rest/v1/workflows - Response has JSON Body\", function () {", - " pm.response.to.have.jsonBody();", - "});", - "", - "// Response Validation", - "const schema = {\"title\":\"Workflows\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels per locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"type\":[\"string\",\"null\"],\"description\":\"Label for locale\"}}},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the workflow is enabled\"}}}]}}}}}}]}", - "", - "// Validate if response matches JSON schema ", - "pm.test(\"[GET]::/api/rest/v1/workflows - Schema is valid\", function() {", - " pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{token}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "application/json" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/workflows", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "workflows" - ], - "query": [ - { - "key": "page", - "value": "1", - "description": "Specify which page of results to retrieve when using pagination.\nIt is useful for navigating through large datasets by breaking them into smaller, manageable pages.\nSee [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.\n", - "disabled": true - }, - { - "key": "limit", - "value": "100", - "description": "Specify the maximum number of results to return per page.\nIt is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets.\nSee [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.\n", - "disabled": true - } - ] - }, - "description": "Retrieves a paginated list of workflows" - }, - "response": [] - }, - { - "name": "Get a workflow", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "// Validate if response header has matching content-type", - "pm.test(\"[GET]::/api/rest/v1/workflows/:uuid - Content-Type is application/json\", function () {", - " pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");", - "});", - "", - "// Validate if response has JSON Body ", - "pm.test(\"[GET]::/api/rest/v1/workflows/:uuid - Response has JSON Body\", function () {", - " pm.response.to.have.jsonBody();", - "});", - "", - "// Response Validation", - "const schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Locale code\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"type\":[\"string\",\"null\"],\"description\":\"Workflow labels per locale\"}}},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the workflow is enabled\"},\"steps\":{\"type\":\"array\",\"description\":\"List of workflow steps\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"type\":{\"type\":\"string\",\"description\":\"Step type (e.g. enrichment, review)\"},\"labels\":{\"type\":\"object\",\"description\":\"Locale code\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"type\":[\"string\",\"null\"],\"description\":\"Step labels per locale\"}}},\"descriptions\":{\"type\":\"object\",\"description\":\"Locale code\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"type\":[\"string\",\"null\"],\"description\":\"Step descriptions per locale\"}}},\"allotted_time\":{\"type\":[\"object\",\"null\"],\"description\":\"Allotted time for the step (e.g. `{\\\"value\\\": 1, \\\"unit\\\": \\\"days\\\"}` or nullable)\",\"properties\":{\"value\":{\"type\":\"integer\",\"description\":\"Amount of time\"},\"unit\":{\"type\":\"string\",\"description\":\"Time unit (days)\"}}},\"channels_and_locales\":{\"type\":\"object\",\"description\":\"Step configuration for channels and locales\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"description\":\"Locale code\"}}}}}}}}", - "", - "// Validate if response matches JSON schema ", - "pm.test(\"[GET]::/api/rest/v1/workflows/:uuid - Schema is valid\", function() {", - " pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{token}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "application/json" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/workflows/:uuid", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "workflows", - ":uuid" - ], - "variable": [ - { - "key": "uuid", - "value": "123e4567-e89b-12d3-a456-426614174000", - "description": "(Required) This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate.\nIt is essential for identifying the specific entity in the API requests.\nEnsure that the UUID is correctly formatted and corresponds to an existing entity in the system.\n" - } - ] - }, - "description": "This endpoint allows you to get the information about a given workflow as well as its steps" - }, - "response": [] - }, - { - "name": "Get list of workflow step assignees", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "// Validate if response header has matching content-type", - "pm.test(\"[GET]::/api/rest/v1/workflows/steps/:uuid/assignees - Content-Type is application/json\", function () {", - " pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");", - "});", - "", - "// Validate if response has JSON Body ", - "pm.test(\"[GET]::/api/rest/v1/workflows/steps/:uuid/assignees - Response has JSON Body\", function () {", - " pm.response.to.have.jsonBody();", - "});", - "", - "// Response Validation", - "const schema = {\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}}],\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Assignee UUID\",\"format\":\"uuid\"},\"first_name\":{\"type\":\"string\",\"description\":\"Assignee first name\"},\"last_name\":{\"type\":\"string\",\"description\":\"Assignee last name\"},\"email\":{\"type\":\"string\",\"description\":\"Assignee email address\"}}}}}}}}", - "", - "// Validate if response matches JSON schema ", - "pm.test(\"[GET]::/api/rest/v1/workflows/steps/:uuid/assignees - Schema is valid\", function() {", - " pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{token}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "application/json" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/workflows/steps/:uuid/assignees", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "workflows", - "steps", - ":uuid", - "assignees" - ], - "query": [ - { - "key": "page", - "value": "1", - "description": "Specify which page of results to retrieve when using pagination.\nIt is useful for navigating through large datasets by breaking them into smaller, manageable pages.\nSee [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.\n", - "disabled": true - }, - { - "key": "limit", - "value": "100", - "description": "Specify the maximum number of results to return per page.\nIt is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets.\nSee [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.\n", - "disabled": true - } - ], - "variable": [ - { - "key": "uuid", - "value": "123e4567-e89b-12d3-a456-426614174000", - "description": "(Required) This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate.\nIt is essential for identifying the specific entity in the API requests.\nEnsure that the UUID is correctly formatted and corresponds to an existing entity in the system.\n" - } - ] - }, - "description": "Retrieves a paginated list of assignees for a specified workflow step" - }, - "response": [] - } - ], - "description": "The Workflows endpoints allow you to retrieve the configuration of the Workflows and Steps.\n" - }, - { - "name": "Workflow executions", - "item": [ - { - "name": "Start several workflow executions", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{token}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Accept", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "[\n {\n \"workflow\": {\n \"uuid\": \"4a230ef4-3e63-4d24-a214-73d4b404f278\"\n },\n \"product\": {\n \"uuid\": \"87654321-4321-4321-4321-210987654321\"\n }\n },\n {\n \"workflow\": {\n \"uuid\": \"4a230ef4-3e63-4d24-a214-73d4b404f278\"\n },\n \"product_model\": {\n \"code\": \"model_1234\"\n }\n }\n]", - "options": { - "raw": { - "headerFamily": "json", - "language": "json" - } - } - }, - "url": { - "raw": "{{url}}/api/rest/v1/workflows/executions", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "workflows", - "executions" - ] - }, - "description": "This endpoint allows you to start workflow executions for products and/or product models" - }, - "response": [] - } - ], - "description": "The Workflow executions endpoints allow you to start workflows on products and product models.\n" - }, - { - "name": "Workflow tasks", - "item": [ - { - "name": "Get list of workflow tasks", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "// Validate if response header has matching content-type", - "pm.test(\"[GET]::/api/rest/v1/workflows/tasks - Content-Type is application/json\", function () {", - " pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");", - "});", - "", - "// Validate if response has JSON Body ", - "pm.test(\"[GET]::/api/rest/v1/workflows/tasks - Response has JSON Body\", function () {", - " pm.response.to.have.jsonBody();", - "});", - "", - "// Response Validation", - "const schema = {\"title\":\"Workflow Tasks\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"format\":\"uri\",\"description\":\"URI of the resource\"}}},\"edit\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"format\":\"uri\",\"description\":\"URL to access the task in Akeneo\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\",\"format\":\"uuid\"},\"status\":{\"type\":\"string\",\"description\":\"Task status\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Task creation date\"},\"product\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"Product UUID\"}}},\"product_model\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Product model code\"}}},\"due_date\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Due date\"},\"rejected\":{\"type\":\"boolean\",\"description\":\"Whether the task is rejected\"},\"pending_attributes\":{\"type\":\"object\",\"description\":\"Object of attributes for the task that are awaiting completion or require user input.\\nEach key is an attribute code and each value is an array of objects with information on locale, scope, rejection status and comment.\\nThis field is only included when `with_attributes=true`.\\n\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"rejected\"],\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"The locale code for the attribute value, null if the attribute is not localizable\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"The scope (channel) code for the attribute value, null if the attribute is not scopable\"},\"rejected\":{\"type\":\"boolean\",\"description\":\"Whether this attribute value has been rejected\"},\"comment\":{\"type\":\"string\",\"description\":\"Optional comment explaining why the attribute value was rejected.\"}}}}}}}]}}}}}}]}", - "", - "// Validate if response matches JSON schema ", - "pm.test(\"[GET]::/api/rest/v1/workflows/tasks - Schema is valid\", function() {", - " pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{token}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Accept", - "value": "application/json" - } - ], - "url": { - "raw": "{{url}}/api/rest/v1/workflows/tasks?search={\"step_uuid\":[{\"operator\":\"=\",\"value\":[\"0a2c9f49-2b4f-42a5-b7f9-6c50f6bce8e9\"]}]}", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "workflows", - "tasks" - ], - "query": [ - { - "key": "search", - "value": "{\"step_uuid\":[{\"operator\":\"=\",\"value\":[\"0a2c9f49-2b4f-42a5-b7f9-6c50f6bce8e9\"]}]}", - "description": "(Required) Stringified JSON to filter tasks.\nFor more details see the [Filters](https://api.akeneo.com/documentation/filter.html#filter-on-workflow-tasks) section.\n" - }, - { - "key": "with_attributes", - "value": "false", - "description": "Whether to include task attributes in the response", - "disabled": true - }, - { - "key": "page", - "value": "1", - "description": "Specify which page of results to retrieve when using pagination.\nIt is useful for navigating through large datasets by breaking them into smaller, manageable pages.\nSee [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.\n", - "disabled": true - }, - { - "key": "limit", - "value": "100", - "description": "Specify the maximum number of results to return per page.\nIt is useful for controlling the amount of data returned in a single request, especially when dealing with large datasets.\nSee [Pagination](https://api.akeneo.com/documentation/pagination.html) section for more details.\n", - "disabled": true - } - ] - }, - "description": "Retrieves a paginated list of tasks for a specified workflow step" - }, - "response": [] - }, - { - "name": "Update a Workflow Task's Status (Approve, Reject, Complete)", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "// Validate if response has empty Body ", - "pm.test(\"[PATCH]::/api/rest/v1/workflows/tasks/:uuid - Response has empty Body\", function () {", - " pm.response.to.not.be.withBody;", - "});", - "" - ], - "type": "text/javascript", - "packages": {} - } - } - ], - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{token}}", - "type": "string" - } - ] - }, - "method": "PATCH", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Accept", - "value": "application/json" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"status\": \"completed\",\n \"send_back_to_step_uuid\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"rejected_attributes\": {\n \"name\": [\n {\n \"comment\": \"\",\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"description\": [\n {\n \"comment\": \"Wrong description\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n },\n {\n \"comment\": \"\",\n \"locale\": \"fr_FR\",\n \"scope\": \"mobile\"\n }\n ]\n }\n}", - "options": { - "raw": { - "headerFamily": "json", - "language": "json" - } - } - }, - "url": { - "raw": "{{url}}/api/rest/v1/workflows/tasks/:uuid", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "rest", - "v1", - "workflows", - "tasks", - ":uuid" - ], - "variable": [ - { - "key": "uuid", - "value": "7895af43-cfdd-43dc-989b-215000832539", - "description": "(Required) This path parameter is used to specify the unique identifier of the entity you want to retrieve or manipulate.\nIt is essential for identifying the specific entity in the API requests.\nEnsure that the UUID is correctly formatted and corresponds to an existing entity in the system.\n" - } - ] - }, - "description": "Approves or completes a task. \nThe request body's structure depends on the action being performed.\n\n- To **approve** a 'review' task, set status to `approved`.\n- To **complete** an 'enrichment' task, set status to `completed`.\n- To **reject** a 'review' task, set status to `rejected`, provide `send_back_to_step_uuid`, and optionally provide `rejected_attributes` to specify details about rejected attributes.\n" - }, - "response": [] - } - ], - "description": "The Tasks endpoints allow you to retrieve the tasks for each workflow steps, products and product models.\nIt also allows you to manage the tasks by approving, rejecting or completing them.\n" - }, - { - "name": "Authentification by password", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "postman.setEnvironmentVariable(", - " \"base64ClientIdSecret\", ", - " btoa(postman.getEnvironmentVariable(\"clientId\") + ':' + postman.getEnvironmentVariable(\"secret\"))", - ");", - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var jsonData = JSON.parse(responseBody);", - "postman.setEnvironmentVariable(\"token\", jsonData.access_token);", - "postman.setEnvironmentVariable(\"refreshToken\", jsonData.refresh_token);" - ] - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Basic {{base64ClientIdSecret}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"username\" : \"{{username}}\",\n \"password\" : \"{{password}}\",\n \"grant_type\": \"password\"\n }" - }, - "url": { - "raw": "{{url}}/api/oauth/v1/token", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "oauth", - "v1", - "token" - ] - } - }, - "response": [] - }, - { - "name": "Authentification by refresh token", - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "postman.setEnvironmentVariable(", - " \"base64ClientIdSecret\", ", - " btoa(postman.getEnvironmentVariable(\"clientId\") + ':' + postman.getEnvironmentVariable(\"secret\"))", - ");" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var jsonData = JSON.parse(responseBody);", - "postman.setEnvironmentVariable(\"token\", jsonData.access_token);", - "postman.setEnvironmentVariable(\"refreshToken\", jsonData.refresh_token);" - ] - } - } - ], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Basic {{base64ClientIdSecret}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"refresh_token\" : \"{{refreshToken}}\",\n \"grant_type\": \"refresh_token\"\n }" - }, - "url": { - "raw": "{{url}}/api/oauth/v1/token", - "host": [ - "{{url}}" - ], - "path": [ - "api", - "oauth", - "v1", - "token" - ] - } - }, - "response": [] - } - ], - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ] + "_": { + "postman_id": "a7e8d599-05f2-44b0-8e58-b511a9f146f2" + }, + "item": [ + { + "id": "82a87823-fb03-4dfb-89d1-12c14c01c58f", + "name": "Products", + "description": "Manage products, product models, and their media files.\n\nSee: https://api.akeneo.com/api-reference-index.html#Products", + "item": [ + { + "id": "042f48ba-5db6-4231-af30-d95456e668f6", + "name": "Product [uuid]", + "description": "Manage products using UUID identifiers (recommended). UUIDs are system-generated unique identifiers that remain stable across environments.\n\nSee: https://api.akeneo.com/api-reference-index.html#products-uuid", + "item": [ + { + "id": "b717a059-c9e4-48d2-9262-bc535824d30f", + "name": "Create a new product", + "request": { + "name": "Create a new product", + "description": "Create a new product using UUID identifiers.\n\nIf no `uuid` is provided, the PIM generates one automatically. The product is created in the draft state if your user permissions require approval.\n\n**Required fields**: Only `family` is strongly recommended. All other fields are optional.\n\n**Attribute values**: Follow the locale/scope structure — set `locale: null` for non-localizable attributes and `scope: null` for non-scopable attributes.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update.", + "type": "text/plain" + }, + "key": "create_missing_options", + "value": "" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"uuid\": \"25566245-55c3-42ce-86d9-8610ac459fa8\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"groups\": [],\n \"parent\": null,\n \"values\": {\n \"sku\": [\n {\n \"data\": \"top\",\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"name\": [\n {\n \"data\": \"Top\",\n \"locale\": \"en_US\",\n \"scope\": null\n },\n {\n \"data\": \"Débardeur\",\n \"locale\": \"fr_FR\",\n \"scope\": null\n }\n ],\n \"description\": [\n {\n \"data\": \"Summer top\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n },\n {\n \"data\": \"Top\",\n \"locale\": \"en_US\",\n \"scope\": \"tablet\"\n },\n {\n \"data\": \"Débardeur pour l'été\",\n \"locale\": \"fr_FR\",\n \"scope\": \"ecommerce\"\n },\n {\n \"data\": \"Débardeur\",\n \"locale\": \"fr_FR\",\n \"scope\": \"tablet\"\n }\n ],\n \"price\": [\n {\n \"data\": [\n {\n \"amount\": \"15.5\",\n \"currency\": \"EUR\"\n },\n {\n \"amount\": \"15\",\n \"currency\": \"USD\"\n }\n ],\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"color\": [\n {\n \"data\": \"black\",\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"attribute\": \"color\",\n \"code\": \"black\",\n \"labels\": {\n \"en_US\": \"Black\",\n \"fr_FR\": \"Noir\"\n }\n }\n }\n ],\n \"size\": [\n {\n \"data\": \"m\",\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"attribute\": \"size\",\n \"code\": \"m\",\n \"labels\": {\n \"en_US\": \"M\",\n \"fr_FR\": \"M\"\n }\n }\n }\n ],\n \"collection\": [\n {\n \"data\": [\n \"winter_2016\"\n ],\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"winter_2016\": {\n \"attribute\": \"collection\",\n \"code\": \"winter_2016\",\n \"labels\": {\n \"en_US\": \"Winter 2016\",\n \"fr_FR\": \"Hiver 2016\"\n }\n }\n }\n }\n ]\n },\n \"associations\": {\n \"PACK\": {\n \"products\": [\n \"d055527c-0698-4967-8f16-8a5f23f4e5cf\"\n ],\n \"product_models\": [],\n \"groups\": []\n }\n },\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [\n {\n \"uuid\": \"fc24e6c3-933c-4a93-8a81-e5c703d134d5\",\n \"quantity\": 2\n },\n {\n \"uuid\": \"a9b69002-a0b1-4ead-85c2-f8dbf59c6cfc\",\n \"quantity\": 1\n }\n ],\n \"product_models\": [\n {\n \"identifier\": \"model-biker-jacket-leather\",\n \"quantity\": 2\n }\n ]\n }\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Product created", + "originalRequest": { + "name": "Create a new product", + "description": "Create a new product using UUID identifiers.\n\nIf no `uuid` is provided, the PIM generates one automatically. The product is created in the draft state if your user permissions require approval.\n\n**Required fields**: Only `family` is strongly recommended. All other fields are optional.\n\n**Attribute values**: Follow the locale/scope structure — set `locale: null` for non-localizable attributes and `scope: null` for non-scopable attributes.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update.", + "type": "text/plain" + }, + "key": "create_missing_options", + "value": "" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"uuid\": \"25566245-55c3-42ce-86d9-8610ac459fa8\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"groups\": [],\n \"parent\": null,\n \"values\": {\n \"sku\": [\n {\n \"data\": \"top\",\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"name\": [\n {\n \"data\": \"Top\",\n \"locale\": \"en_US\",\n \"scope\": null\n },\n {\n \"data\": \"Débardeur\",\n \"locale\": \"fr_FR\",\n \"scope\": null\n }\n ],\n \"description\": [\n {\n \"data\": \"Summer top\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n },\n {\n \"data\": \"Top\",\n \"locale\": \"en_US\",\n \"scope\": \"tablet\"\n },\n {\n \"data\": \"Débardeur pour l'été\",\n \"locale\": \"fr_FR\",\n \"scope\": \"ecommerce\"\n },\n {\n \"data\": \"Débardeur\",\n \"locale\": \"fr_FR\",\n \"scope\": \"tablet\"\n }\n ],\n \"price\": [\n {\n \"data\": [\n {\n \"amount\": \"15.5\",\n \"currency\": \"EUR\"\n },\n {\n \"amount\": \"15\",\n \"currency\": \"USD\"\n }\n ],\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"color\": [\n {\n \"data\": \"black\",\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"attribute\": \"color\",\n \"code\": \"black\",\n \"labels\": {\n \"en_US\": \"Black\",\n \"fr_FR\": \"Noir\"\n }\n }\n }\n ],\n \"size\": [\n {\n \"data\": \"m\",\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"attribute\": \"size\",\n \"code\": \"m\",\n \"labels\": {\n \"en_US\": \"M\",\n \"fr_FR\": \"M\"\n }\n }\n }\n ],\n \"collection\": [\n {\n \"data\": [\n \"winter_2016\"\n ],\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"winter_2016\": {\n \"attribute\": \"collection\",\n \"code\": \"winter_2016\",\n \"labels\": {\n \"en_US\": \"Winter 2016\",\n \"fr_FR\": \"Hiver 2016\"\n }\n }\n }\n }\n ]\n },\n \"associations\": {\n \"PACK\": {\n \"products\": [\n \"d055527c-0698-4967-8f16-8a5f23f4e5cf\"\n ],\n \"product_models\": [],\n \"groups\": []\n }\n },\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [\n {\n \"uuid\": \"fc24e6c3-933c-4a93-8a81-e5c703d134d5\",\n \"quantity\": 2\n },\n {\n \"uuid\": \"a9b69002-a0b1-4ead-85c2-f8dbf59c6cfc\",\n \"quantity\": 1\n }\n ],\n \"product_models\": [\n {\n \"identifier\": \"model-biker-jacket-leather\",\n \"quantity\": 2\n }\n ]\n }\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/products-uuid/25566245-55c3-42ce-86d9-8610ac459fa8" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "6d747baf-ef3d-415a-b20e-b5e989302cd4", + "name": "Delete a product", + "request": { + "name": "Delete a product", + "description": "Permanently delete a product by its UUID. This action cannot be undone.\n\nThe product is removed from all categories and associations. If the product has variants, you must delete those first.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid/{{productUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid", + "{{productUuid}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "DELETE", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Product deleted", + "originalRequest": { + "name": "Delete a product", + "description": "Permanently delete a product by its UUID. This action cannot be undone.\n\nThe product is removed from all categories and associations. If the product has variants, you must delete those first.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid/{{productUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid", + "{{productUuid}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "DELETE", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "2406d6b0-7794-4310-b8d2-20889c75a962", + "type": "text/javascript", + "exec": [ + "// Validate if response has empty Body \npm.test(\"[DELETE]::/api/rest/v1/products-uuid/:uuid - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "3be2084d-6b4d-4460-9446-35d79d31d5f5", + "name": "Get a draft", + "request": { + "name": "Get a draft", + "description": "Retrieve the current draft of a product — the working copy with unapproved changes (Enterprise Edition).\n\nThe draft contains changes that haven't been approved yet. Compare with the published product to see what's pending.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid/{{productUuid}}/draft", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid", + "{{productUuid}}", + "draft" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Draft details", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"uuid\": \"25566245-55c3-42ce-86d9-8610ac459fa8\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"values\": {\n \"sku\": [\n {\n \"data\": \"top\",\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"name\": [\n {\n \"data\": \"Summer Top \\u2014 DRAFT\",\n \"locale\": \"en_US\",\n \"scope\": null\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "d00cb578-ffe1-473c-9c5f-237ed08cb36b", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/products-uuid/:uuid/draft - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/products-uuid/:uuid/draft - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Product UUID\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the product is enabled\",\"default\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"groups\":{\"type\":\"array\",\"description\":\"Codes of the groups to which the product belong.\\nEach string of the array is equal to an existing group code.\\n\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing group code\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"root_parent\":{\"type\":\"string\",\"description\":\"Code of the root parent product model when the product is a variant\\n(only available when the `with_root_parent` is set to `true`).\\n\",\"default\":\"null\",\"x-validation-rules\":\"It is equal to an existing product model code only if the product is variant; otherwise, the property does not appear\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product uuids and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the uuid of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`).\\n\",\"x-immutable\":true},\"completenesses\":{\"type\":\"array\",\"description\":\"Product completenesses for each channel/locale combination\\n(only available when the `with_completenesses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"data\":{\"type\":\"integer\",\"description\":\"Completenesses score value for the given channel/locale combination\"}}},\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`)\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/products-uuid/:uuid/draft - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "5f84486d-facf-4f09-a172-82c67b48f6dc", + "name": "Get a product", + "request": { + "name": "Get a product", + "description": "Retrieve a single product by its UUID.\n\nOptionally include quality scores, completeness data, and attribute option labels using query parameters.\n\n**Tip**: Set `with_attribute_options=true` to get human-readable labels for select attributes instead of just option codes.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid/{{productUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid", + "{{productUuid}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Return labels of attribute options in the response.", + "type": "text/plain" + }, + "key": "with_attribute_options", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return asset collection share link URLs in the response.", + "type": "text/plain" + }, + "key": "with_asset_share_links", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product quality scores in the response.", + "type": "text/plain" + }, + "key": "with_quality_scores", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product completenesses information in the response.", + "type": "text/plain" + }, + "key": "with_completenesses", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return the root parent product model code of a variant in the response.", + "type": "text/plain" + }, + "key": "with_root_parent", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return an array of workflowexecutionstatuses directly associated with the requested entity (product or product model) in the response.", + "type": "text/plain" + }, + "key": "with_workflow_execution_statuses", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Product details", + "originalRequest": { + "name": "Get a product", + "description": "Retrieve a single product by its UUID.\n\nOptionally include quality scores, completeness data, and attribute option labels using query parameters.\n\n**Tip**: Set `with_attribute_options=true` to get human-readable labels for select attributes instead of just option codes.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid/{{productUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid", + "{{productUuid}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Return labels of attribute options in the response.", + "type": "text/plain" + }, + "key": "with_attribute_options", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return asset collection share link URLs in the response.", + "type": "text/plain" + }, + "key": "with_asset_share_links", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product quality scores in the response.", + "type": "text/plain" + }, + "key": "with_quality_scores", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product completenesses information in the response.", + "type": "text/plain" + }, + "key": "with_completenesses", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return the root parent product model code of a variant in the response.", + "type": "text/plain" + }, + "key": "with_root_parent", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return an array of workflowexecutionstatuses directly associated with the requested entity (product or product model) in the response.", + "type": "text/plain" + }, + "key": "with_workflow_execution_statuses", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"uuid\": \"25566245-55c3-42ce-86d9-8610ac459fa8\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"groups\": [],\n \"parent\": null,\n \"values\": {\n \"sku\": [\n {\n \"data\": \"top\",\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"name\": [\n {\n \"data\": \"Summer Top\",\n \"locale\": \"en_US\",\n \"scope\": null\n },\n {\n \"data\": \"D\\u00e9bardeur d'\\u00e9t\\u00e9\",\n \"locale\": \"fr_FR\",\n \"scope\": null\n }\n ],\n \"description\": [\n {\n \"data\": \"Lightweight cotton summer top\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n }\n ],\n \"price\": [\n {\n \"data\": [\n {\n \"amount\": \"29.99\",\n \"currency\": \"EUR\"\n },\n {\n \"amount\": \"34.99\",\n \"currency\": \"USD\"\n }\n ],\n \"locale\": null,\n \"scope\": null\n }\n ]\n },\n \"created\": \"2024-01-15T10:30:00+00:00\",\n \"updated\": \"2024-06-20T14:22:00+00:00\",\n \"associations\": {},\n \"quantified_associations\": {}\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "61614119-8f88-4812-9c7f-881f05dfd290", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/products-uuid/:uuid - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/products-uuid/:uuid - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Product UUID\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the product is enabled\",\"default\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"groups\":{\"type\":\"array\",\"description\":\"Codes of the groups to which the product belong.\\nEach string of the array is equal to an existing group code.\\n\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing group code\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"root_parent\":{\"type\":\"string\",\"description\":\"Code of the root parent product model when the product is a variant\\n(only available when the `with_root_parent` is set to `true`).\\n\",\"default\":\"null\",\"x-validation-rules\":\"It is equal to an existing product model code only if the product is variant; otherwise, the property does not appear\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product uuids and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the uuid of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`).\\n\",\"x-immutable\":true},\"completenesses\":{\"type\":\"array\",\"description\":\"Product completenesses for each channel/locale combination\\n(only available when the `with_completenesses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"data\":{\"type\":\"integer\",\"description\":\"Completenesses score value for the given channel/locale combination\"}}},\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`)\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/products-uuid/:uuid - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "f1cb0042-4035-4c0c-8540-96a53605ef94", + "name": "Get list of products", + "request": { + "name": "Get list of products", + "description": "Retrieve a paginated list of products using UUID identifiers.\n\nProducts can be filtered by category, family, completeness, quality score, attributes, and more using the `search` query parameter. Enable disabled search filters one at a time to try different filter combinations.\n\n**Pagination**: Use `page` type (default, max 10,000 products) or `search_after` type (cursor-based, unlimited). For large catalogs, always use `search_after`.\n\n**Tip**: Use `attributes` to limit which attribute values are returned — this significantly improves response time for products with many attributes.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter product values to only return those concerning the given attributes.", + "type": "text/plain" + }, + "key": "attributes", + "value": "name,description" + }, + { + "disabled": true, + "description": { + "content": "Convert values of measurement attributes to the unit configured in the channel provided by the scope parameter.", + "type": "text/plain" + }, + "key": "convert_measurements", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Filter product values to return localizable attributes for the given locales as well as the non localizable/non scopable attributes.", + "type": "text/plain" + }, + "key": "locales", + "value": "en_US,fr_FR" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify which pagination method to use for navigating through large datasets.", + "type": "text/plain" + }, + "key": "pagination_type", + "value": "page" + }, + { + "disabled": true, + "description": { + "content": "Filter product values to return scopable attributes for the given channel as well as the non localizable/non scopable attributes.", + "type": "text/plain" + }, + "key": "scope", + "value": "ecommerce" + }, + { + "disabled": true, + "description": { + "content": "Filter products, for more details see the [Filters](https://api.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"uuid\":[{\"operator\":\"IN\",\"value\":[\"8945388d-cf5b-49af-8799-05d1ed6e296f\", \"941fe892-99dd-440f-b2a9-8eccb94248f0\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their category", + "type": "text/plain" + }, + "key": "search", + "value": "{\"categories\":[{\"operator\":\"IN\",\"value\":[\"winter_collection\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products categorized on the Winter Collection category and that are not categorized on the Accessories category", + "type": "text/plain" + }, + "key": "search", + "value": "{\"categories\":[{\"operator\":\"IN\",\"value\":[\"winter_collection\"]},{\"operator\":\"NOT IN\",\"value\":[\"accessories\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their status", + "type": "text/plain" + }, + "key": "search", + "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":false}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their completeness", + "type": "text/plain" + }, + "key": "search", + "value": "{\"completeness\":[{\"operator\":\"=\",\"value\":50,\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products that are 100% complete on both the enUS and frFR locales for the ecommerce channel", + "type": "text/plain" + }, + "key": "search", + "value": "{\"completeness\":[{\"operator\":\"GREATER OR EQUALS THAN ON ALL LOCALES\",\"value\":100,\"locales\":[\"en_US\",\"fr_FR\"],\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their group", + "type": "text/plain" + }, + "key": "search", + "value": "{\"groups\":[{\"operator\":\"IN\",\"value\":[\"promotion\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their family", + "type": "text/plain" + }, + "key": "search", + "value": "{\"family\":[{\"operator\":\"NOT IN\",\"value\":[\"camcorders\",\"digital_cameras\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their creation date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"created\":[{\"operator\":\"=\",\"value\":\"2016-07-04 10:00:00\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products updated since X days", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\"SINCE LAST N DAYS\",\"value\":4}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the variant products by their parent", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"IN\",\"value\":[\"tops\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the variant products by their sub product model", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"IN\",\"value\":[\"tshirt_armor_blue\",\"tshirt_armor_red\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Get all variant products", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"NOT EMPTY\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Get all simple products", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"EMPTY\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products with a \"D\" for the ecommerce channel and en_US locale", + "type": "text/plain" + }, + "key": "search", + "value": "{\"quality_score\":[{\"operator\":\"IN\",\"value\":[\"D\"],\"scope\":\"ecommerce\",\"locale\":\"en_US\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products with an \"A\" or \"B\" for the mobile channel and en_GB locale", + "type": "text/plain" + }, + "key": "search", + "value": "{\"quality_score\":[{\"operator\":\"IN\",\"value\":[\"A\",\"B\"],\"scope\":\"mobile\",\"locale\":\"en_GB\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Get only enabled products", + "type": "text/plain" + }, + "key": "search", + "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":true}]}" + }, + { + "disabled": true, + "description": { + "content": "Get only enabled products that are at least 70% complete on the ecommerce channel", + "type": "text/plain" + }, + "key": "search", + "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":true}],\"completeness\":[{\"operator\":\">\",\"value\":70,\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by an attribute value", + "type": "text/plain" + }, + "key": "search", + "value": "{\"main_color\":[{\"operator\":\"IN\",\"value\":[\"purple\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products having a description begining with Amazing on the en_US locale", + "type": "text/plain" + }, + "key": "search", + "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products that have a release date due after the 4th of July 2016 for the ecommerce channel", + "type": "text/plain" + }, + "key": "search", + "value": "{\"release_date\":[{\"operator\":\">\",\"value\":\"2016-07-04\",\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products containing a text in the name attribute", + "type": "text/plain" + }, + "key": "search", + "value": "{\"name\":[{\"operator\":\"CONTAINS\",\"value\":\"shirt\",\"locale\":\"en_US\",\"scope\":\"mobile\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by multiple attribute values", + "type": "text/plain" + }, + "key": "search", + "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}],\"main_color\":[{\"operator\":\"IN\",\"value\":[\"purple\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by multiple attribute conditions", + "type": "text/plain" + }, + "key": "search", + "value": "{\"description\":[{\"operator\":\"NOT EMPTY\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"},{\"operator\":\"EMPTY\",\"locale\":\"fr_FR\",\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + }, + { + "disabled": true, + "description": { + "content": "Filter locales based on specific criteria.", + "type": "text/plain" + }, + "key": "search_locale", + "value": "en_US" + }, + { + "disabled": true, + "description": { + "content": "Filter scopes based on specific criteria.", + "type": "text/plain" + }, + "key": "search_scope", + "value": "ecommerce" + }, + { + "disabled": true, + "description": { + "content": "Return asset collection share link URLs in the response.", + "type": "text/plain" + }, + "key": "with_asset_share_links", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return labels of attribute options in the response.", + "type": "text/plain" + }, + "key": "with_attribute_options", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product completenesses information in the response.", + "type": "text/plain" + }, + "key": "with_completenesses", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product quality scores in the response.", + "type": "text/plain" + }, + "key": "with_quality_scores", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return the root parent product model code of a variant in the response.", + "type": "text/plain" + }, + "key": "with_root_parent", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return an array of workflowexecutionstatuses directly associated with the requested entity (product or product model) in the response.", + "type": "text/plain" + }, + "key": "with_workflow_execution_statuses", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Product list (paginated)", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/products-uuid?page=1&limit=10\"\n },\n \"first\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/products-uuid?page=1&limit=10\"\n },\n \"next\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/products-uuid?page=2&limit=10\"\n }\n },\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/products-uuid/25566245-55c3-42ce-86d9-8610ac459fa8\"\n }\n },\n \"uuid\": \"25566245-55c3-42ce-86d9-8610ac459fa8\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"groups\": [],\n \"parent\": null,\n \"values\": {\n \"sku\": [\n {\n \"data\": \"top\",\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"name\": [\n {\n \"data\": \"Summer Top\",\n \"locale\": \"en_US\",\n \"scope\": null\n }\n ],\n \"price\": [\n {\n \"data\": [\n {\n \"amount\": \"29.99\",\n \"currency\": \"EUR\"\n }\n ],\n \"locale\": null,\n \"scope\": null\n }\n ]\n },\n \"created\": \"2024-01-15T10:30:00+00:00\",\n \"updated\": \"2024-06-20T14:22:00+00:00\"\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "3e0bdd18-8def-4346-adea-c3ae431b9974", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/products-uuid - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/products-uuid - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Products\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Product UUID\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the product is enabled\",\"default\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"groups\":{\"type\":\"array\",\"description\":\"Codes of the groups to which the product belong.\\nEach string of the array is equal to an existing group code.\\n\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing group code\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"root_parent\":{\"type\":\"string\",\"description\":\"Code of the root parent product model when the product is a variant\\n(only available when the `with_root_parent` is set to `true`).\\n\",\"default\":\"null\",\"x-validation-rules\":\"It is equal to an existing product model code only if the product is variant; otherwise, the property does not appear\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product uuids and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the uuid of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`).\\n\",\"x-immutable\":true},\"completenesses\":{\"type\":\"array\",\"description\":\"Product completenesses for each channel/locale combination\\n(only available when the `with_completenesses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"data\":{\"type\":\"integer\",\"description\":\"Completenesses score value for the given channel/locale combination\"}}},\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`)\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/products-uuid - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "a560e456-1df4-4d1c-b1ad-1a4c517bdafe", + "name": "Search list of products", + "request": { + "name": "Search list of products", + "description": "Search for products using filters provided in the request body (POST).\n\nThis endpoint is functionally equivalent to GET with `search` query parameters, but allows complex filter expressions in the body instead of URL-encoded parameters. Useful when filters would make the URL too long.\n\n**Tip**: Combine multiple filters to narrow results — e.g. enabled + completeness + category.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid/search", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid", + "search" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which pagination method to use for navigating through large datasets.", + "type": "text/plain" + }, + "key": "pagination_type", + "value": "page" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"scope\": \"ecommerce\",\n \"locales\": \"en_US\",\n \"search\": \"{\\\"completeness\\\":[{\\\"operator\\\": \\\"=\\\",\\\"value\\\": 100,\\\"scope\\\":\\\"ecommerce\\\"}]}\",\n \"attributes\": \"description, name\",\n \"with_attribute_options\": false,\n \"with_asset_share_links\": true,\n \"with_quality_scores__products\": true,\n \"with_completenesses\": true\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Search results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/products-uuid/search\"\n }\n },\n \"current_page\": 1,\n \"items_count\": 42,\n \"_embedded\": {\n \"items\": [\n {\n \"uuid\": \"25566245-55c3-42ce-86d9-8610ac459fa8\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"values\": {\n \"name\": [\n {\n \"data\": \"Summer Top\",\n \"locale\": \"en_US\",\n \"scope\": null\n }\n ],\n \"description\": [\n {\n \"data\": \"Lightweight summer top\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n }\n ]\n }\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "6c0c1aff-fbb7-457a-8098-406f8fd7a3c8", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/rest/v1/products-uuid/search - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/rest/v1/products-uuid/search - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Products\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Product UUID\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the product is enabled\",\"default\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"groups\":{\"type\":\"array\",\"description\":\"Codes of the groups to which the product belong.\\nEach string of the array is equal to an existing group code.\\n\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing group code\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"root_parent\":{\"type\":\"string\",\"description\":\"Code of the root parent product model when the product is a variant\\n(only available when the `with_root_parent` is set to `true`).\\n\",\"default\":\"null\",\"x-validation-rules\":\"It is equal to an existing product model code only if the product is variant; otherwise, the property does not appear\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product uuids and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the uuid of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`).\\n\",\"x-immutable\":true},\"completenesses\":{\"type\":\"array\",\"description\":\"Product completenesses for each channel/locale combination\\n(only available when the `with_completenesses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"data\":{\"type\":\"integer\",\"description\":\"Completenesses score value for the given channel/locale combination\"}}},\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`)\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/rest/v1/products-uuid/search - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "2294817b-d59b-40d7-a7c1-48e4a6dd1e79", + "name": "Submit a draft for approval", + "request": { + "name": "Submit a draft for approval", + "description": "Submit a product draft for approval in the workflow (Enterprise Edition).\n\nThe product must have pending changes in draft state. Once submitted, the draft enters the approval workflow and the assigned reviewer is notified.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid/{{productUuid}}/proposal", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid", + "{{productUuid}}", + "proposal" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required)", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Submitted", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "{{baseUrl}}/api/rest/v1/resource-path" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "a4a0e0d2-fd3d-456c-815c-155bfad7e380", + "name": "Update/create a product", + "request": { + "name": "Update/create a product", + "description": "Update an existing product or create it if the UUID doesn't exist yet.\n\n**Update behavior**: Uses merge-patch semantics. Only include the fields you want to change.\n- To update a single attribute value, send only that attribute in `values`\n- To clear a value, set `data` to `null`\n- Arrays (categories, groups) are replaced entirely, not merged\n\nSee: https://api.akeneo.com/documentation/update.html", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid/{{productUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid", + "{{productUuid}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update.", + "type": "text/plain" + }, + "key": "create_missing_options", + "value": "" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"uuid\": \"25566245-55c3-42ce-86d9-8610ac459fa8\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"groups\": [],\n \"parent\": null,\n \"root_parent\": \"null\",\n \"values\": {\n \"sku\": [\n {\n \"data\": \"top\",\n \"locale\": null,\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_identifier\"\n }\n ],\n \"name\": [\n {\n \"data\": \"Top\",\n \"locale\": \"en_US\",\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_text\"\n },\n {\n \"data\": \"Débardeur\",\n \"locale\": \"fr_FR\",\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_text\"\n }\n ],\n \"description\": [\n {\n \"data\": \"Summer top\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\",\n \"attribute_type\": \"pim_catalog_textarea\"\n },\n {\n \"data\": \"Top\",\n \"locale\": \"en_US\",\n \"scope\": \"tablet\",\n \"attribute_type\": \"pim_catalog_textarea\"\n },\n {\n \"data\": \"Débardeur pour l'été\",\n \"locale\": \"fr_FR\",\n \"scope\": \"ecommerce\",\n \"attribute_type\": \"pim_catalog_textarea\"\n },\n {\n \"data\": \"Débardeur\",\n \"locale\": \"fr_FR\",\n \"scope\": \"tablet\",\n \"attribute_type\": \"pim_catalog_textarea\"\n }\n ],\n \"price\": [\n {\n \"data\": [\n {\n \"amount\": \"15.5\",\n \"currency\": \"EUR\"\n },\n {\n \"amount\": \"15\",\n \"currency\": \"USD\"\n }\n ],\n \"locale\": null,\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_price_collection\"\n }\n ],\n \"color\": [\n {\n \"data\": \"black\",\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"attribute\": \"color\",\n \"code\": \"black\",\n \"labels\": {\n \"en_US\": \"Black\",\n \"fr_FR\": \"Noir\"\n }\n },\n \"attribute_type\": \"pim_catalog_simpleselect\"\n }\n ],\n \"size\": [\n {\n \"data\": \"m\",\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"attribute\": \"size\",\n \"code\": \"m\",\n \"labels\": {\n \"en_US\": \"M\",\n \"fr_FR\": \"M\"\n }\n },\n \"attribute_type\": \"pim_catalog_simpleselect\"\n }\n ],\n \"collection\": [\n {\n \"data\": [\n \"winter_2016\"\n ],\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"winter_2016\": {\n \"attribute\": \"collection\",\n \"code\": \"winter_2016\",\n \"labels\": {\n \"en_US\": \"Winter 2016\",\n \"fr_FR\": \"Hiver 2016\"\n }\n }\n },\n \"attribute_type\": \"pim_catalog_multiselect\"\n }\n ]\n },\n \"created\": \"2016-06-23T18:24:44+02:00\",\n \"updated\": \"2016-06-25T17:56:12+02:00\",\n \"associations\": {\n \"PACK\": {\n \"products\": [\n \"d055527c-0698-4967-8f16-8a5f23f4e5cf\"\n ],\n \"product_models\": [],\n \"groups\": []\n }\n },\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [\n {\n \"uuid\": \"fc24e6c3-933c-4a93-8a81-e5c703d134d5\",\n \"quantity\": 2\n },\n {\n \"uuid\": \"a9b69002-a0b1-4ead-85c2-f8dbf59c6cfc\",\n \"quantity\": 1\n }\n ],\n \"product_models\": [\n {\n \"identifier\": \"model-biker-jacket-leather\",\n \"quantity\": 2\n }\n ]\n }\n },\n \"quality_scores\": [\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"data\": \"A\"\n },\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"fr_FR\",\n \"data\": \"B\"\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"en_US\",\n \"data\": \"D\"\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"fr_FR\",\n \"data\": \"E\"\n }\n ],\n \"completenesses\": [\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"data\": 10\n },\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"fr_FR\",\n \"data\": 20\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"en_US\",\n \"data\": 30\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"fr_FR\",\n \"data\": 40\n }\n ],\n \"workflow_execution_statuses\": [\n {\n \"uuid\": \"8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52\",\n \"status\": \"in_progress\",\n \"started_at\": \"2024-02-22T17:31:00Z\",\n \"completed_at\": null,\n \"workflow\": {\n \"uuid\": \"6f37476a-04c2-46c0-b6d0-e18316959068\",\n \"code\": \"enrichment_workflow\",\n \"labels\": {\n \"en_US\": \"Enrichment workflow\",\n \"fr_FR\": \"Workflow d'enrichissement\"\n }\n },\n \"tasks\": [\n {\n \"uuid\": \"8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07\",\n \"status\": \"in_progress\",\n \"created_at\": \"2024-02-22T17:31:00Z\",\n \"step\": {\n \"uuid\": \"f626d0e5-84a5-41fc-8215-65508c253edb\",\n \"code\": \"review_step\",\n \"labels\": {\n \"en_US\": \"Marketing review\",\n \"fr_FR\": \"Revue marketing\"\n }\n }\n }\n ]\n },\n {\n \"uuid\": \"59169984-6d6c-4fa7-b925-68b8e9d31ddb\",\n \"status\": \"completed\",\n \"started_at\": \"2024-02-22T17:31:00Z\",\n \"completed_at\": \"2024-02-22T17:31:00Z\",\n \"workflow\": {\n \"uuid\": \"b69ee158-a421-4680-bec0-a71bc73b8e31\",\n \"code\": \"compliance_workflow\",\n \"labels\": {}\n },\n \"tasks\": []\n }\n ]\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + }, + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/products-uuid/25566245-55c3-42ce-86d9-8610ac459fa8" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "97606040-7760-4ba7-9e41-7e31f3d52a46", + "name": "Update/create several products", + "request": { + "name": "Update/create several products", + "description": "Batch update and/or create multiple products in a single request.\n\nSend one JSON object per line (NDJSON format) with `Content-Type: application/vnd.akeneo.collection+json`. Each line is processed independently — if one fails, the others still succeed.\n\n**Update behavior**: Uses merge-patch semantics. Only the fields you send are modified. To clear a value, explicitly set it to `null`.\n\nSee: https://api.akeneo.com/documentation/update.html", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products-uuid", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products-uuid" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update.", + "type": "text/plain" + }, + "key": "create_missing_options", + "value": "" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\"uuid\":\"fc24e6c3-933c-4a93-8a81-e5c703d134d5\",\"values\":{\"description\":[{\"scope\":\"ecommerce\",\"locale\":\"en_US\",\"data\":\"My amazing cap\"}]}}\n{\"uuid\":\"573dd613-0c7f-4143-83d5-63cc5e535966\",\"values\":{\"sku\":[{\"data\":\"updated_sku\",\"locale\":null,\"scope\":null}]}, \"group\":[\"promotion\"]}\n{\"uuid\":\"25566245-55c3-42ce-86d9-8610ac459fa8\",\"values\":{\"sku\":[{\"data\":\"new_product\",\"locale\":null,\"scope\":null}]},\"family\":\"clothes\"}\n", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"uuid\": \"fc24e6c3-933c-4a93-8a81-e5c703d134d5\",\n \"status_code\": 204\n },\n {\n \"line\": 2,\n \"uuid\": \"573dd613-0c7f-4143-83d5-63cc5e535966\",\n \"status_code\": 204\n },\n {\n \"line\": 3,\n \"uuid\": \"25566245-55c3-42ce-86d9-8610ac459fa8\",\n \"status_code\": 201\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "f8da7b17-4c5e-44f3-a712-e6da919244e9", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/products-uuid - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/products-uuid - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/products-uuid - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "4b1e17f4-82f0-4d6d-9826-42bde6649eb1", + "name": "Product [identifier]", + "description": "Manage products using the legacy SKU/identifier system. For new integrations, prefer the UUID endpoints.\n\nSee: https://api.akeneo.com/api-reference-index.html#products", + "item": [ + { + "id": "6ccff18d-3299-4684-b444-f0235a2af88f", + "name": "Create a new product", + "request": { + "name": "Create a new product", + "description": "Create a new product using identifier (SKU).\n\nThe `identifier` field is required and must be unique. For new integrations, prefer UUID endpoints.\n\nAttribute values follow the locale/scope structure: `locale: null` for non-localizable, `scope: null` for non-scopable.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update.", + "type": "text/plain" + }, + "key": "create_missing_options", + "value": "" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"identifier\": \"top\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"groups\": [],\n \"values\": {\n \"name\": [\n {\n \"data\": \"Top\",\n \"locale\": \"en_US\",\n \"scope\": null\n },\n {\n \"data\": \"Débardeur\",\n \"locale\": \"fr_FR\",\n \"scope\": null\n }\n ],\n \"description\": [\n {\n \"data\": \"Summer top\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n },\n {\n \"data\": \"Top\",\n \"locale\": \"en_US\",\n \"scope\": \"tablet\"\n },\n {\n \"data\": \"Débardeur pour l'été\",\n \"locale\": \"fr_FR\",\n \"scope\": \"ecommerce\"\n },\n {\n \"data\": \"Débardeur\",\n \"locale\": \"fr_FR\",\n \"scope\": \"tablet\"\n }\n ],\n \"price\": [\n {\n \"data\": [\n {\n \"amount\": \"15.5\",\n \"currency\": \"EUR\"\n },\n {\n \"amount\": \"15\",\n \"currency\": \"USD\"\n }\n ],\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"color\": [\n {\n \"data\": \"black\",\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"attribute\": \"color\",\n \"code\": \"black\",\n \"labels\": {\n \"en_US\": \"Black\",\n \"fr_FR\": \"Noir\"\n }\n }\n }\n ],\n \"size\": [\n {\n \"data\": \"m\",\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"attribute\": \"size\",\n \"code\": \"m\",\n \"labels\": {\n \"en_US\": \"M\",\n \"fr_FR\": \"M\"\n }\n }\n }\n ],\n \"collection\": [\n {\n \"data\": [\n \"winter_2016\"\n ],\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"winter_2016\": {\n \"attribute\": \"collection\",\n \"code\": \"winter_2016\",\n \"labels\": {\n \"en_US\": \"Winter 2016\",\n \"fr_FR\": \"Hiver 2016\"\n }\n }\n }\n }\n ]\n },\n \"created\": \"2016-06-23T18:24:44+02:00\",\n \"updated\": \"2016-06-25T17:56:12+02:00\",\n \"associations\": {\n \"PACK\": {\n \"products\": [\n \"sunglass\"\n ],\n \"product_models\": [],\n \"groups\": []\n }\n },\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [\n {\n \"identifier\": \"cap\",\n \"quantity\": 2\n },\n {\n \"identifier\": \"shoes\",\n \"quantity\": 1\n }\n ],\n \"product_models\": [\n {\n \"identifier\": \"model-biker-jacket-leather\",\n \"quantity\": 2\n }\n ]\n }\n },\n \"quality_scores\": [\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"data\": \"A\"\n },\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"fr_FR\",\n \"data\": \"B\"\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"en_US\",\n \"data\": \"D\"\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"fr_FR\",\n \"data\": \"E\"\n }\n ],\n \"completenesses\": [\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"data\": 10\n },\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"fr_FR\",\n \"data\": 20\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"en_US\",\n \"data\": 30\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"fr_FR\",\n \"data\": 40\n }\n ]\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/products/top" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "ee88a630-878f-4caa-9e89-794bd9ffe0fe", + "name": "Delete a product", + "request": { + "name": "Delete a product", + "description": "Permanently delete a product by identifier. Cannot be undone.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products/{{productIdentifier}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products", + "{{productIdentifier}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "DELETE", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Deleted", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "18fcdc9d-d0b8-4396-8d6e-3d187cc1d7a3", + "type": "text/javascript", + "exec": [ + "// Validate if response has empty Body \npm.test(\"[DELETE]::/api/rest/v1/products/:code - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "74949be5-218d-41e1-bb56-1e0b67e59ced", + "name": "Get a draft", + "request": { + "name": "Get a draft", + "description": "Retrieve the current draft of a product by identifier (Enterprise Edition).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products/{{productIdentifier}}/draft", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products", + "{{productIdentifier}}", + "draft" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Draft", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"identifier\": \"top\",\n \"family\": \"tshirt\",\n \"values\": {\n \"name\": [\n {\n \"data\": \"Summer Top \\u2014 DRAFT\",\n \"locale\": \"en_US\",\n \"scope\": null\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "5e502c78-eeee-4674-bb0b-ecb25446e96a", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/products/:code/draft - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/products/:code/draft - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Product UUID\"},\"identifier\":{\"type\":\"string\",\"description\":\"Product identifier, i.e. the value of the only `pim_catalog_identifier` attribute\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the product is enabled\",\"default\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified.\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"groups\":{\"type\":\"array\",\"description\":\"Codes of the groups to which the product belong.\\nEach string of the array is equal to an existing group code.\\n\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing group code\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product identifiers and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the identifier of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`)\\n\",\"x-immutable\":true},\"completenesses\":{\"type\":\"array\",\"description\":\"Product completenesses for each channel/locale combination\\n(only available when the `with_completenesses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"data\":{\"type\":\"integer\",\"description\":\"Completenesses score value for the given channel/locale combination\"}}},\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/products/:code/draft - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "5e2c2090-99e0-424f-bce7-13b60812e97a", + "name": "Get a product", + "request": { + "name": "Get a product", + "description": "Retrieve a single product by its identifier (SKU).\n\nFor new integrations, prefer the UUID endpoint (`/products-uuid/{uuid}`) as identifiers may change.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products/{{productIdentifier}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products", + "{{productIdentifier}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Return labels of attribute options in the response.", + "type": "text/plain" + }, + "key": "with_attribute_options", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return asset collection share link URLs in the response.", + "type": "text/plain" + }, + "key": "with_asset_share_links", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product quality scores in the response.", + "type": "text/plain" + }, + "key": "with_quality_scores", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product completenesses information in the response.", + "type": "text/plain" + }, + "key": "with_completenesses", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return an array of workflowexecutionstatuses directly associated with the requested entity (product or product model) in the response.", + "type": "text/plain" + }, + "key": "with_workflow_execution_statuses", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Product details", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"identifier\": \"top\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"groups\": [],\n \"values\": {\n \"name\": [\n {\n \"data\": \"Summer Top\",\n \"locale\": \"en_US\",\n \"scope\": null\n }\n ],\n \"price\": [\n {\n \"data\": [\n {\n \"amount\": \"29.99\",\n \"currency\": \"EUR\"\n }\n ],\n \"locale\": null,\n \"scope\": null\n }\n ]\n },\n \"created\": \"2024-01-15T10:30:00+00:00\",\n \"updated\": \"2024-06-20T14:22:00+00:00\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "11e21f2b-7c8b-4e0c-a8eb-2c1bfcf3169f", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/products/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/products/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Product UUID\"},\"identifier\":{\"type\":\"string\",\"description\":\"Product identifier, i.e. the value of the only `pim_catalog_identifier` attribute\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the product is enabled\",\"default\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified.\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"groups\":{\"type\":\"array\",\"description\":\"Codes of the groups to which the product belong.\\nEach string of the array is equal to an existing group code.\\n\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing group code\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product identifiers and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the identifier of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`)\\n\",\"x-immutable\":true},\"completenesses\":{\"type\":\"array\",\"description\":\"Product completenesses for each channel/locale combination\\n(only available when the `with_completenesses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"data\":{\"type\":\"integer\",\"description\":\"Completenesses score value for the given channel/locale combination\"}}},\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/products/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "8a8c7d40-a7cd-43f7-8531-97820b1a6d0a", + "name": "Get list of products", + "request": { + "name": "Get list of products", + "description": "Retrieve a paginated list of products using legacy identifiers (SKU).\n\nFor new integrations, prefer the UUID endpoint. Same filters as UUID: category, family, completeness, quality score, attributes, etc.\n\nPagination: Use `page` (default, max 10,000) or `search_after` (cursor-based, unlimited).\n\nTip: Use `attributes` to limit returned values for better performance.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter product values to only return those concerning the given attributes.", + "type": "text/plain" + }, + "key": "attributes", + "value": "name,description" + }, + { + "disabled": true, + "description": { + "content": "Convert values of measurement attributes to the unit configured in the channel provided by the scope parameter.", + "type": "text/plain" + }, + "key": "convert_measurements", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Filter product values to return localizable attributes for the given locales as well as the non localizable/non scopable attributes.", + "type": "text/plain" + }, + "key": "locales", + "value": "en_US,fr_FR" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify which pagination method to use for navigating through large datasets.", + "type": "text/plain" + }, + "key": "pagination_type", + "value": "page" + }, + { + "disabled": true, + "description": { + "content": "Filter product values to return scopable attributes for the given channel as well as the non localizable/non scopable attributes.", + "type": "text/plain" + }, + "key": "scope", + "value": "ecommerce" + }, + { + "disabled": true, + "description": { + "content": "Filter products,\nfor more details see the [Filters](https://api.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"categories\":[{\"operator\":\"IN\",\"value\":[\"winter_collection\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products categorized on the Winter Collection category and that are not categorized on the Accessories category", + "type": "text/plain" + }, + "key": "search", + "value": "{\"categories\":[{\"operator\":\"IN\",\"value\":[\"winter_collection\"]},{\"operator\":\"NOT IN\",\"value\":[\"accessories\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their status", + "type": "text/plain" + }, + "key": "search", + "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":false}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their completeness", + "type": "text/plain" + }, + "key": "search", + "value": "{\"completeness\":[{\"operator\":\"=\",\"value\":50,\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products that are 100% complete on both the enUS and frFR locales for the ecommerce channel", + "type": "text/plain" + }, + "key": "search", + "value": "{\"completeness\":[{\"operator\":\"GREATER OR EQUALS THAN ON ALL LOCALES\",\"value\":100,\"locales\":[\"en_US\",\"fr_FR\"],\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their group", + "type": "text/plain" + }, + "key": "search", + "value": "{\"groups\":[{\"operator\":\"IN\",\"value\":[\"promotion\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their family", + "type": "text/plain" + }, + "key": "search", + "value": "{\"family\":[{\"operator\":\"NOT IN\",\"value\":[\"camcorders\",\"digital_cameras\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by their creation date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"created\":[{\"operator\":\"=\",\"value\":\"2016-07-04 10:00:00\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products updated since X days", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\"SINCE LAST N DAYS\",\"value\":4}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the variant products by their parent", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"IN\",\"value\":[\"tops\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the variant products by their sub product model", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"IN\",\"value\":[\"tshirt_armor_blue\",\"tshirt_armor_red\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Get all variant products", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"NOT EMPTY\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Get all simple products", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"EMPTY\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products with a \"D\" for the ecommerce channel and en_US locale", + "type": "text/plain" + }, + "key": "search", + "value": "{\"quality_score\":[{\"operator\":\"IN\",\"value\":[\"D\"],\"scope\":\"ecommerce\",\"locale\":\"en_US\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products with an \"A\" or \"B\" for the mobile channel and en_GB locale", + "type": "text/plain" + }, + "key": "search", + "value": "{\"quality_score\":[{\"operator\":\"IN\",\"value\":[\"A\",\"B\"],\"scope\":\"mobile\",\"locale\":\"en_GB\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Get only enabled products", + "type": "text/plain" + }, + "key": "search", + "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":true}]}" + }, + { + "disabled": true, + "description": { + "content": "Get only enabled products that are at least 70% complete on the ecommerce channel", + "type": "text/plain" + }, + "key": "search", + "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":true}],\"completeness\":[{\"operator\":\">\",\"value\":70,\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by an attribute value", + "type": "text/plain" + }, + "key": "search", + "value": "{\"main_color\":[{\"operator\":\"IN\",\"value\":[\"purple\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products having a description begining with Amazing on the en_US locale", + "type": "text/plain" + }, + "key": "search", + "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products that have a release date due after the 4th of July 2016 for the ecommerce channel", + "type": "text/plain" + }, + "key": "search", + "value": "{\"release_date\":[{\"operator\":\">\",\"value\":\"2016-07-04\",\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products containing a text in the name attribute", + "type": "text/plain" + }, + "key": "search", + "value": "{\"name\":[{\"operator\":\"CONTAINS\",\"value\":\"shirt\",\"locale\":\"en_US\",\"scope\":\"mobile\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by multiple attribute values", + "type": "text/plain" + }, + "key": "search", + "value": "{\"description\":[{\"operator\":\"STARTS WITH\",\"value\":\"Amazing\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"}],\"main_color\":[{\"operator\":\"IN\",\"value\":[\"purple\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the products by multiple attribute conditions", + "type": "text/plain" + }, + "key": "search", + "value": "{\"description\":[{\"operator\":\"NOT EMPTY\",\"locale\":\"en_US\",\"scope\":\"ecommerce\"},{\"operator\":\"EMPTY\",\"locale\":\"fr_FR\",\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + }, + { + "disabled": true, + "description": { + "content": "Filter locales based on specific criteria.", + "type": "text/plain" + }, + "key": "search_locale", + "value": "en_US" + }, + { + "disabled": true, + "description": { + "content": "Filter scopes based on specific criteria.", + "type": "text/plain" + }, + "key": "search_scope", + "value": "ecommerce" + }, + { + "disabled": true, + "description": { + "content": "Return asset collection share link URLs in the response.", + "type": "text/plain" + }, + "key": "with_asset_share_links", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return labels of attribute options in the response.", + "type": "text/plain" + }, + "key": "with_attribute_options", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product completenesses information in the response.", + "type": "text/plain" + }, + "key": "with_completenesses", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product quality scores in the response.", + "type": "text/plain" + }, + "key": "with_quality_scores", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return an array of workflowexecutionstatuses directly associated with the requested entity (product or product model) in the response.", + "type": "text/plain" + }, + "key": "with_workflow_execution_statuses", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Product list", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/products?page=1&limit=10\"\n }\n },\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"identifier\": \"top\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"values\": {\n \"name\": [\n {\n \"data\": \"Summer Top\",\n \"locale\": \"en_US\",\n \"scope\": null\n }\n ],\n \"price\": [\n {\n \"data\": [\n {\n \"amount\": \"29.99\",\n \"currency\": \"EUR\"\n }\n ],\n \"locale\": null,\n \"scope\": null\n }\n ]\n }\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "932a42cb-35ab-4d87-88e7-aaac044a1b7b", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/products - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/products - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Products\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Product UUID\"},\"identifier\":{\"type\":\"string\",\"description\":\"Product identifier, i.e. the value of the only `pim_catalog_identifier` attribute\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the product is enabled\",\"default\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified.\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"groups\":{\"type\":\"array\",\"description\":\"Codes of the groups to which the product belong.\\nEach string of the array is equal to an existing group code.\\n\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing group code\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product identifiers and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the identifier of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`)\\n\",\"x-immutable\":true},\"completenesses\":{\"type\":\"array\",\"description\":\"Product completenesses for each channel/locale combination\\n(only available when the `with_completenesses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"data\":{\"type\":\"integer\",\"description\":\"Completenesses score value for the given channel/locale combination\"}}},\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/products - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "b6744968-feca-4c2a-a52f-697707ec7350", + "name": "Submit a draft for approval", + "request": { + "name": "Submit a draft for approval", + "description": "Submit a product draft for approval (Enterprise Edition).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products/{{productIdentifier}}/proposal", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products", + "{{productIdentifier}}", + "proposal" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Submitted", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "{{baseUrl}}/api/rest/v1/resource-path" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "75bdc42b-7554-41ea-809a-bcf12c6b9d2e", + "name": "Update/create a product", + "request": { + "name": "Update/create a product", + "description": "Update a product by identifier or create it if it does not exist.\n\nMerge-patch semantics: only send fields you want to change. Arrays (categories, groups) are replaced entirely.\n\nSee: https://api.akeneo.com/documentation/update.html", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products/{{productIdentifier}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products", + "{{productIdentifier}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update.", + "type": "text/plain" + }, + "key": "create_missing_options", + "value": "" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"uuid\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"identifier\": \"top\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"groups\": [],\n \"values\": {\n \"name\": [\n {\n \"data\": \"Top\",\n \"locale\": \"en_US\",\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_text\"\n },\n {\n \"data\": \"Débardeur\",\n \"locale\": \"fr_FR\",\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_text\"\n }\n ],\n \"description\": [\n {\n \"data\": \"Summer top\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\",\n \"attribute_type\": \"pim_catalog_textarea\"\n },\n {\n \"data\": \"Top\",\n \"locale\": \"en_US\",\n \"scope\": \"tablet\",\n \"attribute_type\": \"pim_catalog_textarea\"\n },\n {\n \"data\": \"Débardeur pour l'été\",\n \"locale\": \"fr_FR\",\n \"scope\": \"ecommerce\",\n \"attribute_type\": \"pim_catalog_textarea\"\n },\n {\n \"data\": \"Débardeur\",\n \"locale\": \"fr_FR\",\n \"scope\": \"tablet\",\n \"attribute_type\": \"pim_catalog_textarea\"\n }\n ],\n \"price\": [\n {\n \"data\": [\n {\n \"amount\": \"15.5\",\n \"currency\": \"EUR\"\n },\n {\n \"amount\": \"15\",\n \"currency\": \"USD\"\n }\n ],\n \"locale\": null,\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_price_collection\"\n }\n ],\n \"color\": [\n {\n \"data\": \"black\",\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"attribute\": \"color\",\n \"code\": \"black\",\n \"labels\": {\n \"en_US\": \"Black\",\n \"fr_FR\": \"Noir\"\n }\n },\n \"attribute_type\": \"pim_catalog_simpleselect\"\n }\n ],\n \"size\": [\n {\n \"data\": \"m\",\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"attribute\": \"size\",\n \"code\": \"m\",\n \"labels\": {\n \"en_US\": \"M\",\n \"fr_FR\": \"M\"\n }\n },\n \"attribute_type\": \"pim_catalog_simpleselect\"\n }\n ],\n \"collection\": [\n {\n \"data\": [\n \"winter_2016\"\n ],\n \"locale\": null,\n \"scope\": null,\n \"linked_data\": {\n \"winter_2016\": {\n \"attribute\": \"collection\",\n \"code\": \"winter_2016\",\n \"labels\": {\n \"en_US\": \"Winter 2016\",\n \"fr_FR\": \"Hiver 2016\"\n }\n }\n },\n \"attribute_type\": \"pim_catalog_multiselect\"\n }\n ]\n },\n \"created\": \"2016-06-23T18:24:44+02:00\",\n \"updated\": \"2016-06-25T17:56:12+02:00\",\n \"associations\": {\n \"PACK\": {\n \"products\": [\n \"sunglass\"\n ],\n \"product_models\": [],\n \"groups\": []\n }\n },\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [\n {\n \"identifier\": \"cap\",\n \"quantity\": 2\n },\n {\n \"identifier\": \"shoes\",\n \"quantity\": 1\n }\n ],\n \"product_models\": [\n {\n \"identifier\": \"model-biker-jacket-leather\",\n \"quantity\": 2\n }\n ]\n }\n },\n \"quality_scores\": [\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"data\": \"A\"\n },\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"fr_FR\",\n \"data\": \"B\"\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"en_US\",\n \"data\": \"D\"\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"fr_FR\",\n \"data\": \"E\"\n }\n ],\n \"completenesses\": [\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"data\": 10\n },\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"fr_FR\",\n \"data\": 20\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"en_US\",\n \"data\": 30\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"fr_FR\",\n \"data\": 40\n }\n ],\n \"workflow_execution_statuses\": [\n {\n \"uuid\": \"8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52\",\n \"status\": \"in_progress\",\n \"started_at\": \"2024-02-22T17:31:00Z\",\n \"completed_at\": null,\n \"workflow\": {\n \"uuid\": \"6f37476a-04c2-46c0-b6d0-e18316959068\",\n \"code\": \"enrichment_workflow\",\n \"labels\": {\n \"en_US\": \"Enrichment workflow\",\n \"fr_FR\": \"Workflow d'enrichissement\"\n }\n },\n \"tasks\": [\n {\n \"uuid\": \"8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07\",\n \"status\": \"in_progress\",\n \"created_at\": \"2024-02-22T17:31:00Z\",\n \"step\": {\n \"uuid\": \"f626d0e5-84a5-41fc-8215-65508c253edb\",\n \"code\": \"review_step\",\n \"labels\": {\n \"en_US\": \"Marketing review\",\n \"fr_FR\": \"Revue marketing\"\n }\n }\n }\n ]\n },\n {\n \"uuid\": \"59169984-6d6c-4fa7-b925-68b8e9d31ddb\",\n \"status\": \"completed\",\n \"started_at\": \"2024-02-22T17:31:00Z\",\n \"completed_at\": \"2024-02-22T17:31:00Z\",\n \"workflow\": {\n \"uuid\": \"b69ee158-a421-4680-bec0-a71bc73b8e31\",\n \"code\": \"compliance_workflow\",\n \"labels\": {}\n },\n \"tasks\": []\n }\n ]\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + }, + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/products/top" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "74115f2d-4bdb-4e77-8843-369403f50fc2", + "name": "Update/create several products", + "request": { + "name": "Update/create several products", + "description": "Batch update/create products by identifier. One JSON per line (NDJSON).\n\nEach line is processed independently. Content-Type must be `application/vnd.akeneo.collection+json`.\n\nUpdate behavior: merge-patch. Only fields you send are modified.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/products", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "products" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update.", + "type": "text/plain" + }, + "key": "create_missing_options", + "value": "" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\"identifier\":\"cap\",\"values\":{\"description\":[{\"scope\":\"ecommerce\",\"locale\":\"en_US\",\"data\":\"Classic cotton baseball cap\"}]}}\n{\"identifier\":\"mug\",\"values\":{\"name\":[{\"data\":\"Coffee Mug\",\"locale\":\"en_US\",\"scope\":null}]},\"groups\":[\"promotion\"]}\n{\"identifier\":\"tshirt\",\"family\":\"clothing\",\"values\":{\"name\":[{\"data\":\"Basic T-Shirt\",\"locale\":\"en_US\",\"scope\":null}]}}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"identifier\": \"cap\",\n \"status_code\": 204\n },\n {\n \"line\": 2,\n \"identifier\": \"mug\",\n \"status_code\": 422,\n \"message\": \"Property \\\"group\\\" does not exist. Did you mean \\\"groups\\\"?\"\n },\n {\n \"line\": 3,\n \"identifier\": \"tshirt\",\n \"status_code\": 201\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "a9c95fab-6be0-4c5f-8ac7-329148f29b23", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/products - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/products - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/products - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "750e3ea4-20ea-40a2-9ff3-c60a3454f08c", + "name": "Product model", + "description": "Manage product models — the parent structures for products with variants (e.g. a T-shirt model with size/color variants).\n\nSee: https://api.akeneo.com/api-reference-index.html#product-models", + "item": [ + { + "id": "127288bf-af7e-4ae9-8aa7-33780e820eec", + "name": "Create a new product model", + "request": { + "name": "Create a new product model", + "description": "Create a new product model.\n\n**Required**: `code`, `family_variant`\n**Optional**: `parent` (for sub-models), `categories`, `values`\n\n**Hierarchy example**:\n- Root model: `model-tshirt` (no parent) — holds shared values like brand, name\n- Sub-model: `model-tshirt-blue` (parent: model-tshirt) — holds color-level values\n- Variant product: created separately, references the sub-model", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/product-models", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "product-models" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update.", + "type": "text/plain" + }, + "key": "create_missing_options", + "value": "" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"model-biker-jacket-leather\",\n \"family\": \"clothing\",\n \"family_variant\": \"clothing_material_size\",\n \"parent\": \"model-biker-jacket\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"values\": {\n \"color\": [\n {\n \"data\": \"antique_white\",\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"material\": [\n {\n \"data\": \"leather\",\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"variation_name\": [\n {\n \"locale\": \"en_US\",\n \"data\": \"Biker jacket leather\",\n \"scope\": null\n }\n ],\n \"name\": [\n {\n \"locale\": \"en_US\",\n \"data\": \"Biker jacket\",\n \"scope\": null\n }\n ],\n \"collection\": [\n {\n \"data\": [\n \"summer_2017\"\n ],\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\",\n \"data\": \"Biker jacket\"\n }\n ]\n },\n \"associations\": {\n \"PACK\": {\n \"products\": [\n \"sunglass\"\n ],\n \"product_models\": [],\n \"groups\": []\n }\n },\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [\n {\n \"identifier\": \"top\",\n \"quantity\": 2\n },\n {\n \"identifier\": \"cap\",\n \"quantity\": 1\n }\n ],\n \"product_models\": [\n {\n \"identifier\": \"model-biker-jacket-leather\",\n \"quantity\": 2\n }\n ]\n }\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/product-models/model-biker-jacket-leather" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "ab8b10c6-2376-46d8-abfa-56cc7829b7e0", + "name": "Delete a product model", + "request": { + "name": "Delete a product model", + "description": "Delete a product model and ALL its children (sub-models and variant products).\n\n**Warning**: This is destructive. All variant products under this model will also be deleted. Cannot be undone.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/product-models/{{productModelCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "product-models", + "{{productModelCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "DELETE", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Deleted", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "10e4dc55-4f96-45e4-902a-be1c5c5a608e", + "type": "text/javascript", + "exec": [ + "// Validate if response has empty Body \npm.test(\"[DELETE]::/api/rest/v1/product-models/:code - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "962a24aa-d2d1-4e4e-9b14-7d5e496b8c39", + "name": "Get a draft", + "request": { + "name": "Get a draft", + "description": "Retrieve the current draft of a product model (Enterprise Edition).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/product-models/{{productModelCode}}/draft", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "product-models", + "{{productModelCode}}", + "draft" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Draft", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"model-biker-jacket\",\n \"family\": \"clothing\",\n \"values\": {\n \"name\": [\n {\n \"data\": \"Biker Jacket \\u2014 DRAFT\",\n \"locale\": \"en_US\",\n \"scope\": null\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "06b9ae7f-56fd-4824-aad8-36fff55aff76", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/product-models/:code/draft - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/product-models/:code/draft - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"required\":[\"code\",\"family_variant\"],\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Product model code\",\"x-immutable\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"family_variant\":{\"type\":\"string\",\"description\":\"Family variant code from which the product model inherits its attributes and variant attributes\",\"x-immutable\":true,\"x-validation-rules\":\"It is equal to an existing family variant code that belong to the family given in the `family` field\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product identifiers and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the identifier of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`).\\n\",\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/product-models/:code/draft - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "32501191-d5cc-4f79-808c-9d5b22f85cbe", + "name": "Get a product model", + "request": { + "name": "Get a product model", + "description": "Retrieve a single product model by code.\n\nA product model is the parent of variant products. For example, a 'T-Shirt' model has children for each color/size combination.\n\n**Options**:\n- `with_quality_scores=true` — include quality scores\n- `with_asset_share_links=true` — include shareable asset URLs", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/product-models/{{productModelCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "product-models", + "{{productModelCode}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Return asset collection share link URLs in the response.", + "type": "text/plain" + }, + "key": "with_asset_share_links", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product quality scores in the response.", + "type": "text/plain" + }, + "key": "with_quality_scores", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return an array of workflowexecutionstatuses directly associated with the requested entity (product or product model) in the response.", + "type": "text/plain" + }, + "key": "with_workflow_execution_statuses", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Product model", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/product-models/model-biker-jacket\"\n }\n },\n \"code\": \"model-biker-jacket\",\n \"family\": \"clothing\",\n \"family_variant\": \"clothing_color_size\",\n \"parent\": null,\n \"categories\": [\n \"jackets\",\n \"winter_collection\"\n ],\n \"values\": {\n \"name\": [\n {\n \"data\": \"Biker Jacket\",\n \"locale\": \"en_US\",\n \"scope\": null\n }\n ],\n \"description\": [\n {\n \"data\": \"Classic leather biker jacket\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n }\n ],\n \"brand\": [\n {\n \"data\": \"acme\",\n \"locale\": null,\n \"scope\": null\n }\n ]\n },\n \"created\": \"2024-02-10T08:00:00+00:00\",\n \"updated\": \"2024-05-15T12:00:00+00:00\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "c8e0bb59-1128-48e2-aa85-28332535cbad", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/product-models/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/product-models/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"required\":[\"code\",\"family_variant\"],\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Product model code\",\"x-immutable\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"family_variant\":{\"type\":\"string\",\"description\":\"Family variant code from which the product model inherits its attributes and variant attributes\",\"x-immutable\":true,\"x-validation-rules\":\"It is equal to an existing family variant code that belong to the family given in the `family` field\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product identifiers and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the identifier of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`).\\n\",\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/product-models/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "ca521d1f-b104-4142-b752-37632b4f8a4c", + "name": "Get list of product models", + "request": { + "name": "Get list of product models", + "description": "List product models with pagination and filters.\n\nFilters work similarly to product filters:\n- `categories` — IN, NOT IN\n- `family` — IN, NOT IN\n- `completeness` — ALL COMPLETE, AT LEAST COMPLETE, etc.\n- `parent` — IN, IS NULL, IS NOT NULL\n- `created` / `updated` — date comparisons\n\n**Tip**: Use `parent IS NULL` to get only root-level models.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/product-models", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "product-models" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter product values to only return those concerning the given attributes.", + "type": "text/plain" + }, + "key": "attributes", + "value": "name,description" + }, + { + "disabled": true, + "description": { + "content": "Convert values of measurement attributes to the unit configured in the channel provided by the scope parameter.", + "type": "text/plain" + }, + "key": "convert_measurements", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Filter product values to return localizable attributes for the given locales as well as the non localizable/non scopable attributes.", + "type": "text/plain" + }, + "key": "locales", + "value": "en_US,fr_FR" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify which pagination method to use for navigating through large datasets.", + "type": "text/plain" + }, + "key": "pagination_type", + "value": "page" + }, + { + "disabled": true, + "description": { + "content": "Filter product values to return scopable attributes for the given channel as well as the non localizable/non scopable attributes.", + "type": "text/plain" + }, + "key": "scope", + "value": "ecommerce" + }, + { + "disabled": true, + "description": { + "content": "Filter product models,\nfor more details see the [Filters](https://api.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"categories\":[{\"operator\":\"IN\",\"value\":[\"winter_collection\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the product models by their completeness", + "type": "text/plain" + }, + "key": "search", + "value": "{\"completeness\":[{\"operator\":\"ALL COMPLETE\",\"locale\":\"fr_FR\",\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the product models that have at least one variant product 100% complete", + "type": "text/plain" + }, + "key": "search", + "value": "{\"completeness\":[{\"operator\":\"AT LEAST COMPLETE\",\"locales\":[\"en_US\",\"fr_FR\"],\"scope\":\"ecommerce\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the product models that are in the camcorders family,", + "type": "text/plain" + }, + "key": "search", + "value": "{\"family\":[{\"operator\":\"IN\",\"value\":[\"camcorders\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the product models that are not in the camcorders and digital_cameras family", + "type": "text/plain" + }, + "key": "search", + "value": "{\"family\":[{\"operator\":\"NOT IN\",\"value\":[\"camcorders\",\"digital_cameras\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the product models by their creation date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"created\":[{\"operator\":\"=\",\"value\":\"2016-07-04 10:00:00\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the product models updated since X days", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\"SINCE LAST N DAYS\",\"value\":4}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the sub-product models of the root product model with the code tshirt_armor", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"IN\",\"value\":[\"tshirt_armor\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the root product models (product models without parent)", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"IS NULL\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the sub-product models (product models with parent)", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"IS NOT NULL\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + }, + { + "disabled": true, + "description": { + "content": "Filter locales based on specific criteria.", + "type": "text/plain" + }, + "key": "search_locale", + "value": "en_US" + }, + { + "disabled": true, + "description": { + "content": "Filter scopes based on specific criteria.", + "type": "text/plain" + }, + "key": "search_scope", + "value": "ecommerce" + }, + { + "disabled": true, + "description": { + "content": "Return asset collection share link URLs in the response.", + "type": "text/plain" + }, + "key": "with_asset_share_links", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return labels of attribute options in the response.", + "type": "text/plain" + }, + "key": "with_attribute_options", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return product model quality scores in the response.", + "type": "text/plain" + }, + "key": "with_quality_scores", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return an array of workflowexecutionstatuses directly associated with the requested entity (product or product model) in the response.", + "type": "text/plain" + }, + "key": "with_workflow_execution_statuses", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "90891f71-0e74-4989-944f-ab3a1f608f49", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/product-models - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/product-models - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Product Models\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Product model code\",\"x-immutable\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"family_variant\":{\"type\":\"string\",\"description\":\"Family variant code from which the product model inherits its attributes and variant attributes\",\"x-immutable\":true,\"x-validation-rules\":\"It is equal to an existing family variant code that belong to the family given in the `family` field\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product identifiers and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the identifier of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`).\\n\",\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/product-models - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "6b916349-8423-4045-b07e-f34dd322ac5f", + "name": "Submit a draft for approval", + "request": { + "name": "Submit a draft for approval", + "description": "Submit a product model draft for approval (Enterprise Edition).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/product-models/{{productModelCode}}/proposal", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "product-models", + "{{productModelCode}}", + "proposal" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Submitted", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "{{baseUrl}}/api/rest/v1/resource-path" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "24d8080d-8324-40d5-81be-91d28cc15025", + "name": "Update/create a product model", + "request": { + "name": "Update/create a product model", + "description": "Update or create a product model.\n\n**Immutable fields**: `family_variant` cannot be changed after creation.\n**Update behavior**: Merge-patch — only send the fields you want to change.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/product-models/{{productModelCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "product-models", + "{{productModelCode}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update.", + "type": "text/plain" + }, + "key": "create_missing_options", + "value": "" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"model-biker-jacket-leather\",\n \"family\": \"clothing\",\n \"family_variant\": \"clothing_material_size\",\n \"parent\": \"model-biker-jacket\",\n \"categories\": [\n \"summer_collection\"\n ],\n \"values\": {\n \"color\": [\n {\n \"data\": \"antique_white\",\n \"locale\": null,\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_simpleselect\"\n }\n ],\n \"material\": [\n {\n \"data\": \"leather\",\n \"locale\": null,\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_text\"\n }\n ],\n \"variation_name\": [\n {\n \"locale\": \"en_US\",\n \"data\": \"Biker jacket leather\",\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_text\"\n }\n ],\n \"name\": [\n {\n \"locale\": \"en_US\",\n \"data\": \"Biker jacket\",\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_text\"\n }\n ],\n \"collection\": [\n {\n \"data\": [\n \"summer_2017\"\n ],\n \"locale\": null,\n \"scope\": null,\n \"attribute_type\": \"pim_catalog_multiselect\"\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\",\n \"data\": \"Biker jacket\",\n \"attribute_type\": \"pim_catalog_textarea\"\n }\n ]\n },\n \"associations\": {\n \"PACK\": {\n \"products\": [\n \"sunglass\"\n ],\n \"product_models\": [],\n \"groups\": []\n }\n },\n \"quantified_associations\": {\n \"PRODUCT_SET\": {\n \"products\": [\n {\n \"identifier\": \"top\",\n \"quantity\": 2\n },\n {\n \"identifier\": \"cap\",\n \"quantity\": 1\n }\n ],\n \"product_models\": [\n {\n \"identifier\": \"model-biker-jacket-leather\",\n \"quantity\": 2\n }\n ]\n }\n },\n \"quality_scores\": [\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"data\": \"A\"\n },\n {\n \"scope\": \"ecommerce\",\n \"locale\": \"fr_FR\",\n \"data\": \"B\"\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"en_US\",\n \"data\": \"D\"\n },\n {\n \"scope\": \"tablet\",\n \"locale\": \"fr_FR\",\n \"data\": \"E\"\n }\n ],\n \"workflow_execution_statuses\": [\n {\n \"uuid\": \"8c0fe59f-4d29-4faa-b4c3-d327e7f3cc52\",\n \"status\": \"in_progress\",\n \"started_at\": \"2024-02-22T17:31:00Z\",\n \"completed_at\": null,\n \"workflow\": {\n \"uuid\": \"6f37476a-04c2-46c0-b6d0-e18316959068\",\n \"code\": \"enrichment_workflow\",\n \"labels\": {\n \"en_US\": \"Enrichment workflow\",\n \"fr_FR\": \"Workflow d'enrichissement\"\n }\n },\n \"tasks\": [\n {\n \"uuid\": \"8f6c2d18-fbd4-4f7e-81df-cb3dc368fe07\",\n \"status\": \"in_progress\",\n \"created_at\": \"2024-02-22T17:31:00Z\",\n \"step\": {\n \"uuid\": \"f626d0e5-84a5-41fc-8215-65508c253edb\",\n \"code\": \"review_step\",\n \"labels\": {\n \"en_US\": \"Marketing review\",\n \"fr_FR\": \"Revue marketing\"\n }\n }\n }\n ]\n },\n {\n \"uuid\": \"59169984-6d6c-4fa7-b925-68b8e9d31ddb\",\n \"status\": \"completed\",\n \"started_at\": \"2024-02-22T17:31:00Z\",\n \"completed_at\": \"2024-02-22T17:31:00Z\",\n \"workflow\": {\n \"uuid\": \"b69ee158-a421-4680-bec0-a71bc73b8e31\",\n \"code\": \"compliance_workflow\",\n \"labels\": {}\n },\n \"tasks\": []\n }\n ],\n \"created\": \"2017-10-02T15:03:55+02:00\",\n \"updated\": \"2017-10-02T15:03:55+02:00\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "5be1cea0-78ef-4d9a-b66d-c39877ddbd83", + "name": "Update/create several product models", + "request": { + "name": "Update/create several product models", + "description": "Batch update/create product models. One JSON per line (NDJSON).\n\n**Tip**: When creating a hierarchy, send root models first, then sub-models.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/product-models", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "product-models" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "When present in the query string (regardless of value), automatically creates missing attribute options during product/product model creation or update.", + "type": "text/plain" + }, + "key": "create_missing_options", + "value": "" + } + ] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\"code\": \"sub_sweat_option_a\", \"parent\": \"sweat\", \"values\": {\"a_simple_select\": [{\"locale\": null, \"scope\": null, \"data\": \"optionA\"}]}}\n{\"code\": \"sub_sweat_option_b\", \"parent\": \"sweat\", \"values\": {\"a_simple_select\": [{\"locale\": null, \"scope\": null, \"data\": \"optionA\"}]}}\n{\"code\":\"tshirt\", \"parent\": \"root_tshirt\", \"family_variant\":\"clothesvariant\",\"values\":{\"description\":[{\"scope\":\"ecommerce\",\"locale\":\"en_US\",\"data\":\"My amazing tshirt\"}]}}\n", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"code\": \"sub_sweat_option_a\",\n \"status_code\": 204\n },\n {\n \"line\": 2,\n \"code\": \"sub_sweat_option_b\",\n \"status_code\": 204\n },\n {\n \"line\": 3,\n \"code\": \"tshirt\",\n \"status_code\": 201\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "3a11cc17-71df-489e-b86b-2207f69f8abf", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/product-models - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/product-models - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/product-models - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "388f8c3a-f1c8-4138-bc07-6dbd85191c79", + "name": "Product media file", + "description": "Upload, retrieve, and download media files (images, PDFs, etc.) attached to product attribute values.\n\nSee: https://api.akeneo.com/api-reference-index.html#media-files", + "item": [ + { + "id": "4a9fc054-5a34-4147-aaec-621dece503d0", + "name": "Create a new product media file", + "request": { + "name": "Create a new product media file", + "description": "Upload a new media file and attach it to a product or product model attribute.\n\nSend as `multipart/form-data` with:\n- `file` — the binary file to upload\n- `product` — JSON: `{\"identifier\": \"my_product\", \"attribute\": \"picture\", \"locale\": \"en_US\", \"scope\": \"ecommerce\"}`\n\nFor UUID products, use `uuid` instead of `identifier` in the product JSON.\n\n**Max file size**: Depends on your PIM configuration (default 10MB).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/media-files", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "media-files" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Equal to 'multipart/form-data' (with [boundary value](https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2)), no other value allowed.\n", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "formdata", + "formdata": [ + { + "description": { + "content": "", + "type": "text/plain" + }, + "key": "file", + "type": "file", + "src": "" + }, + { + "description": { + "content": "", + "type": "text/plain" + }, + "key": "product", + "value": "{\"identifier\":\"product_identifier\", \"attribute\":\"attribute_code\", \"scope\":null,\"locale\":null}", + "type": "text" + } + ] + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/media-files/0/f/5/0/image.jpg" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "4d817ccd-764d-4bbe-9d50-94f04832c473", + "name": "Download a product media file", + "request": { + "name": "Download a product media file", + "description": "Download the binary content of a media file.\n\nReturns the raw file with the appropriate Content-Type header (image/jpeg, image/png, application/pdf, etc.).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/media-files/{{mediaFileCode}}/download", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "media-files", + "{{mediaFileCode}}", + "download" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "image/png" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Binary content", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "image/jpeg" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "3aea73d7-961e-4bf9-9971-90c89af9e192", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/media-files/:code/download - Content-Type is image/png\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"image/png\");\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "66218d47-de71-4312-be0f-224e904006da", + "name": "Get a list of product media files", + "request": { + "name": "Get a list of product media files", + "description": "List all media files attached to products and product models.\n\nReturns metadata (code, original filename, MIME type, size) — not the binary content. Use the download endpoint to get the actual file.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/media-files", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "media-files" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Media files list", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/media-files?page=1&limit=25\"\n }\n },\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"code\": \"0/f/5/0/0f5058de76f68446bb6b2371f19cd2234b245c00_image.jpg\",\n \"original_filename\": \"product_front.jpg\",\n \"mime_type\": \"image/jpeg\",\n \"size\": 245792,\n \"extension\": \"jpg\"\n },\n {\n \"code\": \"3/a/2/1/3a21bc5f6e89ff08a73c77be8b5da5e1ab2c7f47_manual.pdf\",\n \"original_filename\": \"user_manual.pdf\",\n \"mime_type\": \"application/pdf\",\n \"size\": 1048576,\n \"extension\": \"pdf\"\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "e61615ef-ccda-4846-b8ba-2e713f4a14e5", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/media-files - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/media-files - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Media Files\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the media file\"}}}}}}},{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI to download the binaries of the media file\"}}}}},\"code\":{\"type\":\"string\",\"description\":\"Media file code\",\"x-immutable\":true},\"original_filename\":{\"type\":\"string\",\"description\":\"Original filename of the media file\"},\"mime_type\":{\"type\":\"string\",\"description\":\"Mime type of the media file\"},\"size\":{\"type\":\"integer\",\"description\":\"Size of the media file\"},\"extension\":{\"type\":\"string\",\"description\":\"Extension of the media file\"}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/media-files - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "11189d9f-4262-4a20-88c5-46f8f5f1928a", + "name": "Get a product media file", + "request": { + "name": "Get a product media file", + "description": "Retrieve metadata for a single media file (original filename, MIME type, size).\n\nThe `{{mediaFileCode}}` is the file path returned when uploading or in product values (e.g. `0/f/5/0/image.jpg`).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/media-files/{{mediaFileCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "media-files", + "{{mediaFileCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Media file info", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"0/f/5/0/0f5058de76f68446bb6b2371f19cd2234b245c00_image.jpg\",\n \"original_filename\": \"product_front.jpg\",\n \"mime_type\": \"image/jpeg\",\n \"size\": 245792,\n \"extension\": \"jpg\",\n \"_link\": {\n \"download\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/media-files/0/f/5/0/image.jpg/download\"\n }\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "46368f65-3a22-4674-81a4-9f0a8bcd1f0e", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/media-files/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/media-files/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI to download the binaries of the media file\"}}}}},\"code\":{\"type\":\"string\",\"description\":\"Media file code\",\"x-immutable\":true},\"original_filename\":{\"type\":\"string\",\"description\":\"Original filename of the media file\"},\"mime_type\":{\"type\":\"string\",\"description\":\"Mime type of the media file\"},\"size\":{\"type\":\"integer\",\"description\":\"Size of the media file\"},\"extension\":{\"type\":\"string\",\"description\":\"Extension of the media file\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/media-files/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + } + ], + "event": [] + }, + { + "id": "0d4f008d-4acc-4f02-a650-c9bacf4e3f85", + "name": "Jobs", + "description": "Launch import and export jobs.\n\nSee: https://api.akeneo.com/api-reference-index.html#Jobs", + "item": [ + { + "id": "3a6a6686-4fdb-49dc-b943-a35dac4d684a", + "name": "Jobs", + "description": "Trigger import and export jobs programmatically. Jobs run asynchronously — use the job tracking endpoint to monitor progress.\n\nSee: https://api.akeneo.com/api-reference-index.html#jobs", + "item": [ + { + "id": "50cddc99-b188-4e95-9a7d-d3ee66f71e77", + "name": "Launch export job by code", + "request": { + "name": "Launch export job by code", + "description": "Launch an export job asynchronously.\n\n**Common job codes**: `csv_product_export`, `xlsx_product_export`, `csv_product_model_export`, `csv_family_export`, `csv_attribute_export`, `csv_category_export`\n\nThe response `Location` header contains the URL to track job progress.\n\nSet `is_dry_run: true` to validate without exporting.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/jobs/export/{{jobCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "jobs", + "export", + "{{jobCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"is_dry_run\": false\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Job launched", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/jobs/csv_product_export/1234" + } + ], + "body": "" + }, + { + "name": "Job not found", + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": 404,\n \"message\": \"Job profile \\\"nonexistent_export\\\" does not exist or is not an export job.\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "a90868b9-f102-4501-b182-2263822192fb", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/rest/v1/jobs/export/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/rest/v1/jobs/export/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"job_execution_id\":{\"description\":\"The ID of the job execution that was launched\",\"oneOf\":[{\"type\":\"integer\",\"description\":\"The ID of the job execution that was launched (integer format)\"},{\"type\":\"string\",\"description\":\"The ID of the job execution that was launched (UUID format)\"}]}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/rest/v1/jobs/export/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "28340cc4-0c48-4b6b-bcce-d79b4a6b0568", + "name": "Launch import job by code", + "request": { + "name": "Launch import job by code", + "description": "Launch an import job asynchronously.\n\n**Common job codes**: `csv_product_import`, `xlsx_product_import`, `csv_product_model_import`, `csv_family_import`, `csv_attribute_import`, `csv_category_import`\n\n**Import modes**:\n- `create_or_update` (default) — creates new records, updates existing ones\n- `create_only` — only creates, skips existing records\n\nSet `is_dry_run: true` to validate without importing.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/jobs/import/{{jobCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "jobs", + "import", + "{{jobCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"import_mode\": \"create_or_update\",\n \"is_dry_run\": false\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Job launched", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/jobs/csv_product_import/5678" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "105f4c0a-8f99-433c-9543-312990dbfea1", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/rest/v1/jobs/import/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/rest/v1/jobs/import/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"job_execution_id\":{\"description\":\"The ID of the job execution that was launched\",\"oneOf\":[{\"type\":\"integer\",\"description\":\"The ID of the job execution that was launched (integer format)\"},{\"type\":\"string\",\"description\":\"The ID of the job execution that was launched (UUID format)\"}]}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/rest/v1/jobs/import/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + } + ], + "event": [] + }, + { + "id": "0282a5ab-0ec0-4a42-8cbf-ad75d02140ed", + "name": "Catalog structure", + "description": "Manage families, attributes, attribute options, attribute groups, association types, and categories.\n\nSee: https://api.akeneo.com/api-reference-index.html#Catalogstructure", + "item": [ + { + "id": "65070e88-b83d-4513-9874-8e2a8ec668b2", + "name": "Family", + "description": "Manage families — templates that define which attributes a product can have and which are required per channel.\n\nSee: https://api.akeneo.com/api-reference-index.html#families", + "item": [ + { + "id": "dd5a105f-134a-4896-9564-284357a5b06b", + "name": "Create a new family", + "request": { + "name": "Create a new family", + "description": "Create a new family. At minimum, provide a `code` and `attribute_as_label`.\n\n**Tip**: Include `attribute_requirements` per channel to define what must be filled before a product is considered complete.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) This header indicates the media type of the resource being sent to the server.\nIt is used to specify the format of the request body, allowing the server to correctly interpret the data being sent.\nEqual to 'application/json' or 'application/x-www-form-urlencoded', no other value allowed.\n", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"caps\",\n \"attributes\": [\n \"sku\",\n \"name\",\n \"description\",\n \"price\",\n \"color\",\n \"picture\",\n \"material\"\n ],\n \"attribute_as_label\": \"name\",\n \"attribute_as_image\": \"picture,\",\n \"attribute_requirements\": {\n \"ecommerce\": [\n \"sku\",\n \"name\",\n \"description\",\n \"price\",\n \"color\"\n ],\n \"tablet\": [\n \"sku\",\n \"name\",\n \"description\",\n \"price\"\n ]\n },\n \"labels\": {\n \"en_US\": \"Caps\",\n \"fr_FR\": \"Casquettes\"\n },\n \"parent\": null\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Family created", + "originalRequest": { + "name": "Create a new family", + "description": { + "content": "This endpoint allows you to create a new family", + "type": "text/plain" + }, + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) This header indicates the media type of the resource being sent to the server.\nIt is used to specify the format of the request body, allowing the server to correctly interpret the data being sent.\nEqual to 'application/json' or 'application/x-www-form-urlencoded', no other value allowed.\n", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"caps\",\n \"attributes\": [\n \"sku\",\n \"name\",\n \"description\",\n \"price\",\n \"color\",\n \"picture\",\n \"material\"\n ],\n \"attribute_as_label\": \"name\",\n \"attribute_as_image\": \"picture,\",\n \"attribute_requirements\": {\n \"ecommerce\": [\n \"sku\",\n \"name\",\n \"description\",\n \"price\",\n \"color\"\n ],\n \"tablet\": [\n \"sku\",\n \"name\",\n \"description\",\n \"price\"\n ]\n },\n \"labels\": {\n \"en_US\": \"Caps\",\n \"fr_FR\": \"Casquettes\"\n },\n \"parent\": null\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/families/caps" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "259206c2-3936-4a1c-a9b8-a86a00f5050f", + "name": "Get a family", + "request": { + "name": "Get a family", + "description": "Retrieve a single family by its code. Returns the full family definition including attributes, requirements per channel, and labels.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families/{{familyCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families", + "{{familyCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Family details", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/families/clothing\"\n }\n },\n \"code\": \"clothing\",\n \"attributes\": [\n \"sku\",\n \"name\",\n \"description\",\n \"color\",\n \"size\",\n \"price\",\n \"picture\"\n ],\n \"attribute_as_label\": \"name\",\n \"attribute_as_image\": \"picture\",\n \"attribute_requirements\": {\n \"ecommerce\": [\n \"sku\",\n \"name\",\n \"description\",\n \"price\"\n ],\n \"mobile\": [\n \"sku\",\n \"name\",\n \"price\"\n ]\n },\n \"labels\": {\n \"en_US\": \"Clothing\",\n \"fr_FR\": \"V\\u00eatements\"\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "938e3183-51c9-4a17-a351-ba85013bc887", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/families/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/families/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"code\",\"attribute_as_label\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Family code\"},\"attribute_as_label\":{\"type\":\"string\",\"description\":\"Attribute code used as label\"},\"attribute_as_image\":{\"type\":[\"string\",\"null\"],\"description\":\"Attribute code used as the main picture in the user interface\"},\"attributes\":{\"type\":\"array\",\"description\":\"Attribute codes that compose the family\",\"items\":{\"type\":\"string\"}},\"attribute_requirements\":{\"type\":\"object\",\"description\":\"Attribute codes of the family that are required for the completeness calculation for each channel\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"description\":\"Attribute code required for the channel\"}}},\"labels\":{\"type\":\"object\",\"description\":\"Family labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Family label for the specified locale\",\"type\":[\"string\",\"null\"]}}},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"The parent family code. If the family has no parent, this field is `null`\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/families/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "023a471c-bf6f-4959-aaa8-0b11f3a8c1f7", + "name": "Get list of families", + "request": { + "name": "Get list of families", + "description": "Retrieve a paginated list of families. Families define which attributes a product can have and which are required per channel.\n\nUse filters to find families by code, update date, or whether they have products assigned.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "The search query parameter allows you to filter families based on specific criteria.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"family_code1\",\"family_code2\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the families by their update date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2020-07-04T10:00:00Z\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the families that have at least one attached product", + "type": "text/plain" + }, + "key": "search", + "value": "{\"has_products\":[{\"operator\":\"=\",\"value\":true}]}" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "List of families", + "originalRequest": { + "name": "Get list of families", + "description": { + "content": "This endpoint allows you to get a list of families.\nFamilies are paginated and sorted by code.\n", + "type": "text/plain" + }, + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "The search query parameter allows you to filter families based on specific criteria.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"family_code1\",\"family_code2\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the families by their update date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2020-07-04T10:00:00Z\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the families that have at least one attached product", + "type": "text/plain" + }, + "key": "search", + "value": "{\"has_products\":[{\"operator\":\"=\",\"value\":true}]}" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/families?page=1&limit=10\"\n },\n \"first\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/families?page=1&limit=10\"\n }\n },\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/families/clothing\"\n }\n },\n \"code\": \"clothing\",\n \"attributes\": [\n \"sku\",\n \"name\",\n \"description\",\n \"color\",\n \"size\"\n ],\n \"attribute_as_label\": \"name\",\n \"attribute_as_image\": \"picture\",\n \"attribute_requirements\": {\n \"ecommerce\": [\n \"sku\",\n \"name\"\n ]\n },\n \"labels\": {\n \"en_US\": \"Clothing\",\n \"fr_FR\": \"V\\u00eatements\"\n }\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "7d7b361e-b81c-4d5e-a11f-8ee2ae20b92b", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/families - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/families - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Families\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"required\":[\"code\",\"attribute_as_label\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Family code\"},\"attribute_as_label\":{\"type\":\"string\",\"description\":\"Attribute code used as label\"},\"attribute_as_image\":{\"type\":[\"string\",\"null\"],\"description\":\"Attribute code used as the main picture in the user interface\"},\"attributes\":{\"type\":\"array\",\"description\":\"Attribute codes that compose the family\",\"items\":{\"type\":\"string\"}},\"attribute_requirements\":{\"type\":\"object\",\"description\":\"Attribute codes of the family that are required for the completeness calculation for each channel\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"description\":\"Attribute code required for the channel\"}}},\"labels\":{\"type\":\"object\",\"description\":\"Family labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Family label for the specified locale\",\"type\":[\"string\",\"null\"]}}},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"The parent family code. If the family has no parent, this field is `null`\"}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/families - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "a54e9334-bc60-4201-ad3f-0846bb4289a7", + "name": "Update/create a family", + "request": { + "name": "Update/create a family", + "description": "Update an existing family or create it if the code doesn't exist.\n\n**Update behavior**: Merge-patch. Only send fields you want to change. Arrays like `attributes` and `attribute_requirements` are replaced entirely.\n\nSee: https://api.akeneo.com/documentation/update.html", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families/{{familyCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families", + "{{familyCode}}" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) This header indicates the media type of the resource being sent to the server.\nIt is used to specify the format of the request body, allowing the server to correctly interpret the data being sent.\nEqual to 'application/json' or 'application/x-www-form-urlencoded', no other value allowed.\n", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"caps\",\n \"attributes\": [\n \"sku\",\n \"name\",\n \"description\",\n \"price\",\n \"color\",\n \"picture\",\n \"material\"\n ],\n \"attribute_as_label\": \"name\",\n \"attribute_as_image\": \"picture,\",\n \"attribute_requirements\": {\n \"ecommerce\": [\n \"sku\",\n \"name\",\n \"description\",\n \"price\",\n \"color\"\n ],\n \"tablet\": [\n \"sku\",\n \"name\",\n \"description\",\n \"price\"\n ]\n },\n \"labels\": {\n \"en_US\": \"Caps\",\n \"fr_FR\": \"Casquettes\"\n },\n \"parent\": null\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + }, + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/families/caps" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "5f0db067-c550-4fc4-993b-632258304491", + "name": "Update/create several families", + "request": { + "name": "Update/create several families", + "description": "Batch update/create multiple families. Send one JSON object per line (NDJSON).\n\nEach line is processed independently — failures on one line don't affect others.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) The content type of the request", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{ \"code\": \"tshirt\",\"attribute_as_label\": \"description\",\"attributes\": [ \"description\",\"size\" ] }\n{ \"code\": \"cap\",\"attribute_as_label\": \"descripion\" }\n{ \"code\": \"mug\",\"attributes\": [ \"description\",\"short_description\" ] }\n", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"code\": \"tshirt\",\n \"status_code\": 204\n },\n {\n \"line\": 2,\n \"code\": \"cap\",\n \"status_code\": 422,\n \"message\": \"Property \\\"attribute_as_label\\\" expects a valid attribute code.\"\n },\n {\n \"line\": 3,\n \"code\": \"mug\",\n \"status_code\": 201\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "4478cf57-8df7-41d6-a32b-b05fa96c51b2", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/families - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/families - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/families - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "9cf6abcc-0a59-42eb-83cf-765a953038c5", + "name": "Family variant", + "description": "Manage family variants — define the structure of product models by specifying which attributes vary at each level (e.g. color at level 1, size at level 2).\n\nSee: https://api.akeneo.com/api-reference-index.html#family-variants", + "item": [ + { + "id": "24278f80-22b6-429a-bdbe-23307239f622", + "name": "Create a new family variant", + "request": { + "name": "Create a new family variant", + "description": "Create a new family variant for a given family.\n\n**Rules**:\n- Axes must be simple-select, reference entity single-link, boolean, or metric attributes\n- Axes cannot be localizable or scopable\n- A family can have at most 5 variants\n- Max 2 levels of variation", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families/{{familyCode}}/variants", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families", + "{{familyCode}}", + "variants" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"shoesVariant\",\n \"labels\": {\n \"en_US\": \"Shoes variant\",\n \"fr_FR\": \"Variante de chaussures\"\n },\n \"variant_attribute_sets\": [\n {\n \"level\": 1,\n \"attributes\": [\n \"color\",\n \"material\"\n ],\n \"axes\": [\n \"color\"\n ]\n },\n {\n \"level\": 2,\n \"attributes\": [\n \"sku\",\n \"size\"\n ],\n \"axes\": [\n \"size\"\n ]\n }\n ]\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/families/clothing/variants/shoesVariant" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "246e3625-61f5-4692-9f6d-c3e7f0f0f6a4", + "name": "Get a family variant", + "request": { + "name": "Get a family variant", + "description": "Retrieve a single family variant. Shows the variant attribute sets defining which attributes vary at each level.\n\n**Example**: A clothing family variant might have color at level 1 and size at level 2.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families/{{familyCode}}/variants/{{familyVariantCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families", + "{{familyCode}}", + "variants", + "{{familyVariantCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Family variant", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/families/clothing/variants/clothing_color_size\"\n }\n },\n \"code\": \"clothing_color_size\",\n \"labels\": {\n \"en_US\": \"Clothing by color and size\",\n \"fr_FR\": \"V\\u00eatements par couleur et taille\"\n },\n \"variant_attribute_sets\": [\n {\n \"level\": 1,\n \"axes\": [\n \"color\"\n ],\n \"attributes\": [\n \"color\",\n \"variation_image\",\n \"variation_name\"\n ]\n },\n {\n \"level\": 2,\n \"axes\": [\n \"size\"\n ],\n \"attributes\": [\n \"sku\",\n \"size\",\n \"ean\",\n \"weight\"\n ]\n }\n ]\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "72fbfe42-4f4a-4e40-be57-b9e9beee035a", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/families/:family_code/variants/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/families/:family_code/variants/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Family variant code\"},\"common_attributes\":{\"type\":\"array\",\"description\":\"Codes of attributes that are common to all variants (not specific to any enrichment level)\",\"items\":{\"type\":\"string\"},\"default\":[]},\"variant_attribute_sets\":{\"type\":\"array\",\"description\":\"Attributes distribution according to the enrichment level\",\"items\":{\"type\":\"object\",\"required\":[\"level\",\"axes\"],\"description\":\"Enrichment level\",\"properties\":{\"level\":{\"type\":\"integer\",\"description\":\"Enrichment level\"},\"axes\":{\"type\":\"array\",\"description\":\"Codes of attributes used as variant axes\",\"items\":{\"type\":\"string\"},\"default\":[]},\"attributes\":{\"type\":\"array\",\"description\":\"Codes of attributes bind to this enrichment level\",\"items\":{\"type\":\"string\"},\"default\":[]}}}},\"labels\":{\"type\":\"object\",\"description\":\"Family variant labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Family variant label for the specified locale\",\"type\":[\"string\",\"null\"]}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/families/:family_code/variants/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "66351573-0896-4b5c-822b-5f7d1138ce10", + "name": "Get list of family variants", + "request": { + "name": "Get list of family variants", + "description": "List all variants for a given family. Family variants define how products with variants are structured.\n\nSet `{{familyCode}}` in the URL to the target family.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families/{{familyCode}}/variants", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families", + "{{familyCode}}", + "variants" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "List of variants", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/families/clothing/variants?page=1&limit=25\"\n }\n },\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"code\": \"clothing_color_size\",\n \"labels\": {\n \"en_US\": \"By color and size\"\n },\n \"variant_attribute_sets\": [\n {\n \"level\": 1,\n \"axes\": [\n \"color\"\n ],\n \"attributes\": [\n \"color\"\n ]\n },\n {\n \"level\": 2,\n \"axes\": [\n \"size\"\n ],\n \"attributes\": [\n \"sku\",\n \"size\"\n ]\n }\n ]\n },\n {\n \"code\": \"clothing_size\",\n \"labels\": {\n \"en_US\": \"By size only\"\n },\n \"variant_attribute_sets\": [\n {\n \"level\": 1,\n \"axes\": [\n \"size\"\n ],\n \"attributes\": [\n \"sku\",\n \"size\",\n \"ean\"\n ]\n }\n ]\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "b061d4d1-2f45-43f1-9754-2db5dc0f4d25", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/families/:family_code/variants - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/families/:family_code/variants - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Family Variants\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Family variant code\"},\"common_attributes\":{\"type\":\"array\",\"description\":\"Codes of attributes that are common to all variants (not specific to any enrichment level)\",\"items\":{\"type\":\"string\"},\"default\":[]},\"variant_attribute_sets\":{\"type\":\"array\",\"description\":\"Attributes distribution according to the enrichment level\",\"items\":{\"type\":\"object\",\"required\":[\"level\",\"axes\"],\"description\":\"Enrichment level\",\"properties\":{\"level\":{\"type\":\"integer\",\"description\":\"Enrichment level\"},\"axes\":{\"type\":\"array\",\"description\":\"Codes of attributes used as variant axes\",\"items\":{\"type\":\"string\"},\"default\":[]},\"attributes\":{\"type\":\"array\",\"description\":\"Codes of attributes bind to this enrichment level\",\"items\":{\"type\":\"string\"},\"default\":[]}}}},\"labels\":{\"type\":\"object\",\"description\":\"Family variant labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Family variant label for the specified locale\",\"type\":[\"string\",\"null\"]}}}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/families/:family_code/variants - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "72881526-7aa2-462b-a1df-13892031787d", + "name": "Update/create a family variant", + "request": { + "name": "Update/create a family variant", + "description": "Update or create a family variant.\n\n**Warning**: Changing axes on an existing variant with products is not allowed. You can only add new attributes to existing levels.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families/{{familyCode}}/variants/{{familyVariantCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families", + "{{familyCode}}", + "variants", + "{{familyVariantCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"shoesVariant\",\n \"labels\": {\n \"en_US\": \"Shoes variant\",\n \"fr_FR\": \"Variante de chaussures\"\n },\n \"variant_attribute_sets\": [\n {\n \"level\": 1,\n \"attributes\": [\n \"color\",\n \"material\"\n ],\n \"axes\": [\n \"color\"\n ]\n },\n {\n \"level\": 2,\n \"attributes\": [\n \"sku\",\n \"size\"\n ],\n \"axes\": [\n \"size\"\n ]\n }\n ]\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "aa230cc8-f9d2-4a8f-ad2f-56e63c107a21", + "name": "Update/create several family variants", + "request": { + "name": "Update/create several family variants", + "description": "Batch update/create family variants. One JSON per line (NDJSON).\n\nEach line is processed independently.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/families/{{familyCode}}/variants", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "families", + "{{familyCode}}", + "variants" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\"code\": \"shoes_by_size\", \"variant_attribute_sets\": [{\"level\": 1, \"axes\": [\"size\"], \"attributes\": [\"color\"]}]}\n{\"code\": \"shoes_by_color\",\"labels\": {\"en_US\": \"Shoes by color\"}}\n{\"code\": \"shoes_without_axes\", \"variant_attribute_sets\": [{\"level\": 1, \"axes\": [], \"attributes\": [\"color\"]}]}\n", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"code\": \"shoes_by_size\",\n \"status_code\": 204\n },\n {\n \"line\": 2,\n \"code\": \"shoes_by_color\",\n \"status_code\": 201\n },\n {\n \"line\": 3,\n \"code\": \"shoes_without_axes\",\n \"status_code\": 422,\n \"message\": \"A variant attribute set must have at least one axis.\"\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "d85ad533-11e9-4be4-b348-a373aa62ce3d", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/families/:family_code/variants - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/families/:family_code/variants - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/families/:family_code/variants - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "263cc5da-5d49-4070-8448-505e6af2b505", + "name": "Attribute", + "description": "Manage attributes — the building blocks of your product data model (text, number, select, date, price, etc.).\n\nSee: https://api.akeneo.com/api-reference-index.html#attributes", + "item": [ + { + "id": "c9064cf5-1dc8-4e50-bb0a-5db6f9215725", + "name": "Create a new attribute", + "request": { + "name": "Create a new attribute", + "description": "Create a new attribute. The `code` and `type` are required and cannot be changed after creation.\n\n**Attribute types**:\n- `pim_catalog_text` — Short text (max 255 chars)\n- `pim_catalog_textarea` — Long text, optional WYSIWYG\n- `pim_catalog_simpleselect` — Single option from a list\n- `pim_catalog_multiselect` — Multiple options\n- `pim_catalog_number` — Numeric value\n- `pim_catalog_price_collection` — Price per currency\n- `pim_catalog_boolean` — Yes/No\n- `pim_catalog_date` — Date value\n- `pim_catalog_image` / `pim_catalog_file` — Media\n- `pim_catalog_metric` — Value + unit (weight, length, etc.)\n- `pim_catalog_identifier` — Product identifier", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"release_date\",\n \"type\": \"pim_catalog_date\",\n \"group\": \"marketing\",\n \"group_labels\": {\n \"en_US\": \"Marketing\",\n \"fr_FR\": \"Marketing\"\n },\n \"unique\": false,\n \"useable_as_grid_filter\": true,\n \"allowed_extensions\": [],\n \"metric_family\": null,\n \"default_metric_unit\": null,\n \"reference_data_name\": null,\n \"available_locales\": [],\n \"max_characters\": null,\n \"validation_rule\": null,\n \"validation_regexp\": null,\n \"wysiwyg_enabled\": null,\n \"number_min\": null,\n \"number_max\": null,\n \"decimals_allowed\": null,\n \"negative_allowed\": null,\n \"date_min\": \"2017-06-28T08:00:00\",\n \"date_max\": \"2017-08-08T22:00:00\",\n \"max_file_size\": null,\n \"minimum_input_length\": null,\n \"sort_order\": 1,\n \"localizable\": false,\n \"scopable\": false,\n \"default_value\": null,\n \"labels\": {\n \"en_US\": \"Sale date\",\n \"fr_FR\": \"Date des soldes\"\n },\n \"is_mandatory\": false,\n \"decimal_places_strategy\": null,\n \"decimal_places\": null,\n \"enable_option_creation_during_import\": false,\n \"max_items_count\": null\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/attributes/release_date" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "c952cc29-21f3-435c-b7ff-38d8ec68fffe", + "name": "Get an attribute", + "request": { + "name": "Get an attribute", + "description": "Retrieve a single attribute by its code. Returns the full definition including type, validation rules, and labels.\n\n**Common types**: `pim_catalog_text`, `pim_catalog_simpleselect`, `pim_catalog_multiselect`, `pim_catalog_number`, `pim_catalog_price_collection`, `pim_catalog_boolean`, `pim_catalog_date`, `pim_catalog_textarea`, `pim_catalog_image`, `pim_catalog_metric`, `pim_catalog_identifier`", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes/{{attributeCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes", + "{{attributeCode}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Return the options of 'select' column types (of a table attribute) in the response.", + "type": "text/plain" + }, + "key": "with_table_select_options", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Attribute details", + "originalRequest": { + "name": "Get an attribute", + "description": { + "content": "This endpoint allows you to get the information about a given attribute", + "type": "text/plain" + }, + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes/{{attributeCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes", + "{{attributeCode}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Return the options of 'select' column types (of a table attribute) in the response.", + "type": "text/plain" + }, + "key": "with_table_select_options", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"color\",\n \"type\": \"pim_catalog_simpleselect\",\n \"group\": \"marketing\",\n \"unique\": false,\n \"useable_as_grid_filter\": true,\n \"allowed_extensions\": [],\n \"metric_family\": null,\n \"default_metric_unit\": null,\n \"reference_data_name\": null,\n \"available_locales\": [],\n \"max_characters\": null,\n \"validation_rule\": null,\n \"validation_regexp\": null,\n \"wysiwyg_enabled\": null,\n \"number_min\": null,\n \"number_max\": null,\n \"decimals_allowed\": null,\n \"negative_allowed\": null,\n \"date_min\": null,\n \"date_max\": null,\n \"max_file_size\": null,\n \"minimum_input_length\": null,\n \"sort_order\": 0,\n \"localizable\": false,\n \"scopable\": false,\n \"labels\": {\n \"en_US\": \"Color\",\n \"fr_FR\": \"Couleur\"\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "9f733e0b-5b8e-4ae8-9790-23306bd8ca9f", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/attributes/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/attributes/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute code\",\"x-immutable\":true},\"type\":{\"type\":\"string\",\"description\":\"Attribute type.\\nSee [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\\n\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_metric\",\"pim_catalog_number\",\"pim_reference_data_multiselect\",\"pim_reference_data_simpleselect\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_date\",\"pim_catalog_textarea\",\"pim_catalog_text\",\"pim_catalog_file\",\"pim_catalog_image\",\"pim_catalog_price_collection\",\"pim_catalog_boolean\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_catalog_asset_collection\",\"pim_catalog_product_link\",\"pim_catalog_table\"],\"x-immutable\":true,\"x-validation-rules\":\"The type is one of the following values\"},\"labels\":{\"type\":\"object\",\"description\":\"Attribute labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"group\":{\"type\":\"string\",\"description\":\"Attribute group\",\"x-validation-rules\":\"It is the code of an existing group\"},\"group_labels\":{\"type\":\"object\",\"description\":\"Group labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Group label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"sort_order\":{\"type\":\"integer\",\"description\":\"Order of the attribute in its group\",\"default\":0,\"x-validation-rules\":\"It is a positive integer\"},\"localizable\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is localizable, i.e. can have one value by locale\",\"default\":false,\"x-immutable\":true},\"scopable\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is scopable, i.e. can have one value by channel\",\"default\":false,\"x-immutable\":true},\"available_locales\":{\"type\":\"array\",\"description\":\"To make the attribute locale specfic, specify here for which locales it is specific\",\"items\":{\"type\":\"string\"},\"x-validation-rules\":\"Each string of the array is an existing and activated locale\"},\"unique\":{\"type\":\"boolean\",\"description\":\"Whether two values for the attribute cannot be the same\",\"x-immutable\":true,\"x-validation-rules\":\"Required to be `true` for `pim_catalog_identifier` attribute type.\\nCan only be `true` for `pim_catalog_text`, `pim_catalog_number`, or `pim_catalog_identifier` attribute types.\\n\",\"x-warning\":\"Only `pim_catalog_text`, `pim_catalog_number`, and `pim_catalog_identifier` attribute types support unique values.\\nThe `pim_catalog_identifier` type must always be unique.\\n\"},\"useable_as_grid_filter\":{\"type\":\"boolean\",\"description\":\"Whether the attribute can be used as a filter for the product grid in the PIM user interface\"},\"max_characters\":{\"type\":[\"integer\",\"null\"],\"description\":\"Number maximum of characters allowed for the value of the attribute when the attribute type is `pim_catalog_text`, `pim_catalog_textarea` or `pim_catalog_identifier`\",\"x-warning\":\"Only for `pim_catalog_text`, `pim_catalog_textarea` or `pim_catalog_identifier` attribute types\"},\"validation_rule\":{\"type\":[\"string\",\"null\"],\"description\":\"Validation rule type used to validate any attribute value when the attribute type is `pim_catalog_text` or `pim_catalog_identifier`\",\"x-validation-rules\":\"Equal to `regexp` when the attribute type is equal to `pim_catalog_identifier`\",\"x-warning\":\"Only for `pim_catalog_text` or `pim_catalog_identifier` attribute types\"},\"validation_regexp\":{\"type\":[\"string\",\"null\"],\"description\":\"Regexp expression used to validate any attribute value when the attribute type is `pim_catalog_text` or `pim_catalog_identifier`\",\"x-validation-rules\":\"Required when the property `validation_rule` is equal to `regexp`\",\"x-warning\":\"Only for `pim_catalog_text` or `pim_catalog_identifier` attribute types\"},\"wysiwyg_enabled\":{\"type\":[\"boolean\",\"null\"],\"description\":\"Whether the WYSIWYG interface is shown when the attribute type is `pim_catalog_textarea`\",\"x-warning\":\"Only for `pim_catalog_textarea` attribute type\"},\"number_min\":{\"type\":[\"string\",\"null\"],\"description\":\"Minimum integer value allowed when the attribute type is `pim_catalog_metric`, `pim_catalog_price` or `pim_catalog_number`\",\"x-warning\":\"Only for `pim_catalog_metric`, `pim_catalog_price_collection` or `pim_catalog_number` attribute types\"},\"number_max\":{\"type\":[\"string\",\"null\"],\"description\":\"Maximum integer value allowed when the attribute type is `pim_catalog_metric`, `pim_catalog_price` or `pim_catalog_number`\",\"x-warning\":\"Only for `pim_catalog_metric`, `pim_catalog_price_collection` or `pim_catalog_number` attribute types\"},\"decimals_allowed\":{\"type\":[\"boolean\",\"null\"],\"description\":\"Whether decimals are allowed when the attribute type is `pim_catalog_metric`, `pim_catalog_price` or `pim_catalog_number`\",\"x-warning\":\"Only for `pim_catalog_metric`, `pim_catalog_price_collection` or `pim_catalog_number` attribute types\"},\"negative_allowed\":{\"type\":[\"boolean\",\"null\"],\"description\":\"Whether negative values are allowed when the attribute type is `pim_catalog_metric` or `pim_catalog_number`\",\"x-warning\":\"Only for `pim_catalog_metric` or `pim_catalog_number` attribute types\"},\"metric_family\":{\"type\":[\"string\",\"null\"],\"description\":\"Metric family when the attribute type is `pim_catalog_metric`\",\"x-immutable\":true,\"x-validation-rules\":\"Required for `pim_catalog_metric` attribute type\",\"x-warning\":\"Only for `pim_catalog_metric` attribute type\"},\"default_metric_unit\":{\"type\":[\"string\",\"null\"],\"description\":\"Default metric unit when the attribute type is `pim_catalog_metric`\",\"x-validation-rules\":\"Required for `pim_catalog_metric` attribute type\",\"x-warning\":\"Only for `pim_catalog_metric` attribute type\"},\"date_min\":{\"type\":[\"string\",\"null\"],\"description\":\"Minimum date allowed when the attribute type is `pim_catalog_date`\",\"format\":\"date-time\",\"x-validation-rules\":\"The datetime format follows the ISO-8601 norm\",\"x-warning\":\"Only for `pim_catalog_date` attribute type\"},\"date_max\":{\"type\":[\"string\",\"null\"],\"description\":\"Maximum date allowed when the attribute type is `pim_catalog_date`\",\"format\":\"date-time\",\"x-validation-rules\":\"The datetime format follows the ISO-8601 norm\",\"x-warning\":\"Only for `pim_catalog_date` attribute type\"},\"allowed_extensions\":{\"type\":\"array\",\"description\":\"Extensions allowed when the attribute type is `pim_catalog_file` or `pim_catalog_image`\",\"items\":{\"type\":\"string\"},\"x-warning\":\"Only for `pim_catalog_file` or `pim_catalog_image` attribute types\"},\"max_file_size\":{\"type\":[\"string\",\"null\"],\"description\":\"Max file size in MB when the attribute type is `pim_catalog_file` or `pim_catalog_image`\",\"x-warning\":\"Only for `pim_catalog_file` or `pim_catalog_image` attribute types\"},\"reference_data_name\":{\"type\":[\"string\",\"null\"],\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`\\n\",\"x-validation-rules\":\"Required only for `akeneo_reference_entity`or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"default_value\":{\"oneOf\":[{\"type\":\"boolean\",\"description\":\"Default value for a Yes/No attribute, applied when creating a new product or product model\"},{\"type\":\"number\",\"description\":\"Default value for a number attribute, applied when creating a new product or product model\"},{\"type\":\"string\",\"description\":\"Default value for a simple select attribute, applied when creating a new product or product model\"},{\"type\":\"array\",\"description\":\"Default value for a multi-select attribute, applied when creating a new product or product model\",\"items\":{\"type\":\"string\"}},{\"type\":\"null\"}],\"x-validation-rules\":\"Can only be set for `pim_catalog_boolean`, `pim_catalog_number`, `pim_catalog_simpleselect`, or `pim_catalog_multiselect` attribute types.\\nMust be null for `pim_catalog_identifier`, `pim_catalog_text`, `pim_catalog_textarea`, `pim_catalog_price_collection`,\\n`pim_catalog_file`, `pim_catalog_image`, `pim_catalog_date`, `pim_catalog_metric`, and `pim_reference_data_simpleselect` attribute types.\\n\",\"x-warning\":\"Only for `pim_catalog_boolean`, `pim_catalog_number`, `pim_catalog_simpleselect`, or `pim_catalog_multiselect` attribute types\"},\"table_configuration\":{\"type\":\"array\",\"description\":\"Configuration of the Table attribute (columns)\",\"items\":{\"type\":\"object\",\"required\":[\"code\",\"data_type\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Column code\"},\"data_type\":{\"type\":\"string\",\"enum\":[\"select\",\"text\",\"number\",\"boolean\",\"incremental_number\",\"reference_entity\",\"product_link\",\"measurement\",\"date\"],\"description\":\"Column data type\"},\"validations\":{\"type\":\"object\",\"description\":\"User defined validation constraints on the cell content\",\"default\":{},\"properties\":{\"min\":{\"type\":\"number\",\"description\":\"minimum value of a numeric cell\",\"x-validation-rules\":\"only for `number` data type columns\"},\"max\":{\"type\":\"number\",\"description\":\"maximum value of a numeric cell\",\"x-validation-rules\":\"only for `number` data type columns\"},\"decimals_allowed\":{\"type\":\"boolean\",\"description\":\"whether the value of a numeric cell can hold a decimal part\",\"x-validation-rules\":\"only for `number` data type columns\"},\"max_length\":{\"type\":\"number\",\"description\":\"maximum length of a text cell\",\"x-validation-rules\":\"only for `text` data type columns\"}}},\"labels\":{\"type\":\"object\",\"description\":\"Column labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Column label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"is_required_for_completeness\":{\"type\":\"boolean\",\"description\":\"Defines if the column should be entirely filled for the attribute to be considered complete\",\"default\":false,\"x-warning\":\"This value is always true for the first column in a table configuration\"}}},\"x-validation-rules\":\"Required only for `pim_catalog_table` attribute type\",\"x-warning\":\"Only for `pim_catalog_table` attribute type\"},\"is_main_identifier\":{\"type\":\"boolean\",\"description\":\"Is this attribute main identifier when attribute type is `pim_catalog_identifier`\"},\"is_mandatory\":{\"type\":\"boolean\",\"description\":\"This attribute must be enriched from the moment a product is created.\\nIt will be mandatory across all families.\\n\",\"x-warning\":\"Only for `pim_catalog_boolean`, `pim_catalog_identifier`, `pim_catalog_number`, `pim_catalog_simpleselect`,\\n`pim_catalog_textarea`, `pim_catalog_text`, `pim_reference_data_simpleselect`\\nor `akeneo_reference_entity` attribute types\\n\"},\"decimal_places_strategy\":{\"type\":[\"string\",\"null\"],\"description\":\"Defines the decimal places strategy.\\nAvailable options are `round`, `forbid` and `trim`.\\n\",\"x-warning\":\"Only for `pim_catalog_number` or `pim_catalog_metric` attribute types\"},\"decimal_places\":{\"type\":[\"number\",\"null\"],\"description\":\"Defines the number of decimal places when decimal places strategy is `round` or `forbid`\",\"x-warning\":\"Only for `pim_catalog_simpleselect` or `pim_catalog_multiselect` attribute types\"},\"enable_option_creation_during_import\":{\"type\":[\"boolean\",\"null\"],\"description\":\"Whether new attribute options can be created automatically during product or product model import (CSV, XLSX),\\nwhen the attribute type is `pim_catalog_simpleselect` or `pim_catalog_multiselect`\\n\",\"x-warning\":\"Only for `pim_catalog_simpleselect` or `pim_catalog_multiselect` attribute types\"},\"max_items_count\":{\"type\":[\"number\",\"null\"],\"description\":\"Maximum number of items allowed in an asset collection when the attribute type is `pim_catalog_asset_collection`\",\"x-warning\":\"Only for `pim_catalog_asset_collection` attribute types\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/attributes/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "00843216-15af-4265-97ec-8519fb4ffcd6", + "name": "Get list of attributes", + "request": { + "name": "Get list of attributes", + "description": "Retrieve a paginated list of attributes. Attributes are the building blocks of your product data model.\n\nUse filters to find attributes by code, type, update date, or whether they're the main identifier.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Filter attributes,\nfor more details see the [Filters](https://api.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"code1\",\"code2\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the attributes by their update date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2020-07-04T10:00:00Z\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the attributes by their type", + "type": "text/plain" + }, + "key": "search", + "value": "{\"type\":[{\"operator\":\"IN\",\"value\":[\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the attributes that are main identifier or not", + "type": "text/plain" + }, + "key": "search", + "value": "{\"is_main_identifier\":[{\"operator\":\"=\",\"value\":true}]}" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return the options of 'select' column types (of a table attribute) in the response.", + "type": "text/plain" + }, + "key": "with_table_select_options", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "d67102c4-651d-41df-9be3-46829dc87822", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/attributes - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/attributes - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Attributes\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute code\",\"x-immutable\":true},\"type\":{\"type\":\"string\",\"description\":\"Attribute type.\\nSee [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\\n\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_metric\",\"pim_catalog_number\",\"pim_reference_data_multiselect\",\"pim_reference_data_simpleselect\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_date\",\"pim_catalog_textarea\",\"pim_catalog_text\",\"pim_catalog_file\",\"pim_catalog_image\",\"pim_catalog_price_collection\",\"pim_catalog_boolean\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_catalog_asset_collection\",\"pim_catalog_product_link\",\"pim_catalog_table\"],\"x-immutable\":true,\"x-validation-rules\":\"The type is one of the following values\"},\"labels\":{\"type\":\"object\",\"description\":\"Attribute labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"group\":{\"type\":\"string\",\"description\":\"Attribute group\",\"x-validation-rules\":\"It is the code of an existing group\"},\"group_labels\":{\"type\":\"object\",\"description\":\"Group labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Group label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"sort_order\":{\"type\":\"integer\",\"description\":\"Order of the attribute in its group\",\"default\":0,\"x-validation-rules\":\"It is a positive integer\"},\"localizable\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is localizable, i.e. can have one value by locale\",\"default\":false,\"x-immutable\":true},\"scopable\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is scopable, i.e. can have one value by channel\",\"default\":false,\"x-immutable\":true},\"available_locales\":{\"type\":\"array\",\"description\":\"To make the attribute locale specfic, specify here for which locales it is specific\",\"items\":{\"type\":\"string\"},\"x-validation-rules\":\"Each string of the array is an existing and activated locale\"},\"unique\":{\"type\":\"boolean\",\"description\":\"Whether two values for the attribute cannot be the same\",\"x-immutable\":true,\"x-validation-rules\":\"Required to be `true` for `pim_catalog_identifier` attribute type.\\nCan only be `true` for `pim_catalog_text`, `pim_catalog_number`, or `pim_catalog_identifier` attribute types.\\n\",\"x-warning\":\"Only `pim_catalog_text`, `pim_catalog_number`, and `pim_catalog_identifier` attribute types support unique values.\\nThe `pim_catalog_identifier` type must always be unique.\\n\"},\"useable_as_grid_filter\":{\"type\":\"boolean\",\"description\":\"Whether the attribute can be used as a filter for the product grid in the PIM user interface\"},\"max_characters\":{\"type\":[\"integer\",\"null\"],\"description\":\"Number maximum of characters allowed for the value of the attribute when the attribute type is `pim_catalog_text`, `pim_catalog_textarea` or `pim_catalog_identifier`\",\"x-warning\":\"Only for `pim_catalog_text`, `pim_catalog_textarea` or `pim_catalog_identifier` attribute types\"},\"validation_rule\":{\"type\":[\"string\",\"null\"],\"description\":\"Validation rule type used to validate any attribute value when the attribute type is `pim_catalog_text` or `pim_catalog_identifier`\",\"x-validation-rules\":\"Equal to `regexp` when the attribute type is equal to `pim_catalog_identifier`\",\"x-warning\":\"Only for `pim_catalog_text` or `pim_catalog_identifier` attribute types\"},\"validation_regexp\":{\"type\":[\"string\",\"null\"],\"description\":\"Regexp expression used to validate any attribute value when the attribute type is `pim_catalog_text` or `pim_catalog_identifier`\",\"x-validation-rules\":\"Required when the property `validation_rule` is equal to `regexp`\",\"x-warning\":\"Only for `pim_catalog_text` or `pim_catalog_identifier` attribute types\"},\"wysiwyg_enabled\":{\"type\":[\"boolean\",\"null\"],\"description\":\"Whether the WYSIWYG interface is shown when the attribute type is `pim_catalog_textarea`\",\"x-warning\":\"Only for `pim_catalog_textarea` attribute type\"},\"number_min\":{\"type\":[\"string\",\"null\"],\"description\":\"Minimum integer value allowed when the attribute type is `pim_catalog_metric`, `pim_catalog_price` or `pim_catalog_number`\",\"x-warning\":\"Only for `pim_catalog_metric`, `pim_catalog_price_collection` or `pim_catalog_number` attribute types\"},\"number_max\":{\"type\":[\"string\",\"null\"],\"description\":\"Maximum integer value allowed when the attribute type is `pim_catalog_metric`, `pim_catalog_price` or `pim_catalog_number`\",\"x-warning\":\"Only for `pim_catalog_metric`, `pim_catalog_price_collection` or `pim_catalog_number` attribute types\"},\"decimals_allowed\":{\"type\":[\"boolean\",\"null\"],\"description\":\"Whether decimals are allowed when the attribute type is `pim_catalog_metric`, `pim_catalog_price` or `pim_catalog_number`\",\"x-warning\":\"Only for `pim_catalog_metric`, `pim_catalog_price_collection` or `pim_catalog_number` attribute types\"},\"negative_allowed\":{\"type\":[\"boolean\",\"null\"],\"description\":\"Whether negative values are allowed when the attribute type is `pim_catalog_metric` or `pim_catalog_number`\",\"x-warning\":\"Only for `pim_catalog_metric` or `pim_catalog_number` attribute types\"},\"metric_family\":{\"type\":[\"string\",\"null\"],\"description\":\"Metric family when the attribute type is `pim_catalog_metric`\",\"x-immutable\":true,\"x-validation-rules\":\"Required for `pim_catalog_metric` attribute type\",\"x-warning\":\"Only for `pim_catalog_metric` attribute type\"},\"default_metric_unit\":{\"type\":[\"string\",\"null\"],\"description\":\"Default metric unit when the attribute type is `pim_catalog_metric`\",\"x-validation-rules\":\"Required for `pim_catalog_metric` attribute type\",\"x-warning\":\"Only for `pim_catalog_metric` attribute type\"},\"date_min\":{\"type\":[\"string\",\"null\"],\"description\":\"Minimum date allowed when the attribute type is `pim_catalog_date`\",\"format\":\"date-time\",\"x-validation-rules\":\"The datetime format follows the ISO-8601 norm\",\"x-warning\":\"Only for `pim_catalog_date` attribute type\"},\"date_max\":{\"type\":[\"string\",\"null\"],\"description\":\"Maximum date allowed when the attribute type is `pim_catalog_date`\",\"format\":\"date-time\",\"x-validation-rules\":\"The datetime format follows the ISO-8601 norm\",\"x-warning\":\"Only for `pim_catalog_date` attribute type\"},\"allowed_extensions\":{\"type\":\"array\",\"description\":\"Extensions allowed when the attribute type is `pim_catalog_file` or `pim_catalog_image`\",\"items\":{\"type\":\"string\"},\"x-warning\":\"Only for `pim_catalog_file` or `pim_catalog_image` attribute types\"},\"max_file_size\":{\"type\":[\"string\",\"null\"],\"description\":\"Max file size in MB when the attribute type is `pim_catalog_file` or `pim_catalog_image`\",\"x-warning\":\"Only for `pim_catalog_file` or `pim_catalog_image` attribute types\"},\"reference_data_name\":{\"type\":[\"string\",\"null\"],\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`\\n\",\"x-validation-rules\":\"Required only for `akeneo_reference_entity`or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"default_value\":{\"oneOf\":[{\"type\":\"boolean\",\"description\":\"Default value for a Yes/No attribute, applied when creating a new product or product model\"},{\"type\":\"number\",\"description\":\"Default value for a number attribute, applied when creating a new product or product model\"},{\"type\":\"string\",\"description\":\"Default value for a simple select attribute, applied when creating a new product or product model\"},{\"type\":\"array\",\"description\":\"Default value for a multi-select attribute, applied when creating a new product or product model\",\"items\":{\"type\":\"string\"}},{\"type\":\"null\"}],\"x-validation-rules\":\"Can only be set for `pim_catalog_boolean`, `pim_catalog_number`, `pim_catalog_simpleselect`, or `pim_catalog_multiselect` attribute types.\\nMust be null for `pim_catalog_identifier`, `pim_catalog_text`, `pim_catalog_textarea`, `pim_catalog_price_collection`,\\n`pim_catalog_file`, `pim_catalog_image`, `pim_catalog_date`, `pim_catalog_metric`, and `pim_reference_data_simpleselect` attribute types.\\n\",\"x-warning\":\"Only for `pim_catalog_boolean`, `pim_catalog_number`, `pim_catalog_simpleselect`, or `pim_catalog_multiselect` attribute types\"},\"table_configuration\":{\"type\":\"array\",\"description\":\"Configuration of the Table attribute (columns)\",\"items\":{\"type\":\"object\",\"required\":[\"code\",\"data_type\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Column code\"},\"data_type\":{\"type\":\"string\",\"enum\":[\"select\",\"text\",\"number\",\"boolean\",\"incremental_number\",\"reference_entity\",\"product_link\",\"measurement\",\"date\"],\"description\":\"Column data type\"},\"validations\":{\"type\":\"object\",\"description\":\"User defined validation constraints on the cell content\",\"default\":{},\"properties\":{\"min\":{\"type\":\"number\",\"description\":\"minimum value of a numeric cell\",\"x-validation-rules\":\"only for `number` data type columns\"},\"max\":{\"type\":\"number\",\"description\":\"maximum value of a numeric cell\",\"x-validation-rules\":\"only for `number` data type columns\"},\"decimals_allowed\":{\"type\":\"boolean\",\"description\":\"whether the value of a numeric cell can hold a decimal part\",\"x-validation-rules\":\"only for `number` data type columns\"},\"max_length\":{\"type\":\"number\",\"description\":\"maximum length of a text cell\",\"x-validation-rules\":\"only for `text` data type columns\"}}},\"labels\":{\"type\":\"object\",\"description\":\"Column labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Column label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"is_required_for_completeness\":{\"type\":\"boolean\",\"description\":\"Defines if the column should be entirely filled for the attribute to be considered complete\",\"default\":false,\"x-warning\":\"This value is always true for the first column in a table configuration\"}}},\"x-validation-rules\":\"Required only for `pim_catalog_table` attribute type\",\"x-warning\":\"Only for `pim_catalog_table` attribute type\"},\"is_main_identifier\":{\"type\":\"boolean\",\"description\":\"Is this attribute main identifier when attribute type is `pim_catalog_identifier`\"},\"is_mandatory\":{\"type\":\"boolean\",\"description\":\"This attribute must be enriched from the moment a product is created.\\nIt will be mandatory across all families.\\n\",\"x-warning\":\"Only for `pim_catalog_boolean`, `pim_catalog_identifier`, `pim_catalog_number`, `pim_catalog_simpleselect`,\\n`pim_catalog_textarea`, `pim_catalog_text`, `pim_reference_data_simpleselect`\\nor `akeneo_reference_entity` attribute types\\n\"},\"decimal_places_strategy\":{\"type\":[\"string\",\"null\"],\"description\":\"Defines the decimal places strategy.\\nAvailable options are `round`, `forbid` and `trim`.\\n\",\"x-warning\":\"Only for `pim_catalog_number` or `pim_catalog_metric` attribute types\"},\"decimal_places\":{\"type\":[\"number\",\"null\"],\"description\":\"Defines the number of decimal places when decimal places strategy is `round` or `forbid`\",\"x-warning\":\"Only for `pim_catalog_simpleselect` or `pim_catalog_multiselect` attribute types\"},\"enable_option_creation_during_import\":{\"type\":[\"boolean\",\"null\"],\"description\":\"Whether new attribute options can be created automatically during product or product model import (CSV, XLSX),\\nwhen the attribute type is `pim_catalog_simpleselect` or `pim_catalog_multiselect`\\n\",\"x-warning\":\"Only for `pim_catalog_simpleselect` or `pim_catalog_multiselect` attribute types\"},\"max_items_count\":{\"type\":[\"number\",\"null\"],\"description\":\"Maximum number of items allowed in an asset collection when the attribute type is `pim_catalog_asset_collection`\",\"x-warning\":\"Only for `pim_catalog_asset_collection` attribute types\"}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/attributes - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "95d3bb67-2609-40e6-bde6-a62cdf95da8f", + "name": "Update/create an attribute", + "request": { + "name": "Update/create an attribute", + "description": "Update an existing attribute or create it if the code doesn't exist.\n\n**Immutable fields**: `code`, `type`, `unique` cannot be changed after creation.\n**Update behavior**: Merge-patch — only send fields you want to change.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes/{{attributeCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes", + "{{attributeCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"release_date\",\n \"type\": \"pim_catalog_date\",\n \"group\": \"marketing\",\n \"group_labels\": {\n \"en_US\": \"Marketing\",\n \"fr_FR\": \"Marketing\"\n },\n \"unique\": false,\n \"useable_as_grid_filter\": true,\n \"allowed_extensions\": [],\n \"metric_family\": null,\n \"default_metric_unit\": null,\n \"reference_data_name\": null,\n \"available_locales\": [],\n \"max_characters\": null,\n \"validation_rule\": null,\n \"validation_regexp\": null,\n \"wysiwyg_enabled\": null,\n \"number_min\": null,\n \"number_max\": null,\n \"decimals_allowed\": null,\n \"negative_allowed\": null,\n \"date_min\": \"2017-06-28T08:00:00\",\n \"date_max\": \"2017-08-08T22:00:00\",\n \"max_file_size\": null,\n \"minimum_input_length\": null,\n \"sort_order\": 1,\n \"localizable\": false,\n \"scopable\": false,\n \"default_value\": null,\n \"labels\": {\n \"en_US\": \"Sale date\",\n \"fr_FR\": \"Date des soldes\"\n },\n \"is_mandatory\": false,\n \"decimal_places_strategy\": null,\n \"decimal_places\": null,\n \"enable_option_creation_during_import\": false,\n \"max_items_count\": null\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "aaa6666e-b6b8-47b6-b838-0482acbb801b", + "name": "Update/create several attributes", + "request": { + "name": "Update/create several attributes", + "description": "Batch update/create attributes. One JSON per line (NDJSON).\n\n**Tip**: Useful for bulk-updating `useable_as_grid_filter`, `labels`, or validation rules across many attributes.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\"code\":\"description\",\"useable_as_grid_filter\":true}\n{\"code\":\"short_description\",\"group\":\"marketing\"}\n{\"code\":\"release_date\",\"date_min\":\"2017-06-28T08:00:00\"}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"code\": \"description\",\n \"status_code\": 204\n },\n {\n \"line\": 2,\n \"code\": \"short_description\",\n \"status_code\": 422,\n \"message\": \"The marketing attribute group does not exist.\"\n },\n {\n \"line\": 3,\n \"code\": \"release_date\",\n \"status_code\": 204\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "ab74c777-5939-4fa0-9d89-9ea9af5236cf", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/attributes - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/attributes - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/attributes - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "facaadfb-bec6-4fd9-a7df-c2f72f98feab", + "name": "Attribute option", + "description": "Manage options for simple-select and multi-select attributes (e.g. color options: red, blue, green).\n\nSee: https://api.akeneo.com/api-reference-index.html#attribute-options", + "item": [ + { + "id": "f908df5d-ff1a-4f8d-89ac-3d02dc0a502e", + "name": "Create a new attribute option", + "request": { + "name": "Create a new attribute option", + "description": "Create a new option for a simpleselect or multiselect attribute.\n\n**Tip**: Use `sort_order` to control display order in the PIM UI. Options with the same sort_order are sorted alphabetically.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes/{{attributeCode}}/options", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes", + "{{attributeCode}}", + "options" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"black\",\n \"attribute\": \"a_simple_select\",\n \"sort_order\": 2,\n \"labels\": {\n \"en_US\": \"Black\",\n \"fr_FR\": \"Noir\"\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/attributes/color/options/black" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "d3319e08-6318-42c6-a8b3-4638bc355b99", + "name": "Get an attribute option", + "request": { + "name": "Get an attribute option", + "description": "Retrieve a single attribute option by its code. Options belong to `pim_catalog_simpleselect` or `pim_catalog_multiselect` attributes.\n\nSet `{{attributeCode}}` to the parent attribute (e.g. `color`) and `{{attributeOptionCode}}` to the option (e.g. `red`).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes/{{attributeCode}}/options/{{attributeOptionCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes", + "{{attributeCode}}", + "options", + "{{attributeOptionCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Option details", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/attributes/color/options/red\"\n }\n },\n \"code\": \"red\",\n \"attribute\": \"color\",\n \"sort_order\": 1,\n \"labels\": {\n \"en_US\": \"Red\",\n \"fr_FR\": \"Rouge\",\n \"de_DE\": \"Rot\"\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "6265acf7-901f-4cdc-8873-f8ee8036ae3d", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/attributes/:attribute_code/options/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/attributes/:attribute_code/options/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Code of option\"},\"attribute\":{\"type\":\"string\",\"description\":\"Code of attribute related to the attribute option\",\"x-validation-rules\":\"It is the same attribute code as the one given as path parameter\"},\"sort_order\":{\"type\":\"integer\",\"description\":\"Order of attribute option\",\"x-validation-rules\":\"It is a positive integer\"},\"labels\":{\"type\":\"object\",\"description\":\"Attribute option labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute option label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/attributes/:attribute_code/options/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "3d1bc5ed-ec60-456f-a83e-94808e53187d", + "name": "Get list of attribute options", + "request": { + "name": "Get list of attribute options", + "description": "List all options for a given attribute. Only works for `simpleselect` and `multiselect` attributes.\n\nOptions are paginated and sorted by code.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes/{{attributeCode}}/options", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes", + "{{attributeCode}}", + "options" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Options list", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/attributes/color/options?page=1&limit=25\"\n }\n },\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"code\": \"black\",\n \"attribute\": \"color\",\n \"sort_order\": 1,\n \"labels\": {\n \"en_US\": \"Black\"\n }\n },\n {\n \"code\": \"blue\",\n \"attribute\": \"color\",\n \"sort_order\": 2,\n \"labels\": {\n \"en_US\": \"Blue\"\n }\n },\n {\n \"code\": \"red\",\n \"attribute\": \"color\",\n \"sort_order\": 3,\n \"labels\": {\n \"en_US\": \"Red\"\n }\n },\n {\n \"code\": \"white\",\n \"attribute\": \"color\",\n \"sort_order\": 4,\n \"labels\": {\n \"en_US\": \"White\"\n }\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "9912b774-5169-413a-9094-cbc85c60cd3d", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/attributes/:attribute_code/options - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/attributes/:attribute_code/options - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Attribute Options\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Code of option\"},\"attribute\":{\"type\":\"string\",\"description\":\"Code of attribute related to the attribute option\",\"x-validation-rules\":\"It is the same attribute code as the one given as path parameter\"},\"sort_order\":{\"type\":\"integer\",\"description\":\"Order of attribute option\",\"x-validation-rules\":\"It is a positive integer\"},\"labels\":{\"type\":\"object\",\"description\":\"Attribute option labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute option label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/attributes/:attribute_code/options - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "c8d734bb-4e66-480f-899b-a9a89db853d9", + "name": "Update/create an attribute option", + "request": { + "name": "Update/create an attribute option", + "description": "Update or create an attribute option.\n\n**Update behavior**: Merge-patch. Send only the fields to change. The `labels` object is merged (existing translations not sent are preserved).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes/{{attributeCode}}/options/{{attributeOptionCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes", + "{{attributeCode}}", + "options", + "{{attributeOptionCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"black\",\n \"attribute\": \"a_simple_select\",\n \"sort_order\": 2,\n \"labels\": {\n \"en_US\": \"Black\",\n \"fr_FR\": \"Noir\"\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "b4e3e040-6bbc-4e33-ab34-3107a589a58d", + "name": "Update/create several attribute options", + "request": { + "name": "Update/create several attribute options", + "description": "Batch update/create attribute options. One JSON per line (NDJSON).\n\n**Tip**: Great for adding translations to many options at once, or bulk-creating options for a new attribute.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attributes/{{attributeCode}}/options", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attributes", + "{{attributeCode}}", + "options" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\"code\":\"black\",\"attribute\":\"a_simple_select\",\"labels\":{\"en_US\":\"Black\",\"fr_FR\":\"Noir\"}}\n{\"code\":\"red\",\"label\":{\"en_US\": \"Red\",\"fr_FR\": \"Rouge\"}}\n{\"code\":\"yellow\",\"labels\":{\"en_US\": \"Yellow\",\"fr_FR\": \"Jaune\"}}\n", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"code\": \"black\",\n \"status_code\": 204\n },\n {\n \"line\": 2,\n \"code\": \"red\",\n \"status_code\": 422,\n \"message\": \"Property \\\"label\\\" does not exist. Did you mean \\\"labels\\\"?\"\n },\n {\n \"line\": 3,\n \"code\": \"yellow\",\n \"status_code\": 201\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "1c73980f-055c-451f-b124-44cf42ee8615", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/attributes/:attribute_code/options - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/attributes/:attribute_code/options - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/attributes/:attribute_code/options - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "6dbe54a1-2cc9-4b78-bc8d-d53447894d4f", + "name": "Attribute group", + "description": "Manage attribute groups — logical groupings of attributes for organization in the PIM UI (e.g. Marketing, Technical, Media).\n\nSee: https://api.akeneo.com/api-reference-index.html#attribute-groups", + "item": [ + { + "id": "70f832a2-97b9-403f-b2b9-679ad0d73e94", + "name": "Create a new attribute group", + "request": { + "name": "Create a new attribute group", + "description": "Create a new attribute group.\n\n**Tip**: Use `sort_order` to control the tab order in the product edit form. Lower numbers appear first.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attribute-groups", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attribute-groups" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"marketing\",\n \"sort_order\": 4,\n \"attributes\": [\n \"sku\",\n \"name\",\n \"description\",\n \"response_time\",\n \"release_date\",\n \"price\"\n ],\n \"labels\": {\n \"en_US\": \"Marketing\",\n \"fr_FR\": \"Marketing\"\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/attribute-groups/marketing" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "190e7b3d-2868-4ac2-879a-2be4d1d196ab", + "name": "Get an attribute group", + "request": { + "name": "Get an attribute group", + "description": "Retrieve a single attribute group. Groups organize attributes in the PIM UI (e.g. Marketing, Technical, Media).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attribute-groups/{{attributeGroupCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attribute-groups", + "{{attributeGroupCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Attribute group", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/attribute-groups/marketing\"\n }\n },\n \"code\": \"marketing\",\n \"sort_order\": 1,\n \"attributes\": [\n \"name\",\n \"description\",\n \"short_description\",\n \"price\",\n \"brand\"\n ],\n \"labels\": {\n \"en_US\": \"Marketing\",\n \"fr_FR\": \"Marketing\"\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "6ca76bb9-30b7-4065-8844-862a9cc987c7", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/attribute-groups/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/attribute-groups/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute group code\",\"x-immutable\":true},\"sort_order\":{\"type\":\"integer\",\"description\":\"Attribute group order among other attribute groups\",\"default\":0,\"x-validation-rules\":\"It is a positive integer\"},\"attributes\":{\"type\":\"array\",\"description\":\"Attribute codes that compose the attribute group\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is an existing attribute code, an attribute can only be in one attribute group\"},\"labels\":{\"type\":\"object\",\"description\":\"Attribute group labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute group label for the locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/attribute-groups/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "2368297d-c722-4f05-a874-48932c4bc288", + "name": "Get list of attribute groups", + "request": { + "name": "Get list of attribute groups", + "description": "List all attribute groups. Groups organize attributes into tabs in the product edit form.\n\nFilter by code or update date.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attribute-groups", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attribute-groups" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Filter attribute groups,\nfor more details see the [Filters](https://api.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"marketing\",\"technical\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the attribute groups by their update date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2020-07-04T10:00:00Z\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "242b25a9-b481-4042-88e2-fecf555a80c3", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/attribute-groups - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/attribute-groups - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Attribute groups\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute group code\",\"x-immutable\":true},\"sort_order\":{\"type\":\"integer\",\"description\":\"Attribute group order among other attribute groups\",\"default\":0,\"x-validation-rules\":\"It is a positive integer\"},\"attributes\":{\"type\":\"array\",\"description\":\"Attribute codes that compose the attribute group\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is an existing attribute code, an attribute can only be in one attribute group\"},\"labels\":{\"type\":\"object\",\"description\":\"Attribute group labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute group label for the locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/attribute-groups - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "f0081a2e-9073-46be-9c1d-ba69214fa0c8", + "name": "Update/create an attribute group", + "request": { + "name": "Update/create an attribute group", + "description": "Update or create an attribute group.\n\n**Note**: Adding an attribute to a group via this endpoint moves it from its current group.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attribute-groups/{{attributeGroupCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attribute-groups", + "{{attributeGroupCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"marketing\",\n \"sort_order\": 4,\n \"attributes\": [\n \"sku\",\n \"name\",\n \"description\",\n \"response_time\",\n \"release_date\",\n \"price\"\n ],\n \"labels\": {\n \"en_US\": \"Marketing\",\n \"fr_FR\": \"Marketing\"\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "633f3c50-ac13-4e01-9171-ed34c4a2633d", + "name": "Update/create several attribute groups", + "request": { + "name": "Update/create several attribute groups", + "description": "Batch update/create attribute groups. One JSON per line (NDJSON).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/attribute-groups", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "attribute-groups" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\"code\":\"technical\",\"labels\":{\"en_US\": \"Technical\", \"fr_FR\": \"Technique\"}}\n{\"code\":\"marketing\",\"type\":\"bar\"}\n{\"code\":\"design\",\"sort_order\":7}\n", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"code\": \"technical\",\n \"status_code\": 204\n },\n {\n \"line\": 2,\n \"code\": \"marketing\",\n \"status_code\": 422,\n \"message\": \"Property \\\"type\\\" does not exist.\"\n },\n {\n \"line\": 3,\n \"code\": \"design\",\n \"status_code\": 201\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "09efa154-1f3d-4d24-bedc-dccda0e94e46", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/attribute-groups - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/attribute-groups - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\",\"description\":\"Each line is a JSON object containing the status of the update or creation of an attribute group,\\nwith the `line` property indicating the line number in the request body\\n\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/attribute-groups - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "89ee39d8-7666-4777-85c6-69bc6ac484ac", + "name": "Association type", + "description": "Manage association types — define relationships between products (cross-sell, upsell, substitution, etc.).\n\nSee: https://api.akeneo.com/api-reference-index.html#association-types", + "item": [ + { + "id": "208c3868-c0a7-4ea8-8a9c-b9a53df0dc50", + "name": "Create a new association type", + "request": { + "name": "Create a new association type", + "description": "Create a new association type.\n\n**Options**:\n- `is_quantified: true` — allows specifying quantities (e.g. '4 screws per table')\n- `is_two_way: true` — when A is associated to B, B is automatically associated to A\n\nThese flags cannot be changed after creation.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/association-types", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "association-types" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"upsell\",\n \"labels\": {\n \"en_US\": \"Upsell\",\n \"fr_FR\": \"Vente incitative\"\n },\n \"is_quantified\": false,\n \"is_two_way\": false\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/association-types/upsell" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "1868b128-5502-46d5-aa95-07dc05e60992", + "name": "Get a list of association types", + "request": { + "name": "Get a list of association types", + "description": "List all association types. Includes both standard and quantified associations.\n\n- **Standard**: Links products together (cross-sell, upsell)\n- **Quantified**: Links with quantities (e.g. 4 screws per table)\n- **Two-way**: Automatically creates the reverse association", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/association-types", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "association-types" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Association types list", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/association-types?page=1&limit=25\"\n }\n },\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"code\": \"PACK\",\n \"labels\": {\n \"en_US\": \"Pack\"\n },\n \"is_quantified\": true,\n \"is_two_way\": false\n },\n {\n \"code\": \"SUBSTITUTION\",\n \"labels\": {\n \"en_US\": \"Substitution\"\n },\n \"is_quantified\": false,\n \"is_two_way\": true\n },\n {\n \"code\": \"UPSELL\",\n \"labels\": {\n \"en_US\": \"Upsell\"\n },\n \"is_quantified\": false,\n \"is_two_way\": false\n },\n {\n \"code\": \"X_SELL\",\n \"labels\": {\n \"en_US\": \"Cross-sell\"\n },\n \"is_quantified\": false,\n \"is_two_way\": false\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "741ce1e9-7d04-41a9-b371-4b29f83a5093", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/association-types - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/association-types - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Association types\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Association type code\"},\"labels\":{\"type\":\"object\",\"description\":\"Association type labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Association type label for the locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"is_quantified\":{\"type\":\"boolean\",\"description\":\"When true, the association is a quantified association\",\"default\":false},\"is_two_way\":{\"type\":\"boolean\",\"description\":\"When true, the association is a bidirectional association\",\"default\":false}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/association-types - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "e5d50b53-2e2b-47b3-9bb0-60df84256438", + "name": "Get an association type", + "request": { + "name": "Get an association type", + "description": "Retrieve a single association type. Association types define relationships between products (cross-sell, upsell, substitution, accessories, etc.).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/association-types/{{associationTypeCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "association-types", + "{{associationTypeCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Association type", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/association-types/X_SELL\"\n }\n },\n \"code\": \"X_SELL\",\n \"labels\": {\n \"en_US\": \"Cross-sell\",\n \"fr_FR\": \"Vente crois\\u00e9e\"\n },\n \"is_quantified\": false,\n \"is_two_way\": false\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "01784efb-6121-48e1-a1a6-dfbca857c127", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/association-types/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/association-types/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Association type code\"},\"labels\":{\"type\":\"object\",\"description\":\"Association type labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Association type label for the locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"is_quantified\":{\"type\":\"boolean\",\"description\":\"When true, the association is a quantified association\",\"default\":false},\"is_two_way\":{\"type\":\"boolean\",\"description\":\"When true, the association is a bidirectional association\",\"default\":false}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/association-types/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "f1faafc3-6662-4a0c-bcdf-19d97e49e8d9", + "name": "Update/create an association type", + "request": { + "name": "Update/create an association type", + "description": "Update or create an association type.\n\n**Immutable fields**: `is_quantified` and `is_two_way` cannot be changed after creation. Only `labels` can be updated.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/association-types/{{associationTypeCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "association-types", + "{{associationTypeCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"upsell\",\n \"labels\": {\n \"en_US\": \"Upsell\",\n \"fr_FR\": \"Vente incitative\"\n },\n \"is_quantified\": false,\n \"is_two_way\": false\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "c8428059-98a8-4498-af72-61ed4679bf37", + "name": "Update/create several association types", + "request": { + "name": "Update/create several association types", + "description": "Batch update/create association types. One JSON per line (NDJSON).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/association-types", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "association-types" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\"code\":\"new_sell\"}\n{\"code\":\"substitution\", \"type\":\"bar\"}\n{\"code\":\"x_cross_sell\", \"is_two_way\": true, \"is_quantified\": false}\n", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"code\": \"new_sell\",\n \"status_code\": 201\n },\n {\n \"line\": 2,\n \"code\": \"substitution\",\n \"status_code\": 422,\n \"message\": \"Property \\\"type\\\" does not exist.\"\n },\n {\n \"line\": 3,\n \"code\": \"x_cross_sell\",\n \"status_code\": 201\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "7a422f20-adcd-444f-8b0b-880e7070838f", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/association-types - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/association-types - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/association-types - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "cbf8bf72-9fc1-4275-9106-fbccc5d75f87", + "name": "Category", + "description": "Manage categories — the tree structure used to classify products. Categories can be enriched with additional attributes.\n\nSee: https://api.akeneo.com/api-reference-index.html#categories", + "item": [ + { + "id": "e9544bd3-1618-4d54-a6bc-e6ead4181b5d", + "name": "Create a category media file", + "request": { + "name": "Create a category media file", + "description": "Upload a media file (image) for an enriched category attribute.\n\nSend as `multipart/form-data` with:\n- `file` — the binary file\n- `product` — JSON object: `{\"code\": \"my_category\", \"attribute\": \"image_attr\", \"locale\": \"en_US\", \"channel\": \"ecommerce\"}`", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/category-media-files", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "category-media-files" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Equal to 'multipart/form-data' (with [boundary value](https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2)), no other value allowed.\n", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "formdata", + "formdata": [ + { + "description": { + "content": "(Required) The category to which the media file will be associated.\nIt is a JSON string that follows this format:\n'{\"code\":\"category code\", \"attribute_code\":\"attribute code\", \"channel\":\"channel code or null\", \"locale\":\"locale code or null\"}'.\n", + "type": "text/plain" + }, + "key": "category", + "value": "{\"code\":\"ecomm\", \"attribute_code\":\"image_1\", \"channel\":\"ecommerce\", \"locale\":\"en_US\"}", + "type": "text" + }, + { + "description": { + "content": "(Required) The media file to be uploaded.\nIt should be provided as a binary file.\nEnsure that the file format is supported by the system.\n", + "type": "text/plain" + }, + "key": "file", + "type": "file" + } + ] + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/category-media-files/0/f/5/image.jpg" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "84460529-840f-45d6-9417-0677d96b5616", + "name": "Create a new category", + "request": { + "name": "Create a new category", + "description": "Create a new category.\n\n- Set `parent: null` to create a root category (category tree)\n- Set `parent: \"code\"` to nest under an existing category\n- `values` supports enriched attributes (text, images, booleans) per channel/locale\n- `validations` controls product assignment rules", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/categories", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "categories" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"winter_collection\",\n \"parent\": null,\n \"labels\": {\n \"en_US\": \"Winter collection\",\n \"fr_FR\": \"Collection hiver\"\n },\n \"values\": [\n {\n \"data\": \"

Winter collection description

\",\n \"channel\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"attribute_code\": \"a_text_area_attribute\"\n },\n {\n \"data\": true,\n \"channel\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"attribute_code\": \"a_boolean_attribute\"\n }\n ],\n \"validations\": {\n \"max_categories_per_product\": 42,\n \"only_leaves\": false,\n \"is_mandatory\": true\n },\n \"channel_requirements\": [\n \"ecommerce\",\n \"mobile\"\n ]\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/categories/winter_collection" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "54c81529-0205-421a-b63e-64688d88fa1a", + "name": "Create or update a category", + "request": { + "name": "Create or update a category", + "description": "Update or create a category by code.\n\n**Warning**: Moving a category (changing `parent`) moves all its children too. This operation can be slow for large sub-trees.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/categories/{{categoryCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "categories", + "{{categoryCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"winter_collection\",\n \"parent\": null,\n \"labels\": {\n \"en_US\": \"Winter collection\",\n \"fr_FR\": \"Collection hiver\"\n },\n \"values\": [\n {\n \"data\": \"

Winter collection description

\",\n \"channel\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"attribute_code\": \"a_text_area_attribute\"\n },\n {\n \"data\": true,\n \"channel\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"attribute_code\": \"a_boolean_attribute\"\n }\n ],\n \"validations\": {\n \"max_categories_per_product\": 42,\n \"only_leaves\": false,\n \"is_mandatory\": true\n },\n \"channel_requirements\": [\n \"ecommerce\",\n \"mobile\"\n ]\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "fe6ebf02-93a5-4d1c-922b-79937e940bee", + "name": "Create or update several categories", + "request": { + "name": "Create or update several categories", + "description": "Batch create/update categories. One JSON per line (NDJSON).\n\n**Tip**: When creating a tree, send the parent category before its children to avoid errors.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/categories", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "categories" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\"code\":\"spring_collection\",\"parent\":null}\n{\"code\":\"woman\",\"parent\":\"spring_collection\"}\n{\"code\":\"man\",\"parent\":\"spring_collection\"}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"code\": \"spring_collection\",\n \"status_code\": 201\n },\n {\n \"line\": 2,\n \"code\": \"woman\",\n \"status_code\": 201\n },\n {\n \"line\": 3,\n \"code\": \"man\",\n \"status_code\": 201\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "09e2da33-c090-40e8-9ebc-988f0a75366f", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/categories - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/categories - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/categories - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "5ded3a51-ef19-408e-8604-b0b2d94835db", + "name": "Download a category media file", + "request": { + "name": "Download a category media file", + "description": "Download a media file associated with an enriched category.\n\nThe `{{categoryMediaFilePath}}` is the path returned when the file was uploaded or in the category values.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/category-media-files/{{categoryMediaFilePath}}/download", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "category-media-files", + "{{categoryMediaFilePath}}", + "download" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Binary file content", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "image/jpeg" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "dece8ed9-ece0-4ae6-ac9e-855a20bb577a", + "name": "Get a category", + "request": { + "name": "Get a category", + "description": "Retrieve a single category by code.\n\n**Options**:\n- `with_position=true` — includes the category's position within its parent\n- `with_enriched_attributes=true` — includes enriched category attribute values (images, descriptions, etc.)", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/categories/{{categoryCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "categories", + "{{categoryCode}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Return information about the category's position within its category tree.", + "type": "text/plain" + }, + "key": "with_position", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return the attribute values of the category.", + "type": "text/plain" + }, + "key": "with_enriched_attributes", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Category details", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/categories/summer_collection\"\n }\n },\n \"code\": \"summer_collection\",\n \"parent\": \"master\",\n \"updated\": \"2024-03-15T10:30:00+00:00\",\n \"labels\": {\n \"en_US\": \"Summer Collection\",\n \"fr_FR\": \"Collection \\u00e9t\\u00e9\"\n },\n \"position\": 3,\n \"values\": [\n {\n \"data\": \"

Discover our summer collection

\",\n \"channel\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"attribute_code\": \"description\"\n },\n {\n \"data\": true,\n \"channel\": \"ecommerce\",\n \"locale\": \"en_US\",\n \"attribute_code\": \"is_featured\"\n }\n ]\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "c2b97add-0525-452c-b5e0-2f29ac7a48f0", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/categories/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/categories/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Category code\",\"x-immutable\":true},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Category code of the parent's category\",\"x-validation-rules\":\"- It is either equal to `null` or to an existing category code.\\n- If equal to an existing category code, it cannot reference itself.\\n\"},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"position\":{\"type\":\"integer\",\"description\":\"Position of the category in its level, start from 1 (only available when query parameter `with_position` is set to `true`)\"},\"labels\":{\"type\":\"object\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Category label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"channel_requirements\":{\"type\":\"array\",\"description\":\"List of Channel codes on which the category is required for products completeness.\\nOnly category trees can be required, not child categories.\\n\",\"items\":{\"type\":\"string\"},\"default\":[]},\"values\":{\"type\":\"object\",\"description\":\"Attribute values\",\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\",\"description\":\"The attribute type\"},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the attribute value\"},\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the attribute value\"},\"attribute_code\":{\"type\":\"string\",\"description\":\"The attribute code with its uuid (attributeCode|attributeUuid)\"},\"data\":{\"description\":\"Attribute value\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"boolean\"},{\"type\":\"array\",\"items\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\",\"properties\":{\"product_uuid\":{\"type\":\"string\"},\"product_model_code\":{\"type\":\"string\"}}}]}},{\"type\":\"object\",\"properties\":{\"size\":{\"type\":\"integer\",\"description\":\"Size of the file in bytes\"},\"extension\":{\"type\":\"string\",\"description\":\"File extension\"},\"file_path\":{\"type\":\"string\",\"description\":\"Path to the file in the storage\"},\"mime_type\":{\"type\":\"string\",\"description\":\"MIME type of the file\"},\"original_filename\":{\"type\":\"string\",\"description\":\"Original filename before upload\"}}}]}}}},\"validations\":{\"type\":\"object\",\"description\":\"Category validations\",\"x-validation-rules\":\"Only applicable to root category\",\"default\":{},\"properties\":{\"max_categories_per_product\":{\"type\":\"integer\",\"description\":\"Maximum number of categories per product\"},\"only_leaves\":{\"type\":\"boolean\",\"description\":\"Categorization restricted to the lowest level\"},\"is_mandatory\":{\"type\":\"boolean\",\"description\":\"Category is mandatory for every product\"}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/categories/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "751c1d12-438d-4612-8feb-3e9f0328166b", + "name": "Get the list of categories", + "request": { + "name": "Get the list of categories", + "description": "List categories as a flat list, sorted by tree position (root/left).\n\nCommon filter patterns:\n- Find root categories: `is_root = true`\n- Get children of a category: `parent = \"categoryCode\"`\n- Find by codes: `code IN [\"code1\", \"code2\"]`\n- Recently updated: `updated > \"2024-01-01T00:00:00Z\"`", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/categories", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "categories" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "The search query parameter allows you to filter categories based on specific criteria.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"is_root\":[{\"operator\":\"=\",\"value\":true}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the categories by parent", + "type": "text/plain" + }, + "key": "search", + "value": "{\"parent\":[{\"operator\":\"=\",\"value\":\"categoryA\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the categories by their code", + "type": "text/plain" + }, + "key": "search", + "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"category_code1\",\"category_code2\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the categories by their update date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2021-05-17T10:00:00Z\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return the attribute values of the category.", + "type": "text/plain" + }, + "key": "with_enriched_attributes", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Return information about the category's position within its category tree.", + "type": "text/plain" + }, + "key": "with_position", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "047e7baf-9e8d-4d85-b438-eba90b2195e2", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/categories - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/categories - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Categories\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Category code\",\"x-immutable\":true},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Category code of the parent's category\",\"x-validation-rules\":\"- It is either equal to `null` or to an existing category code.\\n- If equal to an existing category code, it cannot reference itself.\\n\"},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"position\":{\"type\":\"integer\",\"description\":\"Position of the category in its level, start from 1 (only available when query parameter `with_position` is set to `true`)\"},\"labels\":{\"type\":\"object\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Category label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"channel_requirements\":{\"type\":\"array\",\"description\":\"List of Channel codes on which the category is required for products completeness.\\nOnly category trees can be required, not child categories.\\n\",\"items\":{\"type\":\"string\"},\"default\":[]},\"values\":{\"type\":\"object\",\"description\":\"Attribute values\",\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\",\"description\":\"The attribute type\"},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the attribute value\"},\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the attribute value\"},\"attribute_code\":{\"type\":\"string\",\"description\":\"The attribute code with its uuid (attributeCode|attributeUuid)\"},\"data\":{\"description\":\"Attribute value\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"boolean\"},{\"type\":\"array\",\"items\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"object\",\"properties\":{\"product_uuid\":{\"type\":\"string\"},\"product_model_code\":{\"type\":\"string\"}}}]}},{\"type\":\"object\",\"properties\":{\"size\":{\"type\":\"integer\",\"description\":\"Size of the file in bytes\"},\"extension\":{\"type\":\"string\",\"description\":\"File extension\"},\"file_path\":{\"type\":\"string\",\"description\":\"Path to the file in the storage\"},\"mime_type\":{\"type\":\"string\",\"description\":\"MIME type of the file\"},\"original_filename\":{\"type\":\"string\",\"description\":\"Original filename before upload\"}}}]}}}},\"validations\":{\"type\":\"object\",\"description\":\"Category validations\",\"x-validation-rules\":\"Only applicable to root category\",\"default\":{},\"properties\":{\"max_categories_per_product\":{\"type\":\"integer\",\"description\":\"Maximum number of categories per product\"},\"only_leaves\":{\"type\":\"boolean\",\"description\":\"Categorization restricted to the lowest level\"},\"is_mandatory\":{\"type\":\"boolean\",\"description\":\"Category is mandatory for every product\"}}}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/categories - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + } + ], + "event": [] + }, + { + "id": "16f1fb0e-37b8-4d32-a495-ac4b3e6dcc73", + "name": "Utilities", + "description": "Authentication, system info, rules, permissions, extensions, and data architect agent.\n\nSee: https://api.akeneo.com/api-reference-index.html#Utilities", + "item": [ + { + "id": "dc15aadd-5cc2-4d3a-b173-003574fcc50f", + "name": "Authentication", + "description": "Obtain access tokens using OAuth2. Supports password grant (connections) and app tokens.\n\nSee: https://api.akeneo.com/documentation/authentication.html", + "item": [ + { + "id": "22063117-d236-4cd1-b443-9edf52e1a48d", + "name": "Get an authentication token", + "request": { + "name": "Get an authentication token", + "description": "Obtain an OAuth2 access token using the password grant type.\n\n**Setup**: Provide your Connection's `clientId` and `secret` as collection variables. The pre-request script automatically handles Basic authentication.\n\n**Token lifetime**: Access tokens expire after 1 hour. Use the `refresh_token` to get a new access token without re-authenticating.\n\n**App tokens**: If you're using a Connected App, set the `app_access_token` environment variable instead — the pre-request script will use it directly.", + "url": { + "raw": "{{baseUrl}}/api/oauth/v1/token", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "oauth", + "v1", + "token" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) This header indicates the media type of the resource being sent to the server.\nIt is used to specify the format of the request body, allowing the server to correctly interpret the data being sent.\nEqual to 'application/json' or 'application/x-www-form-urlencoded', no other value allowed.\n", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"username\": \"{{username}}\",\n \"password\": \"{{password}}\",\n \"grant_type\": \"password\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "basic", + "basic": [ + { + "type": "any", + "value": "{{clientId}}", + "key": "username" + }, + { + "type": "any", + "value": "{{secret}}", + "key": "password" + } + ] + } + }, + "response": [ + { + "name": "Success — Token obtained", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"access_token\": \"NzFiYTM4ZTEwMjcwZTcyZWIzZTA0NmY3NjE3MTY2MGEwMGQ1ZmI2ZA\",\n \"expires_in\": 3600,\n \"token_type\": \"bearer\",\n \"scope\": null,\n \"refresh_token\": \"MDk2ZmIwODBkYmE3YjNjZWQ4ZTk2NTk2N2JmNjkyZDQ4NzA3YzhiZA\"\n}" + }, + { + "name": "Error — Invalid credentials", + "status": "Unprocessable Entity", + "code": 422, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"error\": \"invalid_grant\",\n \"error_description\": \"Invalid username and password combination\"\n}" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "d478466d-b999-4711-a5c9-c6bcf3725886", + "name": "Overview", + "description": "Discovery endpoint — lists all available API endpoints. No authentication required.", + "item": [ + { + "id": "a4275b8e-4159-44da-8932-e3e14dda966a", + "name": "Get list of all endpoints", + "request": { + "name": "Get list of all endpoints", + "description": "Discovery endpoint — lists all available API routes. No authentication required. Useful for health checks and integration setup.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Endpoint list", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"host\": \"https://my-pim.cloud.akeneo.com\",\n \"authentication\": {\n \"fos_oauth_server_token\": {\n \"route\": \"/api/oauth/v1/token\",\n \"methods\": [\n \"POST\"\n ]\n }\n },\n \"routes\": {\n \"pim_api_product_list\": {\n \"route\": \"/api/rest/v1/products\",\n \"methods\": [\n \"GET\"\n ]\n },\n \"pim_api_product_create\": {\n \"route\": \"/api/rest/v1/products\",\n \"methods\": [\n \"POST\"\n ]\n },\n \"pim_api_family_list\": {\n \"route\": \"/api/rest/v1/families\",\n \"methods\": [\n \"GET\"\n ]\n }\n }\n}" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "ff7560fb-a56f-4adc-b0bc-c1db777c6e0b", + "name": "System", + "description": "Retrieve PIM system information (version, edition).", + "item": [ + { + "id": "bec8e449-2aa9-4548-b9ff-37f41d5ba4a5", + "name": "Get system information", + "request": { + "name": "Get system information", + "description": "Retrieve the PIM version and edition. Useful for checking compatibility before running integrations.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/system-information", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "system-information" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "System info", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"version\": \"7.0\",\n \"edition\": \"Serenity\",\n \"environment\": \"prod\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "73028ce6-f907-4e5a-a4d2-a712790fdc98", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/system-information - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/system-information - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"version\":{\"type\":\"string\",\"description\":\"Version of the PIM\"},\"edition\":{\"type\":\"string\",\"description\":\"Edition of the PIM\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/system-information - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "94445ecd-7915-45c8-a871-2b541b9dc42b", + "name": "Rule definition", + "description": "Manage rule definitions — automate product data enrichment by setting conditions and actions (Enterprise Edition only).\n\nSee: https://api.akeneo.com/api-reference-index.html#rule-definitions", + "item": [ + { + "id": "5e0a8663-482e-46e7-a34e-6d1e6118fe4e", + "name": "Create or update a rule definition", + "request": { + "name": "Create or update a rule definition", + "description": "Create or replace a rule (PUT — full replacement).\n\nRule types: `product`, `product_model`, `record`\n\nAction types: `set`, `copy`, `add`, `remove`, `clear`, `calculate`, `concatenate`\n\nCondition fields: `family`, `categories`, `enabled`, `completeness`, `created`, `updated`, any attribute code.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/rule-definitions/{{ruleDefinitionCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "rule-definitions", + "{{ruleDefinitionCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PUT", + "body": { + "mode": "raw", + "raw": "{\n \"type\": \"product\",\n \"conditions\": [\n {\n \"field\": \"family\",\n \"operator\": \"IN\",\n \"value\": [\n \"shoes\"\n ]\n }\n ],\n \"actions\": [\n {\n \"type\": \"set\",\n \"field\": \"description\",\n \"value\": \"Default description\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n }\n ],\n \"labels\": {\n \"en_US\": \"My rule\"\n },\n \"priority\": 10,\n \"enabled\": false,\n \"execution_type\": \"triggered\",\n \"triggers\": [\n {\n \"field\": \"name\"\n }\n ]\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + }, + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/rule-definitions/set_description_for_shoes" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "48d2448f-b3c0-45dd-bc52-c504ed6b04b9", + "name": "Get a rule definition", + "request": { + "name": "Get a rule definition", + "description": "Retrieve a rule with its conditions, actions, and triggers.\n\nExecution types: `automatic` (every save), `triggered` (specific attribute changes), `manual` (explicit execution).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/rule-definitions/{{ruleDefinitionCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "rule-definitions", + "{{ruleDefinitionCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Rule", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"set_description_for_shoes\",\n \"type\": \"product\",\n \"priority\": 10,\n \"enabled\": true,\n \"execution_type\": \"triggered\",\n \"triggers\": [\n {\n \"field\": \"name\"\n }\n ],\n \"conditions\": [\n {\n \"field\": \"family\",\n \"operator\": \"IN\",\n \"value\": [\n \"shoes\"\n ]\n }\n ],\n \"actions\": [\n {\n \"type\": \"set\",\n \"field\": \"description\",\n \"value\": \"Default shoe description\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n }\n ],\n \"labels\": {\n \"en_US\": \"Set description for shoes\"\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "26bdcd1f-e6bc-444a-9c82-152ff0854aeb", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/rule-definitions/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/rule-definitions/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique rule definition code\"},\"type\":{\"type\":\"string\",\"description\":\"Rule type: product or record\",\"enum\":[\"product\",\"record\"]},\"execution_type\":{\"type\":\"string\",\"description\":\"Execution mode: triggered, scheduled, or workflow_based\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the rule is active\"},\"priority\":{\"type\":\"integer\",\"description\":\"Execution priority (higher runs first)\"},\"reference_entity_identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"Reference entity identifier. Required when type is `record`, null otherwise.\"},\"labels\":{\"type\":\"object\",\"description\":\"Rule labels indexed by locale code\",\"additionalProperties\":{\"type\":\"string\"}},\"conditions\":{\"type\":\"array\",\"description\":\"Array of condition objects defining when the rule applies\",\"items\":{\"type\":\"object\"}},\"actions\":{\"type\":\"array\",\"description\":\"Array of action objects defining what changes to apply\",\"items\":{\"type\":\"object\"}},\"triggers\":{\"type\":\"array\",\"description\":\"Array of trigger objects defining which attribute changes trigger the rule (only for triggered execution_type on product)\",\"items\":{\"type\":\"object\",\"properties\":{\"field\":{\"type\":\"string\",\"description\":\"Attribute code that triggers the rule\"},\"locale\":{\"type\":\"string\",\"description\":\"Optional locale for localizable attributes\"},\"scope\":{\"type\":\"string\",\"description\":\"Optional scope for scopable attributes\"}}}},\"action_types\":{\"type\":\"array\",\"description\":\"List of action types used in this rule\",\"items\":{\"type\":\"string\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/rule-definitions/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "1ab0e389-fc58-492f-bac0-6e3bfbf03cec", + "name": "Get list of rule definitions", + "request": { + "name": "Get list of rule definitions", + "description": "List rules that automate product enrichment (Enterprise Edition).\n\nExample: Set default description for all 'shoes' family products.\n\nFilter by code, status, type, or update date.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/rule-definitions", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "rule-definitions" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Filter by comma-separated rule codes", + "type": "text/plain" + }, + "key": "codes", + "value": "dolore" + }, + { + "disabled": true, + "description": { + "content": "Filter by rule type: product or record", + "type": "text/plain" + }, + "key": "type", + "value": "record" + }, + { + "disabled": true, + "description": { + "content": "Filter by execution type: triggered, scheduled, workflow_based", + "type": "text/plain" + }, + "key": "execution_type", + "value": "workflow_based" + }, + { + "disabled": true, + "description": { + "content": "Filter by enabled status", + "type": "text/plain" + }, + "key": "enabled", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Rules", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"code\": \"set_description_for_shoes\",\n \"type\": \"product\",\n \"priority\": 10,\n \"enabled\": true,\n \"conditions\": [\n {\n \"field\": \"family\",\n \"operator\": \"IN\",\n \"value\": [\n \"shoes\"\n ]\n }\n ],\n \"actions\": [\n {\n \"type\": \"set\",\n \"field\": \"description\",\n \"value\": \"Default shoe description\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n }\n ],\n \"labels\": {\n \"en_US\": \"Set description for shoes\"\n }\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "a84e8257-0395-4b3d-9f75-ca137e003226", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/rule-definitions - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/rule-definitions - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Rule definitions\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"description\":\"Summary of a rule definition (without conditions and actions)\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique rule definition code\"},\"type\":{\"type\":\"string\",\"description\":\"Rule type: product or record\",\"enum\":[\"product\",\"record\"]},\"execution_type\":{\"type\":\"string\",\"description\":\"Execution mode: triggered, scheduled, or workflow_based\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the rule is active\"},\"priority\":{\"type\":\"integer\",\"description\":\"Execution priority (higher runs first)\"},\"reference_entity_identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"Reference entity identifier. Required when type is `record`, null otherwise.\"},\"labels\":{\"type\":\"object\",\"description\":\"Rule labels indexed by locale code\",\"additionalProperties\":{\"type\":\"string\"}},\"triggers\":{\"type\":\"array\",\"description\":\"Array of trigger objects defining which attribute changes trigger the rule (only for triggered execution_type on product)\",\"items\":{\"type\":\"object\",\"properties\":{\"field\":{\"type\":\"string\"},\"locale\":{\"type\":\"string\"},\"scope\":{\"type\":\"string\"}}}},\"action_types\":{\"type\":\"array\",\"description\":\"List of action types used in this rule\",\"items\":{\"type\":\"string\"}}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/rule-definitions - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "19b33f38-78d8-4187-88f4-5f6a3c41ed4e", + "name": "Permissions", + "description": "Retrieve channel and locale permissions for a specific user (Enterprise Edition only).", + "item": [ + { + "id": "44cb17fc-75e5-4973-8a83-e15cfcb22bfe", + "name": "Get user's channels permissions", + "request": { + "name": "Get user's channels permissions", + "description": "Retrieve the channel permissions for a specific user by their UUID (Enterprise Edition).\n\nReturns which channels the user can view and edit based on their user group assignments.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/permissions/{{userUuid}}/channels", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "permissions", + "{{userUuid}}", + "channels" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Channel permissions", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"view\": [\n \"ecommerce\",\n \"mobile\",\n \"print\"\n ],\n \"edit\": [\n \"ecommerce\",\n \"mobile\"\n ]\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "4b5275a1-30ee-4cc7-bc11-b3ca5dc16641", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/permissions/:uuid/channels - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/permissions/:uuid/channels - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"userUuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"The UUID of the user\"},\"channels\":{\"type\":\"object\",\"description\":\"Channels permissions for the user, keyed by channel code\",\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"canView\":{\"type\":\"string\",\"enum\":[\"true\",\"false\"],\"description\":\"Whether the user can view the channel (value is \\\"true\\\" or \\\"false\\\")\"},\"canEdit\":{\"type\":\"string\",\"enum\":[\"true\",\"false\"],\"description\":\"Whether the user can edit the channel (value is \\\"true\\\" or \\\"false\\\")\"}},\"required\":[\"canView\",\"canEdit\"]}}},\"required\":[\"userUuid\",\"channels\"]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/permissions/:uuid/channels - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "d4290533-84d8-4fc3-948f-bc2ac108072a", + "name": "Get user's locales permissions", + "request": { + "name": "Get user's locales permissions", + "description": "Retrieve the locale permissions for a specific user by their UUID (Enterprise Edition).\n\nReturns which locales the user can view and edit.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/permissions/{{userUuid}}/locales", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "permissions", + "{{userUuid}}", + "locales" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Locale permissions", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"view\": [\n \"en_US\",\n \"fr_FR\",\n \"de_DE\"\n ],\n \"edit\": [\n \"en_US\",\n \"fr_FR\"\n ]\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "546a9bda-897a-4a1f-b299-3cc496b44f1c", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/permissions/:uuid/locales - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/permissions/:uuid/locales - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"userUuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"The UUID of the user\"},\"locales\":{\"type\":\"object\",\"description\":\"Locales permissions for the user, keyed by locale code\",\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"canView\":{\"type\":\"string\",\"enum\":[\"true\",\"false\"],\"description\":\"Whether the user can view the locale (value is \\\"true\\\" or \\\"false\\\")\"},\"canEdit\":{\"type\":\"string\",\"enum\":[\"true\",\"false\"],\"description\":\"Whether the user can edit the locale (value is \\\"true\\\" or \\\"false\\\")\"}},\"required\":[\"canView\",\"canEdit\"]}}},\"required\":[\"userUuid\",\"locales\"]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/permissions/:uuid/locales - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "ff917105-0f14-4998-877e-ae69ac22cc34", + "name": "Extensions", + "description": "Manage UI Extensions — custom buttons, tabs, and iframes embedded in the PIM interface.\n\nSee: https://api.akeneo.com/api-reference-index.html#ui-extensions", + "item": [ + { + "id": "7fe30708-d80a-46c2-9a8f-9007ff2d3377", + "name": "Create a new Extension", + "request": { + "name": "Create a new Extension", + "description": "Register a new UI Extension.\n\nTypes: `link`, `iframe`, `sdk_script`\nPositions: `pim.product.tab`, `pim.product.header`, `pim.category.tab`\n\nRequired: `name`, `type`, `position`, `configuration.url`, `configuration.default_label`", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/ui-extensions", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "ui-extensions" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"my_awesome_button_extension\",\n \"type\": \"iframe\",\n \"position\": \"pim.product.tab\",\n \"configuration\": {\n \"url\": \"https://www.example.com\",\n \"secret\": \"UOL2EHjh7P0nGNUV8RwDMBclyMwe4c5IA\",\n \"labels\": {\n \"en_US\": \"My awesome link extension\",\n \"fr_FR\": \"Ma super link extension\"\n },\n \"default_label\": \"My awesome link extension\"\n },\n \"version\": \"V1.02.3\",\n \"description\": \"A short human readable description.\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "{{baseUrl}}/api/rest/v1/resource-path" + } + ], + "body": "{\n \"uuid\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "ef28508d-971a-42f8-955b-c04979fb58bb", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/rest/v1/ui-extensions - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/rest/v1/ui-extensions - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"Name of the extension, shown within the Administration interface\"},\"description\":{\"type\":\"string\",\"description\":\"Short description, shown within the Administration interface\"},\"version\":{\"type\":\"string\",\"description\":\"Version of the extension, shown within the Administration\\ninterface\\n\"},\"position\":{\"type\":\"string\",\"description\":\"[Position](https://api.akeneo.com/extensions/positions.html) of the Extension\"},\"type\":{\"type\":\"string\",\"description\":\"[Type](https://api.akeneo.com/extensions/types.html) of the Extension\"},\"configuration\":{\"type\":\"object\",\"description\":\"Configuration options that are specific to the Extension [type](https://api.akeneo.com/extensions/types.html)\",\"properties\":{\"default_label\":{\"type\":\"string\",\"description\":\"Default label, used if there is no translation for the PIM user locale\"},\"labels\":{\"type\":\"object\",\"description\":\"Label translations\"},\"secret\":{\"type\":\"string\",\"minLength\":32,\"description\":\"Shows ***REDACTED*** if a secret is registered for the extension\"},\"url\":{\"type\":\"string\",\"description\":\"Destination URL of the extension\"},\"file\":{\"type\":\"string\",\"format\":\"binary\",\"description\":\"Built JavaScript file for sdk_script type extensions\"},\"custom_variables\":{\"type\":\"object\",\"description\":\"Custom variables that can be used within the extension\",\"additionalProperties\":true}}},\"status\":{\"type\":\"string\",\"description\":\"Status of the Extension (active or inactive)\"},\"credentials\":{\"type\":\"array\",\"description\":\"Credentials for the Extension\",\"items\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Custom Header\"]},\"value\":{\"type\":\"object\",\"description\":\"Custom header credentials\",\"required\":[\"header_key\",\"header_value\"],\"properties\":{\"header_key\":{\"type\":\"string\",\"description\":\"Key of the custom header to be used for authentication in API requests\"},\"header_value\":{\"type\":\"string\",\"description\":\"Value of the custom header to be used for authentication in API requests\"}}}}},{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Bearer Token\"]},\"value\":{\"type\":\"string\",\"description\":\"The value of the bearer token to be used for authentication in API requests.\\nThis token should be kept secret and not shared publicly.\\n\"}}},{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Basic Auth\"]},\"value\":{\"type\":\"object\",\"description\":\"Basic authentication credentials\",\"required\":[\"username\",\"password\"],\"properties\":{\"username\":{\"type\":\"string\",\"description\":\"Username for basic authentication\"},\"password\":{\"type\":\"string\",\"description\":\"Password for basic authentication\"}}}}}]}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/rest/v1/ui-extensions - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "05412c8f-1804-4b5b-83f3-99bd2877e8b9", + "name": "Delete an Extension", + "request": { + "name": "Delete an Extension", + "description": "Delete a UI extension. Immediately removes it from the PIM.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/ui-extensions/{{extensionUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "ui-extensions", + "{{extensionUuid}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "DELETE", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Deleted", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "d0f17656-540f-4f40-9562-bd5e50f65aa7", + "type": "text/javascript", + "exec": [ + "// Validate if response has empty Body \npm.test(\"[DELETE]::/api/rest/v1/ui-extensions/:uuid - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "5e9a4d4d-294a-4884-beb5-3250e9528f1f", + "name": "List Extensions", + "request": { + "name": "List Extensions", + "description": "List all UI Extensions for your token.\n\nTypes: `link` (opens URL), `iframe` (embedded), `sdk_script` (custom JS).\nPositions: `pim.product.tab`, `pim.product.header`, `pim.category.tab`, etc.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/ui-extensions", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "ui-extensions" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Extensions", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"uuid\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"name\": \"my_product_tab\",\n \"type\": \"iframe\",\n \"position\": \"pim.product.tab\",\n \"configuration\": {\n \"url\": \"https://app.example.com/tab\",\n \"default_label\": \"My App\"\n },\n \"version\": \"1.0.0\"\n },\n {\n \"uuid\": \"b2c3d4e5-f6a7-8901-bcde-f12345678901\",\n \"name\": \"quick_link\",\n \"type\": \"link\",\n \"position\": \"pim.product.header\",\n \"configuration\": {\n \"url\": \"https://app.example.com/view\",\n \"default_label\": \"View in App\"\n },\n \"version\": \"1.0.0\"\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "e3affda9-a113-4b76-9bf6-414426425929", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/ui-extensions - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/ui-extensions - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Extensions\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"Name of the extension, shown within the Administration interface\"},\"description\":{\"type\":\"string\",\"description\":\"Short description, shown within the Administration interface\"},\"version\":{\"type\":\"string\",\"description\":\"Version of the extension, shown within the Administration\\ninterface\\n\"},\"position\":{\"type\":\"string\",\"description\":\"[Position](https://api.akeneo.com/extensions/positions.html) of the Extension\"},\"type\":{\"type\":\"string\",\"description\":\"[Type](https://api.akeneo.com/extensions/types.html) of the Extension\"},\"configuration\":{\"type\":\"object\",\"description\":\"Configuration options that are specific to the Extension [type](https://api.akeneo.com/extensions/types.html)\",\"properties\":{\"default_label\":{\"type\":\"string\",\"description\":\"Default label, used if there is no translation for the PIM user locale\"},\"labels\":{\"type\":\"object\",\"description\":\"Label translations\"},\"secret\":{\"type\":\"string\",\"minLength\":32,\"description\":\"Shows ***REDACTED*** if a secret is registered for the extension\"},\"url\":{\"type\":\"string\",\"description\":\"Destination URL of the extension\"},\"file\":{\"type\":\"string\",\"format\":\"binary\",\"description\":\"Built JavaScript file for sdk_script type extensions\"},\"custom_variables\":{\"type\":\"object\",\"description\":\"Custom variables that can be used within the extension\",\"additionalProperties\":true}}},\"status\":{\"type\":\"string\",\"description\":\"Status of the Extension (active or inactive)\"},\"credentials\":{\"type\":\"array\",\"description\":\"Credentials for the Extension\",\"items\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Custom Header\"]},\"value\":{\"type\":\"object\",\"description\":\"Custom header credentials\",\"required\":[\"header_key\",\"header_value\"],\"properties\":{\"header_key\":{\"type\":\"string\",\"description\":\"Key of the custom header to be used for authentication in API requests\"},\"header_value\":{\"type\":\"string\",\"description\":\"Value of the custom header to be used for authentication in API requests\"}}}}},{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Bearer Token\"]},\"value\":{\"type\":\"string\",\"description\":\"The value of the bearer token to be used for authentication in API requests.\\nThis token should be kept secret and not shared publicly.\\n\"}}},{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Basic Auth\"]},\"value\":{\"type\":\"object\",\"description\":\"Basic authentication credentials\",\"required\":[\"username\",\"password\"],\"properties\":{\"username\":{\"type\":\"string\",\"description\":\"Username for basic authentication\"},\"password\":{\"type\":\"string\",\"description\":\"Password for basic authentication\"}}}}}]}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/ui-extensions - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "6778a6bb-f2cc-4c48-9232-879542df7d4b", + "name": "Update a UI extension with file upload", + "request": { + "name": "Update a UI extension with file upload", + "description": "Update an extension with a file upload (for `sdk_script` type). Send as `multipart/form-data`.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/ui-extensions/{{extensionUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "ui-extensions", + "{{extensionUuid}}" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Equal to 'multipart/form-data' (with [boundary value](https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2)), no other value allowed.\n", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "formdata", + "formdata": [ + { + "description": { + "content": "Unique extension identifier", + "type": "text/plain" + }, + "key": "name", + "value": "my_custom_sdk_extension", + "type": "text" + }, + { + "description": { + "content": "Type of the extension", + "type": "text/plain" + }, + "key": "type", + "value": "sdk_script", + "type": "text" + }, + { + "description": { + "content": "UI location where the extension will be displayed", + "type": "text/plain" + }, + "key": "position", + "value": "pim.product.panel", + "type": "text" + }, + { + "description": { + "content": "Updated JavaScript file for sdk_script type extensions", + "type": "text/plain" + }, + "key": "file", + "type": "file" + }, + { + "description": { + "content": "Display label for the extension", + "type": "text/plain" + }, + "key": "configuration[default_label]", + "value": "My Custom Extension Updated", + "type": "text" + }, + { + "description": { + "content": "Label translation for English (US)", + "type": "text/plain" + }, + "key": "configuration[labels][en_US]", + "value": "My Custom Extension Updated", + "type": "text" + }, + { + "description": { + "content": "Label translation for French (France)", + "type": "text/plain" + }, + "key": "configuration[labels][fr_FR]", + "value": "Mon Extension Personnalisée Mise à Jour", + "type": "text" + }, + { + "description": { + "content": "JSON string of custom variables", + "type": "text/plain" + }, + "key": "configuration[custom_variables]", + "value": "{\"apiEndpoint\": \"https://api.example.com/v2\"}", + "type": "text" + }, + { + "description": { + "content": "Code for the first credential", + "type": "text/plain" + }, + "key": "credentials[0][code]", + "value": "api_auth", + "type": "text" + }, + { + "description": { + "content": "Type of the first credential (Bearer Token, Basic Auth, Custom Header)", + "type": "text/plain" + }, + "key": "credentials[0][type]", + "value": "Bearer Token", + "type": "text" + }, + { + "description": { + "content": "Value for the first credential", + "type": "text/plain" + }, + "key": "credentials[0][value]", + "value": "my_updated_token_value", + "type": "text" + }, + { + "description": { + "content": "Version of the extension", + "type": "text/plain" + }, + "key": "version", + "value": "1.1.0", + "type": "text" + }, + { + "description": { + "content": "Short description of the extension", + "type": "text/plain" + }, + "key": "description", + "value": "A custom SDK-based extension with file updated", + "type": "text" + } + ] + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "cd922e8f-4489-417a-a4ba-2115097e22b9", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/rest/v1/ui-extensions/:uuid - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/rest/v1/ui-extensions/:uuid - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"Name of the extension, shown within the Administration interface\"},\"description\":{\"type\":\"string\",\"description\":\"Short description, shown within the Administration interface\"},\"version\":{\"type\":\"string\",\"description\":\"Version of the extension, shown within the Administration\\ninterface\\n\"},\"position\":{\"type\":\"string\",\"description\":\"[Position](https://api.akeneo.com/extensions/positions.html) of the Extension\"},\"type\":{\"type\":\"string\",\"description\":\"[Type](https://api.akeneo.com/extensions/types.html) of the Extension\"},\"configuration\":{\"type\":\"object\",\"description\":\"Configuration options that are specific to the Extension [type](https://api.akeneo.com/extensions/types.html)\",\"properties\":{\"default_label\":{\"type\":\"string\",\"description\":\"Default label, used if there is no translation for the PIM user locale\"},\"labels\":{\"type\":\"object\",\"description\":\"Label translations\"},\"secret\":{\"type\":\"string\",\"minLength\":32,\"description\":\"Shows ***REDACTED*** if a secret is registered for the extension\"},\"url\":{\"type\":\"string\",\"description\":\"Destination URL of the extension\"},\"file\":{\"type\":\"string\",\"format\":\"binary\",\"description\":\"Built JavaScript file for sdk_script type extensions\"},\"custom_variables\":{\"type\":\"object\",\"description\":\"Custom variables that can be used within the extension\",\"additionalProperties\":true}}},\"status\":{\"type\":\"string\",\"description\":\"Status of the Extension (active or inactive)\"},\"credentials\":{\"type\":\"array\",\"description\":\"Credentials for the Extension\",\"items\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Custom Header\"]},\"value\":{\"type\":\"object\",\"description\":\"Custom header credentials\",\"required\":[\"header_key\",\"header_value\"],\"properties\":{\"header_key\":{\"type\":\"string\",\"description\":\"Key of the custom header to be used for authentication in API requests\"},\"header_value\":{\"type\":\"string\",\"description\":\"Value of the custom header to be used for authentication in API requests\"}}}}},{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Bearer Token\"]},\"value\":{\"type\":\"string\",\"description\":\"The value of the bearer token to be used for authentication in API requests.\\nThis token should be kept secret and not shared publicly.\\n\"}}},{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Basic Auth\"]},\"value\":{\"type\":\"object\",\"description\":\"Basic authentication credentials\",\"required\":[\"username\",\"password\"],\"properties\":{\"username\":{\"type\":\"string\",\"description\":\"Username for basic authentication\"},\"password\":{\"type\":\"string\",\"description\":\"Password for basic authentication\"}}}}}]}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/rest/v1/ui-extensions/:uuid - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "1e302673-f3d8-4a76-bd32-88821752cb8f", + "name": "Update an Extension", + "request": { + "name": "Update an Extension", + "description": "Update an extension. Send only fields to change.\n\nTip: Bump `version` to bust caches in iframe/sdk_script extensions.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/ui-extensions/{{extensionUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "ui-extensions", + "{{extensionUuid}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"type\": \"link\",\n \"position\": \"pim.product.header\",\n \"version\": \"V1.02.4\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "055dc5cd-71e0-4660-a5fe-15ba3ac5c1b8", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/ui-extensions/:uuid - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/ui-extensions/:uuid - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"Name of the extension, shown within the Administration interface\"},\"description\":{\"type\":\"string\",\"description\":\"Short description, shown within the Administration interface\"},\"version\":{\"type\":\"string\",\"description\":\"Version of the extension, shown within the Administration\\ninterface\\n\"},\"position\":{\"type\":\"string\",\"description\":\"[Position](https://api.akeneo.com/extensions/positions.html) of the Extension\"},\"type\":{\"type\":\"string\",\"description\":\"[Type](https://api.akeneo.com/extensions/types.html) of the Extension\"},\"configuration\":{\"type\":\"object\",\"description\":\"Configuration options that are specific to the Extension [type](https://api.akeneo.com/extensions/types.html)\",\"properties\":{\"default_label\":{\"type\":\"string\",\"description\":\"Default label, used if there is no translation for the PIM user locale\"},\"labels\":{\"type\":\"object\",\"description\":\"Label translations\"},\"secret\":{\"type\":\"string\",\"minLength\":32,\"description\":\"Shows ***REDACTED*** if a secret is registered for the extension\"},\"url\":{\"type\":\"string\",\"description\":\"Destination URL of the extension\"},\"file\":{\"type\":\"string\",\"format\":\"binary\",\"description\":\"Built JavaScript file for sdk_script type extensions\"},\"custom_variables\":{\"type\":\"object\",\"description\":\"Custom variables that can be used within the extension\",\"additionalProperties\":true}}},\"status\":{\"type\":\"string\",\"description\":\"Status of the Extension (active or inactive)\"},\"credentials\":{\"type\":\"array\",\"description\":\"Credentials for the Extension\",\"items\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Custom Header\"]},\"value\":{\"type\":\"object\",\"description\":\"Custom header credentials\",\"required\":[\"header_key\",\"header_value\"],\"properties\":{\"header_key\":{\"type\":\"string\",\"description\":\"Key of the custom header to be used for authentication in API requests\"},\"header_value\":{\"type\":\"string\",\"description\":\"Value of the custom header to be used for authentication in API requests\"}}}}},{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Bearer Token\"]},\"value\":{\"type\":\"string\",\"description\":\"The value of the bearer token to be used for authentication in API requests.\\nThis token should be kept secret and not shared publicly.\\n\"}}},{\"type\":\"object\",\"required\":[\"type\",\"value\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Unique identifier for this credential\"},\"type\":{\"type\":\"string\",\"description\":\"Type of credentials\",\"enum\":[\"Basic Auth\"]},\"value\":{\"type\":\"object\",\"description\":\"Basic authentication credentials\",\"required\":[\"username\",\"password\"],\"properties\":{\"username\":{\"type\":\"string\",\"description\":\"Username for basic authentication\"},\"password\":{\"type\":\"string\",\"description\":\"Password for basic authentication\"}}}}}]}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/ui-extensions/:uuid - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "d0ad3754-4e89-4f43-8a22-9f2edba9ef81", + "name": "Data Architect Agent", + "description": "AI-powered data model suggestions — create, review, approve, or decline attribute suggestions.\n\nSee: https://api.akeneo.com/api-reference-index.html#data-architect-agent", + "item": [ + { + "id": "a313c13c-c5c6-4700-aad1-30194be783ce", + "name": "Approve a modelization suggestion", + "request": { + "name": "Approve a modelization suggestion", + "description": "Approve a suggestion and create the attribute in the PIM.\n\nOptionally override the AI's recommendations (code, type, labels, group, scopable, localizable).\n\nSuggestion must be in `DRAFT` status.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/data-model-designer/modelization-suggestion/{{modelizationSuggestionUuid}}/approve", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "data-model-designer", + "modelization-suggestion", + "{{modelizationSuggestionUuid}}", + "approve" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"attribute_code\": \"product_sku\",\n \"attribute_type\": \"pim_catalog_text\",\n \"attribute_labels\": {\n \"en_US\": \"Product SKU\",\n \"fr_FR\": \"SKU Produit\"\n },\n \"attribute_group\": \"marketing\",\n \"scopable\": true,\n \"localizable\": true\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Approved", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"status\": \"APPROVED\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "5b18ea06-054b-4f5f-80da-90a0f325013d", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/rest/v1/data-model-designer/modelization-suggestion/:uuid/approve - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/rest/v1/data-model-designer/modelization-suggestion/:uuid/approve - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"description\":\"Result of approving a modelization suggestion\",\"properties\":{\"created\":{\"type\":\"array\",\"description\":\"List of attribute codes that were successfully created\",\"items\":{\"type\":\"string\"}},\"skipped\":{\"type\":\"array\",\"description\":\"List of attribute codes that were skipped because they already exist\",\"items\":{\"type\":\"string\"}},\"errors\":{\"type\":\"object\",\"description\":\"Map of attribute codes to error messages for attributes that failed to create\",\"additionalProperties\":{\"type\":\"string\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/rest/v1/data-model-designer/modelization-suggestion/:uuid/approve - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "be89d1a2-4543-42e7-bf0c-45a102a66538", + "name": "Create a modelization suggestion", + "request": { + "name": "Create a modelization suggestion", + "description": "Ask the AI Data Architect to suggest how to model a new attribute.\n\nProvide a description and optional code/type hints. The agent analyzes your data model and suggests the best configuration.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/data-model-designer/modelization-suggestion/attribute", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "data-model-designer", + "modelization-suggestion", + "attribute" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"source\": \"manual\",\n \"description\": \"Product SKU identifier for tracking inventory\",\n \"code\": \"sku\",\n \"type\": \"text\",\n \"additional_comments\": \"This attribute is needed for the new product line\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "{{baseUrl}}/api/rest/v1/resource-path" + } + ], + "body": "{\n \"uuid\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"status\": \"PENDING\",\n \"source\": \"manual\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "222cdb85-d165-4a9c-9707-005e456ba895", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/rest/v1/data-model-designer/modelization-suggestion/attribute - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/rest/v1/data-model-designer/modelization-suggestion/attribute - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"The unique identifier of the created suggestion\"},\"source\":{\"type\":\"string\",\"description\":\"The source of the suggestion\",\"enum\":[\"manual\",\"api\",\"import\"]},\"author\":{\"type\":\"string\",\"description\":\"The author of the suggestion (authenticated user)\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"The creation timestamp\"},\"suggested_attributes\":{\"type\":\"array\",\"description\":\"List of suggested attributes\",\"items\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":[\"string\",\"null\"],\"description\":\"The attribute code\"},\"type\":{\"type\":[\"string\",\"null\"],\"description\":\"The attribute type\"},\"description\":{\"type\":[\"string\",\"null\"],\"description\":\"The attribute description\"}}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/rest/v1/data-model-designer/modelization-suggestion/attribute - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "6f5133c5-fd3c-4c85-965b-e351db4bc554", + "name": "Decline a modelization suggestion", + "request": { + "name": "Decline a modelization suggestion", + "description": "Decline a suggestion (must be in `DRAFT` status).\n\nProvide a `reject_reason` to improve future suggestions.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/data-model-designer/modelization-suggestion/{{modelizationSuggestionUuid}}/decline", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "data-model-designer", + "modelization-suggestion", + "{{modelizationSuggestionUuid}}", + "decline" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"reject_reason\": \"The suggested attributes do not match the catalog requirements.\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Declined", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"status\": \"DECLINED\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "1711644d-3c7f-4fd3-8317-51261f53b2da", + "type": "text/javascript", + "exec": [ + "// Validate if response has empty Body \npm.test(\"[POST]::/api/rest/v1/data-model-designer/modelization-suggestion/:uuid/decline - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "64bf995f-8f51-442a-ad5e-d3d2cce8afff", + "name": "Get a modelization suggestion", + "request": { + "name": "Get a modelization suggestion", + "description": "Check suggestion status. When `DRAFT`, the AI analysis is complete and you can review/approve/decline.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/data-model-designer/modelization-suggestion/{{modelizationSuggestionUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "data-model-designer", + "modelization-suggestion", + "{{modelizationSuggestionUuid}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Suggestion", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"uuid\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"status\": \"DRAFT\",\n \"source\": \"manual\",\n \"description\": \"Product SKU for inventory tracking\",\n \"code\": \"sku\",\n \"type\": \"text\",\n \"coreai_attributes\": {\n \"attribute_code\": \"product_sku\",\n \"attribute_type\": \"pim_catalog_text\",\n \"attribute_labels\": {\n \"en_US\": \"Product SKU\"\n },\n \"attribute_group\": \"technical\",\n \"scopable\": false,\n \"localizable\": false\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "5e93344b-de3a-4aa4-a55a-bf0ea4793108", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/data-model-designer/modelization-suggestion/:uuid - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/data-model-designer/modelization-suggestion/:uuid - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"The unique identifier of the created suggestion\"},\"source\":{\"type\":\"string\",\"description\":\"The source of the suggestion\",\"enum\":[\"manual\",\"api\",\"import\"]},\"author\":{\"type\":\"string\",\"description\":\"The author of the suggestion (authenticated user)\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"The creation timestamp\"},\"suggested_attributes\":{\"type\":\"array\",\"description\":\"List of suggested attributes\",\"items\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":[\"string\",\"null\"],\"description\":\"The attribute code\"},\"type\":{\"type\":[\"string\",\"null\"],\"description\":\"The attribute type\"},\"description\":{\"type\":[\"string\",\"null\"],\"description\":\"The attribute description\"}}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/data-model-designer/modelization-suggestion/:uuid - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "caa05f41-d4c8-423f-a14c-683aad939f1f", + "name": "Get list of modelization suggestions", + "request": { + "name": "Get list of modelization suggestions", + "description": "List modelization suggestions with optional filters.\n\nUsers without manage permissions only see their own suggestions. Filter by status, source, or date.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/data-model-designer/modelization-suggestions", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "data-model-designer", + "modelization-suggestions" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "Filter suggestions by attribute codes present in their suggested attributes.", + "type": "text/plain" + }, + "key": "codes", + "value": "color,size,weight" + }, + { + "disabled": true, + "description": { + "content": "Filter suggestions by status.", + "type": "text/plain" + }, + "key": "status", + "value": "draft" + }, + { + "disabled": true, + "description": { + "content": "Filter suggestions by their source identifier.", + "type": "text/plain" + }, + "key": "source", + "value": "my-system" + }, + { + "disabled": true, + "description": { + "content": "Filter suggestions by the author's username.", + "type": "text/plain" + }, + "key": "author", + "value": "john.doe" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "705ab8fb-f377-499b-b56c-ce9b2db2bb2f", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/data-model-designer/modelization-suggestions - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/data-model-designer/modelization-suggestions - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Modelization suggestions\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"The unique identifier of the created suggestion\"},\"source\":{\"type\":\"string\",\"description\":\"The source of the suggestion\",\"enum\":[\"manual\",\"api\",\"import\"]},\"author\":{\"type\":\"string\",\"description\":\"The author of the suggestion (authenticated user)\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"The creation timestamp\"},\"suggested_attributes\":{\"type\":\"array\",\"description\":\"List of suggested attributes\",\"items\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":[\"string\",\"null\"],\"description\":\"The attribute code\"},\"type\":{\"type\":[\"string\",\"null\"],\"description\":\"The attribute type\"},\"description\":{\"type\":[\"string\",\"null\"],\"description\":\"The attribute description\"}}}}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/data-model-designer/modelization-suggestions - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + } + ], + "event": [] + }, + { + "id": "1494cafe-7677-4b3d-971f-0e6fd05b5129", + "name": "Target market settings", + "description": "Manage channels, locales, currencies, and measurement families.\n\nSee: https://api.akeneo.com/api-reference-index.html#Targetmarketsettings", + "item": [ + { + "id": "3a701e78-f534-4e38-9a28-ba3fa24c8340", + "name": "Channel", + "description": "Manage channels (scopes) — represent distribution channels like ecommerce, mobile, print. Each channel has its own locales, currencies, and completeness requirements.\n\nSee: https://api.akeneo.com/api-reference-index.html#channels", + "item": [ + { + "id": "92dee692-1424-451d-a855-f167902cfdfe", + "name": "Create a new channel", + "request": { + "name": "Create a new channel", + "description": "Create a new channel.\n\n**Required fields**: `code`, `category_tree`, `currencies` (at least one), `locales` (at least one).\n\n**Tip**: `conversion_units` lets you auto-convert metrics — e.g. display weight in KILOGRAM on ecommerce but POUND on a US channel.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/channels", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "channels" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"ecommerce\",\n \"currencies\": [\n \"USD\",\n \"EUR\"\n ],\n \"locales\": [\n \"de_DE\",\n \"en_US\",\n \"fr_FR\"\n ],\n \"category_tree\": \"master\",\n \"conversion_units\": {\n \"weight\": \"KILOGRAM\"\n },\n \"labels\": {\n \"en_US\": \"Ecommerce\",\n \"de_DE\": \"Ecommerce\",\n \"fr_FR\": \"Ecommerce\"\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/channels/ecommerce" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "6bcb81ff-eae8-4ca3-a66e-1d84713eac19", + "name": "Get a channel", + "request": { + "name": "Get a channel", + "description": "Retrieve a single channel (scope) by code. Channels represent distribution contexts like ecommerce, mobile, or print.\n\nReturns the channel's locales, currencies, category tree, and conversion units.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/channels/{{channelCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "channels", + "{{channelCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Channel details", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/channels/ecommerce\"\n }\n },\n \"code\": \"ecommerce\",\n \"currencies\": [\n \"EUR\",\n \"USD\",\n \"GBP\"\n ],\n \"locales\": [\n \"en_US\",\n \"en_GB\",\n \"fr_FR\",\n \"de_DE\"\n ],\n \"category_tree\": \"master\",\n \"conversion_units\": {\n \"weight\": \"KILOGRAM\",\n \"length\": \"CENTIMETER\"\n },\n \"labels\": {\n \"en_US\": \"Ecommerce\",\n \"fr_FR\": \"E-commerce\"\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "524019e3-4b2e-44ca-bfe8-c26f9a42013d", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/channels/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/channels/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Channel code\",\"x-immutable\":true},\"locales\":{\"type\":\"array\",\"description\":\"Codes of activated locales for the channel\",\"items\":{\"type\":\"string\"},\"x-validation-rules\":\"- Each string of the array is an existing locale code.\\n- At least one locale in the array.\\n\"},\"currencies\":{\"type\":\"array\",\"description\":\"Codes of activated currencies for the channel\",\"items\":{\"type\":\"string\"},\"x-validation-rules\":\"- Each string of the array is an existing currency code.\\n- At least one currency in the array.\\n\"},\"category_tree\":{\"type\":\"string\",\"description\":\"Code of the category tree linked to the channel\",\"x-validation-rules\":\"It is the code of an existing category code that is a tree (a category without parent)\"},\"conversion_units\":{\"type\":\"object\",\"description\":\"Units to which the given metric attributes should be converted when exporting products\",\"properties\":{\"attributeCode\":{\"type\":\"string\",\"description\":\"Conversion unit code used to convert the values of the attribute `attributeCode` when exporting via the channel\"}},\"x-validation-rules\":\"- The `attributeCode` is the code of an existing attribute whose type is `pim_catalog_metric`.\\n- The strings are existing unit codes.\\n\"},\"labels\":{\"type\":\"object\",\"description\":\"Channel labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Channel label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"}},\"example\":{\"code\":\"ecommerce\",\"currencies\":[\"USD\",\"EUR\"],\"locales\":[\"de_DE\",\"en_US\",\"fr_FR\"],\"category_tree\":\"master\",\"conversion_units\":{\"weight\":\"KILOGRAM\"},\"labels\":{\"en_US\":\"Ecommerce\",\"de_DE\":\"Ecommerce\",\"fr_FR\":\"Ecommerce\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/channels/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "f23a12ba-4a1f-435b-a980-c322e7eb721a", + "name": "Get a list of channels", + "request": { + "name": "Get a list of channels", + "description": "List all channels. Channels define which locales, currencies, and category tree are used for each distribution context.\n\nChannels also determine completeness requirements — a product is 'complete' when all required attributes for that channel are filled.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/channels", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "channels" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Channels list", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/channels?page=1&limit=25\"\n }\n },\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"code\": \"ecommerce\",\n \"currencies\": [\n \"EUR\",\n \"USD\"\n ],\n \"locales\": [\n \"en_US\",\n \"fr_FR\"\n ],\n \"category_tree\": \"master\",\n \"labels\": {\n \"en_US\": \"Ecommerce\"\n }\n },\n {\n \"code\": \"mobile\",\n \"currencies\": [\n \"EUR\"\n ],\n \"locales\": [\n \"en_US\"\n ],\n \"category_tree\": \"master\",\n \"labels\": {\n \"en_US\": \"Mobile\"\n }\n },\n {\n \"code\": \"print\",\n \"currencies\": [\n \"EUR\"\n ],\n \"locales\": [\n \"en_US\",\n \"fr_FR\"\n ],\n \"category_tree\": \"master\",\n \"labels\": {\n \"en_US\": \"Print\"\n }\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "17af5609-75c8-4aa1-ae8b-bf4af107e19b", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/channels - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/channels - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Channels\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Channel code\",\"x-immutable\":true},\"locales\":{\"type\":\"array\",\"description\":\"Codes of activated locales for the channel\",\"items\":{\"type\":\"string\"},\"x-validation-rules\":\"- Each string of the array is an existing locale code.\\n- At least one locale in the array.\\n\"},\"currencies\":{\"type\":\"array\",\"description\":\"Codes of activated currencies for the channel\",\"items\":{\"type\":\"string\"},\"x-validation-rules\":\"- Each string of the array is an existing currency code.\\n- At least one currency in the array.\\n\"},\"category_tree\":{\"type\":\"string\",\"description\":\"Code of the category tree linked to the channel\",\"x-validation-rules\":\"It is the code of an existing category code that is a tree (a category without parent)\"},\"conversion_units\":{\"type\":\"object\",\"description\":\"Units to which the given metric attributes should be converted when exporting products\",\"properties\":{\"attributeCode\":{\"type\":\"string\",\"description\":\"Conversion unit code used to convert the values of the attribute `attributeCode` when exporting via the channel\"}},\"x-validation-rules\":\"- The `attributeCode` is the code of an existing attribute whose type is `pim_catalog_metric`.\\n- The strings are existing unit codes.\\n\"},\"labels\":{\"type\":\"object\",\"description\":\"Channel labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Channel label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/channels - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "fc5e07fe-f141-4f02-8b76-3d0e2d80e59c", + "name": "Update/create a channel", + "request": { + "name": "Update/create a channel", + "description": "Update or create a channel.\n\n**Warning**: Removing a locale from a channel makes all product values for that locale+channel invisible (not deleted). Re-adding the locale restores them.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/channels/{{channelCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "channels", + "{{channelCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"ecommerce\",\n \"currencies\": [\n \"USD\",\n \"EUR\"\n ],\n \"locales\": [\n \"de_DE\",\n \"en_US\",\n \"fr_FR\"\n ],\n \"category_tree\": \"master\",\n \"conversion_units\": {\n \"weight\": \"KILOGRAM\"\n },\n \"labels\": {\n \"en_US\": \"Ecommerce\",\n \"de_DE\": \"Ecommerce\",\n \"fr_FR\": \"Ecommerce\"\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "84f8a6f2-78a5-44ab-baf6-0f17bb21e299", + "name": "Update/create several channels", + "request": { + "name": "Update/create several channels", + "description": "Batch update/create channels. One JSON per line (NDJSON).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/channels", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "channels" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/vnd.akeneo.collection+json" + }, + { + "key": "Accept", + "value": "application/vnd.akeneo.collection+json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\"code\":\"ecommerce_fr\", \"category_tree\": \"master\", \"currencies\":[\"EUR\"], \"locales\": [\"fr_FR\"], \"labels\":{\"fr_FR\": \"Ecommerce Fr\"}}\n{\"code\":\"ecommerce_ch\", \"type\":\"bar\"}\n{\"code\":\"tablet\", \"labels\":{\"en_US\": \"Tablet\", \"fr_FR\": \"Tablette\"}}\n", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"line\": 1,\n \"code\": \"ecommerce_fr\",\n \"status_code\": 201\n },\n {\n \"line\": 2,\n \"code\": \"ecommerce_ch\",\n \"status_code\": 422,\n \"message\": \"Property \\\"type\\\" does not exist.\"\n },\n {\n \"line\": 3,\n \"code\": \"tablet\",\n \"status_code\": 204\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "e542ae97-96f1-44f1-99e8-fe67d7247dac", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/channels - Content-Type is application/vnd.akeneo.collection+json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/vnd.akeneo.collection+json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/channels - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"string\"}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/channels - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "b2647a7b-7a04-4ff6-a858-c6e4fc665adc", + "name": "Locale", + "description": "List available locales in the PIM. Locales are read-only via the API — they are managed in the PIM settings.\n\nSee: https://api.akeneo.com/api-reference-index.html#locales", + "item": [ + { + "id": "8c434ce8-eecf-4b21-9023-bfb482004ece", + "name": "Get a list of locales", + "request": { + "name": "Get a list of locales", + "description": "List all available locales. Use the `enabled` filter to show only active locales.\n\n**Common pattern**: Fetch enabled locales to know which translations to send when creating product values.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/locales", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "locales" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "The search query parameter allows you to filter locales based on specific criteria.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":true}]}" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Locales list", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/locales?page=1&limit=25\"\n }\n },\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"code\": \"de_DE\",\n \"enabled\": true\n },\n {\n \"code\": \"en_GB\",\n \"enabled\": true\n },\n {\n \"code\": \"en_US\",\n \"enabled\": true\n },\n {\n \"code\": \"es_ES\",\n \"enabled\": false\n },\n {\n \"code\": \"fr_FR\",\n \"enabled\": true\n },\n {\n \"code\": \"it_IT\",\n \"enabled\": false\n },\n {\n \"code\": \"ja_JP\",\n \"enabled\": false\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "6e6ba4e4-712a-40ea-85d4-0d9d069130f1", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/locales - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/locales - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Locales\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Locale code\",\"x-immutable\":true},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the locale is enabled\",\"default\":false}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/locales - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "abe15487-02be-4535-bdd4-6f5613c60365", + "name": "Get a locale", + "request": { + "name": "Get a locale", + "description": "Retrieve a single locale. Returns the locale code and whether it's enabled.\n\nLocales are enabled in the PIM settings and cannot be created via API.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/locales/{{localeCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "locales", + "{{localeCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Locale details", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/locales/en_US\"\n }\n },\n \"code\": \"en_US\",\n \"enabled\": true\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "0b45b72b-cc05-422c-8818-93f5e359e65b", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/locales/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/locales/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Locale code\",\"x-immutable\":true},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the locale is enabled\",\"default\":false}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/locales/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "cc5b17f1-d521-4f39-96bb-7f0133f961bb", + "name": "Currency", + "description": "List available currencies. Currencies are read-only via the API — they are activated in the PIM settings.\n\nSee: https://api.akeneo.com/api-reference-index.html#currencies", + "item": [ + { + "id": "b14829a7-ce60-4278-8095-79681d6400c3", + "name": "Get a currency", + "request": { + "name": "Get a currency", + "description": "Retrieve a single currency. Returns the code and whether it's activated.\n\nCurrencies are managed in PIM settings — this endpoint is read-only.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/currencies/{{currencyCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "currencies", + "{{currencyCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Currency", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/currencies/EUR\"\n }\n },\n \"code\": \"EUR\",\n \"enabled\": true\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "cc81a044-419a-48e1-82ed-bbeb45ff51d6", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/currencies/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/currencies/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Currency code\",\"x-immutable\":true},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the currency is enabled\"},\"label\":{\"type\":\"string\",\"description\":\"Currency label\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/currencies/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "7498b90d-5e77-429a-bb60-2dacfa3176cf", + "name": "Get a list of currencies", + "request": { + "name": "Get a list of currencies", + "description": "List all currencies. Use the `enabled` filter to show only activated currencies.\n\n**Common pattern**: Fetch enabled currencies to know which price values to send for `pim_catalog_price_collection` attributes.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/currencies", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "currencies" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "The search query parameter allows you to filter currencies based on specific criteria.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"enabled\":[{\"operator\":\"=\",\"value\":true}]}" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Currencies list", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/currencies?page=1&limit=25\"\n }\n },\n \"current_page\": 1,\n \"_embedded\": {\n \"items\": [\n {\n \"code\": \"EUR\",\n \"enabled\": true\n },\n {\n \"code\": \"GBP\",\n \"enabled\": true\n },\n {\n \"code\": \"JPY\",\n \"enabled\": false\n },\n {\n \"code\": \"USD\",\n \"enabled\": true\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "80bfe62c-4c90-4c22-9a9e-dd65445768ff", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/currencies - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/currencies - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Currencies\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Currency code\",\"x-immutable\":true},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the currency is enabled\"},\"label\":{\"type\":\"string\",\"description\":\"Currency label\"}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/currencies - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "2c5f0e5f-d370-458d-9fd0-9a64ed561485", + "name": "Measurement family", + "description": "Manage measurement families and their units (weight, length, volume, etc.) with conversion rules.\n\nSee: https://api.akeneo.com/api-reference-index.html#measurement-families", + "item": [ + { + "id": "b57e497b-7f2b-476b-8635-4c49ab05963c", + "name": "Get list of measurement families", + "request": { + "name": "Get list of measurement families", + "description": "List all measurement families and their units (weight, length, volume, etc.).\n\nEach family has a standard unit and conversion rules between units.\n\n**Common families**: WEIGHT, LENGTH, VOLUME, AREA, FREQUENCY, POWER", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/measurement-families", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "measurement-families" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Measurement families", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"code\": \"WEIGHT\",\n \"labels\": {\n \"en_US\": \"Weight\",\n \"fr_FR\": \"Poids\"\n },\n \"standard_unit_code\": \"KILOGRAM\",\n \"units\": {\n \"GRAM\": {\n \"code\": \"GRAM\",\n \"labels\": {\n \"en_US\": \"Gram\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"1000\"\n }\n ],\n \"symbol\": \"g\"\n },\n \"KILOGRAM\": {\n \"code\": \"KILOGRAM\",\n \"labels\": {\n \"en_US\": \"Kilogram\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"1\"\n }\n ],\n \"symbol\": \"kg\"\n },\n \"POUND\": {\n \"code\": \"POUND\",\n \"labels\": {\n \"en_US\": \"Pound\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"2.20462\"\n }\n ],\n \"symbol\": \"lb\"\n }\n }\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "9a5ce35b-13e9-4fcb-b5e3-d101311b8177", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/measurement-families - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/measurement-families - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"code\",\"standard_unit_code\",\"units\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Measurement family code\"},\"labels\":{\"type\":\"object\",\"description\":\"Measurement family labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Measurement family label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"standard_unit_code\":{\"type\":\"string\",\"description\":\"Unit code used as the standard unit for this measurement family\",\"x-validation-rules\":\"The unit code exists in the list of the property `units`\"},\"units\":{\"type\":\"object\",\"description\":\"Measurement units for this family with their conversion operations.\\nMore details [here](https://api.akeneo.com/concepts/target-market-settings.html#focus-on-the-units)\\n\",\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Measurement unit code\"},\"labels\":{\"type\":\"object\",\"description\":\"Unit labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Unit label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"convert_from_standard\":{\"type\":\"array\",\"description\":\"Calculation to convert the unit from the standard unit.\\nMore details [here](https://api.akeneo.com/concepts/target-market-settings.html#focus-on-the-units)\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"operator\":{\"type\":\"string\",\"description\":\"Operator for the conversion operation\",\"enum\":[\"mul\",\"div\",\"add\",\"sub\"],\"x-validation-rules\":\"The operator is one of the following values\"},\"value\":{\"type\":\"string\",\"description\":\"Value for the conversion operation.\"}}},\"x-validation-rules\":\"- The conversion operations can't be updated when a product attribute is linked to this measurement family.\\n- At least one conversion operation per unit is required.\\n\"},\"symbol\":{\"type\":\"string\",\"description\":\"Measurement unit symbol.\"}}},\"x-validation-rules\":\"A unit can't be added when a product attribute is linked to this measurement family\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/measurement-families - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "f97b67ab-9e17-42b7-9658-66fa925d8b52", + "name": "Update/create several measurement families", + "request": { + "name": "Update/create several measurement families", + "description": "Batch update/create measurement families.\n\n**Important**: Unlike other batch endpoints, this one uses a JSON array (not NDJSON). Send `Content-Type: application/json`.\n\nYou can add new units to existing families or create entirely new families with custom conversion rules.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/measurement-families", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "measurement-families" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "[\n {\n \"code\": \"AREA\",\n \"labels\": {\n \"en_US\": \"Area\",\n \"fr_FR\": \"Surface\"\n },\n \"standard_unit_code\": \"SQUARE_METER\",\n \"units\": {\n \"SQUARE_MILLIMETER\": {\n \"code\": \"SQUARE_MILLIMETER\",\n \"labels\": {\n \"en_US\": \"Square millimeter\",\n \"fr_FR\": \"Millimètre carré\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"0.000001\"\n }\n ],\n \"symbol\": \"mm²\"\n },\n \"SQUARE_CENTIMETER\": {\n \"code\": \"SQUARE_CENTIMETER\",\n \"labels\": {\n \"en_US\": \"Square centimeter\",\n \"fr_FR\": \"Centimètre carré\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"0.0001\"\n }\n ],\n \"symbol\": \"cm²\"\n },\n \"SQUARE_METER\": {\n \"code\": \"SQUARE_METER\",\n \"labels\": {\n \"en_US\": \"Square meter\",\n \"fr_FR\": \"Mètre carré\"\n },\n \"convert_from_standard\": [\n {\n \"operator\": \"mul\",\n \"value\": \"1\"\n }\n ],\n \"symbol\": \"m²\"\n }\n }\n }\n]", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"code\": \"AREA\",\n \"status_code\": 204\n },\n {\n \"code\": \"CUSTOM_METRIC\",\n \"status_code\": 201\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "093c6f38-46c2-4330-83ce-a985c57bb669", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/measurement-families - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/measurement-families - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Resource code\"},\"status_code\":{\"type\":\"integer\",\"description\":\"HTTP status code. See the documentation for client errors to understand the meaning of each code\"},\"message\":{\"type\":\"string\",\"description\":\"Message explaining the error, if any\"},\"errors\":{\"type\":\"array\",\"description\":\"List of errors for a given resource\",\"items\":{\"type\":\"object\",\"properties\":{\"property\":{\"type\":\"string\"},\"message\":{\"type\":\"string\"}}}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/measurement-families - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + } + ], + "event": [] + }, + { + "id": "793e3f59-23c0-4232-b00d-2f2c8949210b", + "name": "Reference entities", + "description": "Manage reference entities, their attributes, options, records, and media files.\n\nSee: https://api.akeneo.com/api-reference-index.html#Referenceentities", + "item": [ + { + "id": "867610e4-3819-4a97-9172-ddab97d0db00", + "name": "Reference entity", + "description": "Manage reference entities — structured non-product data like brands, designers, materials, or colors with their own attributes.\n\nSee: https://api.akeneo.com/api-reference-index.html#reference-entities", + "item": [ + { + "id": "605b43c4-1d2d-4e05-9c96-1c47e5a27d07", + "name": "Get a reference entity", + "request": { + "name": "Get a reference entity", + "description": "Retrieve a single reference entity by code.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Reference entity", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"brands\",\n \"labels\": {\n \"en_US\": \"Brands\",\n \"fr_FR\": \"Marques\"\n },\n \"image\": \"0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "d0cf5877-9079-41e9-a5dd-f20909189078", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/reference-entities/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/reference-entities/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"image_download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI to download the binaries of the reference entity image file\"}}}}}}},{\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Reference entity code\",\"x-immutable\":true},\"labels\":{\"type\":\"object\",\"description\":\"Reference entity labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Reference entity label for the locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"image\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the reference entity image\",\"default\":null}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/reference-entities/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "993cc198-1bea-4222-afd3-797294f40d35", + "name": "Get list of reference entities", + "request": { + "name": "Get list of reference entities", + "description": "List all reference entities. Reference entities store structured non-product data (brands, designers, materials, etc.).\n\nUses cursor-based pagination (`search_after`).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Reference entities", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/reference-entities\"\n }\n },\n \"_embedded\": {\n \"items\": [\n {\n \"code\": \"brands\",\n \"labels\": {\n \"en_US\": \"Brands\",\n \"fr_FR\": \"Marques\"\n },\n \"image\": \"0/2/d/6/image.png\"\n },\n {\n \"code\": \"colors\",\n \"labels\": {\n \"en_US\": \"Colors\"\n },\n \"image\": null\n },\n {\n \"code\": \"designers\",\n \"labels\": {\n \"en_US\": \"Designers\"\n },\n \"image\": null\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "b799809f-f2d6-4d55-9cda-fcc41dd23203", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/reference-entities - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/reference-entities - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Reference Entities\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}},\"image_download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI to download the binaries of the reference entity image file\"}}}}}}},{\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Reference entity code\",\"x-immutable\":true},\"labels\":{\"type\":\"object\",\"description\":\"Reference entity labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Reference entity label for the locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"image\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the reference entity image\",\"default\":null}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/reference-entities - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "4eb98e33-0634-4953-a5f7-f4fddc833cee", + "name": "Update/create a reference entity", + "request": { + "name": "Update/create a reference entity", + "description": "Update or create a reference entity.\n\nAfter creating, add attributes via the reference entity attributes endpoint, then create records.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"brands\",\n \"labels\": {\n \"en_US\": \"Brands\",\n \"fr_FR\": \"Marques\"\n },\n \"image\": \"0/2/d/6/54d81dc888ba1501a8g765f3ab5797569f3bv756c_ref_img.png\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated/Created", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "f5df5d35-d7c8-4265-932c-5bd504cc81db", + "name": "Reference entity attribute", + "description": "Manage attributes of reference entities (text, image, single/multi option, etc.).\n\nSee: https://api.akeneo.com/api-reference-index.html#reference-entity-attributes", + "item": [ + { + "id": "5a351f23-603c-446d-845b-daa26c82507c", + "name": "Get an attribute of a given reference entity", + "request": { + "name": "Get an attribute of a given reference entity", + "description": "Retrieve a single attribute of a reference entity.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}/attributes/{{referenceEntityAttributeCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}", + "attributes", + "{{referenceEntityAttributeCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Attribute", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"description\",\n \"labels\": {\n \"en_US\": \"Description\",\n \"fr_FR\": \"Description\"\n },\n \"type\": \"text\",\n \"value_per_locale\": true,\n \"value_per_channel\": false,\n \"is_required_for_completeness\": true,\n \"is_textarea\": true,\n \"is_rich_text_editor\": true,\n \"validation_rule\": \"none\",\n \"max_characters\": 5000\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "6f28121b-3680-499e-8dc7-f1214ed20c33", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"code\",\"type\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute code\",\"x-immutable\":true},\"labels\":{\"type\":\"object\",\"description\":\"Attribute labels per locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"type\":{\"type\":\"string\",\"description\":\"Attribute type.\\nSee [type](https://api.akeneo.com/concepts/reference-entities.html#reference-entity-attribute) section for more details.\\n\",\"enum\":[\"text\",\"image\",\"number\",\"single_option\",\"multiple_options\",\"reference_entity_single_link\",\"reference_entity_multiple_links\",\"asset_collection\"],\"x-immutable\":true},\"value_per_locale\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is localizable, i.e. can have one value by locale\",\"default\":false,\"x-immutable\":true},\"value_per_channel\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is scopable, i.e. can have one value by channel\",\"default\":false,\"x-immutable\":true},\"is_required_for_completeness\":{\"type\":\"boolean\",\"description\":\"Whether the attribute should be part of the record's completeness calculation\",\"default\":false},\"max_characters\":{\"type\":[\"integer\",\"null\"],\"description\":\"Maximum number of characters allowed for the value of the attribute when the attribute type is `text`\",\"x-warning\":\"Only for `text` attribute type\"},\"is_textarea\":{\"type\":\"boolean\",\"description\":\"Whether the UI should display a text area instead of a simple field when the attribute type is `text`\",\"default\":false,\"x-warning\":\"Only for `text` attribute type\"},\"is_rich_text_editor\":{\"type\":\"boolean\",\"description\":\"Whether the UI should display a rich text editor instead of a simple text area when the attribute type is `text`\",\"default\":false,\"x-validation-rules\":\"Required when the property `is_textarea` is equal to `true`\",\"x-warning\":\"Only for `text` attribute type\"},\"validation_rule\":{\"type\":[\"string\",\"null\"],\"description\":\"Validation rule type used to validate the attribute value when the attribute type is `text`\",\"enum\":[\"email\",\"url\",\"regular_expression\",\"none\",null],\"default\":\"none\",\"x-validation-rules\":\"Required when the property `validation_rule` is equal to `regular_expression`\",\"x-warning\":\"Only for `text` attribute type\"},\"validation_regexp\":{\"type\":[\"string\",\"null\"],\"description\":\"Regexp expression used to validate the attribute value when the attribute type is `text`\",\"x-validation-rules\":\"Required when the property `validation_rule` is equal to `regular_expression`\",\"x-warning\":\"Only for `text` attribute type\"},\"allowed_extensions\":{\"type\":\"array\",\"description\":\"Extensions allowed when the attribute type is `image`\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-warning\":\"Only for `image` attribute type\"},\"max_file_size\":{\"type\":[\"string\",\"null\"],\"description\":\"Max file size in MB when the attribute type is `image`\",\"x-warning\":\"Only for `image` attribute type\"},\"reference_entity_code\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the linked reference entity when the attribute type is `reference_entity_single_link` or `reference_entity_multiple_links`\",\"x-immutable\":true,\"x-validation-rules\":\"Required when the attribute type is either `reference_entity_single_link` or `reference_entity_multiple_links`\",\"x-warning\":\"Only for `reference_entity_single_link` and `reference_entity_multiple_links` attribute type\"},\"asset_family_identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the linked asset family when the attribute type is `asset_collection`\",\"x-immutable\":true,\"x-validation-rules\":\"Required when the attribute type is `asset_collection`\",\"x-warning\":\"Only for `asset_collection` attribute type\"},\"decimals_allowed\":{\"type\":\"boolean\",\"description\":\"Whether decimals are allowed when the attribute type is `number`\",\"default\":false,\"x-warning\":\"Only for `number` attribute type\"},\"min_value\":{\"type\":[\"string\",\"null\"],\"description\":\"Minimum value allowed when the attribute type is `number`\",\"x-validation-rules\":\"The minimum value must be lower than the maximum value\",\"x-warning\":\"Only for `number` attribute type\"},\"max_value\":{\"type\":[\"string\",\"null\"],\"description\":\"Maximum value allowed when the attribute type is `number`\",\"x-validation-rules\":\"The maximum value must be greater than the minimum value\",\"x-warning\":\"Only for `number` attribute type\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "9b81a7c9-ecea-4f2f-afae-4a908aea2580", + "name": "Get the list of attributes of a given reference entity", + "request": { + "name": "Get the list of attributes of a given reference entity", + "description": "List all attributes of a reference entity.\n\nBuilt-in attributes: `code`, `label`, `image`.\nCustom types: `text`, `number`, `image`, `single_option`, `multiple_options`, `reference_entity_single_link`, `reference_entity_multiple_links`.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}/attributes", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}", + "attributes" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Attributes", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"code\": \"label\",\n \"labels\": {\n \"en_US\": \"Label\"\n },\n \"type\": \"text\",\n \"value_per_locale\": true,\n \"value_per_channel\": false,\n \"is_required_for_completeness\": true\n },\n {\n \"code\": \"description\",\n \"labels\": {\n \"en_US\": \"Description\"\n },\n \"type\": \"text\",\n \"value_per_locale\": true,\n \"value_per_channel\": true,\n \"is_textarea\": true,\n \"is_rich_text_editor\": true\n },\n {\n \"code\": \"country\",\n \"labels\": {\n \"en_US\": \"Country\"\n },\n \"type\": \"single_option\",\n \"value_per_locale\": false,\n \"value_per_channel\": false\n },\n {\n \"code\": \"website\",\n \"labels\": {\n \"en_US\": \"Website\"\n },\n \"type\": \"text\",\n \"validation_rule\": \"url\"\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "6cb4102c-c150-4a6d-83d6-d735620341ce", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"code\",\"type\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute code\",\"x-immutable\":true},\"labels\":{\"type\":\"object\",\"description\":\"Attribute labels per locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"type\":{\"type\":\"string\",\"description\":\"Attribute type.\\nSee [type](https://api.akeneo.com/concepts/reference-entities.html#reference-entity-attribute) section for more details.\\n\",\"enum\":[\"text\",\"image\",\"number\",\"single_option\",\"multiple_options\",\"reference_entity_single_link\",\"reference_entity_multiple_links\",\"asset_collection\"],\"x-immutable\":true},\"value_per_locale\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is localizable, i.e. can have one value by locale\",\"default\":false,\"x-immutable\":true},\"value_per_channel\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is scopable, i.e. can have one value by channel\",\"default\":false,\"x-immutable\":true},\"is_required_for_completeness\":{\"type\":\"boolean\",\"description\":\"Whether the attribute should be part of the record's completeness calculation\",\"default\":false},\"max_characters\":{\"type\":[\"integer\",\"null\"],\"description\":\"Maximum number of characters allowed for the value of the attribute when the attribute type is `text`\",\"x-warning\":\"Only for `text` attribute type\"},\"is_textarea\":{\"type\":\"boolean\",\"description\":\"Whether the UI should display a text area instead of a simple field when the attribute type is `text`\",\"default\":false,\"x-warning\":\"Only for `text` attribute type\"},\"is_rich_text_editor\":{\"type\":\"boolean\",\"description\":\"Whether the UI should display a rich text editor instead of a simple text area when the attribute type is `text`\",\"default\":false,\"x-validation-rules\":\"Required when the property `is_textarea` is equal to `true`\",\"x-warning\":\"Only for `text` attribute type\"},\"validation_rule\":{\"type\":[\"string\",\"null\"],\"description\":\"Validation rule type used to validate the attribute value when the attribute type is `text`\",\"enum\":[\"email\",\"url\",\"regular_expression\",\"none\",null],\"default\":\"none\",\"x-validation-rules\":\"Required when the property `validation_rule` is equal to `regular_expression`\",\"x-warning\":\"Only for `text` attribute type\"},\"validation_regexp\":{\"type\":[\"string\",\"null\"],\"description\":\"Regexp expression used to validate the attribute value when the attribute type is `text`\",\"x-validation-rules\":\"Required when the property `validation_rule` is equal to `regular_expression`\",\"x-warning\":\"Only for `text` attribute type\"},\"allowed_extensions\":{\"type\":\"array\",\"description\":\"Extensions allowed when the attribute type is `image`\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-warning\":\"Only for `image` attribute type\"},\"max_file_size\":{\"type\":[\"string\",\"null\"],\"description\":\"Max file size in MB when the attribute type is `image`\",\"x-warning\":\"Only for `image` attribute type\"},\"reference_entity_code\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the linked reference entity when the attribute type is `reference_entity_single_link` or `reference_entity_multiple_links`\",\"x-immutable\":true,\"x-validation-rules\":\"Required when the attribute type is either `reference_entity_single_link` or `reference_entity_multiple_links`\",\"x-warning\":\"Only for `reference_entity_single_link` and `reference_entity_multiple_links` attribute type\"},\"asset_family_identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the linked asset family when the attribute type is `asset_collection`\",\"x-immutable\":true,\"x-validation-rules\":\"Required when the attribute type is `asset_collection`\",\"x-warning\":\"Only for `asset_collection` attribute type\"},\"decimals_allowed\":{\"type\":\"boolean\",\"description\":\"Whether decimals are allowed when the attribute type is `number`\",\"default\":false,\"x-warning\":\"Only for `number` attribute type\"},\"min_value\":{\"type\":[\"string\",\"null\"],\"description\":\"Minimum value allowed when the attribute type is `number`\",\"x-validation-rules\":\"The minimum value must be lower than the maximum value\",\"x-warning\":\"Only for `number` attribute type\"},\"max_value\":{\"type\":[\"string\",\"null\"],\"description\":\"Maximum value allowed when the attribute type is `number`\",\"x-validation-rules\":\"The maximum value must be greater than the minimum value\",\"x-warning\":\"Only for `number` attribute type\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "f06b3d7a-a763-47c5-b007-88f35aea36a1", + "name": "Update/create an attribute of a given reference entity", + "request": { + "name": "Update/create an attribute of a given reference entity", + "description": "Update or create an attribute for a reference entity.\n\nImmutable after creation: `type`.\nTypes: `text`, `number`, `image`, `single_option`, `multiple_options`, `reference_entity_single_link`, `reference_entity_multiple_links`.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}/attributes/{{referenceEntityAttributeCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}", + "attributes", + "{{referenceEntityAttributeCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"description\",\n \"labels\": {\n \"en_US\": \"Description\",\n \"fr_FR\": \"Description\"\n },\n \"type\": \"text\",\n \"value_per_locale\": true,\n \"value_per_channel\": false,\n \"is_required_for_completeness\": true,\n \"is_textarea\": true,\n \"is_rich_text_editor\": true,\n \"validation_rule\": \"none\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated/Created", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "77bb58be-af20-41c3-82a7-ae36e82664d5", + "name": "Reference entity attribute option", + "description": "Manage options for single_option and multiple_options reference entity attributes.\n\nSee: https://api.akeneo.com/api-reference-index.html#reference-entity-attribute-options", + "item": [ + { + "id": "26aa55d0-b2ac-40e2-a8a5-f9a6afd02722", + "name": "Get a list of attribute options of a given attribute for a given reference entity", + "request": { + "name": "Get a list of attribute options of a given attribute for a given reference entity", + "description": "List options for a `single_option` or `multiple_options` attribute of a reference entity.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}/attributes/{{referenceEntityAttributeCode}}/options", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}", + "attributes", + "{{referenceEntityAttributeCode}}", + "options" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Options", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"code\": \"french\",\n \"labels\": {\n \"en_US\": \"French\",\n \"fr_FR\": \"Fran\\u00e7ais\"\n }\n },\n {\n \"code\": \"italian\",\n \"labels\": {\n \"en_US\": \"Italian\",\n \"fr_FR\": \"Italien\"\n }\n },\n {\n \"code\": \"german\",\n \"labels\": {\n \"en_US\": \"German\",\n \"fr_FR\": \"Allemand\"\n }\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "32d49cd8-4970-4910-ae0f-0045fadb4780", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes/:attribute_code/options - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes/:attribute_code/options - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute's option code\"},\"labels\":{\"type\":\"object\",\"description\":\"Attribute labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute label for the specified locale\",\"type\":[\"string\",\"null\"]}}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes/:attribute_code/options - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "3fe740a1-bc88-4d33-9db4-2cecc4a976b2", + "name": "Get an attribute option for a given attribute of a given reference entity", + "request": { + "name": "Get an attribute option for a given attribute of a given reference entity", + "description": "Retrieve a single attribute option.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}/attributes/{{referenceEntityAttributeCode}}/options/{{referenceEntityAttributeOptionCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}", + "attributes", + "{{referenceEntityAttributeCode}}", + "options", + "{{referenceEntityAttributeOptionCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Option", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"french\",\n \"labels\": {\n \"en_US\": \"French\",\n \"fr_FR\": \"Fran\\u00e7ais\"\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "dd80002b-3fd9-4650-9bb5-75bbd159fa9a", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes/:attribute_code/options/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes/:attribute_code/options/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute's option code\"},\"labels\":{\"type\":\"object\",\"description\":\"Attribute labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute label for the specified locale\",\"type\":[\"string\",\"null\"]}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/attributes/:attribute_code/options/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "deaf4b01-2b20-4f47-b1d7-dbfab6b690b3", + "name": "Update/create a reference entity attribute option", + "request": { + "name": "Update/create a reference entity attribute option", + "description": "Update or create an option. Only `labels` can be updated after creation.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}/attributes/{{referenceEntityAttributeCode}}/options/{{referenceEntityAttributeOptionCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}", + "attributes", + "{{referenceEntityAttributeCode}}", + "options", + "{{referenceEntityAttributeOptionCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"global_nomad\",\n \"labels\": {\n \"en_US\": \"Global Nomad\",\n \"fr_FR\": \"Nomade du Monde\"\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated/Created", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "fc69c2d4-3672-42d8-8790-86788e4b799e", + "name": "Reference entity record", + "description": "Manage records (instances) of reference entities — e.g. individual brands, designers, or materials.\n\nSee: https://api.akeneo.com/api-reference-index.html#reference-entity-records", + "item": [ + { + "id": "f92585ee-36c2-42e1-b1a4-7d0c4912b246", + "name": "Get a record of a given reference entity", + "request": { + "name": "Get a record of a given reference entity", + "description": "Retrieve a single record. Records are the individual entries (e.g. 'Nike' in the 'brands' entity).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}/records/{{referenceEntityRecordCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}", + "records", + "{{referenceEntityRecordCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Record", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"kartell\",\n \"values\": {\n \"label\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Kartell\"\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Kartell, the Italian furniture company\"\n }\n ],\n \"country\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"italian\"\n }\n ],\n \"image\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"0/c/b/0/image.jpg\"\n }\n ]\n },\n \"created\": \"2024-01-10T10:00:00+00:00\",\n \"updated\": \"2024-06-01T15:30:00+00:00\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "4b91ee92-53d6-4b27-9010-b7a812416f32", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/records/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/records/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Code of the record\"},\"values\":{\"type\":\"object\",\"description\":\"Record attribute values\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"properties\":{\"locale\":{\"description\":\"Locale code of the value\",\"type\":[\"string\",\"null\"]},\"channel\":{\"description\":\"Channel code of the value\",\"type\":[\"string\",\"null\"]},\"data\":{\"description\":\"Reference entity record value.\\nSee [the `data` format](https://api.akeneo.com/concepts/reference-entities.html#the-data-format) section for more details.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}},{\"type\":\"object\"},{\"type\":\"null\"}]}}}},\"x-validation-rules\":\"Validation rules detailed in Reference entity record values section\"},\"created\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\"},\"updated\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/records/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "56967b9f-e39b-47cc-a5e8-6ba41d549ca6", + "name": "Get all records across all reference entities", + "request": { + "name": "Get all records across all reference entities", + "description": "List records across ALL reference entities.\n\nUseful for syncing all reference data in a single pass. Filter by `reference_entity`, `code`, `complete`, `updated`, or any attribute value.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/records", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "records" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter record values to return scopable record attributes for the given channel as well as the non localizable/non scopable record attributes,\nfor more details see the [Filter record values by channel](https://api.", + "type": "text/plain" + }, + "key": "channel", + "value": "ecommerce" + }, + { + "disabled": true, + "description": { + "content": "Filter record values to return localizable record attributes for the given locales as well as the non localizable/non scopable record attributes,\nfor more details see the [Filter record values by locale](https://api.", + "type": "text/plain" + }, + "key": "locales", + "value": "en_US,fr_FR" + }, + { + "disabled": true, + "description": { + "content": "Filter records by a specific reference entity code", + "type": "text/plain" + }, + "key": "reference_entity", + "value": "dolore" + }, + { + "disabled": true, + "description": { + "content": "Filter records,\nfor more details see the [Filters](https://api.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"code1\",\"code2\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the records to get only the completed ones on a given channel for given locales", + "type": "text/plain" + }, + "key": "search", + "value": "{\"complete\":{\"operator\":\"=\",\"value\":true,\"channel\":\"ecommerce\",\"locales\":[\"en_US\"]}}" + }, + { + "disabled": true, + "description": { + "content": "Filter the records by their update date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2018-07-04T10:00:00+00:00\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter by a text attribute value", + "type": "text/plain" + }, + "key": "search", + "value": "{\"description\":{\"operator\":\"CONTAINS\",\"value\":\"furniture\",\"locale\":\"en_US\",\"channel\":\"ecommerce\"}}" + }, + { + "disabled": true, + "description": { + "content": "Filter by a number attribute value", + "type": "text/plain" + }, + "key": "search", + "value": "{\"creation_year\":{\"operator\":\">\",\"value\":\"1950\"}}" + }, + { + "disabled": true, + "description": { + "content": "Filter by an option (single or multiple)", + "type": "text/plain" + }, + "key": "search", + "value": "{\"nationality\":{\"operator\":\"IN\",\"value\":[\"french\",\"italian\"]}}" + }, + { + "disabled": true, + "description": { + "content": "Filter by a reference entity link (single or multiple)", + "type": "text/plain" + }, + "key": "search", + "value": "{\"designers\":{\"operator\":\"IN\",\"value\":[\"starck\",\"dixon\"]}}" + }, + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "20ea3a4b-57a5-4158-b348-3aa4bf7c80f7", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/reference-entities/records - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/reference-entities/records - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Code of the record\"},\"values\":{\"type\":\"object\",\"description\":\"Record attribute values\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"properties\":{\"locale\":{\"description\":\"Locale code of the value\",\"type\":[\"string\",\"null\"]},\"channel\":{\"description\":\"Channel code of the value\",\"type\":[\"string\",\"null\"]},\"data\":{\"description\":\"Reference entity record value.\\nSee [the `data` format](https://api.akeneo.com/concepts/reference-entities.html#the-data-format) section for more details.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}},{\"type\":\"object\"},{\"type\":\"null\"}]}}}},\"x-validation-rules\":\"Validation rules detailed in Reference entity record values section\"},\"created\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\"},\"updated\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\"}}},{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/reference-entities/records - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "cb35dad4-9730-44e7-992b-2f1ecfac383a", + "name": "Get the list of the records of a reference entity", + "request": { + "name": "Get the list of the records of a reference entity", + "description": "List records for a specific reference entity. Uses cursor-based pagination (`search_after`).\n\nSame filters as the cross-entity endpoint.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}/records", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}", + "records" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter record values to return scopable record attributes for the given channel as well as the non localizable/non scopable record attributes,\nfor more details see the [Filter record values by channel](https://api.", + "type": "text/plain" + }, + "key": "channel", + "value": "ecommerce" + }, + { + "disabled": true, + "description": { + "content": "Filter record values to return localizable record attributes for the given locales as well as the non localizable/non scopable record attributes,\nfor more details see the [Filter record values by locale](https://api.", + "type": "text/plain" + }, + "key": "locales", + "value": "en_US,fr_FR" + }, + { + "disabled": true, + "description": { + "content": "Filter records of the reference entity,\nfor more details see the [Filters](https://api.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"code1\",\"code2\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the records to get only the completed ones on a given channel for given locales", + "type": "text/plain" + }, + "key": "search", + "value": "{\"complete\":{\"operator\":\"=\",\"value\":true,\"channel\":\"ecommerce\",\"locales\":[\"en_US\"]}}" + }, + { + "disabled": true, + "description": { + "content": "Filter the records by their update date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2018-07-04T10:00:00+00:00\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter by a text attribute value", + "type": "text/plain" + }, + "key": "search", + "value": "{\"description\":{\"operator\":\"CONTAINS\",\"value\":\"furniture\",\"locale\":\"en_US\",\"channel\":\"ecommerce\"}}" + }, + { + "disabled": true, + "description": { + "content": "Filter by a number attribute value", + "type": "text/plain" + }, + "key": "search", + "value": "{\"creation_year\":{\"operator\":\">\",\"value\":\"1950\"}}" + }, + { + "disabled": true, + "description": { + "content": "Filter by an option (single or multiple)", + "type": "text/plain" + }, + "key": "search", + "value": "{\"nationality\":{\"operator\":\"IN\",\"value\":[\"french\",\"italian\"]}}" + }, + { + "disabled": true, + "description": { + "content": "Filter by a reference entity link (single or multiple)", + "type": "text/plain" + }, + "key": "search", + "value": "{\"designers\":{\"operator\":\"IN\",\"value\":[\"starck\",\"dixon\"]}}" + }, + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "ffcef7e9-cd97-4aae-b692-1dea1a9651b3", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/records - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/records - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Code of the record\"},\"values\":{\"type\":\"object\",\"description\":\"Record attribute values\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"properties\":{\"locale\":{\"description\":\"Locale code of the value\",\"type\":[\"string\",\"null\"]},\"channel\":{\"description\":\"Channel code of the value\",\"type\":[\"string\",\"null\"]},\"data\":{\"description\":\"Reference entity record value.\\nSee [the `data` format](https://api.akeneo.com/concepts/reference-entities.html#the-data-format) section for more details.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}},{\"type\":\"object\"},{\"type\":\"null\"}]}}}},\"x-validation-rules\":\"Validation rules detailed in Reference entity record values section\"},\"created\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\"},\"updated\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\"}}},{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/reference-entities/:reference_entity_code/records - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "f92b0f1c-d2c8-4cd7-a409-92c83c68673a", + "name": "Update or create a record of a given reference entity", + "request": { + "name": "Update or create a record of a given reference entity", + "description": "Update or create a single record.\n\nValues are merged — only the values you send are modified. Existing values not in the request are preserved.\n\nSee: https://api.akeneo.com/documentation/update.html#patch-reference-entity-record-values", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}/records/{{referenceEntityRecordCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}", + "records", + "{{referenceEntityRecordCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"kartell\",\n \"values\": {\n \"label\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Kartell\"\n }\n ],\n \"image\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"0/c/b/0/0cb0c0e115dedba676f8d1ad8343ec207ab54c7b_image.jpg\"\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Kartell, the Italian furniture company that sells modern and remarkable pieces of furniture.\"\n },\n {\n \"locale\": \"fr_FR\",\n \"channel\": null,\n \"data\": \"Kartell, l'éditeur de meuble italien spécialisé dans la signature de belles pièces au design contemporain.\"\n }\n ],\n \"country\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"italy\"\n }\n ],\n \"collection_overview\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"5/1/d/8/51d81dc778ba1501a8f998f3ab5797569f3b9e25_img.png\"\n }\n ],\n \"creation_year\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"1949\"\n }\n ]\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated/Created", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "970e95d8-745b-4ae8-a577-10b40af10e60", + "name": "Update/create several reference entity records", + "request": { + "name": "Update/create several reference entity records", + "description": "Batch upsert records. Send as a JSON array. Each record is processed independently.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities/{{referenceEntityCode}}/records", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities", + "{{referenceEntityCode}}", + "records" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "[\n {\n \"code\": \"kartell\",\n \"values\": {\n \"label\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Kartell\"\n }\n ],\n \"image\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"0/c/b/0/0cb0c0e115dedba676f8d1ad8343ec207ab54c7b_image.jpg\"\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Kartell, the Italian furniture company that sells modern and remarkable pieces of furnitures.\"\n },\n {\n \"locale\": \"fr_FR\",\n \"channel\": null,\n \"data\": \"Kartell, l'éditeur de meuble italien spécialisé dans la signature de belle pièces au design contemporain.\"\n }\n ],\n \"country\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"italy\"\n }\n ],\n \"collection_overview\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"5/1/d/8/51d81dc778ba1501a8f998f3ab5797569f3b9e25_img.png\"\n }\n ],\n \"creation_year\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"1949\"\n }\n ]\n }\n },\n {\n \"code\": \"ligneroset\",\n \"values\": {\n \"label\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Ligne Roset\"\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Very well known French brand of modern and luxury furniture\"\n },\n {\n \"locale\": \"fr_FR\",\n \"channel\": null,\n \"data\": \"La marque renommée des meubles de luxe à la française\"\n }\n ],\n \"country\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"france\"\n }\n ],\n \"creation_year\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"1860\"\n }\n ]\n }\n },\n {\n \"code\": \"usm\",\n \"values\": {\n \"label\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"USM\"\n }\n ],\n \"description\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Modular furniture from Switzerland for your home and office\"\n },\n {\n \"locale\": \"fr_FR\",\n \"channel\": null,\n \"data\": \"L'éditeur de meubles modulaires suisse pour votre intérieur et pour les entreprises\"\n }\n ],\n \"country\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"switzerland\"\n }\n ],\n \"creation_year\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"1885\"\n }\n ]\n }\n }\n]", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"code\": \"kartell\",\n \"status_code\": 204\n },\n {\n \"code\": \"alessi\",\n \"status_code\": 201\n },\n {\n \"code\": \"invalid\",\n \"status_code\": 422,\n \"message\": \"Invalid characters in code.\"\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "dc388186-75d4-41f1-b02f-17ad9081e63e", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/reference-entities/:reference_entity_code/records - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/reference-entities/:reference_entity_code/records - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\"},\"status_code\":{\"type\":\"integer\"},\"message\":{\"type\":\"string\"},\"errors\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"property\":{\"type\":\"string\"},\"message\":{\"type\":\"string\"}}}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/reference-entities/:reference_entity_code/records - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "e03acb86-855f-4f5a-9260-5e4528bf34f9", + "name": "Reference entity media file", + "description": "Upload and download media files for reference entities and their records.\n\nSee: https://api.akeneo.com/api-reference-index.html#reference-entity-media-files", + "item": [ + { + "id": "f3e9c0fb-15aa-469f-a8e0-a9ceb466725b", + "name": "Create a new media file for a reference entity or a record", + "request": { + "name": "Create a new media file for a reference entity or a record", + "description": "Upload a media file for a reference entity image or record attribute.\n\nSend as `multipart/form-data` with a `file` field. The response `Location` header contains the media file code.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities-media-files", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities-media-files" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Equal to 'multipart/form-data' (with [boundary value](https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2)), no other value allowed.\n", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "formdata", + "formdata": [ + { + "description": { + "content": "(Required) The media file to upload", + "type": "text/plain" + }, + "key": "file", + "type": "file" + } + ] + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/reference-entities-media-files/0/2/d/6/image.png" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "035ced19-9e90-429a-b946-f1cbdf38791a", + "name": "Download the media file associated to a reference entity or a record", + "request": { + "name": "Download the media file associated to a reference entity or a record", + "description": "Download the binary content of a reference entity media file.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/reference-entities-media-files/{{referenceEntityMediaFileCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "reference-entities-media-files", + "{{referenceEntityMediaFileCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "image/png" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Binary content", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "image/png" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "cfd027ed-6586-43a4-8c87-9b8e20d0819d", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/reference-entities-media-files/:code - Content-Type is image/png\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"image/png\");\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + } + ], + "event": [] + }, + { + "id": "f9d3c617-b64c-4bad-8420-571ebeec7acf", + "name": "Asset Manager", + "description": "Manage asset families, attributes, options, media files, and assets.\n\nSee: https://api.akeneo.com/api-reference-index.html#AssetManager", + "item": [ + { + "id": "df4def95-07a6-496f-9a6a-66fd9516f6cf", + "name": "Asset family", + "description": "Manage asset families — define the structure for digital assets (product images, videos, documents, etc.).\n\nSee: https://api.akeneo.com/api-reference-index.html#asset-families", + "item": [ + { + "id": "ec255afa-3dce-4072-b359-7ed98962799b", + "name": "Get an asset family", + "request": { + "name": "Get an asset family", + "description": "Retrieve a single asset family with naming conventions and product link rules.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Asset family", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"model_pictures\",\n \"labels\": {\n \"en_US\": \"Model Pictures\",\n \"fr_FR\": \"Photos de mannequins\"\n },\n \"attribute_as_main_media\": \"main_image\",\n \"naming_convention\": {\n \"source\": {\n \"property\": \"code\"\n },\n \"pattern\": \"/(?P.*)-.*/\",\n \"abort_asset_creation_on_error\": true\n },\n \"product_link_rules\": [\n {\n \"product_selections\": [\n {\n \"field\": \"sku\",\n \"operator\": \"EQUALS\",\n \"value\": \"{{product_ref}}\"\n }\n ],\n \"assign_assets_to\": [\n {\n \"attribute\": \"model_pictures\",\n \"locale\": null,\n \"channel\": null\n }\n ]\n }\n ],\n \"transformations\": []\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "e1f2b5cc-2a4c-4158-afad-1bfbbb63fe94", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/asset-families/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/asset-families/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Asset family code\",\"x-immutable\":true},\"labels\":{\"type\":\"object\",\"description\":\"Asset family labels for each locale.\\nThe `localeCode` must be the code of an existing and activated locale.\\n\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Asset family label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"attribute_as_main_media\":{\"type\":[\"string\",\"null\"],\"description\":\"Attribute code that is used as the main media of the asset family\",\"default\":\"First media file or media link attribute that was created\",\"x-validation-rules\":\"It should be the code of an attribute that belongs to this family, and it must be a media file or a media link attribute type\"},\"naming_convention\":{\"type\":\"object\",\"description\":\"The naming convention run over the asset code or the main media filename upon each asset creation, in order to automatically set several values in asset attributes.\\nTo learn more and see the format of this property, take a look at [here](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-naming-convention).\\n\",\"default\":{},\"properties\":{\"source\":{\"type\":\"object\",\"description\":\"The string on which the naming convention should be applied.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#the-source-string).\\n\"},\"pattern\":{\"type\":\"string\",\"description\":\"The regular expression that should be applied on the source.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#the-split-pattern).\\n\"},\"abort_asset_creation_on_error\":{\"type\":\"boolean\",\"description\":\"Whether the asset should be created if the naming convention failed to apply.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#abortion-on-error).\\n\"}},\"x-validation-rules\":\"To know more about the validation of this property, take a look at our naming convention format\"},\"product_link_rules\":{\"type\":\"array\",\"description\":\"The rules that will be run after the asset creation, in order to automatically link the assets of this family to a set of products.\\nTo understand the format of this property, see [here](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-product-link-rule).\\n\",\"default\":[],\"items\":{\"type\":\"object\",\"properties\":{\"product_selections\":{\"type\":\"array\",\"description\":\"The product selection to which the assets of the asset family to be automatically linked.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#product-selection).\\n\",\"items\":{\"type\":\"object\",\"required\":[\"field\",\"operator\",\"value\"],\"properties\":{\"field\":{\"type\":\"string\"},\"operator\":{\"type\":\"string\"},\"value\":{\"type\":[\"string\",\"array\",\"boolean\"]},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"The locale code. Can be null if not applicable\"},\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"The channel code. Can be null if not applicable\"}}}},\"assign_assets_to\":{\"type\":\"array\",\"description\":\"The product value in which your assets will be assigned.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#product-value-assignment).\\n\",\"items\":{\"type\":\"object\",\"required\":[\"attribute\",\"mode\"],\"properties\":{\"attribute\":{\"type\":\"string\"},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"The locale code. Can be null if not applicable\"},\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"The channel code. Can be null if not applicable\"},\"mode\":{\"type\":\"string\"}}}}}},\"x-validation-rules\":\"To know more about the validation of this property, take a look at our product link rule format\"},\"transformations\":{\"type\":\"array\",\"description\":\"The transformations to perform on source files in order to generate new files into your asset attributes.\\nTo understand the format of this property, see [here](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-transformations).\\n\",\"default\":[],\"items\":{\"type\":\"object\",\"required\":[\"label\",\"target\",\"source\",\"operations\"],\"properties\":{\"label\":{\"type\":\"string\",\"description\":\"The name of the transformation\"},\"filename_suffix\":{\"type\":\"string\",\"description\":\"The suffix that will be appended to the source filename to generate the target filename.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#target-filename).\\n\"},\"filename_prefix\":{\"type\":\"string\",\"description\":\"The prefix that will be prepended to the source filename to generate the target filename.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#target-filename).\\n\"},\"source\":{\"type\":\"object\",\"required\":[\"attribute\",\"channel\",\"locale\"],\"description\":\"The attribute value in which is stored the media file you want to use as the source file for your transformation.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#source-file).\\n\",\"properties\":{\"attribute\":{\"type\":\"string\"},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"The locale code. Can be null if not applicable\"},\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"The channel code. Can be null if not applicable\"}}},\"target\":{\"type\":\"object\",\"required\":[\"attribute\",\"channel\",\"locale\"],\"description\":\"The attribute value in which the PIM will generate the new transformed file, aka the target file.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#target-file).\\n\",\"properties\":{\"attribute\":{\"type\":\"string\"},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"The locale code. Can be null if not applicable\"},\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"The channel code. Can be null if not applicable\"}}},\"operations\":{\"type\":\"array\",\"description\":\"The transformations that should be applied to your source file to generate the target file.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#transformation-operations).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"parameters\":{\"type\":\"object\",\"properties\":{\"colorspace\":{\"type\":\"string\"},\"width\":{\"type\":\"integer\"},\"height\":{\"type\":\"integer\"},\"ratio\":{\"type\":\"integer\"},\"resolution-unit\":{\"type\":\"string\"},\"resolution-x\":{\"type\":\"integer\"},\"resolution-y\":{\"type\":\"integer\"},\"quality\":{\"type\":\"integer\"}}}}},\"x-validation-rules\":\"Should contain at least one operation\"}}},\"x-validation-rules\":\"To know more about the validation of this property, take a look at our transformation format\"},\"sharing_enabled\":{\"type\":\"boolean\",\"description\":\"Share links are available/unavailable for media file attributes of all the assets in this family\"},\"auto_tagging_enabled\":{\"type\":\"boolean\",\"description\":\"Auto-tagging is enabled/disabled for all the assets in this family\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/asset-families/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "2922cad6-0fd6-4954-b0a5-354a53c05ef8", + "name": "Get list of asset families", + "request": { + "name": "Get list of asset families", + "description": "List all asset families. Asset families define types of digital assets (product photos, videos, documents, etc.).\n\nUses cursor-based pagination (`search_after`).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Asset families", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_links\": {\n \"self\": {\n \"href\": \"https://my-pim.cloud.akeneo.com/api/rest/v1/asset-families\"\n }\n },\n \"_embedded\": {\n \"items\": [\n {\n \"code\": \"model_pictures\",\n \"labels\": {\n \"en_US\": \"Model Pictures\"\n },\n \"attribute_as_main_media\": \"main_image\"\n },\n {\n \"code\": \"product_videos\",\n \"labels\": {\n \"en_US\": \"Product Videos\"\n },\n \"attribute_as_main_media\": \"video_file\"\n },\n {\n \"code\": \"technical_drawings\",\n \"labels\": {\n \"en_US\": \"Technical Drawings\"\n },\n \"attribute_as_main_media\": \"drawing\"\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "796c0be3-ac91-4181-80ed-9dccea29016d", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/asset-families - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/asset-families - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Asset families\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Asset family code\",\"x-immutable\":true},\"labels\":{\"type\":\"object\",\"description\":\"Asset family labels for each locale.\\nThe `localeCode` must be the code of an existing and activated locale.\\n\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Asset family label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"attribute_as_main_media\":{\"type\":[\"string\",\"null\"],\"description\":\"Attribute code that is used as the main media of the asset family\",\"default\":\"First media file or media link attribute that was created\",\"x-validation-rules\":\"It should be the code of an attribute that belongs to this family, and it must be a media file or a media link attribute type\"},\"naming_convention\":{\"type\":\"object\",\"description\":\"The naming convention run over the asset code or the main media filename upon each asset creation, in order to automatically set several values in asset attributes.\\nTo learn more and see the format of this property, take a look at [here](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-naming-convention).\\n\",\"default\":{},\"properties\":{\"source\":{\"type\":\"object\",\"description\":\"The string on which the naming convention should be applied.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#the-source-string).\\n\"},\"pattern\":{\"type\":\"string\",\"description\":\"The regular expression that should be applied on the source.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#the-split-pattern).\\n\"},\"abort_asset_creation_on_error\":{\"type\":\"boolean\",\"description\":\"Whether the asset should be created if the naming convention failed to apply.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#abortion-on-error).\\n\"}},\"x-validation-rules\":\"To know more about the validation of this property, take a look at our naming convention format\"},\"product_link_rules\":{\"type\":\"array\",\"description\":\"The rules that will be run after the asset creation, in order to automatically link the assets of this family to a set of products.\\nTo understand the format of this property, see [here](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-product-link-rule).\\n\",\"default\":[],\"items\":{\"type\":\"object\",\"properties\":{\"product_selections\":{\"type\":\"array\",\"description\":\"The product selection to which the assets of the asset family to be automatically linked.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#product-selection).\\n\",\"items\":{\"type\":\"object\",\"required\":[\"field\",\"operator\",\"value\"],\"properties\":{\"field\":{\"type\":\"string\"},\"operator\":{\"type\":\"string\"},\"value\":{\"type\":[\"string\",\"array\",\"boolean\"]},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"The locale code. Can be null if not applicable\"},\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"The channel code. Can be null if not applicable\"}}}},\"assign_assets_to\":{\"type\":\"array\",\"description\":\"The product value in which your assets will be assigned.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#product-value-assignment).\\n\",\"items\":{\"type\":\"object\",\"required\":[\"attribute\",\"mode\"],\"properties\":{\"attribute\":{\"type\":\"string\"},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"The locale code. Can be null if not applicable\"},\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"The channel code. Can be null if not applicable\"},\"mode\":{\"type\":\"string\"}}}}}},\"x-validation-rules\":\"To know more about the validation of this property, take a look at our product link rule format\"},\"transformations\":{\"type\":\"array\",\"description\":\"The transformations to perform on source files in order to generate new files into your asset attributes.\\nTo understand the format of this property, see [here](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-transformations).\\n\",\"default\":[],\"items\":{\"type\":\"object\",\"required\":[\"label\",\"target\",\"source\",\"operations\"],\"properties\":{\"label\":{\"type\":\"string\",\"description\":\"The name of the transformation\"},\"filename_suffix\":{\"type\":\"string\",\"description\":\"The suffix that will be appended to the source filename to generate the target filename.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#target-filename).\\n\"},\"filename_prefix\":{\"type\":\"string\",\"description\":\"The prefix that will be prepended to the source filename to generate the target filename.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#target-filename).\\n\"},\"source\":{\"type\":\"object\",\"required\":[\"attribute\",\"channel\",\"locale\"],\"description\":\"The attribute value in which is stored the media file you want to use as the source file for your transformation.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#source-file).\\n\",\"properties\":{\"attribute\":{\"type\":\"string\"},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"The locale code. Can be null if not applicable\"},\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"The channel code. Can be null if not applicable\"}}},\"target\":{\"type\":\"object\",\"required\":[\"attribute\",\"channel\",\"locale\"],\"description\":\"The attribute value in which the PIM will generate the new transformed file, aka the target file.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#target-file).\\n\",\"properties\":{\"attribute\":{\"type\":\"string\"},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"The locale code. Can be null if not applicable\"},\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"The channel code. Can be null if not applicable\"}}},\"operations\":{\"type\":\"array\",\"description\":\"The transformations that should be applied to your source file to generate the target file.\\nMore details [here](https://api.akeneo.com/concepts/asset-manager.html#transformation-operations).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"parameters\":{\"type\":\"object\",\"properties\":{\"colorspace\":{\"type\":\"string\"},\"width\":{\"type\":\"integer\"},\"height\":{\"type\":\"integer\"},\"ratio\":{\"type\":\"integer\"},\"resolution-unit\":{\"type\":\"string\"},\"resolution-x\":{\"type\":\"integer\"},\"resolution-y\":{\"type\":\"integer\"},\"quality\":{\"type\":\"integer\"}}}}},\"x-validation-rules\":\"Should contain at least one operation\"}}},\"x-validation-rules\":\"To know more about the validation of this property, take a look at our transformation format\"},\"sharing_enabled\":{\"type\":\"boolean\",\"description\":\"Share links are available/unavailable for media file attributes of all the assets in this family\"},\"auto_tagging_enabled\":{\"type\":\"boolean\",\"description\":\"Auto-tagging is enabled/disabled for all the assets in this family\"}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/asset-families - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "47a4e5a7-c00d-4527-8610-d1c0cc49008f", + "name": "Update/create an asset family", + "request": { + "name": "Update/create an asset family", + "description": "Update or create an asset family.\n\nKey features:\n- `naming_convention` — auto-extract metadata from filenames\n- `product_link_rules` — auto-assign assets to products\n- `transformations` — auto-generate thumbnails/variants", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"model_pictures\",\n \"labels\": {\n \"en_US\": \"Model pictures\",\n \"fr_FR\": \"Photographies en pied\"\n },\n \"attribute_as_main_media\": \"main_image\",\n \"naming_convention\": {\n \"source\": {\n \"property\": \"code\"\n },\n \"pattern\": \"/(?P.*)-.*/\",\n \"abort_asset_creation_on_error\": true\n },\n \"product_link_rules\": [\n {\n \"product_selections\": [\n {\n \"field\": \"sku\",\n \"operator\": \"EQUALS\",\n \"value\": \"{{product_ref}}\"\n }\n ],\n \"assign_assets_to\": [\n {\n \"attribute\": \"model_pictures\",\n \"mode\": \"replace\"\n }\n ]\n }\n ],\n \"transformations\": [\n {\n \"label\": \"Thumbnail plus black and white transformation\",\n \"filename_suffix\": \"_thumbnailBW\",\n \"source\": {\n \"attribute\": \"main_image\",\n \"channel\": \"ecommerce\",\n \"locale\": \"en_US\"\n },\n \"target\": {\n \"attribute\": \"thumbnail\",\n \"channel\": \"ecommerce\",\n \"locale\": \"en_US\"\n },\n \"operations\": [\n {\n \"type\": \"thumbnail\",\n \"parameters\": {\n \"width\": 150,\n \"height\": 150\n }\n },\n {\n \"type\": \"colorspace\",\n \"parameters\": {\n \"colorspace\": \"grey\"\n }\n }\n ]\n }\n ],\n \"sharing_enabled\": true,\n \"auto_tagging_enabled\": false\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated/Created", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "151474e9-e88d-4dc8-86eb-890acca42ace", + "name": "Asset attribute", + "description": "Manage attributes of asset families (media_file, text, single_option, etc.).\n\nSee: https://api.akeneo.com/api-reference-index.html#asset-attributes", + "item": [ + { + "id": "c137e18d-93cd-4185-ad09-ccf95cccb04f", + "name": "Get an attribute of a given asset family", + "request": { + "name": "Get an attribute of a given asset family", + "description": "Retrieve a single attribute of an asset family.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/attributes/{{assetAttributeCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "attributes", + "{{assetAttributeCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Attribute", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"main_image\",\n \"labels\": {\n \"en_US\": \"Main image\"\n },\n \"type\": \"media_file\",\n \"value_per_locale\": false,\n \"value_per_channel\": false,\n \"is_required_for_completeness\": true,\n \"media_type\": \"image\",\n \"allowed_extensions\": [\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"webp\"\n ],\n \"max_file_size\": \"10\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "467a38ca-7712-494b-bc0d-76a7476aa08c", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"code\",\"type\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute code\",\"x-immutable\":true},\"labels\":{\"type\":\"object\",\"description\":\"Attribute labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"type\":{\"type\":\"string\",\"description\":\"Attribute type.\\nSee [type](https://api.akeneo.com/concepts/asset-manager.html#asset-attribute) section for more details.\\n\",\"enum\":[\"text\",\"media_link\",\"number\",\"media_file\",\"single_option\",\"multiple_options\",\"boolean\",\"date\",\"record\",\"asset_family_single_link\",\"asset_family_multiple_links\",\"auto_tagging\"],\"x-immutable\":true},\"value_per_locale\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is localizable, i.e. can have one value by locale\",\"default\":false,\"x-immutable\":true},\"value_per_channel\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is scopable, i.e. can have one value by channel\",\"default\":false,\"x-immutable\":true},\"is_required_for_completeness\":{\"type\":\"boolean\",\"description\":\"Whether the attribute should be part of the record's completeness calculation\",\"default\":false},\"is_read_only\":{\"type\":\"boolean\",\"description\":\"Whether the attribute should be in read only mode only in the UI, but you can still update it with the API\",\"default\":false},\"max_characters\":{\"type\":[\"integer\",\"null\"],\"description\":\"Maximum number of characters allowed for the value of the attribute when the attribute type is `text`\",\"x-warning\":\"Only for `text` attribute type\"},\"is_textarea\":{\"type\":\"boolean\",\"description\":\"Whether the UI should display a text area instead of a simple field when the attribute type is `text`\",\"default\":false,\"x-warning\":\"Only for `text` attribute type\"},\"is_rich_text_editor\":{\"type\":\"boolean\",\"description\":\"Whether the UI should display a rich text editor instead of a simple text area when the attribute type is `text`\",\"x-validation-rules\":\"Required when the property `is_textarea` is equal to `true`\",\"x-warning\":\"Only for `text` attribute type\"},\"validation_rule\":{\"type\":[\"string\",\"null\"],\"description\":\"Validation rule type used to validate the attribute value when the attribute type is `text`\",\"default\":\"none\",\"x-warning\":\"Only for `text` attribute type\",\"enum\":[\"email\",\"url\",\"regular_expression\",\"none\",null]},\"validation_regexp\":{\"type\":[\"string\",\"null\"],\"description\":\"Regexp expression used to validate the attribute value when the attribute type is `text`\",\"default\":null,\"x-validation-rules\":\"Required when the property `validation_rule` is equal to `regular_expression`\",\"x-warning\":\"Only for `text` attribute type\"},\"allowed_extensions\":{\"type\":\"array\",\"description\":\"Extensions allowed when the attribute type is `media_file`\",\"default\":[],\"x-warning\":\"Only for `media_file` attribute type\",\"items\":{\"type\":\"string\"}},\"max_file_size\":{\"type\":[\"string\",\"null\"],\"description\":\"Max file size in MB when the attribute type is `media_file`\",\"default\":null,\"x-warning\":\"Only for `media_file` attribute type\"},\"decimals_allowed\":{\"type\":\"boolean\",\"description\":\"Whether decimals are allowed when the attribute type is\\n`number`\\n\",\"default\":false,\"x-warning\":\"Only for `number` attribute type\"},\"min_value\":{\"type\":[\"string\",\"null\"],\"description\":\"Minimum value allowed when the attribute type is `number`\",\"default\":null,\"x-validation-rules\":\"The minimum value must be lower than the maximum value\",\"x-warning\":\"Only for `number` attribute type\"},\"max_value\":{\"type\":[\"string\",\"null\"],\"description\":\"Maximum value allowed when the attribute type is `number`\",\"default\":null,\"x-validation-rules\":\"The maximum value must be greater than the minimum value\",\"x-warning\":\"Only for `number` attribute type\"},\"media_type\":{\"type\":\"string\",\"description\":\"For the `media_link` attribute type, it is the type of the media behind the url, to allow its preview in the PIM.\\nFor the `media_file` attribute type, it is the type of the file.\\n\",\"enum\":[\"image\",\"pdf\",\"youtube\",\"vimeo\",\"other\"],\"x-warning\":\"Only required for `media_link` and `media_file` attribute types\"},\"prefix\":{\"type\":[\"string\",\"null\"],\"description\":\"Prefix of the `media_link` attribute type.\\nThe common url root that prefixes the link to the media.\\n\",\"default\":null,\"x-warning\":\"Only for `media_link` attribute type\"},\"suffix\":{\"type\":[\"string\",\"null\"],\"description\":\"Suffix of the `media_link` attribute type.\\nThe common url suffix for the media.\\n\",\"default\":null,\"x-warning\":\"Only for `media_link` attribute type\"},\"reference_entity\":{\"type\":[\"string\",\"null\"],\"description\":\"Reference entity code for the `record` attribute type (see [Reference entity](https://api.akeneo.com/api-reference.html#Referenceentity))\",\"default\":null,\"x-warning\":\"Only for `record` attribute type\"},\"asset_family_code\":{\"type\":[\"string\",\"null\"],\"description\":\"Asset family code for the `asset_family_single_link` and `asset_family_multiple_links` attribute types\",\"default\":null,\"x-warning\":\"Only for `asset_family_single_link` and `asset_family_multiple_links` attribute types\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "c8e09333-f3fd-4ebd-ac50-66f73fa596b6", + "name": "Get the list of attributes of a given asset family", + "request": { + "name": "Get the list of attributes of a given asset family", + "description": "List attributes of an asset family.\n\nTypes: `media_file`, `media_link`, `text`, `number`, `single_option`, `multiple_options`, `boolean`.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/attributes", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "attributes" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Attributes", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"code\": \"label\",\n \"labels\": {\n \"en_US\": \"Label\"\n },\n \"type\": \"text\",\n \"value_per_locale\": true\n },\n {\n \"code\": \"main_image\",\n \"labels\": {\n \"en_US\": \"Main image\"\n },\n \"type\": \"media_file\",\n \"media_type\": \"image\",\n \"allowed_extensions\": [\n \"jpg\",\n \"png\",\n \"webp\"\n ]\n },\n {\n \"code\": \"model_wears_size\",\n \"labels\": {\n \"en_US\": \"Model wears size\"\n },\n \"type\": \"single_option\"\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "24b1a0f6-1bb9-44e9-af7d-a1e60ec1d137", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"required\":[\"code\",\"type\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute code\",\"x-immutable\":true},\"labels\":{\"type\":\"object\",\"description\":\"Attribute labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute label for the specified locale\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"},\"type\":{\"type\":\"string\",\"description\":\"Attribute type.\\nSee [type](https://api.akeneo.com/concepts/asset-manager.html#asset-attribute) section for more details.\\n\",\"enum\":[\"text\",\"media_link\",\"number\",\"media_file\",\"single_option\",\"multiple_options\",\"boolean\",\"date\",\"record\",\"asset_family_single_link\",\"asset_family_multiple_links\",\"auto_tagging\"],\"x-immutable\":true},\"value_per_locale\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is localizable, i.e. can have one value by locale\",\"default\":false,\"x-immutable\":true},\"value_per_channel\":{\"type\":\"boolean\",\"description\":\"Whether the attribute is scopable, i.e. can have one value by channel\",\"default\":false,\"x-immutable\":true},\"is_required_for_completeness\":{\"type\":\"boolean\",\"description\":\"Whether the attribute should be part of the record's completeness calculation\",\"default\":false},\"is_read_only\":{\"type\":\"boolean\",\"description\":\"Whether the attribute should be in read only mode only in the UI, but you can still update it with the API\",\"default\":false},\"max_characters\":{\"type\":[\"integer\",\"null\"],\"description\":\"Maximum number of characters allowed for the value of the attribute when the attribute type is `text`\",\"x-warning\":\"Only for `text` attribute type\"},\"is_textarea\":{\"type\":\"boolean\",\"description\":\"Whether the UI should display a text area instead of a simple field when the attribute type is `text`\",\"default\":false,\"x-warning\":\"Only for `text` attribute type\"},\"is_rich_text_editor\":{\"type\":\"boolean\",\"description\":\"Whether the UI should display a rich text editor instead of a simple text area when the attribute type is `text`\",\"x-validation-rules\":\"Required when the property `is_textarea` is equal to `true`\",\"x-warning\":\"Only for `text` attribute type\"},\"validation_rule\":{\"type\":[\"string\",\"null\"],\"description\":\"Validation rule type used to validate the attribute value when the attribute type is `text`\",\"default\":\"none\",\"x-warning\":\"Only for `text` attribute type\",\"enum\":[\"email\",\"url\",\"regular_expression\",\"none\",null]},\"validation_regexp\":{\"type\":[\"string\",\"null\"],\"description\":\"Regexp expression used to validate the attribute value when the attribute type is `text`\",\"default\":null,\"x-validation-rules\":\"Required when the property `validation_rule` is equal to `regular_expression`\",\"x-warning\":\"Only for `text` attribute type\"},\"allowed_extensions\":{\"type\":\"array\",\"description\":\"Extensions allowed when the attribute type is `media_file`\",\"default\":[],\"x-warning\":\"Only for `media_file` attribute type\",\"items\":{\"type\":\"string\"}},\"max_file_size\":{\"type\":[\"string\",\"null\"],\"description\":\"Max file size in MB when the attribute type is `media_file`\",\"default\":null,\"x-warning\":\"Only for `media_file` attribute type\"},\"decimals_allowed\":{\"type\":\"boolean\",\"description\":\"Whether decimals are allowed when the attribute type is\\n`number`\\n\",\"default\":false,\"x-warning\":\"Only for `number` attribute type\"},\"min_value\":{\"type\":[\"string\",\"null\"],\"description\":\"Minimum value allowed when the attribute type is `number`\",\"default\":null,\"x-validation-rules\":\"The minimum value must be lower than the maximum value\",\"x-warning\":\"Only for `number` attribute type\"},\"max_value\":{\"type\":[\"string\",\"null\"],\"description\":\"Maximum value allowed when the attribute type is `number`\",\"default\":null,\"x-validation-rules\":\"The maximum value must be greater than the minimum value\",\"x-warning\":\"Only for `number` attribute type\"},\"media_type\":{\"type\":\"string\",\"description\":\"For the `media_link` attribute type, it is the type of the media behind the url, to allow its preview in the PIM.\\nFor the `media_file` attribute type, it is the type of the file.\\n\",\"enum\":[\"image\",\"pdf\",\"youtube\",\"vimeo\",\"other\"],\"x-warning\":\"Only required for `media_link` and `media_file` attribute types\"},\"prefix\":{\"type\":[\"string\",\"null\"],\"description\":\"Prefix of the `media_link` attribute type.\\nThe common url root that prefixes the link to the media.\\n\",\"default\":null,\"x-warning\":\"Only for `media_link` attribute type\"},\"suffix\":{\"type\":[\"string\",\"null\"],\"description\":\"Suffix of the `media_link` attribute type.\\nThe common url suffix for the media.\\n\",\"default\":null,\"x-warning\":\"Only for `media_link` attribute type\"},\"reference_entity\":{\"type\":[\"string\",\"null\"],\"description\":\"Reference entity code for the `record` attribute type (see [Reference entity](https://api.akeneo.com/api-reference.html#Referenceentity))\",\"default\":null,\"x-warning\":\"Only for `record` attribute type\"},\"asset_family_code\":{\"type\":[\"string\",\"null\"],\"description\":\"Asset family code for the `asset_family_single_link` and `asset_family_multiple_links` attribute types\",\"default\":null,\"x-warning\":\"Only for `asset_family_single_link` and `asset_family_multiple_links` attribute types\"}}}]}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "cbfcfcfd-6f09-4b25-8a56-9f5c0d21afbb", + "name": "Update/create an attribute of a given asset family", + "request": { + "name": "Update/create an attribute of a given asset family", + "description": "Update or create an attribute for an asset family.\n\nImmutable after creation: `type`, `media_type`.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/attributes/{{assetAttributeCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "attributes", + "{{assetAttributeCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"model_is_wearing_size\",\n \"labels\": {\n \"en_US\": \"Model is wearing size\",\n \"fr_FR\": \"Le mannequin porte la taille\"\n },\n \"type\": \"single_option\",\n \"value_per_locale\": false,\n \"value_per_channel\": false,\n \"is_required_for_completeness\": true,\n \"is_read_only\": false\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated/Created", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "5718834d-2683-4873-954d-20533c26fa85", + "name": "Asset attribute option", + "description": "Manage options for single_option and multiple_options asset attributes.\n\nSee: https://api.akeneo.com/api-reference-index.html#asset-attribute-options", + "item": [ + { + "id": "686bb3b5-c979-403c-ad26-446b0f165f81", + "name": "Get a list of attribute options of a given attribute for a given asset family", + "request": { + "name": "Get a list of attribute options of a given attribute for a given asset family", + "description": "List options for a `single_option` or `multiple_options` asset attribute.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/attributes/{{assetAttributeCode}}/options", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "attributes", + "{{assetAttributeCode}}", + "options" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Options", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"code\": \"xs\",\n \"labels\": {\n \"en_US\": \"XS\"\n }\n },\n {\n \"code\": \"s\",\n \"labels\": {\n \"en_US\": \"S\"\n }\n },\n {\n \"code\": \"m\",\n \"labels\": {\n \"en_US\": \"M\"\n }\n },\n {\n \"code\": \"l\",\n \"labels\": {\n \"en_US\": \"L\"\n }\n },\n {\n \"code\": \"xl\",\n \"labels\": {\n \"en_US\": \"XL\"\n }\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "e8c88ddf-e1d2-47f0-83f0-c606844cfa59", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes/:attribute_code/options - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes/:attribute_code/options - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute's option code\",\"x-immutable\":true},\"labels\":{\"type\":\"object\",\"description\":\"Attribute option labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute label for the specified locale.\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"}}}]}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes/:attribute_code/options - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "c0127ce4-790e-4c29-b752-eeee08d23288", + "name": "Get an attribute option for a given attribute of a given asset family", + "request": { + "name": "Get an attribute option for a given attribute of a given asset family", + "description": "Retrieve a single asset attribute option.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/attributes/{{assetAttributeCode}}/options/{{assetAttributeOptionCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "attributes", + "{{assetAttributeCode}}", + "options", + "{{assetAttributeOptionCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Option", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"s\",\n \"labels\": {\n \"en_US\": \"S\",\n \"fr_FR\": \"S\"\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "dceb9416-ca1f-45e6-9c97-919cb9ea1e67", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes/:attribute_code/options/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes/:attribute_code/options/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Attribute's option code\",\"x-immutable\":true},\"labels\":{\"type\":\"object\",\"description\":\"Attribute option labels for each locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"description\":\"Attribute label for the specified locale.\",\"type\":[\"string\",\"null\"]}},\"x-validation-rules\":\"The `localeCode` is the code of an existing and activated locale\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/attributes/:attribute_code/options/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "831faaff-24e5-412d-b612-875de131aa46", + "name": "Update/create an asset attribute option for a given asset family", + "request": { + "name": "Update/create an asset attribute option for a given asset family", + "description": "Update or create an option. Only `labels` can be updated after creation.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/attributes/{{assetAttributeCode}}/options/{{assetAttributeOptionCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "attributes", + "{{assetAttributeCode}}", + "options", + "{{assetAttributeOptionCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"small\",\n \"labels\": {\n \"en_US\": \"S\",\n \"fr_FR\": \"S\"\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated/Created", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "3b818052-b085-4665-bae9-207c17eeae9a", + "name": "Asset media file", + "description": "Upload and download media files for assets.\n\nSee: https://api.akeneo.com/api-reference-index.html#asset-media-files", + "item": [ + { + "id": "cb0ad594-c4ca-4673-b6a5-6fd851b46e2a", + "name": "Create a new media file for an asset", + "request": { + "name": "Create a new media file for an asset", + "description": "Upload a binary file for an asset's `media_file` attribute.\n\nSend as `multipart/form-data` with a `file` field. Response `Location` header returns the file code.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-media-files", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-media-files" + ], + "query": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Equal to 'multipart/form-data' (with [boundary value](https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2)), no other value allowed.\n", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "formdata", + "formdata": [ + { + "description": { + "content": "(Required) The binary of the media file", + "type": "text/plain" + }, + "key": "file", + "type": "file" + } + ] + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "https://my-pim.cloud.akeneo.com/api/rest/v1/asset-media-files/0/f/5/0/image.jpg" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "95607805-4515-4d8c-b864-642d5ff5496a", + "name": "Download the media file associated to an asset", + "request": { + "name": "Download the media file associated to an asset", + "description": "Download the binary content of an asset media file.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-media-files/{{assetMediaFileCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-media-files", + "{{assetMediaFileCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "image/png" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Binary content", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "image/jpeg" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "855b69b2-a5e1-4ef4-ab3a-3e65b6a9b10d", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/asset-media-files/:code - Content-Type is image/png\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"image/png\");\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "2d5e31a5-09d6-4279-b3f8-7aeb0e396eb7", + "name": "Asset", + "description": "Manage individual assets within asset families — digital files with metadata.\n\nSee: https://api.akeneo.com/api-reference-index.html#assets", + "item": [ + { + "id": "d6eef7a5-fff6-4077-b886-2605644714d8", + "name": "Delete an asset", + "request": { + "name": "Delete an asset", + "description": "Delete a single asset. Case-sensitive on family code. Cannot be undone.\n\nThe asset is unlinked from products but the media file remains on storage.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/assets/{{assetCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "assets", + "{{assetCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "DELETE", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Deleted", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "067d08cc-2d8e-4c91-9fe1-242aa1d91e75", + "type": "text/javascript", + "exec": [ + "// Validate if response has empty Body \npm.test(\"[DELETE]::/api/rest/v1/asset-families/:asset_family_code/assets/:code - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "e1f41d1d-26fb-4904-a9bc-4658f6215082", + "name": "Get an asset of a given asset family", + "request": { + "name": "Get an asset of a given asset family", + "description": "Retrieve a single asset. Case-sensitive on family code.\n\nSet `with_asset_auto_tags=true` for AI-generated tags.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/assets/{{assetCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "assets", + "{{assetCode}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Return labels of asset tags generated by auto-tagging in the response.", + "type": "text/plain" + }, + "key": "with_asset_auto_tags", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Asset", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"code\": \"sku_54628_picture1\",\n \"values\": {\n \"media_preview\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"sku_54628_picture1.jpg\"\n }\n ],\n \"model_wears_size\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"s\"\n }\n ],\n \"photographer\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"ben_levy\"\n }\n ],\n \"label\": [\n {\n \"locale\": \"en_US\",\n \"channel\": null,\n \"data\": \"Front view \\u2014 SKU 54628\"\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "66d23bc6-0b97-4f01-9b9e-742415b6392f", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/assets/:code - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/assets/:code - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Code of the asset\",\"x-immutable\":true},\"asset_family_code\":{\"type\":\"string\",\"description\":\"Code of the asset family\",\"x-immutable\":true},\"values\":{\"type\":\"object\",\"description\":\"Asset attributes values.\\nSee the [Focus on the asset values](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-asset-values) section for more details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"locale\",\"channel\",\"data\"],\"properties\":{\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"Channel code of the asset attribute value\"},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"Locale code of the asset attribute value\"},\"data\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Asset attribute value.\\nSee [the `data` format](https://api.akeneo.com/concepts/asset-manager.html#the-data-format) section for more details.\\n\"},\"linked_data\":{\"type\":\"object\",\"description\":\"Linked data for `media link` and `auto tags` attribute values.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/asset-manager.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/asset-manager.html#asset-attribute) section for more details.\",\"enum\":[\"text\",\"single_option\",\"multiple_options\",\"number\",\"media_file\",\"media_link\",\"boolean\",\"date\",\"record\",\"auto_tagging\"]},\"_links\":{\"type\":\"object\",\"description\":\"Related links for the `media file` attribute values.\\nSee [the `_links` format](https://api.akeneo.com/concepts/asset-manager.html#the-_links-format) section for more details.\\n\",\"x-validation-rules\":\"The share link is returned when asset sharing is enabled\"}}}}},\"x-validation-rules\":\"Validation rules detailed in Asset attribute values section\"},\"created\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date of creation\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date of the last update\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/assets/:code - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "ede7e876-5297-44c6-8c02-4f82cdf8e0bd", + "name": "Get the list of the assets of a given asset family", + "request": { + "name": "Get the list of the assets of a given asset family", + "description": "List assets of a family. Case-sensitive on `{{assetFamilyCode}}`.\n\nFilters: `code` IN, `updated` >, >=, BETWEEN, NOT BETWEEN, SINCE LAST N DAYS.\n\nUse `with_asset_auto_tags=true` to include AI-generated tags.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/assets", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "assets" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter asset values to return scopable asset attributes for the given channel as well as the non localizable/non scopable asset attributes,\nfor more details see the [Filter asset values by channel](https://api.", + "type": "text/plain" + }, + "key": "channel", + "value": "ecommerce" + }, + { + "disabled": true, + "description": { + "content": "Filter asset values to return localizable asset attributes for the given locales as well as the non localizable/non scopable asset attributes,\nfor more details see the [Filter asset values by locale](https://api.", + "type": "text/plain" + }, + "key": "locales", + "value": "en_US,fr_FR" + }, + { + "disabled": true, + "description": { + "content": "Filter assets,\nfor more details see the [Asset filters](https://api.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"code\":[{\"operator\":\"IN\",\"value\":[\"code1\",\"code2\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the assets by their update date", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\">\",\"value\":\"2018-07-04T10:00:00Z\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the assets that were updated over a period of time", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\"NOT BETWEEN\",\"value\":[\"2018-07-04T10:00:00Z\",\"2018-08-04T10:00:00Z\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Filter the assets that were updated since X days", + "type": "text/plain" + }, + "key": "search", + "value": "{\"updated\":[{\"operator\":\"SINCE LAST N DAYS\",\"value\":4}]}" + }, + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + }, + { + "disabled": true, + "description": { + "content": "Return labels of asset tags generated by auto-tagging in the response.", + "type": "text/plain" + }, + "key": "with_asset_auto_tags", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "54a656f7-9c0a-4418-8217-41ae51e08924", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/assets - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/assets - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Asset\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"required\":[\"code\"],\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Code of the asset\",\"x-immutable\":true},\"asset_family_code\":{\"type\":\"string\",\"description\":\"Code of the asset family\",\"x-immutable\":true},\"values\":{\"type\":\"object\",\"description\":\"Asset attributes values.\\nSee the [Focus on the asset values](https://api.akeneo.com/concepts/asset-manager.html#focus-on-the-asset-values) section for more details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"locale\",\"channel\",\"data\"],\"properties\":{\"channel\":{\"type\":[\"string\",\"null\"],\"description\":\"Channel code of the asset attribute value\"},\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"Locale code of the asset attribute value\"},\"data\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\"},{\"type\":\"null\"}],\"description\":\"Asset attribute value.\\nSee [the `data` format](https://api.akeneo.com/concepts/asset-manager.html#the-data-format) section for more details.\\n\"},\"linked_data\":{\"type\":\"object\",\"description\":\"Linked data for `media link` and `auto tags` attribute values.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/asset-manager.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/asset-manager.html#asset-attribute) section for more details.\",\"enum\":[\"text\",\"single_option\",\"multiple_options\",\"number\",\"media_file\",\"media_link\",\"boolean\",\"date\",\"record\",\"auto_tagging\"]},\"_links\":{\"type\":\"object\",\"description\":\"Related links for the `media file` attribute values.\\nSee [the `_links` format](https://api.akeneo.com/concepts/asset-manager.html#the-_links-format) section for more details.\\n\",\"x-validation-rules\":\"The share link is returned when asset sharing is enabled\"}}}}},\"x-validation-rules\":\"Validation rules detailed in Asset attribute values section\"},\"created\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date of creation\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date of the last update\"}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/asset-families/:asset_family_code/assets - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "408cdcb9-c6a2-42f6-8d6e-4c3b9176e0d3", + "name": "Update/create an asset", + "request": { + "name": "Update/create an asset", + "description": "Update or create a single asset. Values are merged — only attributes you send are changed.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/assets/{{assetCode}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "assets", + "{{assetCode}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"code\": \"sku_54628_picture1\",\n \"values\": {\n \"media_preview\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"sku_54628_picture1.jpg\",\n \"attribute_type\": \"media_file\"\n }\n ],\n \"model_wears_size\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"s\",\n \"attribute_type\": \"single_option\"\n }\n ],\n \"photographer\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"ben_levy\",\n \"attribute_type\": \"text\"\n }\n ],\n \"main_colors\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": [\n \"red\",\n \"purple\"\n ],\n \"attribute_type\": \"multiple_options\"\n }\n ],\n \"end_of_use_date\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": \"02/03/2021\",\n \"attribute_type\": \"date\"\n }\n ],\n \"auto_tags\": [\n {\n \"locale\": null,\n \"channel\": null,\n \"data\": [\n \"outdoor\",\n \"fashion\"\n ],\n \"linked_data\": {\n \"outdoor\": {\n \"labels\": {\n \"en_US\": \"Outdoor\",\n \"fr_FR\": \"Plein air\"\n }\n },\n \"fashion\": {\n \"labels\": {\n \"en_US\": \"Fashion\",\n \"fr_FR\": \"Mode\"\n }\n }\n },\n \"attribute_type\": \"auto_tagging\"\n }\n ]\n },\n \"created\": \"2021-05-31T09:23:34+00:00\",\n \"updated\": \"2021-05-31T09:23:34+00:00\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated/Created", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "529873a7-ed58-40db-9ab5-9d957ca52085", + "name": "Update/create several assets", + "request": { + "name": "Update/create several assets", + "description": "Batch upsert assets. Send as JSON array.\n\nUpload media files first via the asset media endpoint, then reference file codes in values.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/asset-families/{{assetFamilyCode}}/assets", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "asset-families", + "{{assetFamilyCode}}", + "assets" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "[\n {\n \"code\": \"sku_54628_picture1\",\n \"values\": {\n \"media_preview\": [\n {\n \"data\": \"sku_54628_picture1.jpg\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"media_file\"\n }\n ],\n \"model_wears_size\": [\n {\n \"data\": \"s\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"single_option\"\n }\n ],\n \"photographer\": [\n {\n \"data\": \"ben_levy\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"text\"\n }\n ],\n \"main_colors\": [\n {\n \"data\": [\n \"red\",\n \"purple\"\n ],\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"multiple_options\"\n }\n ],\n \"end_of_use_date\": [\n {\n \"data\": \"02/03/2021\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"date\"\n }\n ],\n \"auto_tags\": [\n {\n \"data\": [\n \"outdoor\",\n \"fashion\"\n ],\n \"channel\": null,\n \"locale\": null,\n \"linked_data\": {\n \"outdoor\": {\n \"labels\": {\n \"en_US\": \"Outdoor\",\n \"fr_FR\": \"Plein air\"\n }\n },\n \"fashion\": {\n \"labels\": {\n \"en_US\": \"Fashion\",\n \"fr_FR\": \"Mode\"\n }\n }\n },\n \"attribute_type\": \"auto_tagging\"\n }\n ]\n },\n \"created\": \"2021-05-31T09:23:34+00:00\",\n \"updated\": \"2021-05-31T09:23:34+00:00\"\n },\n {\n \"code\": \"sku_54628_picture2\",\n \"values\": {\n \"media_preview\": [\n {\n \"data\": \"sku_54628_picture2.jpg\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"media_file\"\n }\n ],\n \"model_wears_size\": [\n {\n \"data\": \"s\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"single_option\"\n }\n ],\n \"photographer\": [\n {\n \"data\": \"ben_levy\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"text\"\n }\n ],\n \"main_colors\": [\n {\n \"data\": [\n \"blue\",\n \"white\"\n ],\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"multiple_options\"\n }\n ],\n \"end_of_use_date\": [\n {\n \"data\": \"02/03/2021\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"date\"\n }\n ],\n \"auto_tags\": [\n {\n \"data\": [\n \"indoor\",\n \"fashion\"\n ],\n \"channel\": null,\n \"locale\": null,\n \"linked_data\": {\n \"indoor\": {\n \"labels\": {\n \"en_US\": \"Indoor\",\n \"fr_FR\": \"Intérieur\"\n }\n },\n \"fashion\": {\n \"labels\": {\n \"en_US\": \"Fashion\",\n \"fr_FR\": \"Mode\"\n }\n }\n },\n \"attribute_type\": \"auto_tagging\"\n }\n ]\n },\n \"created\": \"2021-05-31T09:23:34+00:00\",\n \"updated\": \"2021-05-31T09:23:34+00:00\"\n },\n {\n \"code\": \"sku_54628_picture3\",\n \"values\": {\n \"media_preview\": [\n {\n \"data\": \"sku_54628_picture3.jpg\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"media_file\"\n }\n ],\n \"model_wears_size\": [\n {\n \"data\": \"s\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"single_option\"\n }\n ],\n \"photographer\": [\n {\n \"data\": \"ben_levy\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"text\"\n }\n ],\n \"main_colors\": [\n {\n \"data\": [\n \"purple\"\n ],\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"multiple_options\"\n }\n ],\n \"end_of_use_date\": [\n {\n \"data\": \"02/03/2021\",\n \"channel\": null,\n \"locale\": null,\n \"attribute_type\": \"date\"\n }\n ],\n \"auto_tags\": [\n {\n \"data\": [\n \"outdoor\",\n \"fashion\"\n ],\n \"channel\": null,\n \"locale\": null,\n \"linked_data\": {\n \"outdoor\": {\n \"labels\": {\n \"en_US\": \"Outdoor\",\n \"fr_FR\": \"Plein air\"\n }\n },\n \"fashion\": {\n \"labels\": {\n \"en_US\": \"Fashion\",\n \"fr_FR\": \"Mode\"\n }\n }\n },\n \"attribute_type\": \"auto_tagging\"\n }\n ]\n },\n \"created\": \"2021-05-31T09:23:34+00:00\",\n \"updated\": \"2021-05-31T09:23:34+00:00\"\n }\n]", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Batch results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"code\": \"sku_54628_picture1\",\n \"status_code\": 204\n },\n {\n \"code\": \"sku_54628_picture2\",\n \"status_code\": 201\n }\n]" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "297b034e-31ca-4af5-bdc6-5d8d0b1e186f", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/asset-families/:asset_family_code/assets - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/asset-families/:asset_family_code/assets - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Resource code\"},\"status_code\":{\"type\":\"integer\",\"description\":\"HTTP status code,\\nsee [Client errors](https://api.akeneo.com/documentation/responses.html#client-errors) to understand the meaning of each code\\n\"},\"message\":{\"type\":\"string\",\"description\":\"Message explaining the error\"}},\"required\":[\"code\",\"status_code\"]}}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/asset-families/:asset_family_code/assets - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + } + ], + "event": [] + }, + { + "id": "145ccc17-43ef-49dd-b921-57c45758d65b", + "name": "Catalogs for Apps", + "description": "Manage catalogs, catalog products, and mapping schemas for connected apps.\n\nSee: https://api.akeneo.com/api-reference-index.html#CatalogsforApps", + "item": [ + { + "id": "ce48de1d-0a1c-4413-a158-bb2d6d6677b2", + "name": "Catalogs", + "description": "Manage catalogs — curated selections of products with filters, used by Connected Apps to consume product data.\n\nSee: https://api.akeneo.com/api-reference-index.html#catalogs", + "item": [ + { + "id": "cd5d97e4-cc8d-4683-8d4e-950827f2a5a3", + "name": "Create a new catalog", + "request": { + "name": "Create a new catalog", + "description": "Create a new catalog. Created in disabled state by default.\n\nAfter creation, configure product selection criteria and optionally a mapping schema.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"My app catalog\",\n \"managed_currencies\": [\n \"EUR\",\n \"USD\",\n \"GBP\"\n ],\n \"managed_locales\": [\n \"fr_FR\",\n \"en_US\"\n ]\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Created", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "{{baseUrl}}/api/rest/v1/resource-path" + } + ], + "body": "{\n \"id\": \"12351d98-200e-4bbc-aa19-7fdda1bd14f2\",\n \"name\": \"My app catalog\",\n \"enabled\": false\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "b8c8d835-a949-487c-b361-4db2da33513b", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/rest/v1/catalogs - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/rest/v1/catalogs - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Catalog id\",\"x-immutable\":true},\"name\":{\"type\":\"string\",\"description\":\"Catalog name\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the catalog is enabled or not\",\"default\":false},\"managed_currencies\":{\"type\":\"array\",\"description\":\"List of currency codes\",\"items\":{\"type\":\"string\"}},\"managed_locales\":{\"type\":\"array\",\"description\":\"List of locale codes\",\"items\":{\"type\":\"string\"}}},\"example\":{\"id\":\"12351d98-200e-4bbc-aa19-7fdda1bd14f2\",\"name\":\"My app catalog\",\"enabled\":false,\"managed_currencies\":[\"EUR\",\"USD\",\"GBP\"],\"managed_locales\":[\"fr_FR\",\"en_US\"]}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/rest/v1/catalogs - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "141b1ff9-1beb-495a-9721-740d02f17f84", + "name": "Delete a catalog", + "request": { + "name": "Delete a catalog", + "description": "Permanently delete a catalog and its configuration. Cannot be undone.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "DELETE", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Deleted", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "1b8d971d-f1e0-470d-898b-11f2d1704545", + "type": "text/javascript", + "exec": [ + "// Validate if response has empty Body \npm.test(\"[DELETE]::/api/rest/v1/catalogs/:id - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "c4ced862-cbe2-4773-8619-18d5ad66ec3b", + "name": "Duplicate a catalog", + "request": { + "name": "Duplicate a catalog", + "description": "Duplicate a catalog. The copy inherits all filters and mapping but is created disabled.\n\nUse case: Create a regional variant based on an existing catalog.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}/duplicate", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}", + "duplicate" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Duplicated", + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Location", + "value": "{{baseUrl}}/api/rest/v1/resource-path" + } + ], + "body": "{\n \"id\": \"aaaabbbb-cccc-dddd-eeee-ffffffffffff\",\n \"name\": \"Copy of Ecommerce US\",\n \"enabled\": false\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "3ba42a2a-d4b3-4f39-9bcf-f1ad88f3afa9", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/rest/v1/catalogs/:id/duplicate - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/rest/v1/catalogs/:id/duplicate - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Catalog id\",\"x-immutable\":true},\"name\":{\"type\":\"string\",\"description\":\"Catalog name\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the catalog is enabled or not\",\"default\":false},\"managed_currencies\":{\"type\":\"array\",\"description\":\"List of currency codes\",\"items\":{\"type\":\"string\"}},\"managed_locales\":{\"type\":\"array\",\"description\":\"List of locale codes\",\"items\":{\"type\":\"string\"}}},\"example\":{\"id\":\"12351d98-200e-4bbc-aa19-7fdda1bd14f2\",\"name\":\"My app catalog\",\"enabled\":false,\"managed_currencies\":[\"EUR\",\"USD\",\"GBP\"],\"managed_locales\":[\"fr_FR\",\"en_US\"]}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/rest/v1/catalogs/:id/duplicate - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "e450139e-2192-4ae5-87a9-a50f1a739e89", + "name": "Get a catalog", + "request": { + "name": "Get a catalog", + "description": "Retrieve a single catalog with its configuration, filters, and mapping status.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Catalog", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"id\": \"12351d98-200e-4bbc-aa19-7fdda1bd14f2\",\n \"name\": \"Ecommerce US\",\n \"enabled\": true,\n \"managed_currencies\": [\n \"USD\",\n \"GBP\"\n ],\n \"managed_locales\": [\n \"en_US\",\n \"en_GB\"\n ],\n \"product_selection_criteria\": {\n \"family\": [\n {\n \"operator\": \"IN\",\n \"value\": [\n \"clothing\",\n \"shoes\"\n ]\n }\n ]\n },\n \"has_product_mapping_schema\": true\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "26ca6823-151c-42ae-9300-d488de0456c7", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/catalogs/:id - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/catalogs/:id - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Catalog id\",\"x-immutable\":true},\"name\":{\"type\":\"string\",\"description\":\"Catalog name\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the catalog is enabled or not\",\"default\":false},\"managed_currencies\":{\"type\":\"array\",\"description\":\"List of currency codes\",\"items\":{\"type\":\"string\"}},\"managed_locales\":{\"type\":\"array\",\"description\":\"List of locale codes\",\"items\":{\"type\":\"string\"}}},\"example\":{\"id\":\"12351d98-200e-4bbc-aa19-7fdda1bd14f2\",\"name\":\"My app catalog\",\"enabled\":false,\"managed_currencies\":[\"EUR\",\"USD\",\"GBP\"],\"managed_locales\":[\"fr_FR\",\"en_US\"]}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/catalogs/:id - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "fac4955c-d3de-4ed8-8412-224331f7ca3d", + "name": "Get the list of owned catalogs", + "request": { + "name": "Get the list of owned catalogs", + "description": "List catalogs owned by your Connected App.\n\nCatalogs are curated product selections with filters, used to share data with external applications.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Catalogs", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_embedded\": {\n \"items\": [\n {\n \"id\": \"12351d98-200e-4bbc-aa19-7fdda1bd14f2\",\n \"name\": \"Ecommerce US\",\n \"enabled\": true,\n \"managed_currencies\": [\n \"USD\"\n ],\n \"managed_locales\": [\n \"en_US\"\n ]\n },\n {\n \"id\": \"87654321-abcd-efgh-ijkl-123456789012\",\n \"name\": \"Mobile FR\",\n \"enabled\": false,\n \"managed_currencies\": [\n \"EUR\"\n ],\n \"managed_locales\": [\n \"fr_FR\"\n ]\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "9aed8389-25ac-4d55-a9ae-58385682a6f8", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/catalogs - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/catalogs - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Catalogs\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Catalog id\",\"x-immutable\":true},\"name\":{\"type\":\"string\",\"description\":\"Catalog name\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the catalog is enabled or not\",\"default\":false},\"managed_currencies\":{\"type\":\"array\",\"description\":\"List of currency codes\",\"items\":{\"type\":\"string\"}},\"managed_locales\":{\"type\":\"array\",\"description\":\"List of locale codes\",\"items\":{\"type\":\"string\"}}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/catalogs - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "c24b7e66-e553-4c98-9800-37e3ec82f59a", + "name": "Update a catalog", + "request": { + "name": "Update a catalog", + "description": "Update a catalog's name, currencies, locales, or enablement.\n\nDisable a catalog (`enabled: false`) to pause sync while making changes.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"My app catalog\",\n \"managed_currencies\": [\n \"EUR\",\n \"USD\",\n \"GBP\"\n ],\n \"managed_locales\": [\n \"fr_FR\",\n \"en_US\"\n ]\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"id\": \"12351d98-200e-4bbc-aa19-7fdda1bd14f2\",\n \"name\": \"My app catalog\",\n \"enabled\": true\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "bf4dd525-ffa1-4d3c-aa3d-2431cab6b9cb", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/rest/v1/catalogs/:id - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/rest/v1/catalogs/:id - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Catalog id\",\"x-immutable\":true},\"name\":{\"type\":\"string\",\"description\":\"Catalog name\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the catalog is enabled or not\",\"default\":false},\"managed_currencies\":{\"type\":\"array\",\"description\":\"List of currency codes\",\"items\":{\"type\":\"string\"}},\"managed_locales\":{\"type\":\"array\",\"description\":\"List of locale codes\",\"items\":{\"type\":\"string\"}}},\"example\":{\"id\":\"12351d98-200e-4bbc-aa19-7fdda1bd14f2\",\"name\":\"My app catalog\",\"enabled\":false,\"managed_currencies\":[\"EUR\",\"USD\",\"GBP\"],\"managed_locales\":[\"fr_FR\",\"en_US\"]}}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/rest/v1/catalogs/:id - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "bd034713-9508-4bbf-81e1-08aed9164351", + "name": "Catalog products", + "description": "Retrieve products from a catalog — get UUIDs, full product data, or mapped/flattened data based on the catalog's mapping schema.\n\nSee: https://api.akeneo.com/api-reference-index.html#catalog-products", + "item": [ + { + "id": "2e75383f-35ce-4e7b-b2b6-cb9e322a70f4", + "name": "Get a product related to a catalog", + "request": { + "name": "Get a product related to a catalog", + "description": "Retrieve a single product from a catalog by UUID.\n\nProduct data is filtered based on the catalog's locale and currency configuration.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}/products/{{productUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}", + "products", + "{{productUuid}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Catalog product", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"uuid\": \"25566245-55c3-42ce-86d9-8610ac459fa8\",\n \"enabled\": true,\n \"family\": \"tshirt\",\n \"values\": {\n \"name\": [\n {\n \"data\": \"Summer Top\",\n \"locale\": \"en_US\",\n \"scope\": null\n }\n ],\n \"price\": [\n {\n \"data\": [\n {\n \"amount\": \"29.99\",\n \"currency\": \"USD\"\n }\n ],\n \"locale\": null,\n \"scope\": null\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "8287ab6e-9536-4b48-ab36-2261914dcd95", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/catalogs/:id/products/:uuid - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/products/:uuid - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Product UUID\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the product is enabled\",\"default\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"groups\":{\"type\":\"array\",\"description\":\"Codes of the groups to which the product belong.\\nEach string of the array is equal to an existing group code.\\n\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing group code\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"root_parent\":{\"type\":\"string\",\"description\":\"Code of the root parent product model when the product is a variant\\n(only available when the `with_root_parent` is set to `true`).\\n\",\"default\":\"null\",\"x-validation-rules\":\"It is equal to an existing product model code only if the product is variant; otherwise, the property does not appear\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product uuids and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the uuid of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`).\\n\",\"x-immutable\":true},\"completenesses\":{\"type\":\"array\",\"description\":\"Product completenesses for each channel/locale combination\\n(only available when the `with_completenesses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"data\":{\"type\":\"integer\",\"description\":\"Completenesses score value for the given channel/locale combination\"}}},\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`)\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/products/:uuid - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "44a18848-5ef9-473d-ab95-bed4f2280910", + "name": "Get the list of mapped flattened products or simple products related to a catalog", + "request": { + "name": "Get the list of mapped flattened products or simple products related to a catalog", + "description": "Get mapped/flattened product data transformed via the catalog's mapping schema.\n\nRequires a mapping schema. Returns data in your app's format.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}/mapped-products", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}", + "mapped-products" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Filter products that have been updated BEFORE the provided date.", + "type": "text/plain" + }, + "key": "updated_before", + "value": "2025-05-17T10:00:00Z" + }, + { + "disabled": true, + "description": { + "content": "Filter products that have been updated AFTER the provided date.", + "type": "text/plain" + }, + "key": "updated_after", + "value": "2025-06-17T10:00:00Z" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "d70a44a6-3562-4955-a649-41554d56f5e5", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapped-products - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapped-products - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Mapped products\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"additionalProperties\":true}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapped-products - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "0d8a5b59-4103-45c7-81ea-79924fe165a9", + "name": "Get the list of mapped models related to a catalog", + "request": { + "name": "Get the list of mapped models related to a catalog", + "description": "Get mapped product models when using a models/variants schema.\n\nReturns parent-level data. Use the variants endpoint for size/color-level data.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}/mapped-models", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}", + "mapped-models" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Filter products that have been updated BEFORE the provided date.", + "type": "text/plain" + }, + "key": "updated_before", + "value": "2025-05-17T10:00:00Z" + }, + { + "disabled": true, + "description": { + "content": "Filter products that have been updated AFTER the provided date.", + "type": "text/plain" + }, + "key": "updated_after", + "value": "2025-06-17T10:00:00Z" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "974cb14e-4702-4c26-8ddb-dadf43852cce", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapped-models - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapped-models - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Mapped models\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"additionalProperties\":true}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapped-models - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "7df0e1c1-aca2-490b-937f-5018c40ea589", + "name": "Get the list of mapped variants of a model related to a catalog", + "request": { + "name": "Get the list of mapped variants of a model related to a catalog", + "description": "Get mapped variants of a specific model.\n\nExample: For a T-shirt model, returns each size/color variant with its mapped data.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}/mapped-models/{{productModelCode}}/variants", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}", + "mapped-models", + "{{productModelCode}}", + "variants" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Filter products that have been updated BEFORE the provided date.", + "type": "text/plain" + }, + "key": "updated_before", + "value": "2025-05-17T10:00:00Z" + }, + { + "disabled": true, + "description": { + "content": "Filter products that have been updated AFTER the provided date.", + "type": "text/plain" + }, + "key": "updated_after", + "value": "2025-06-17T10:00:00Z" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "77ca32a5-8afe-4eb5-a322-5d1d41d95cc1", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapped-models/:model_code/variants - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapped-models/:model_code/variants - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"additionalProperties\":true}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapped-models/:model_code/variants - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "c9baccaf-f974-4590-aeb8-0b5db39a1dc8", + "name": "Get the list of product uuids", + "request": { + "name": "Get the list of product uuids", + "description": "Get just UUIDs of products in a catalog (lightweight).\n\nUse `updated_after` for delta sync — get only products changed since your last sync.\n\nNote: A disabled catalog may return 200 with an error payload.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}/product-uuids", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}", + "product-uuids" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Filter products that have been updated BEFORE the provided date.", + "type": "text/plain" + }, + "key": "updated_before", + "value": "2025-05-17T10:00:00Z" + }, + { + "disabled": true, + "description": { + "content": "Filter products that have been updated AFTER the provided date.", + "type": "text/plain" + }, + "key": "updated_after", + "value": "2025-06-17T10:00:00Z" + }, + { + "disabled": true, + "description": { + "content": "Return the count of items in the response.", + "type": "text/plain" + }, + "key": "with_count", + "value": "true" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "00a64b61-e055-43ef-a41b-61e5f4ebfa0d", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/catalogs/:id/product-uuids - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/product-uuids - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Product uuids\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"items_count\":{\"type\":\"integer\",\"description\":\"Total number of items (only if `with_count` parameter is set to true)\"},\"_embedded\":{\"type\":\"object\",\"required\":[\"items\"],\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"uuid\"}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/product-uuids - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "fb87cdc0-c99f-45e1-ba6d-ee17bec4b769", + "name": "Get the list of products related to a catalog", + "request": { + "name": "Get the list of products related to a catalog", + "description": "Get full product data for products in a catalog.\n\nScoped to the catalog's locales and currencies. Use `updated_after`/`updated_before` for delta syncs.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}/products", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}", + "products" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Cursor when using the search_after pagination method type.", + "type": "text/plain" + }, + "key": "search_after", + "value": "qaXbcde" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Filter products that have been updated BEFORE the provided date.", + "type": "text/plain" + }, + "key": "updated_before", + "value": "2025-05-17T10:00:00Z" + }, + { + "disabled": true, + "description": { + "content": "Filter products that have been updated AFTER the provided date.", + "type": "text/plain" + }, + "key": "updated_after", + "value": "2025-06-17T10:00:00Z" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "1d52f231-fe39-4270-919a-4967a67b01be", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/catalogs/:id/products - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/products - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Catalog Products\",\"type\":\"object\",\"oneOf\":[{\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"_embedded\":{\"type\":\"object\",\"required\":[\"items\"],\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Product UUID\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the product is enabled\",\"default\":true},\"family\":{\"type\":[\"string\",\"null\"],\"description\":\"[Family](https://api.akeneo.com/api-reference.html#Family) code from which the product inherits its attributes and attributes requirements.\\nIn the case of variant product, the given family should be the same as the product model family.\\n\",\"default\":\"null only in the case of a non variant product\",\"x-validation-rules\":\"It is equal to an existing family code\"},\"categories\":{\"type\":\"array\",\"description\":\"Codes of the [categories](https://api.akeneo.com/api-reference.html#Category) in which the product is classified\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing category code\"},\"groups\":{\"type\":\"array\",\"description\":\"Codes of the groups to which the product belong.\\nEach string of the array is equal to an existing group code.\\n\",\"items\":{\"type\":\"string\"},\"default\":[],\"x-validation-rules\":\"Each string of the array is equal to an existing group code\"},\"parent\":{\"type\":[\"string\",\"null\"],\"description\":\"Code of the parent [product model](https://api.akeneo.com/api-reference.html#Productmodel) when the product is a variant\",\"default\":null,\"x-validation-rules\":\"- It is equal to an existing product model.\\n- This product model has the same family variant as the one given in the `family_variant field`.\\n\"},\"root_parent\":{\"type\":\"string\",\"description\":\"Code of the root parent product model when the product is a variant\\n(only available when the `with_root_parent` is set to `true`).\\n\",\"default\":\"null\",\"x-validation-rules\":\"It is equal to an existing product model code only if the product is variant; otherwise, the property does not appear\"},\"values\":{\"type\":\"object\",\"description\":\"Product attributes values.\\nEach key is an attribute code, and the value is an array of value objects for that attribute.\\nSee [documentation](https://api.akeneo.com/concepts/products.html#focus-on-the-product-values) for details.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"data\"],\"description\":\"A value for a given attribute, for a given locale/scope combination.\\n- locale: Locale code, or null if not localizable.\\n- scope: Channel code, or null if not scopable.\\n- data: The value for this attribute/locale/scope. Type and format depend on the attribute type (see Akeneo docs).\\n- linked_data: Additional data for select/multiselect/asset attributes. Read-only.\\n- attribute_type: The type of the value's attribute. Read-only.\\n- reference_data_name: Reference entity code or asset family code. Read-only.\\n\",\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"[Locale](https://api.akeneo.com/api-reference.html#Locale) code of the product value\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"[Channel](https://api.akeneo.com/api-reference.html#Channel) code of the product value\"},\"data\":{\"description\":\"The value for this attribute/locale/scope. Type and format depend on the attribute type.\\n- String for text, textarea, file, image, date, simple select, reference data simple select, reference entity.\\n- Array of strings for multi select, reference data multi select, reference entity collection, asset collection, PAM asset collection.\\n- Integer or string for number (depending on decimals_allowed).\\n- Boolean for boolean attributes.\\n- Object for metric, containing an \\\"amount\\\" (int) and \\\"unit\\\" (string) key.\\n- Object for product link, containing a \\\"type\\\" (string) and \\\"id\\\" (string) key.\\n- Object for table, containing different keys (int, boolean or string).\\n- Object for price, with a \\\"amount\\\" (int) and a \\\"currency\\\" (string) key.\\n\",\"anyOf\":[{\"type\":\"string\",\"description\":\"A reference entity value.\\nThe string is the code of the reference entity.\\n\"},{\"type\":\"array\",\"description\":\"A reference entity collection value.\\nThe array contains codes of reference entities.\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"array\",\"description\":\"An asset collection value.\\nThe array contains asset codes\\n\",\"items\":{\"type\":\"string\"}},{\"type\":\"boolean\",\"description\":\"A boolean value.\\nUsed for attributes of type `pim_catalog_boolean`.\\n\"},{\"type\":\"string\",\"format\":\"date\",\"description\":\"A date value in YYYY-MM-DD format.\\nUsed for attributes of type `pim_catalog_date`.\\n\"},{\"type\":\"string\",\"description\":\"A file value.\\nThe string is a file key referencing the uploaded file.\\n\"},{\"type\":\"string\",\"description\":\"An identifier value.\\nUsed for attributes of type `pim_catalog_identifier`.\\n\"},{\"type\":\"string\",\"description\":\"An image value.\\nThe string is a file key referencing the uploaded image.\\n\"},{\"type\":\"object\",\"description\":\"A metric value.\\nObject with amount and unit.\\n\",\"properties\":{\"amount\":{\"description\":\"The amount of the metric.\\n- String representing a number if allowed on attribute settings (\\\"decimals_allowed\\\" parameter).\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the metric\"}},\"required\":[\"amount\",\"unit\"]},{\"type\":\"array\",\"description\":\"A multi select value.\\nThe array contains option codes.\\n\",\"items\":{\"type\":\"string\"}},{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\",\"pattern\":\"^\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?$\"}],\"description\":\"A number value.\\nUsed for attributes of type `pim_catalog_number`.\\nCan be integer or decimal, depending on attribute settings (`decimals_allowed` parameter).\\n\"},{\"type\":\"array\",\"description\":\"A price collection value.\\nThe array contains objects with amount and currency.\\n\",\"items\":{\"type\":\"object\",\"required\":[\"amount\",\"currency\"],\"properties\":{\"amount\":{\"description\":\"The amount of the price.\\n- String representing a number if the attribute allows decimals.\\n- Integer if the attribute does not allow decimals.\\n\",\"oneOf\":[{\"type\":\"string\"},{\"type\":\"integer\"}]},\"currency\":{\"type\":\"string\",\"description\":\"The currency code\"}}}},{\"type\":\"object\",\"oneOf\":[{\"type\":\"object\",\"description\":\"Link to a product by UUID or identifier\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product by identifier\",\"required\":[\"type\",\"identifier\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\"],\"description\":\"The type of the linked entity\"},\"identifier\":{\"type\":[\"string\",\"null\"],\"description\":\"The identifier of the linked product\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Link to a product model by code\",\"required\":[\"type\",\"id\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The code of the linked product model\"}},\"additionalProperties\":false}],\"description\":\"A product link value. Object with:\\n - type: 'product' or 'product_model'\\n - id: UUID (for product) or code (for product_model)\\n - identifier: identifier (for product)\\nOnly one of id or identifier is present, depending on the type and linking method.\\n\"},{\"type\":\"string\",\"description\":\"A simple select value.\\nThe string is the option code.\\n\"},{\"type\":\"array\",\"description\":\"A table value. Each item in the array is a row, represented as an object.\\nEach key in the row object is a column code, and the value depends on the column type:\\n - string (for text, select, reference entity, date)\\n - integer or number (for number, depending on decimals_allowed)\\n - boolean (for yes/no)\\n - object (for product link, measurement, etc.)\\nThe first column is always a select, reference entity, incremental number, or product link.\\nThe table structure (columns and types) is defined in the attribute configuration.\\n\",\"items\":{\"type\":\"object\",\"description\":\"The value for the column identified by the key.\\nThe type of the value depends on the column type defined in the attribute configuration.\\n\",\"patternProperties\":{\"^\\\\w+$\":{\"oneOf\":[{\"type\":\"string\",\"description\":\"Text, select, reference entity, or date value\"},{\"type\":\"number\",\"description\":\"Decimal value (number column, with or without decimals)\"},{\"type\":\"boolean\",\"description\":\"Boolean value (yes/no column)\"},{\"type\":\"object\",\"description\":\"Product link value (see pim_catalog_product_link)\",\"required\":[\"type\"],\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"product\",\"product_model\"],\"description\":\"The type of the linked entity\"},\"id\":{\"type\":\"string\",\"description\":\"The UUID (for product) or code (for product_model)\"},\"identifier\":{\"type\":\"string\",\"description\":\"The identifier of the linked product (alternative to id for product)\"}},\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Measurement value (metric column)\",\"required\":[\"amount\",\"unit\"],\"properties\":{\"amount\":{\"oneOf\":[{\"type\":\"string\",\"pattern\":\"^-?\\\\d+\\\\.\\\\d+$\"},{\"type\":\"integer\"}],\"description\":\"The amount of the measurement\"},\"unit\":{\"type\":\"string\",\"description\":\"The unit of the measurement\"}},\"additionalProperties\":false}]}}}},{\"type\":\"string\",\"description\":\"A text value.\\nUsed for attributes of type `pim_catalog_text`.\\n\"},{\"type\":\"string\",\"description\":\"A textarea value.\\nUsed for attributes of type `pim_catalog_textarea`.\\n\"},{\"type\":\"null\",\"description\":\"Null value used to clear/remove attribute values\"}]},\"linked_data\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing additional data when a related query parameter is enabled.\\nSee [the `linked_data` format](https://api.akeneo.com/concepts/products.html#the-linked_data-format) section for more details.\\n\"},\"attribute_type\":{\"type\":\"string\",\"description\":\"The type of the value's attribute. See [type](https://api.akeneo.com/concepts/catalog-structure.html#attribute) section for more details.\",\"enum\":[\"pim_catalog_identifier\",\"pim_catalog_text\",\"pim_catalog_textarea\",\"pim_catalog_simpleselect\",\"pim_catalog_multiselect\",\"pim_catalog_boolean\",\"pim_catalog_date\",\"pim_catalog_number\",\"pim_catalog_metric\",\"pim_catalog_price_collection\",\"pim_catalog_image\",\"pim_catalog_file\",\"pim_catalog_asset_collection\",\"akeneo_reference_entity\",\"akeneo_reference_entity_collection\",\"pim_reference_data_simpleselect\",\"pim_reference_data_multiselect\",\"pim_catalog_table\",\"pim_catalog_product_link\"]},\"reference_data_name\":{\"type\":\"string\",\"description\":\"Reference entity code when the attribute type is `akeneo_reference_entity` or `akeneo_reference_entity_collection`\\nOR Asset family code when the attribute type is `pim_catalog_asset_collection`.\\n\",\"x-warning\":\"Only for `akeneo_reference_entity` or `akeneo_reference_entity_collection` or `pim_catalog_asset_collection` attribute types\"},\"_links\":{\"type\":[\"object\",\"null\"],\"description\":\"Object containing download links for media files (images, files).\\nOnly present for file and image attribute types.\\n\",\"properties\":{\"download\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URL for downloading the media file\"}}}}}}}}},\"x-validation-rules\":\"Validation rules detailed in Product values section\"},\"associations\":{\"type\":\"object\",\"description\":\"Several associations related to groups, product models and/or other products, grouped by association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"groups\":{\"type\":\"array\",\"description\":\"Array of groups codes with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"products\":{\"type\":\"array\",\"description\":\"Array of product identifiers with which the product is in relation\",\"items\":{\"type\":\"string\"}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of product model codes with which the product is in relation\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false,\"x-validation-rules\":\"- The `associationTypeCode` is the code of an existing association type.\\n- Each string in the array of the property `groups` is the code of an existing group.\\n- Each string in the array of the property `products` is the identifier of an existing product.\\n- Each string in the array of the property `product_models` is the code of an existing product model.\\n\"},\"quantified_associations\":{\"type\":\"object\",\"description\":\"Several quantified associations related to products and/or product models, grouped by quantified association types\",\"patternProperties\":{\"^\\\\w+$\":{\"type\":\"object\",\"properties\":{\"products\":{\"type\":\"array\",\"description\":\"Array of objects containing product uuids and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}},\"product_models\":{\"type\":\"array\",\"description\":\"Array of objects containing product model codes and quantities with which the product is in relation\",\"items\":{\"type\":\"object\",\"properties\":{\"identifier\":{\"type\":\"string\"},\"quantity\":{\"type\":\"integer\"}}}}}}},\"x-validation-rules\":\"- The `quantifiedAssociationTypeCode` is the code of an existing association type which provides quantity information.\\n- Each object in the array of the property `products` contains the uuid of an existing product and the quantity of it.\\n- Each object in the array of the property `product_models` contains the code of an existing product model and the quantity of it.\\n\"},\"created\":{\"type\":\"string\",\"description\":\"Date of creation\",\"format\":\"date-time\",\"x-immutable\":true},\"updated\":{\"type\":\"string\",\"description\":\"Date of the last update\",\"format\":\"date-time\"},\"metadata\":{\"type\":\"object\",\"description\":\"More information around the product\",\"properties\":{\"workflow_status\":{\"description\":\"Status of the product regarding the user permissions\",\"type\":\"string\",\"enum\":[\"read_only\",\"draft_in_progress\",\"proposal_waiting_for_approval\",\"working_copy\"]}},\"x-immutable\":true},\"quality_scores\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the quality score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Locale code for which the quality score is calculated\"},\"data\":{\"type\":\"string\",\"enum\":[\"A\",\"B\",\"C\",\"D\",\"E\"],\"description\":\"Quality score value for the given channel/locale combination\"}}},\"description\":\"Product quality scores for each channel/locale combination\\n(only available when the `with_quality_scores` query parameter is set to `true`).\\n\",\"x-immutable\":true},\"completenesses\":{\"type\":\"array\",\"description\":\"Product completenesses for each channel/locale combination\\n(only available when the `with_completenesses` query parameter is set to `true`).\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"scope\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"locale\":{\"type\":\"string\",\"description\":\"Channel code for which the completenesses score is calculated\"},\"data\":{\"type\":\"integer\",\"description\":\"Completenesses score value for the given channel/locale combination\"}}},\"x-immutable\":true},\"workflow_execution_statuses\":{\"type\":\"array\",\"description\":\"Workflow execution statuses of the product\\n(only available when the `with_workflow_execution_statuses` query parameter is set to `true`)\\n\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow execution UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the workflow execution\",\"enum\":[\"in_progress\",\"completed\"]},\"started_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was started\"},\"completed_at\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Date and time when the workflow execution was completed, null if still in progress\"},\"workflow\":{\"type\":\"object\",\"description\":\"Workflow associated with the workflow execution\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}},\"tasks\":{\"type\":\"array\",\"description\":\"Tasks associated with the workflow execution\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\"},\"status\":{\"type\":\"string\",\"description\":\"Status of the task\",\"enum\":[\"in_progress\"]},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Date and time when the task was created\"},\"step\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"labels\":{\"type\":\"object\",\"description\":\"Step labels for each locale\",\"additionalProperties\":{\"type\":\"string\"}}}}}}}}},\"x-immutable\":true}}}}}}}}],\"required\":[\"_links\",\"_embedded\"]},{\"type\":\"object\",\"required\":[\"error\"],\"properties\":{\"error\":{\"type\":\"string\",\"description\":\"Error message when catalog is disabled or invalid\"}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/products - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "d145bb72-6f1c-4842-ba26-abe334566d42", + "name": "Mapping schema for products", + "description": "Define how PIM product data maps to your application's data model for a catalog.\n\nSee: https://api.akeneo.com/apps/catalogs.html", + "item": [ + { + "id": "809df7d2-d6c5-46d7-8c1d-98c875152ac6", + "name": "Create or update the product mapping schema related to a catalog", + "request": { + "name": "Create or update the product mapping schema related to a catalog", + "description": "Define or replace the mapping schema for a catalog.\n\nThe schema maps Akeneo attributes to your app's fields.\n\nSee: https://api.akeneo.com/apps/catalogs.html#step-1-define-your-json-schema", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}/mapping-schemas/product", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}", + "mapping-schemas", + "product" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PUT", + "body": { + "mode": "raw", + "raw": "{\n \"$id\": \"https://example.com/product\",\n \"$schema\": \"https://api.akeneo.com/mapping/product/1.0.3/schema\",\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"title\": \"Model ID\",\n \"type\": \"string\"\n },\n \"brand\": {\n \"title\": \"Brand name\",\n \"type\": \"string\"\n },\n \"description\": {\n \"title\": \"Product description\",\n \"type\": \"string\"\n },\n \"fabrics\": {\n \"title\": \"Fabrics\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"localized_names\": {\n \"title\": \"Name with multiple locales\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"locale\",\n \"value\"\n ]\n }\n },\n \"localized_number\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"locale\",\n \"value\"\n ]\n }\n },\n \"localized_link\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n },\n \"required\": [\n \"locale\",\n \"value\"\n ]\n }\n },\n \"localized_datetime\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\",\n \"format\": \"date-time\"\n }\n },\n \"required\": [\n \"locale\",\n \"value\"\n ]\n }\n },\n \"localized_boolean\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"locale\",\n \"value\"\n ]\n }\n },\n \"variation_axes\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"type\": \"string\"\n },\n \"label\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n },\n \"variants\": {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"variation_axes_values\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"oneOf\": [\n {\n \"type\": [\n \"string\",\n \"boolean\"\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"amount\": {\n \"type\": \"number\"\n },\n \"unit\": {\n \"type\": \"string\"\n }\n }\n }\n ]\n },\n \"label\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"string\"\n }\n }\n }\n }\n }\n }\n },\n \"uuid\": {\n \"title\": \"uuid\",\n \"type\": \"string\"\n },\n \"sku\": {\n \"title\": \"SKU\",\n \"type\": \"string\"\n },\n \"position\": {\n \"title\": \"Position\",\n \"type\": \"number\"\n },\n \"price\": {\n \"title\": \"Price\",\n \"type\": \"string\"\n },\n \"response_time\": {\n \"title\": \"Response time\",\n \"type\": \"string\"\n },\n \"localized_product_photos_media_file\": {\n \"title\": \"Photos with value per locale(links)\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n }\n }\n },\n \"required\": [\n \"locale\",\n \"value\"\n ]\n }\n },\n \"localized_prices\": {\n \"title\": \"Price in multiple currencies with value per locale\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"locale\": {\n \"type\": \"string\"\n },\n \"value\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"amount\": {\n \"type\": \"number\"\n },\n \"currency\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"amount\",\n \"currency\"\n ]\n }\n }\n },\n \"required\": [\n \"locale\",\n \"value\"\n ]\n }\n }\n },\n \"required\": [\n \"uuid\"\n ]\n }\n }\n ]\n }\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Updated", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "848530c8-c59d-4ee6-8148-5ef4ad033070", + "type": "text/javascript", + "exec": [ + "// Validate if response has empty Body \npm.test(\"[PUT]::/api/rest/v1/catalogs/:id/mapping-schemas/product - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "36d5ccf0-1ea8-4a2c-b5d5-76c8384090cd", + "name": "Delete the product mapping schema related to a catalog", + "request": { + "name": "Delete the product mapping schema related to a catalog", + "description": "Remove the mapping schema. Mapped product endpoints will return 404 until a new schema is configured.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}/mapping-schemas/product", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}", + "mapping-schemas", + "product" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "DELETE", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Deleted", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "1db6037d-b33a-4bdc-8950-19c3eaa9295a", + "type": "text/javascript", + "exec": [ + "// Validate if response has empty Body \npm.test(\"[DELETE]::/api/rest/v1/catalogs/:id/mapping-schemas/product - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "1fcb8c5d-8bc1-4b0d-8262-703680bc9246", + "name": "Get the product mapping schema related to a catalog", + "request": { + "name": "Get the product mapping schema related to a catalog", + "description": "Retrieve the JSON Schema defining how PIM data maps to your app's model.\n\nSee: https://api.akeneo.com/apps/catalogs.html", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/catalogs/{{catalogId}}/mapping-schemas/product", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "catalogs", + "{{catalogId}}", + "mapping-schemas", + "product" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Schema", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"$id\": \"https://example.com/product\",\n \"$schema\": \"https://api.akeneo.com/mapping/product/1.0.3/schema\",\n \"type\": \"object\",\n \"properties\": {\n \"code\": {\n \"title\": \"Product ID\",\n \"type\": \"string\"\n },\n \"brand\": {\n \"title\": \"Brand name\",\n \"type\": \"string\"\n },\n \"description\": {\n \"title\": \"Description\",\n \"type\": \"string\"\n },\n \"price\": {\n \"title\": \"Price\",\n \"type\": \"number\"\n }\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "149f7a07-e201-4551-a67c-8d6a31f497ec", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapping-schemas/product - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapping-schemas/product - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"required\":[\"$schema\",\"properties\"],\"properties\":{\"$id\":{\"type\":\"string\",\"description\":\"id of your schema\"},\"$schema\":{\"type\":\"string\",\"description\":\"$schema indicates which product mapping schema version your app uses\"},\"$comment\":{\"type\":\"string\",\"description\":\"allows you to add a comment\"},\"title\":{\"type\":\"string\",\"description\":\"allows you to add a title to your mapping schema\"},\"description\":{\"type\":\"string\",\"description\":\"allows you to add a description of your mapping schema\"},\"type\":{\"type\":\"string\",\"description\":\"should always be \\\"object\\\"\",\"enum\":[\"object\"]},\"properties\":{\"type\":\"object\",\"description\":\"list and describe the targets your app expects\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/catalogs/:id/mapping-schemas/product - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + } + ], + "event": [] + }, + { + "id": "564dff44-652f-4e49-87b3-e118b46e1ad3", + "name": "Workflows", + "description": "Manage workflows, workflow executions, and workflow tasks.\n\nSee: https://api.akeneo.com/api-reference-index.html#Workflows", + "item": [ + { + "id": "6ad12da4-751e-4ced-98a0-e58c3a0d3d45", + "name": "Workflows", + "description": "Manage workflows — automated approval processes for product enrichment (Enterprise Edition only).\n\nSee: https://api.akeneo.com/api-reference-index.html#workflows", + "item": [ + { + "id": "8bdf8913-7132-439d-b4db-477ba51fafcb", + "name": "Get a workflow", + "request": { + "name": "Get a workflow", + "description": "Retrieve a workflow with its steps and configuration.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/workflows/{{workflowUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "workflows", + "{{workflowUuid}}" + ], + "query": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Workflow", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"uuid\": \"6f37476a-04c2-46c0-b6d0-e18316959068\",\n \"code\": \"product_approval\",\n \"labels\": {\n \"en_US\": \"Product Approval\"\n },\n \"steps\": [\n {\n \"uuid\": \"111e4567-e89b-12d3-a456-426614174000\",\n \"code\": \"enrichment\",\n \"type\": \"enrichment\",\n \"labels\": {\n \"en_US\": \"Enrichment\"\n }\n },\n {\n \"uuid\": \"222e4567-e89b-12d3-a456-426614174000\",\n \"code\": \"review\",\n \"type\": \"review\",\n \"labels\": {\n \"en_US\": \"Review\"\n }\n },\n {\n \"uuid\": \"333e4567-e89b-12d3-a456-426614174000\",\n \"code\": \"final_approval\",\n \"type\": \"review\",\n \"labels\": {\n \"en_US\": \"Final Approval\"\n }\n }\n ]\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "69f0a55e-b10d-4890-9fe6-f2174308e4e6", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/workflows/:uuid - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/workflows/:uuid - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Locale code\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"type\":[\"string\",\"null\"],\"description\":\"Workflow labels per locale\"}}},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the workflow is enabled\"},\"steps\":{\"type\":\"array\",\"description\":\"List of workflow steps\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"Step UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Step code\"},\"type\":{\"type\":\"string\",\"description\":\"Step type (e.g. enrichment, review)\"},\"labels\":{\"type\":\"object\",\"description\":\"Locale code\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"type\":[\"string\",\"null\"],\"description\":\"Step labels per locale\"}}},\"descriptions\":{\"type\":\"object\",\"description\":\"Locale code\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"type\":[\"string\",\"null\"],\"description\":\"Step descriptions per locale\"}}},\"allotted_time\":{\"type\":[\"object\",\"null\"],\"description\":\"Allotted time for the step (e.g. `{\\\"value\\\": 1, \\\"unit\\\": \\\"days\\\"}` or nullable)\",\"properties\":{\"value\":{\"type\":\"integer\",\"description\":\"Amount of time\"},\"unit\":{\"type\":\"string\",\"description\":\"Time unit (days)\"}}},\"channels_and_locales\":{\"type\":\"object\",\"description\":\"Step configuration for channels and locales\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"description\":\"Locale code\"}}}}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/workflows/:uuid - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "4449f864-89ef-4813-952e-32ad30e091fe", + "name": "Get list of workflow step assignees", + "request": { + "name": "Get list of workflow step assignees", + "description": "List users assigned to a workflow step — the enrichers, reviewers, or approvers responsible for tasks at that step.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/workflows/steps/{{workflowStepUuid}}/assignees", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "workflows", + "steps", + "{{workflowStepUuid}}", + "assignees" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Assignees", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_embedded\": {\n \"items\": [\n {\n \"username\": \"julia\",\n \"first_name\": \"Julia\",\n \"last_name\": \"Stark\"\n },\n {\n \"username\": \"peter\",\n \"first_name\": \"Peter\",\n \"last_name\": \"Jones\"\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "fa44214b-89ec-4cb7-b8d6-62de479f688e", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/workflows/steps/:uuid/assignees - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/workflows/steps/:uuid/assignees - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}}],\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Assignee UUID\",\"format\":\"uuid\"},\"first_name\":{\"type\":\"string\",\"description\":\"Assignee first name\"},\"last_name\":{\"type\":\"string\",\"description\":\"Assignee last name\"},\"email\":{\"type\":\"string\",\"description\":\"Assignee email address\"}}}}}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/workflows/steps/:uuid/assignees - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "4b9fc749-1cc9-4578-93a5-ed5d0ea1d1d4", + "name": "Get list of workflows", + "request": { + "name": "Get list of workflows", + "description": "List all workflows (Enterprise Edition).\n\nWorkflows define multi-step approval processes: Draft -> Review -> Approve -> Publish.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/workflows", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "workflows" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Workflows", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_embedded\": {\n \"items\": [\n {\n \"uuid\": \"6f37476a-04c2-46c0-b6d0-e18316959068\",\n \"code\": \"product_approval\",\n \"labels\": {\n \"en_US\": \"Product Approval\"\n },\n \"statuses\": [\n \"draft\",\n \"in_review\",\n \"approved\"\n ]\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "04a6104e-b504-43d2-81cd-59801e8907fc", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/workflows - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/workflows - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Workflows\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the resource\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"Workflow UUID\"},\"code\":{\"type\":\"string\",\"description\":\"Workflow code\"},\"labels\":{\"type\":\"object\",\"description\":\"Workflow labels per locale\",\"default\":{},\"patternProperties\":{\"^[a-zA-Z]{2,}_[a-zA-Z0-9_]{2,}$\":{\"type\":[\"string\",\"null\"],\"description\":\"Label for locale\"}}},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the workflow is enabled\"}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/workflows - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "6d0fb60c-03c0-4668-b76e-9454701199a9", + "name": "Workflow executions", + "description": "Start workflow executions on products or product models.\n\nSee: https://api.akeneo.com/api-reference-index.html#workflow-executions", + "item": [ + { + "id": "56ae7350-3c2e-4e94-a071-d4435e7af4d9", + "name": "Start several workflow executions", + "request": { + "name": "Start several workflow executions", + "description": "Start workflow executions on products/product models.\n\nEach item pairs a workflow UUID with either `product.uuid` or `product_model.code`.\n\nUse case: Trigger approval workflows after a bulk import.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/workflows/executions", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "workflows", + "executions" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "[\n {\n \"workflow\": {\n \"uuid\": \"6f37476a-04c2-46c0-b6d0-e18316959068\"\n },\n \"product\": {\n \"uuid\": \"87654321-4321-4321-4321-210987654321\"\n }\n },\n {\n \"workflow\": {\n \"uuid\": \"6f37476a-04c2-46c0-b6d0-e18316959068\"\n },\n \"product_model\": {\n \"code\": \"model_1234\"\n }\n }\n]", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Results", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"status_code\": 201,\n \"workflow\": {\n \"uuid\": \"6f37476a-04c2-46c0-b6d0-e18316959068\"\n },\n \"product\": {\n \"uuid\": \"87654321-4321-4321-4321-210987654321\"\n }\n },\n {\n \"status_code\": 201,\n \"workflow\": {\n \"uuid\": \"6f37476a-04c2-46c0-b6d0-e18316959068\"\n },\n \"product_model\": {\n \"code\": \"model_1234\"\n }\n }\n]" + } + ], + "event": [], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "96afcef0-6de7-4f08-bac8-c3aa4a9c2ca3", + "name": "Workflow tasks", + "description": "List and update workflow tasks (approve, reject, complete).\n\nSee: https://api.akeneo.com/api-reference-index.html#workflow-tasks", + "item": [ + { + "id": "85c1d3f6-58fd-4568-923c-f85eeb9c6b9a", + "name": "Get list of workflow tasks", + "request": { + "name": "Get list of workflow tasks", + "description": "List workflow tasks — work items assigned to users.\n\nFilter by workflow, step, assignee, or status.\n\nTask types: `enrichment` (fill data), `review` (approve/reject).", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/workflows/tasks", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "workflows", + "tasks" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Specify the maximum number of results to return per page.", + "type": "text/plain" + }, + "key": "limit", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "Specify which page of results to retrieve when using pagination.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": false, + "description": { + "content": "(Required) Stringified JSON to filter tasks.", + "type": "text/plain" + }, + "key": "search", + "value": "{\"step_uuid\":[{\"operator\":\"=\",\"value\":\"0a2c9f49-2b4f-42a5-b7f9-6c50f6bce8e9\"}]}" + }, + { + "disabled": true, + "description": { + "content": "Search by product UUID", + "type": "text/plain" + }, + "key": "search", + "value": "{\"step_uuid\":[{\"operator\":\"=\",\"value\":\"0a2c9f49-2b4f-42a5-b7f9-6c50f6bce8e9\"}],\"product_uuid\":[{\"operator\":\"IN\",\"value\":[\"123e4567-e89b-12d3-a456-426614174000\"]}]}" + }, + { + "disabled": true, + "description": { + "content": "Search by product model code", + "type": "text/plain" + }, + "key": "search", + "value": "{\"step_uuid\":[{\"operator\":\"=\",\"value\":\"0a2c9f49-2b4f-42a5-b7f9-6c50f6bce8e9\"}],\"product_model_code\":[{\"operator\":\"IN\",\"value\":[\"amor\", \"apollon]}]}" + }, + { + "disabled": true, + "description": { + "content": "Whether to include task attributes in the response", + "type": "text/plain" + }, + "key": "with_attributes", + "value": "false" + } + ] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Tasks", + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"_embedded\": {\n \"items\": [\n {\n \"uuid\": \"aaa-bbb-ccc\",\n \"workflow_uuid\": \"6f37476a-04c2-46c0-b6d0-e18316959068\",\n \"step_uuid\": \"222e4567-e89b-12d3-a456-426614174000\",\n \"status\": \"pending\",\n \"product\": {\n \"uuid\": \"87654321-4321-4321-4321-210987654321\"\n },\n \"assignee\": \"julia\"\n }\n ]\n }\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "04e3cba6-1642-41a2-9aa7-b44fcabf19f7", + "type": "text/javascript", + "exec": [ + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/rest/v1/workflows/tasks - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/rest/v1/workflows/tasks - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"title\":\"Workflow Tasks\",\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the current page of resources\"}}},\"first\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the first page of resources\"}}},\"previous\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the previous page of resources\"}}},\"next\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"description\":\"URI of the next page of resources\"}}}}}}},{\"type\":\"object\",\"properties\":{\"current_page\":{\"type\":\"integer\",\"description\":\"Current page number\"},\"_embedded\":{\"type\":\"object\",\"properties\":{\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"allOf\":[{\"type\":\"object\",\"properties\":{\"_links\":{\"type\":\"object\",\"properties\":{\"self\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"format\":\"uri\",\"description\":\"URI of the resource\"}}},\"edit\":{\"type\":\"object\",\"properties\":{\"href\":{\"type\":\"string\",\"format\":\"uri\",\"description\":\"URL to access the task in Akeneo\"}}}}}}},{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"description\":\"Task UUID\",\"format\":\"uuid\"},\"status\":{\"type\":\"string\",\"description\":\"Task status\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Task creation date\"},\"product\":{\"type\":\"object\",\"properties\":{\"uuid\":{\"type\":\"string\",\"format\":\"uuid\",\"description\":\"Product UUID\"}}},\"product_model\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"description\":\"Product model code\"}}},\"due_date\":{\"type\":[\"string\",\"null\"],\"format\":\"date-time\",\"description\":\"Due date\"},\"rejected\":{\"type\":\"boolean\",\"description\":\"Whether the task is rejected\"},\"pending_attributes\":{\"type\":\"object\",\"description\":\"Object of attributes for the task that are awaiting completion or require user input.\\nEach key is an attribute code and each value is an array of objects with information on locale, scope, rejection status and comment.\\nThis field is only included when `with_attributes=true`.\\n\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"rejected\"],\"properties\":{\"locale\":{\"type\":[\"string\",\"null\"],\"description\":\"The locale code for the attribute value, null if the attribute is not localizable\"},\"scope\":{\"type\":[\"string\",\"null\"],\"description\":\"The scope (channel) code for the attribute value, null if the attribute is not scopable\"},\"rejected\":{\"type\":\"boolean\",\"description\":\"Whether this attribute value has been rejected\"},\"comment\":{\"type\":\"string\",\"description\":\"Optional comment explaining why the attribute value was rejected.\"}}}}}}}]}}}}}}]}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/rest/v1/workflows/tasks - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "e9552662-2f71-45bd-ae71-a6b2363b7398", + "name": "Update a Workflow Task's Status (Approve, Reject, Complete)", + "request": { + "name": "Update a Workflow Task's Status (Approve, Reject, Complete)", + "description": "Complete, approve, or reject a task.\n\nEnrichment step: `status: \"completed\"`\nReview step: `status: \"approved\"` or `status: \"rejected\"`\n\nRejection requires `send_back_to_step_uuid` and `rejected_attributes` with comments per attribute/locale/scope.", + "url": { + "raw": "{{baseUrl}}/api/rest/v1/workflows/tasks/{{workflowTaskUuid}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "api", + "rest", + "v1", + "workflows", + "tasks", + "{{workflowTaskUuid}}" + ], + "query": [] + }, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"status\": \"rejected\",\n \"send_back_to_step_uuid\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"rejected_attributes\": {\n \"name\": [\n {\n \"comment\": \"\",\n \"locale\": null,\n \"scope\": null\n }\n ],\n \"description\": [\n {\n \"comment\": \"Wrong description\",\n \"locale\": \"en_US\",\n \"scope\": \"ecommerce\"\n },\n {\n \"comment\": \"\",\n \"locale\": \"fr_FR\",\n \"scope\": \"mobile\"\n }\n ]\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "any", + "value": "{{bearerToken}}", + "key": "token" + } + ] + } + }, + "response": [ + { + "name": "Success", + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "" + }, + { + "name": "Invalid transition", + "status": "Unprocessable Entity", + "code": 422, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"message\": \"Task is not in a status that allows this transition.\"\n}" + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "053cb107-8679-47e4-a6c4-17ca3cc7f6d6", + "type": "text/javascript", + "exec": [ + "// Validate if response has empty Body \npm.test(\"[PATCH]::/api/rest/v1/workflows/tasks/:uuid - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + } + ], + "event": [] + } + ], + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{bearerToken}}", + "key": "token" + } + ] + }, + "event": [ + { + "listen": "prerequest", + "script": { + "id": "fe0fb0e5-e91b-4864-996a-5d368cb85610", + "type": "text/javascript", + "exec": [ + "/*\n For simplicity, we acquire a new token before each API call.\n This is not recommended to do the same in production.\n\n Benefit from the 1 hour validity of the access_token and leverage the refresh_token grant type.\n Explore the official PIM API documentation for details https://api.akeneo.com/documentation/authentication.html\n\n*/\n\n// In case an App token is defined, we use it directly\nappAccessToken = pm.collectionVariables.get('app_access_token');\nif (appAccessToken !== undefined) {\n pm.collectionVariables.set('bearerToken', appAccessToken);\n console.log('Used the token provided in the \"app_access_token\" variable instead of authenticating with the PIM.');\n\n return;\n}\n\n// Deal with the token endpoint\nif (pm.request.url.getPath().endsWith('/api/oauth/v1/token') &&\n pm.request.method === 'POST') {\n const clientId = pm.collectionVariables.get('clientId');\n const secret = pm.collectionVariables.get('secret');\n\n if (clientId && secret) {\n const encodedData = btoa(clientId + ':' + secret);\n pm.request.auth = {\n type: 'basic',\n basic: [\n {key: 'username', value: clientId},\n {key: 'password', value: secret}\n ]\n };\n pm.request.headers.upsert({\n key: 'Authorization',\n value: 'Basic ' + encodedData\n });\n }\n\n const username = pm.collectionVariables.get('username');\n const password = pm.collectionVariables.get('password');\n\n if (username && password && pm.request.body && pm.request.body.raw) {\n let body = JSON.parse(pm.request.body.raw);\n body.username = username;\n body.password = password;\n pm.request.body.raw = JSON.stringify(body);\n }\n\n return;\n}\n\n// If the request is not to the OAuth token endpoint, we proceed with the authentication\nbase64ClientIdSecret = require('btoa')(pm.collectionVariables.get('clientId') + ':' + pm.collectionVariables.get('secret'));\n\npm.sendRequest({\n url: pm.collectionVariables.get('baseUrl').replace(/\\/$/, '') + '/api/oauth/v1/token',\n method: 'POST',\n header: {\n 'Authorization': 'Basic ' + base64ClientIdSecret,\n 'Content-Type': 'application/json',\n },\n body: {\n mode: 'raw',\n raw: JSON.stringify(\n {\n 'username': pm.collectionVariables.get('username'),\n 'password': pm.collectionVariables.get('password'),\n 'grant_type': 'password'\n }\n )\n }\n}, function (err, res) {\n if (err !== null) {\n console.error('The following error occurred during pre-script execution');\n console.error(err);\n\n return;\n }\n console.warn('For simplicity, we acquire a new token before each API call, this is not recommended in production. Benefit from the 1 hour validity of the access_token and refresh token mecanism.');\n pm.collectionVariables.set('bearerToken', res.json().access_token);\n});\n\n" + ] + } + } + ], + "variable": [ + { + "key": "baseUrl", + "value": "https://your-pim.cloud.akeneo.com", + "type": "string" + }, + { + "key": "clientId", + "value": "your_client_id", + "type": "string" + }, + { + "key": "secret", + "value": "your_client_secret", + "type": "string" + }, + { + "key": "username", + "value": "your_username", + "type": "string" + }, + { + "key": "password", + "value": "your_password", + "type": "string" + }, + { + "key": "productUuid", + "value": "25566245-55c3-42ce-86d9-8610ac459fa8", + "type": "string" + }, + { + "key": "productIdentifier", + "value": "top", + "type": "string" + }, + { + "key": "productModelCode", + "value": "model-biker-jacket", + "type": "string" + }, + { + "key": "familyCode", + "value": "clothing", + "type": "string" + }, + { + "key": "familyVariantCode", + "value": "clothing_color_size", + "type": "string" + }, + { + "key": "attributeCode", + "value": "color", + "type": "string" + }, + { + "key": "attributeOptionCode", + "value": "red", + "type": "string" + }, + { + "key": "attributeGroupCode", + "value": "marketing", + "type": "string" + }, + { + "key": "associationTypeCode", + "value": "X_SELL", + "type": "string" + }, + { + "key": "categoryCode", + "value": "master", + "type": "string" + }, + { + "key": "channelCode", + "value": "ecommerce", + "type": "string" + }, + { + "key": "localeCode", + "value": "en_US", + "type": "string" + }, + { + "key": "currencyCode", + "value": "EUR", + "type": "string" + }, + { + "key": "mediaFileCode", + "value": "0/f/5/0/0f5058de76f68446bb6b2371f19cd2234b245c00_image.jpg", + "type": "string" + }, + { + "key": "jobCode", + "value": "csv_product_export", + "type": "string" + }, + { + "key": "referenceEntityCode", + "value": "brands", + "type": "string" + }, + { + "key": "referenceEntityAttributeCode", + "value": "description", + "type": "string" + }, + { + "key": "referenceEntityAttributeOptionCode", + "value": "global_nomad", + "type": "string" + }, + { + "key": "referenceEntityRecordCode", + "value": "kartell", + "type": "string" + }, + { + "key": "referenceEntityMediaFileCode", + "value": "0/2/d/6/image.png", + "type": "string" + }, + { + "key": "assetFamilyCode", + "value": "model_pictures", + "type": "string" + }, + { + "key": "assetAttributeCode", + "value": "main_image", + "type": "string" + }, + { + "key": "assetAttributeOptionCode", + "value": "small", + "type": "string" + }, + { + "key": "assetCode", + "value": "sku_54628_picture1", + "type": "string" + }, + { + "key": "assetMediaFileCode", + "value": "0/f/5/0/image.jpg", + "type": "string" + }, + { + "key": "catalogId", + "value": "12351d98-200e-4bbc-aa19-7fdda1bd14f2", + "type": "string" + }, + { + "key": "categoryMediaFilePath", + "value": "0/f/5/0/image.jpg", + "type": "string" + }, + { + "key": "userUuid", + "value": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string" + }, + { + "key": "extensionUuid", + "value": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string" + }, + { + "key": "workflowUuid", + "value": "6f37476a-04c2-46c0-b6d0-e18316959068", + "type": "string" + }, + { + "key": "workflowStepUuid", + "value": "123e4567-e89b-12d3-a456-426614174000", + "type": "string" + }, + { + "key": "workflowTaskUuid", + "value": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string" + }, + { + "key": "modelizationSuggestionUuid", + "value": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "string" + }, + { + "key": "ruleDefinitionCode", + "value": "set_description_for_shoes", + "type": "string" + } + ], + "info": { + "_postman_id": "a7e8d599-05f2-44b0-8e58-b511a9f146f2", + "name": "Akeneo PIM REST API", + "version": { + "raw": "1.0.0", + "major": 1, + "minor": 0, + "patch": 0, + "prerelease": [], + "build": [], + "string": "1.0.0" + }, + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "description": "Complete Akeneo PIM REST API collection with realistic examples for every endpoint.\n\n## Setup\n1. Set `baseUrl` to your PIM URL (e.g. `https://my-pim.cloud.akeneo.com`)\n2. Set `clientId` and `secret` from your PIM Connection or App\n3. Set `username` and `password` (or set `app_access_token` for App tokens)\n\nAuthentication is handled automatically via the pre-request script.\n\n## Documentation\n- API Reference: https://api.akeneo.com/api-reference-index.html\n- Filters: https://api.akeneo.com/documentation/filter.html\n- Update behavior: https://api.akeneo.com/documentation/update.html\n- Pagination: https://api.akeneo.com/documentation/pagination.html\n" + } }