{
  "info": {
    "name": "RM Ecommerce API v1",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": "Collection for RM's REST API v1. Also import the `rm-api` environment (variables `base_url` and `api_key`) and start with “Test connection”. Business rules: docs/api.en.md."
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://retail-s.online/api/v1"
    }
  ],
  "item": [
    {
      "name": "Connection",
      "description": "Test the key and see its permissions.",
      "item": [
        {
          "name": "Test connection",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/",
              "host": [
                "{{base_url}}"
              ],
              "path": [],
              "query": [],
              "variable": []
            },
            "description": "Returns the store, the key name and its permissions. Any valid key works, whatever its scopes."
          }
        }
      ]
    },
    {
      "name": "Catalog",
      "description": "Products, variants, images, categories, brands, collections, attributes, templates, modifiers and translations. Permission `products`.",
      "item": [
        {
          "name": "List categories",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/categories/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "categories",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create the category",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/categories/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "categories",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "The body carries `code`. `409`/`400` if the code already exists. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"EXAMPLE\",\n  \"name\": \"T-shirts\",\n  \"parent\": \"CLOTHING\",\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get the category",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/categories/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "categories",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create or replace the category (upsert)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/categories/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "categories",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`201` if it creates it, `200` if it replaces it. The code in the path takes precedence over the one in the body. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"T-shirts\",\n  \"parent\": \"CLOTHING\",\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update fields of the category",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/categories/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "categories",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Only the fields sent; `404` if it does not exist. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"T-shirts\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete the category",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/categories/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "categories",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`400` if other records depend on it. Permission: `write_products`."
          }
        },
        {
          "name": "List variant-templates",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/variant-templates/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "variant-templates",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create the variant template",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/variant-templates/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "variant-templates",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "The body carries `code`. `409`/`400` if the code already exists. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"EXAMPLE\",\n  \"name\": \"Clothing\",\n  \"options\": [\n    {\n      \"name\": \"Size\",\n      \"values\": [\n        \"S\",\n        \"M\",\n        \"L\"\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get the variant template",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/variant-templates/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "variant-templates",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create or replace the variant template (upsert)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/variant-templates/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "variant-templates",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`201` if it creates it, `200` if it replaces it. The code in the path takes precedence over the one in the body. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Clothing\",\n  \"options\": [\n    {\n      \"name\": \"Size\",\n      \"values\": [\n        \"S\",\n        \"M\",\n        \"L\"\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update fields of the variant template",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/variant-templates/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "variant-templates",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Only the fields sent; `404` if it does not exist. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Clothing\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete the variant template",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/variant-templates/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "variant-templates",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`400` if other records depend on it. Permission: `write_products`."
          }
        },
        {
          "name": "List brands",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/brands/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "brands",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create the brand",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/brands/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "brands",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "The body carries `code`. `409`/`400` if the code already exists. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"EXAMPLE\",\n  \"name\": \"Example Brand\",\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get the brand",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/brands/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "brands",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create or replace the brand (upsert)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/brands/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "brands",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`201` if it creates it, `200` if it replaces it. The code in the path takes precedence over the one in the body. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Example Brand\",\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update fields of the brand",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/brands/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "brands",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Only the fields sent; `404` if it does not exist. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Example Brand\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete the brand",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/brands/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "brands",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`400` if other records depend on it. Permission: `write_products`."
          }
        },
        {
          "name": "List collections",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/collections/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "collections",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create the collection",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/collections/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "collections",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "The body carries `code`. `409`/`400` if the code already exists. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"EXAMPLE\",\n  \"name\": \"New arrivals\",\n  \"is_active\": true,\n  \"featured\": false,\n  \"products\": [\n    \"PLY-001\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get the collection",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/collections/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "collections",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create or replace the collection (upsert)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/collections/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "collections",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`201` if it creates it, `200` if it replaces it. The code in the path takes precedence over the one in the body. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"New arrivals\",\n  \"is_active\": true,\n  \"featured\": false,\n  \"products\": [\n    \"PLY-001\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update fields of the collection",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/collections/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "collections",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Only the fields sent; `404` if it does not exist. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"New arrivals\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete the collection",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/collections/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "collections",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`400` if other records depend on it. Permission: `write_products`."
          }
        },
        {
          "name": "List modifier-groups",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/modifier-groups/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "modifier-groups",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create the modifier group",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/modifier-groups/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "modifier-groups",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "The body carries `code`. `409`/`400` if the code already exists. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"EXAMPLE\",\n  \"name\": \"Extras\",\n  \"min_select\": 0,\n  \"max_select\": 2,\n  \"modifiers\": [\n    {\n      \"code\": \"CHEESE\",\n      \"name\": \"Cheese\",\n      \"price\": \"0.75\"\n    },\n    {\n      \"code\": \"BACON\",\n      \"name\": \"Bacon\",\n      \"price\": \"1.25\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get the modifier group",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/modifier-groups/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "modifier-groups",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create or replace the modifier group (upsert)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/modifier-groups/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "modifier-groups",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`201` if it creates it, `200` if it replaces it. The code in the path takes precedence over the one in the body. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Extras\",\n  \"min_select\": 0,\n  \"max_select\": 2,\n  \"modifiers\": [\n    {\n      \"code\": \"CHEESE\",\n      \"name\": \"Cheese\",\n      \"price\": \"0.75\"\n    },\n    {\n      \"code\": \"BACON\",\n      \"name\": \"Bacon\",\n      \"price\": \"1.25\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update fields of the modifier group",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/modifier-groups/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "modifier-groups",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Only the fields sent; `404` if it does not exist. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Extras\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete the modifier group",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/modifier-groups/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "modifier-groups",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`400` if other records depend on it. Permission: `write_products`."
          }
        },
        {
          "name": "List attributes",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/attributes/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "attributes",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create the attribute",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/attributes/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "attributes",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "The body carries `code`. `409`/`400` if the code already exists. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"EXAMPLE\",\n  \"name\": \"Material\",\n  \"type\": \"option\",\n  \"scope\": \"product\",\n  \"options\": [\n    \"Cotton\",\n    \"Polyester\"\n  ],\n  \"is_filterable\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get the attribute",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/attributes/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "attributes",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create or replace the attribute (upsert)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/attributes/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "attributes",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`201` if it creates it, `200` if it replaces it. The code in the path takes precedence over the one in the body. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Material\",\n  \"type\": \"option\",\n  \"scope\": \"product\",\n  \"options\": [\n    \"Cotton\",\n    \"Polyester\"\n  ],\n  \"is_filterable\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update fields of the attribute",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/attributes/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "attributes",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Only the fields sent; `404` if it does not exist. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Material\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete the attribute",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/attributes/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "attributes",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`400` if other records depend on it. Permission: `write_products`."
          }
        },
        {
          "name": "List products",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/products/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "category",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "q",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Create product",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/products/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"PLY-001\",\n  \"name\": \"Basic T-shirt\",\n  \"status\": \"active\",\n  \"category\": \"TSHIRTS\",\n  \"short_description\": \"100 % cotton\",\n  \"base_unit\": \"PC\",\n  \"tax_exempt\": false,\n  \"track_inventory\": true,\n  \"options\": [\n    {\n      \"name\": \"Color\",\n      \"values\": [\n        \"Black\",\n        \"White\"\n      ]\n    },\n    {\n      \"name\": \"Size\",\n      \"values\": [\n        \"S\",\n        \"M\",\n        \"L\"\n      ]\n    }\n  ],\n  \"variants\": [\n    {\n      \"code\": \"NEGRO-CH\",\n      \"sku\": \"PLY-001-N-CH\",\n      \"barcode\": \"7501234567890\"\n    }\n  ],\n  \"attributes\": {\n    \"MATERIAL\": \"Cotton\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get product",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/products/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Includes variants with their options, stock by location and prices, images and attributes. Permission: `read_products`."
          }
        },
        {
          "name": "Create or replace product (upsert)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/products/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`201`/`200`. `options` and `attributes` are declarative; it is applied in full or not at all. See `variants_mode: exact` in `docs/api.en.md`. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Basic T-shirt\",\n  \"status\": \"active\",\n  \"category\": \"TSHIRTS\",\n  \"short_description\": \"100 % cotton\",\n  \"base_unit\": \"PC\",\n  \"tax_exempt\": false,\n  \"track_inventory\": true,\n  \"options\": [\n    {\n      \"name\": \"Color\",\n      \"values\": [\n        \"Black\",\n        \"White\"\n      ]\n    },\n    {\n      \"name\": \"Size\",\n      \"values\": [\n        \"S\",\n        \"M\",\n        \"L\"\n      ]\n    }\n  ],\n  \"variants\": [\n    {\n      \"code\": \"NEGRO-CH\",\n      \"sku\": \"PLY-001-N-CH\",\n      \"barcode\": \"7501234567890\"\n    }\n  ],\n  \"attributes\": {\n    \"MATERIAL\": \"Cotton\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update product fields",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/products/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"status\": \"archived\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete product",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/products/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `write_products`."
          }
        },
        {
          "name": "Duplicate product",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/products/:code/duplicate/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                ":code",
                "duplicate",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"PLY-001-COPY\",\n  \"name\": \"Basic T-shirt (copy)\",\n  \"copy_images\": true,\n  \"copy_prices\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Add or replace image",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/products/:code/images/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                ":code",
                "images",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`multipart/form-data` with `image`, or JSON with `url` (https, not downloaded). A repeated `external_key` replaces the image (`200`). Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"url\": \"https://cdn.example.com/tshirt.jpg\",\n  \"external_key\": \"LS-1\",\n  \"alt_text\": \"Black T-shirt, front view\",\n  \"variant_skus\": [\n    \"PLY-001-N-CH\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete image by external key",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/products/:code/images/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                ":code",
                "images",
                ""
              ],
              "query": [
                {
                  "key": "external_key",
                  "value": "",
                  "disabled": false
                }
              ],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `write_products`."
          }
        },
        {
          "name": "Delete image by id",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/products/:code/images/:image_id/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                ":code",
                "images",
                ":image_id",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                },
                {
                  "key": "image_id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Permission: `write_products`."
          }
        },
        {
          "name": "List variants",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/variants/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "variants",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "product",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "barcode",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Get variant",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/variants/:sku/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "variants",
                ":sku",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "sku",
                  "value": "PLY-001-N-CH"
                }
              ]
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Update variant",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/variants/:sku/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "variants",
                ":sku",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "sku",
                  "value": "PLY-001-N-CH"
                }
              ]
            },
            "description": "Only `sku`, `barcode`, `weight`, `is_active` and `attributes`; combinations come from the product options. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"barcode\": \"7501234567890\",\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete variant",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/variants/:sku/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "variants",
                ":sku",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "sku",
                  "value": "PLY-001-N-CH"
                }
              ]
            },
            "description": "`409` if it has orders (deactivate it with `is_active: false`) or if it is the product's only variant. Permission: `write_products`."
          }
        },
        {
          "name": "Get translations",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/translations/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "translations",
                ""
              ],
              "query": [
                {
                  "key": "object_type",
                  "value": "",
                  "disabled": false
                },
                {
                  "key": "object_key",
                  "value": "",
                  "disabled": false
                },
                {
                  "key": "language",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Save translations",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/translations/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "translations",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "The language must be enabled as an extra language in the store. An empty value deletes the translation. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"object_type\": \"product\",\n  \"object_key\": \"PLY-001\",\n  \"language\": \"en\",\n  \"fields\": {\n    \"name\": \"Basic T-shirt\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Bulk catalog",
      "description": "Bulk creation and NDJSON import of products. Permission `products`.",
      "item": [
        {
          "name": "Bulk create products (up to 500)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/products/bulk/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                "bulk",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "Upsert by code, processed by the worker. One bad product does not fail the others. Permission: `write_products`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"items\": [\n    {\n      \"code\": \"PLY-001\",\n      \"name\": \"Basic T-shirt\"\n    },\n    {\n      \"code\": \"PLY-002\",\n      \"name\": \"Printed T-shirt\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Status and result of a bulk creation",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/products/bulk/:id/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                "bulk",
                ":id",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Import NDJSON catalog (create only)",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/products/import/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                "import",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "`multipart/form-data` with `file` (NDJSON, up to 256 MB). Meant for first loads of tens or hundreds of thousands of products. Permission: `write_products`.",
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": []
                }
              ]
            }
          }
        },
        {
          "name": "Status of an import",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/products/import/:id/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                "import",
                ":id",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Permission: `read_products`."
          }
        },
        {
          "name": "Full result of an import (NDJSON)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/products/import/:id/rows/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products",
                "import",
                ":id",
                "rows",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "One row per line (`application/x-ndjson`), in order and unpaginated. Permission: `read_products`."
          }
        }
      ]
    },
    {
      "name": "Inventory",
      "description": "Stock levels and locations. Permission `inventory`.",
      "item": [
        {
          "name": "List locations",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/locations/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "locations",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_inventory`."
          }
        },
        {
          "name": "Create the location",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/locations/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "locations",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "The body carries `code`. `409`/`400` if the code already exists. Permission: `write_inventory`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"EXAMPLE\",\n  \"name\": \"Distribution center\",\n  \"kind\": \"warehouse\",\n  \"allows_pickup\": false,\n  \"ships_orders\": true,\n  \"hours\": [\n    {\n      \"weekday\": 0,\n      \"opens\": \"09:00\",\n      \"closes\": \"18:00\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get the location",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/locations/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "locations",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_inventory`."
          }
        },
        {
          "name": "Create or replace the location (upsert)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/locations/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "locations",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`201` if it creates it, `200` if it replaces it. The code in the path takes precedence over the one in the body. Permission: `write_inventory`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Distribution center\",\n  \"kind\": \"warehouse\",\n  \"allows_pickup\": false,\n  \"ships_orders\": true,\n  \"hours\": [\n    {\n      \"weekday\": 0,\n      \"opens\": \"09:00\",\n      \"closes\": \"18:00\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update fields of the location",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/locations/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "locations",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Only the fields sent; `404` if it does not exist. Permission: `write_inventory`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Distribution center\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete the location",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/locations/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "locations",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`400` if other records depend on it. Permission: `write_inventory`."
          }
        },
        {
          "name": "Get stock levels",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/inventory/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "inventory",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "sku",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "location",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "product",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_inventory`."
          }
        },
        {
          "name": "Set stock levels in bulk (absolute)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/inventory/bulk/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "inventory",
                "bulk",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "`on_hand` is the ERP's absolute stock, not an adjustment. Up to 1000 rows. All or nothing, unless `partial=true`. Permission: `write_inventory`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"items\": [\n    {\n      \"sku\": \"PLY-001-N-CH\",\n      \"location\": \"DC\",\n      \"on_hand\": \"12\"\n    },\n    {\n      \"sku\": \"PLY-001-N-CH\",\n      \"location\": \"TDA-CENTRO\",\n      \"on_hand\": \"3\",\n      \"reference\": \"ERP 2026-10-14\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Prices",
      "description": "Prices and price lists. Permission `prices`.",
      "item": [
        {
          "name": "List price-lists",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/price-lists/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "price-lists",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_prices`."
          }
        },
        {
          "name": "Create the price list",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/price-lists/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "price-lists",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "The body carries `code`. `409`/`400` if the code already exists. Permission: `write_prices`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"EXAMPLE\",\n  \"name\": \"Wholesale\",\n  \"currency\": \"USD\",\n  \"prices_include_tax\": false,\n  \"priority\": 10,\n  \"customer_groups\": [\n    \"WHOLESALE\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get the price list",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/price-lists/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "price-lists",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_prices`."
          }
        },
        {
          "name": "Create or replace the price list (upsert)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/price-lists/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "price-lists",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`201` if it creates it, `200` if it replaces it. The code in the path takes precedence over the one in the body. Permission: `write_prices`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Wholesale\",\n  \"currency\": \"USD\",\n  \"prices_include_tax\": false,\n  \"priority\": 10,\n  \"customer_groups\": [\n    \"WHOLESALE\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update fields of the price list",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/price-lists/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "price-lists",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Only the fields sent; `404` if it does not exist. Permission: `write_prices`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Wholesale\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete the price list",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/price-lists/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "price-lists",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`400` if other records depend on it. Permission: `write_prices`."
          }
        },
        {
          "name": "Get prices",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/prices/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "prices",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "price_list",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "sku",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "product",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_prices`."
          }
        },
        {
          "name": "Set prices in bulk",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/prices/bulk/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "prices",
                "bulk",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "Up to 1000 rows; `price: null` deletes the line. All or nothing, unless `partial=true`. Permission: `write_prices`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"items\": [\n    {\n      \"price_list\": \"GENERAL\",\n      \"sku\": \"PLY-001-N-CH\",\n      \"price\": \"249.00\",\n      \"compare_at_price\": \"299.00\"\n    },\n    {\n      \"price_list\": \"GENERAL\",\n      \"sku\": \"PLY-001-N-CH\",\n      \"price\": \"220.00\",\n      \"min_quantity\": \"6\"\n    },\n    {\n      \"price_list\": \"MAYOREO\",\n      \"sku\": \"PLY-001-N-M\",\n      \"price\": null\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Customers",
      "description": "Customers and customer groups. Permission `customers`.",
      "item": [
        {
          "name": "List customer-groups",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/customer-groups/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customer-groups",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_customers`."
          }
        },
        {
          "name": "Create the customer group",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/customer-groups/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customer-groups",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "The body carries `code`. `409`/`400` if the code already exists. Permission: `write_customers`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"EXAMPLE\",\n  \"name\": \"Wholesalers\",\n  \"description\": \"Buys by the case\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get the customer group",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/customer-groups/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customer-groups",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_customers`."
          }
        },
        {
          "name": "Create or replace the customer group (upsert)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/customer-groups/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customer-groups",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`201` if it creates it, `200` if it replaces it. The code in the path takes precedence over the one in the body. Permission: `write_customers`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Wholesalers\",\n  \"description\": \"Buys by the case\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update fields of the customer group",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/customer-groups/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customer-groups",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Only the fields sent; `404` if it does not exist. Permission: `write_customers`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Wholesalers\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete the customer group",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/customer-groups/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customer-groups",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "`400` if other records depend on it. Permission: `write_customers`."
          }
        },
        {
          "name": "List customers",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/customers/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customers",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                },
                {
                  "key": "q",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "email",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "code",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "group",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_customers`."
          }
        },
        {
          "name": "Create customer",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/customers/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customers",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "Permission: `write_customers`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"C-100\",\n  \"first_name\": \"Carlos\",\n  \"last_name\": \"Hernández\",\n  \"company\": \"Bajío Uniforms\",\n  \"email\": \"purchasing@example.com\",\n  \"phone\": \"477 555 0101\",\n  \"group\": \"WHOLESALE\",\n  \"accepts_marketing\": false,\n  \"addresses\": [\n    {\n      \"label\": \"Headquarters\",\n      \"line1\": \"Blvd. López Mateos 3401\",\n      \"city\": \"León\",\n      \"state\": \"Guanajuato\",\n      \"postal_code\": \"37160\",\n      \"country\": \"MX\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get customer",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/customers/:id/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customers",
                ":id",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Permission: `read_customers`."
          }
        },
        {
          "name": "Replace customer",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/customers/:id/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customers",
                ":id",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "`addresses` is declarative: if you send it, it replaces all addresses. Permission: `write_customers`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"C-100\",\n  \"first_name\": \"Carlos\",\n  \"last_name\": \"Hernández\",\n  \"company\": \"Bajío Uniforms\",\n  \"email\": \"purchasing@example.com\",\n  \"phone\": \"477 555 0101\",\n  \"group\": \"WHOLESALE\",\n  \"accepts_marketing\": false,\n  \"addresses\": [\n    {\n      \"label\": \"Headquarters\",\n      \"line1\": \"Blvd. López Mateos 3401\",\n      \"city\": \"León\",\n      \"state\": \"Guanajuato\",\n      \"postal_code\": \"37160\",\n      \"country\": \"MX\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Update customer fields",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/customers/:id/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customers",
                ":id",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Permission: `write_customers`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone\": \"477 555 0102\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete customer",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/customers/:id/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "customers",
                ":id",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Permission: `write_customers`."
          }
        }
      ]
    },
    {
      "name": "Orders",
      "description": "Orders, status changes, payments, returns, refunds, carriers and payment methods. Permission `orders`.",
      "item": [
        {
          "name": "List orders",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "updated_since",
                  "value": "2026-10-14T00:00:00Z",
                  "disabled": true
                },
                {
                  "key": "number",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "status",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "payment_status",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "fulfillment_status",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "delivery_type",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "customer",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "placed_since",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Creation order (not by number). For the ERP pull use `updated_since` or `placed_since`. Permission: `read_orders`."
          }
        },
        {
          "name": "Create order",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "disabled": true
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orders/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "`201` the first time; with a repeated `Idempotency-Key` and the same data, `200` with the same order. Rejects (400) without stock or without a price. Permission: `write_orders`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customer_email\": \"purchasing@example.com\",\n  \"lines\": [\n    {\n      \"sku\": \"PLY-001-N-CH\",\n      \"quantity\": \"6\"\n    },\n    {\n      \"sku\": \"COC-002\",\n      \"quantity\": \"1\",\n      \"unit_price\": \"14.50\"\n    }\n  ],\n  \"shipping_address\": {\n    \"line1\": \"Blvd. Los Próceres 12\",\n    \"city\": \"Antiguo Cuscatlán\",\n    \"state\": \"La Libertad\",\n    \"country\": \"SV\"\n  },\n  \"location\": \"DC\",\n  \"discount\": \"0\",\n  \"shipping\": \"8.00\",\n  \"notes\": \"\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get order",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/:id/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Permission: `read_orders`."
          }
        },
        {
          "name": "Record payment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "disabled": true
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orders/:id/pay/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "pay",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Returns the full order, or `409` if the step does not apply. With `Idempotency-Key` it always returns `200` and does not record another payment. Permission: `write_orders`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"method\": \"transfer\",\n  \"reference\": \"T-123\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Mark as prepared / accepted by the ERP",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/:id/prepare/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "prepare",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Returns the full order, or `409` if the step does not apply. Sets the informational stamp `erp_accepted_at`; it neither releases nor deducts stock. Permission: `write_orders`."
          }
        },
        {
          "name": "Mark as shipped (deducts stock)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orders/:id/ship/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "ship",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Returns the full order, or `409` if the step does not apply. With `carrier_code` it computes `tracking_url`; with `carrier` (text) it first looks among the store's carriers. Permission: `write_orders`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"carrier_code\": \"C807\",\n  \"tracking_number\": \"ABC123\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Mark as ready for pickup (deducts stock)",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/:id/ready/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "ready",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Returns the full order, or `409` if the step does not apply. `pickup` orders. Permission: `write_orders`."
          }
        },
        {
          "name": "Mark as delivered",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/:id/deliver/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "deliver",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Returns the full order, or `409` if the step does not apply. From `shipped` or `ready_for_pickup`. Permission: `write_orders`."
          }
        },
        {
          "name": "Cancel order",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orders/:id/cancel/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "cancel",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Returns the full order, or `409` if the step does not apply. Releases reserved stock; refunds the payment if it was already charged. Permission: `write_orders`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"Requested by the customer\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Archive order",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/:id/archive/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "archive",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Returns the full order, or `409` if the step does not apply. Only cancelled, delivered or refunded orders. Permission: `write_orders`."
          }
        },
        {
          "name": "Unarchive order",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/:id/unarchive/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "unarchive",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Returns the full order, or `409` if the step does not apply. Restores it to how it was. Permission: `write_orders`."
          }
        },
        {
          "name": "Record return",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "disabled": true
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orders/:id/returns/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "returns",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "`201`, then `200` when repeated with the same `Idempotency-Key`. Permission: `write_orders`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"lines\": [\n    {\n      \"line_id\": \"0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f\",\n      \"quantity\": \"1\"\n    }\n  ],\n  \"reason\": \"Size\",\n  \"restock\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Refund a payment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Idempotency-Key",
                "value": "{{$guid}}",
                "disabled": true
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/orders/:id/refunds/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "refunds",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Synchronous: with a payment gateway it is requested in the same call and, if it fails, `409` with no trace. `200` when repeated with the same key. Permission: `write_orders`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": \"25.00\",\n  \"reason\": \"Damaged product\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "List order payments",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/orders/:id/payments/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "orders",
                ":id",
                "payments",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Read only; each payment includes its `refunds`. Permission: `read_orders`."
          }
        },
        {
          "name": "List carriers",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/carriers/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "carriers",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Read only. Includes deactivated ones. Permission: `read_orders`."
          }
        },
        {
          "name": "Get carrier",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/carriers/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "carriers",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_orders`."
          }
        },
        {
          "name": "List payment methods",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/payment-methods/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "payment-methods",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Read only. Includes deactivated ones. Permission: `read_orders`."
          }
        },
        {
          "name": "Get payment method",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/payment-methods/:code/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "payment-methods",
                ":code",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "code",
                  "value": "PLY-001"
                }
              ]
            },
            "description": "Permission: `read_orders`."
          }
        }
      ]
    },
    {
      "name": "Integrations",
      "description": "Connections, sync runs and external references. Permission `integrations`.",
      "item": [
        {
          "name": "List connections",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/connections/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "connections",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Read only; connections are created in the back office. Permission: `read_integrations`."
          }
        },
        {
          "name": "Get connection",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/connections/:id/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "connections",
                ":id",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Permission: `read_integrations`."
          }
        },
        {
          "name": "List sync runs",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/connections/:id/sync-runs/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "connections",
                ":id",
                "sync-runs",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "kind",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Permission: `read_integrations`."
          }
        },
        {
          "name": "Report a sync run",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/connections/:id/sync-runs/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "connections",
                ":id",
                "sync-runs",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Sets the connection's `last_sync_at` to `finished_at` (never moves it back; a `failed` run does not move it). Permission: `write_integrations`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"kind\": \"inventory\",\n  \"started_at\": \"2026-10-17T10:00:00Z\",\n  \"finished_at\": \"2026-10-17T10:05:00Z\",\n  \"records\": 1200,\n  \"errors\": 3,\n  \"message\": \"3 SKUs without a variant\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Search external references",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/external-references/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "external-references",
                ""
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "connection",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "object_type",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "object_key",
                  "value": "",
                  "disabled": true
                },
                {
                  "key": "external_id",
                  "value": "",
                  "disabled": true
                }
              ],
              "variable": []
            },
            "description": "Permission: `read_integrations`."
          }
        },
        {
          "name": "Save external reference (upsert)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/external-references/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "external-references",
                ""
              ],
              "query": [],
              "variable": []
            },
            "description": "Upsert by (connection, local record): `201` if it creates, `200` if it updates. An `external_id` cannot be linked to two records. Permission: `write_integrations`.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"connection\": \"0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f\",\n  \"object_type\": \"product\",\n  \"object_key\": \"PLY-001\",\n  \"external_id\": \"5c2e0000-0000-0000-0000-000000000000\",\n  \"external_code\": \"1000\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete external reference",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/external-references/:id/",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "external-references",
                ":id",
                ""
              ],
              "query": [],
              "variable": [
                {
                  "key": "id",
                  "value": "0192f3a4-6b1c-7d2e-9f00-1a2b3c4d5e6f"
                }
              ]
            },
            "description": "Permission: `write_integrations`."
          }
        }
      ]
    }
  ]
}
