{
  "info": {
    "_postman_id": "a0960e48-8591-445d-98b5-12d571b8a9a9",
    "name": "Originos API v1",
    "description": "Originos Laravel multi-tenant API. Recommended flow: Storefront > Store Config, Products, Create Cart, Add Item, Checkout. Secrets are environment variables and are never bundled.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {"type": "noauth"},
  "event": [
    {
      "listen": "prerequest",
      "script": {"type": "text/javascript", "exec": [
        "if (!pm.environment.get('base_url')) pm.environment.set('base_url', 'https://originos.netkora.com');"
      ]}
    }
  ],
  "item": [
    {
      "name": "System",
      "item": [
        {
          "name": "Health",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/up"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Health endpoint is OK', () => pm.response.to.have.status(200));"]}}]
        }
      ]
    },
    {
      "name": "Storefront",
      "auth": {"type": "apikey", "apikey": [{"key": "key", "value": "X-Store-Key", "type": "string"}, {"key": "value", "value": "{{store_key}}", "type": "string"}, {"key": "in", "value": "header", "type": "string"}]},
      "item": [
        {
          "name": "1. Store Config",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/storefront/store"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Store resolved', () => pm.response.to.have.status(200));", "pm.test('Request ID exists', () => pm.expect(pm.response.headers.get('X-Request-ID')).to.exist);", "if (pm.response.code === 200) pm.environment.set('store_uuid', pm.response.json().data.id);"]}}]
        },
        {
          "name": "2. List Products",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": {"raw": "{{base_url}}/api/v1/storefront/products?page=1&per_page=20", "host": ["{{base_url}}"], "path": ["api", "v1", "storefront", "products"], "query": [{"key": "page", "value": "1"}, {"key": "per_page", "value": "20"}, {"key": "search", "value": "", "disabled": true}]}},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Products returned', () => pm.response.to.have.status(200));", "const body = pm.response.json();", "if (body.data && body.data.length) {", "  pm.environment.set('product_slug', body.data[0].slug);", "  pm.environment.set('product_uuid', body.data[0].id);", "  if (body.data[0].variants && body.data[0].variants.length) pm.environment.set('variant_uuid', body.data[0].variants[0].id);", "}"]}}]
        },
        {
          "name": "2a. List Categories",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/storefront/categories"}
        },
        {
          "name": "2b. List Shipping Methods",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/storefront/shipping-methods"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Shipping methods returned', () => pm.response.to.have.status(200));", "const methods = pm.response.json().data;", "if (methods && methods.length) pm.environment.set('shipping_method_code', methods[0].code);"]}}]
        },
        {
          "name": "3. Product Detail",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/storefront/products/{{product_slug}}"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Product returned', () => pm.response.to.have.status(200));", "const body = pm.response.json();", "if (body.data.variants && body.data.variants.length) pm.environment.set('variant_uuid', body.data.variants[0].id);"]}}]
        },
        {
          "name": "4. Create Cart",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/storefront/cart"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Cart created', () => pm.response.to.have.status(201));", "pm.environment.set('cart_token', pm.response.json().data.token);"]}}]
        },
        {
          "name": "5. Add Cart Item",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}], "body": {"mode": "raw", "raw": "{\n  \"variant_id\": \"{{variant_uuid}}\",\n  \"quantity\": 1\n}"}, "url": "{{base_url}}/api/v1/storefront/cart/{{cart_token}}/items"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Item added with server price', () => pm.response.to.have.status(200));", "const items = pm.response.json().data.items;", "if (items.length) pm.environment.set('cart_item_id', items[0].id);"]}}]
        },
        {
          "name": "6. Get Cart",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/storefront/cart/{{cart_token}}"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Cart returned', () => pm.response.to.have.status(200));"]}}]
        },
        {
          "name": "7. Update Cart Item",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}], "body": {"mode": "raw", "raw": "{\n  \"quantity\": 2\n}"}, "url": "{{base_url}}/api/v1/storefront/cart/{{cart_token}}/items/{{cart_item_id}}"}
        },
        {
          "name": "7a. Calculate Cart",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}], "body": {"mode": "raw", "raw": "{\n  \"coupon_code\": \"{{coupon_code}}\",\n  \"shipping_method_code\": \"{{shipping_method_code}}\"\n}"}, "url": "{{base_url}}/api/v1/storefront/cart/{{cart_token}}/calculate"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Server calculated cart totals', () => pm.response.to.have.status(200));", "pm.test('Total cannot be negative', () => pm.expect(pm.response.json().data.total.amount).to.be.at.least(0));"]}}]
        },
        {
          "name": "8. Checkout",
          "request": {
            "method": "POST",
            "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "Idempotency-Key", "value": "{{idempotency_key}}"}],
            "body": {"mode": "raw", "raw": "{\n  \"cart_token\": \"{{cart_token}}\",\n  \"email\": \"buyer@example.com\",\n  \"phone\": \"+905551112233\",\n  \"coupon_code\": \"{{coupon_code}}\",\n  \"shipping_method_code\": \"{{shipping_method_code}}\",\n  \"payment_method\": \"bank_transfer\",\n  \"billing_address\": {\n    \"first_name\": \"Ada\",\n    \"last_name\": \"Lovelace\",\n    \"country\": \"TR\",\n    \"city\": \"Istanbul\",\n    \"address_line_1\": \"Test Caddesi 1\"\n  }\n}"},
            "url": "{{base_url}}/api/v1/storefront/checkout"
          },
          "event": [
            {"listen": "prerequest", "script": {"exec": ["if (!pm.environment.get('idempotency_key')) pm.environment.set('idempotency_key', pm.variables.replaceIn('{{$guid}}'));", "if (pm.environment.get('checkout_as_customer') === 'true' && pm.environment.get('customer_token')) {", "  pm.request.headers.upsert({key: 'Authorization', value: 'Bearer ' + pm.environment.get('customer_token')});", "} else {", "  pm.request.headers.remove('Authorization');", "}"]}},
            {"listen": "test", "script": {"exec": ["pm.test('Order created', () => pm.expect([200, 201]).to.include(pm.response.code));", "if ([200, 201].includes(pm.response.code)) {", "  const data = pm.response.json().data;", "  pm.environment.set('order_uuid', data.order_id);", "  if (data.guest_access_token) pm.environment.set('guest_order_token', data.guest_access_token);", "}"]}}
          ]
        },
        {
          "name": "9. Delete Cart Item",
          "request": {"method": "DELETE", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/storefront/cart/{{cart_token}}/items/{{cart_item_id}}"},
          "description": "Use on a fresh active cart. A converted cart should no longer be mutated by clients."
        }
      ]
    },
    {
      "name": "Merchant Admin",
      "auth": {"type": "bearer", "bearer": [{"key": "token", "value": "{{merchant_token}}", "type": "string"}]},
      "item": [
        {
          "name": "Login",
          "request": {"auth": {"type": "noauth"}, "method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"email\": \"admin@example.com\",\n  \"password\": \"password\",\n  \"device_name\": \"postman-merchant\"\n}"}, "url": "{{base_url}}/api/v1/admin/auth/login"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Merchant login succeeded', () => pm.response.to.have.status(200));", "if (pm.response.code === 200) pm.environment.set('merchant_token', pm.response.json().data.token);"]}}]
        },
        {
          "name": "List Customers",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": {"raw": "{{base_url}}/api/v1/admin/customers?status=active&sort=total_spent_amount&direction=desc&per_page=20", "host": ["{{base_url}}"], "path": ["api", "v1", "admin", "customers"], "query": [{"key": "status", "value": "active"}, {"key": "sort", "value": "total_spent_amount"}, {"key": "direction", "value": "desc"}, {"key": "per_page", "value": "20"}]}},
          "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 200) { const rows = pm.response.json().data; if (rows.length) pm.environment.set('customer_uuid', rows[0].id); }"]}}]
        },
        {
          "name": "Show Customer CRM",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}"}
        },
        {
          "name": "Update Customer",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"phone\": \"+905551112233\",\n  \"status\": \"active\"\n}"}, "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}"},
          "description": "Setting status to inactive revokes all storefront customer sessions."
        },
        {
          "name": "Customer Orders",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}/orders?per_page=20"}
        },
        {
          "name": "Create Customer Address",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"type\": \"both\",\n  \"label\": \"Merkez Ofis\",\n  \"first_name\": \"Ada\",\n  \"last_name\": \"Lovelace\",\n  \"address_line_1\": \"Test Caddesi 1\",\n  \"city\": \"Istanbul\",\n  \"country\": \"TR\",\n  \"is_default\": true\n}"}, "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}/addresses"},
          "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) pm.environment.set('customer_address_uuid', pm.response.json().data.id);"]}}]
        },
        {
          "name": "Update Customer Address",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"label\": \"Güncel Ofis\"\n}"}, "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}/addresses/{{customer_address_uuid}}"}
        },
        {
          "name": "Delete Customer Address",
          "request": {"method": "DELETE", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}/addresses/{{customer_address_uuid}}"}
        },
        {
          "name": "List Customer Notes",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}/notes"},
          "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 200) { const rows = pm.response.json().data; if (rows.length) pm.environment.set('customer_note_uuid', rows[0].id); }"]}}]
        },
        {
          "name": "Create Customer Note",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"body\": \"VIP müşteri; siparişleri öncelikli hazırlanmalı.\",\n  \"is_pinned\": true\n}"}, "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}/notes"},
          "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) pm.environment.set('customer_note_uuid', pm.response.json().data.id);"]}}]
        },
        {
          "name": "Update Customer Note",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"is_pinned\": false\n}"}, "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}/notes/{{customer_note_uuid}}"}
        },
        {
          "name": "Delete Customer Note",
          "request": {"method": "DELETE", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}/notes/{{customer_note_uuid}}"}
        },
        {
          "name": "List Products",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/products?per_page=20"}
        },
        {
          "name": "List Categories",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/categories"}
        },
        {
          "name": "Create Category",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Postman Category\",\n  \"slug\": \"postman-category\",\n  \"status\": \"active\",\n  \"sort_order\": 10\n}"}, "url": "{{base_url}}/api/v1/admin/categories"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Category created', () => pm.response.to.have.status(201));", "if (pm.response.code === 201) pm.environment.set('category_uuid', pm.response.json().data.id);"]}}]
        },
        {
          "name": "Upload Category Image",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "formdata", "formdata": [{"key": "image", "type": "file", "src": []}]}, "url": "{{base_url}}/api/v1/admin/categories/{{category_uuid}}/image"}
        },
        {
          "name": "Create Product",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Postman Test Product\",\n  \"slug\": \"postman-test-product\",\n  \"type\": \"physical\",\n  \"status\": \"active\",\n  \"description\": \"Postman ile oluşturuldu\",\n  \"sku\": \"POSTMAN-001\",\n  \"price_amount\": 149900,\n  \"currency\": \"TRY\",\n  \"quantity\": 10\n}"}, "url": "{{base_url}}/api/v1/admin/products"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Product created', () => pm.response.to.have.status(201));", "if (pm.response.code === 201) { const body = pm.response.json(); pm.environment.set('product_uuid', body.data.id); pm.environment.set('product_slug', body.data.slug); if (body.data.variants.length) pm.environment.set('variant_uuid', body.data.variants[0].id); }"]}}]
        },
        {
          "name": "Show Product",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/products/{{product_uuid}}"}
        },
        {
          "name": "Update Product",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"short_description\": \"Faz 3 katalog ürünü\",\n  \"brand\": \"Originos\",\n  \"category_ids\": [\"{{category_uuid}}\"],\n  \"physical\": {\n    \"weight\": 750,\n    \"weight_unit\": \"g\"\n  }\n}"}, "url": "{{base_url}}/api/v1/admin/products/{{product_uuid}}"}
        },
        {
          "name": "Sync Options and Variants",
          "request": {"method": "PUT", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"options\": [\n    {\"name\": \"Renk\", \"values\": [\"Siyah\", \"Beyaz\"]},\n    {\"name\": \"Beden\", \"values\": [\"M\", \"L\"]}\n  ],\n  \"variants\": [\n    {\"sku\": \"POSTMAN-SIYAH-M\", \"title\": \"Siyah / M\", \"price_amount\": 149900, \"currency\": \"TRY\", \"quantity\": 5, \"values\": {\"Renk\": \"Siyah\", \"Beden\": \"M\"}}\n  ]\n}"}, "url": "{{base_url}}/api/v1/admin/products/{{product_uuid}}/options"}
        },
        {
          "name": "Upload Product Media",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "formdata", "formdata": [{"key": "file", "type": "file", "src": []}, {"key": "alt_text", "value": "Postman ürün görseli", "type": "text"}, {"key": "sort_order", "value": "0", "type": "text"}]}, "url": "{{base_url}}/api/v1/admin/products/{{product_uuid}}/media"}
        },
        {
          "name": "Reorder Product Media",
          "request": {"method": "PUT", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"media_ids\": [\"{{media_uuid}}\"]\n}"}, "url": "{{base_url}}/api/v1/admin/products/{{product_uuid}}/media/order"}
        },
        {
          "name": "List Inventory",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": {"raw": "{{base_url}}/api/v1/admin/inventory?status=low_stock&sort=available_quantity&direction=asc&per_page=20", "host": ["{{base_url}}"], "path": ["api", "v1", "admin", "inventory"], "query": [{"key": "status", "value": "low_stock"}, {"key": "sort", "value": "available_quantity"}, {"key": "direction", "value": "asc"}, {"key": "per_page", "value": "20"}]}}
        },
        {
          "name": "Inventory Timeline",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/inventory/{{variant_uuid}}"}
        },
        {
          "name": "Adjust Inventory",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"operation\": \"increase\",\n  \"quantity\": 5,\n  \"reason\": \"Warehouse goods receipt\",\n  \"reference\": \"POSTMAN-GR-001\"\n}"}, "url": "{{base_url}}/api/v1/admin/inventory/{{variant_uuid}}/adjustments"},
          "description": "Atomically sets, increases or decreases on-hand stock and writes an immutable movement. Reductions below active reservations are rejected unless backorders are enabled."
        },
        {
          "name": "Update Inventory Settings",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"track_inventory\": true,\n  \"allow_backorder\": false,\n  \"low_stock_threshold\": 5\n}"}, "url": "{{base_url}}/api/v1/admin/inventory/{{variant_uuid}}/settings"}
        },
        {
          "name": "List Inventory Movements",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": {"raw": "{{base_url}}/api/v1/admin/inventory/movements?variant_id={{variant_uuid}}&per_page=20", "host": ["{{base_url}}"], "path": ["api", "v1", "admin", "inventory", "movements"], "query": [{"key": "variant_id", "value": "{{variant_uuid}}"}, {"key": "per_page", "value": "20"}]}}
        },
        {
          "name": "List Inventory Reservations",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": {"raw": "{{base_url}}/api/v1/admin/inventory/reservations?status=active&variant_id={{variant_uuid}}&per_page=20", "host": ["{{base_url}}"], "path": ["api", "v1", "admin", "inventory", "reservations"], "query": [{"key": "status", "value": "active"}, {"key": "variant_id", "value": "{{variant_uuid}}"}, {"key": "per_page", "value": "20"}]}},
          "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 200) { const rows = pm.response.json().data; if (rows.length) pm.environment.set('inventory_reservation_uuid', rows[0].id); }"]}}]
        },
        {
          "name": "Release Inventory Reservation",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"reason\": \"Merchant released abandoned reservation\"\n}"}, "url": "{{base_url}}/api/v1/admin/inventory/reservations/{{inventory_reservation_uuid}}/release"},
          "description": "Releases an active reservation and restores available stock. Use only after verifying the cart/order no longer needs the reservation."
        },
        {
          "name": "List Orders",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/orders?per_page=20"}
        },
        {
          "name": "Show Order",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/orders/{{order_uuid}}"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Order returned', () => pm.response.to.have.status(200));", "if (pm.response.code === 200) {", "  const data = pm.response.json().data;", "  if (data.payment) {", "    pm.environment.set('payment_uuid', data.payment.id);", "    pm.environment.set('payment_amount', data.payment.amount.amount);", "    pm.environment.set('payment_currency', data.payment.amount.currency);", "  }", "  if (data.epins && data.epins.length) pm.environment.set('epin_code_uuid', data.epins[0].id);", "}"]}}]
        },
        {
          "name": "Complete Bank Transfer Payment",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"transaction_id\": \"{{payment_transaction_id}}\"\n}"}, "url": "{{base_url}}/api/v1/admin/orders/{{order_uuid}}/payments/bank-transfer/complete"},
          "description": "Confirms the default bank transfer payment. Repeat with the same transaction ID to verify idempotency.",
          "event": [
            {"listen": "prerequest", "script": {"exec": ["if (!pm.environment.get('payment_transaction_id')) pm.environment.set('payment_transaction_id', 'bank-transfer-' + pm.variables.replaceIn('{{$guid}}'));"]}},
            {"listen": "test", "script": {"exec": ["pm.test('Bank transfer completed', () => pm.response.to.have.status(200));", "if (pm.response.code === 200) {", "  const data = pm.response.json().data;", "  pm.environment.set('payment_uuid', data.payment.id);", "  pm.environment.set('payment_amount', data.payment.amount.amount);", "  pm.environment.set('payment_currency', data.payment.amount.currency);", "}"]}}
          ]
        },
        {
          "name": "Confirm Order",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"status\": \"confirmed\",\n  \"note\": \"Merchant confirmed order.\"\n}"}, "url": "{{base_url}}/api/v1/admin/orders/{{order_uuid}}/status"}
        },
        {
          "name": "Start Processing",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"status\": \"processing\"\n}"}, "url": "{{base_url}}/api/v1/admin/orders/{{order_uuid}}/status"}
        },
        {
          "name": "Mark Fulfilled",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"status\": \"fulfilled\"\n}"}, "url": "{{base_url}}/api/v1/admin/orders/{{order_uuid}}/fulfillment-status"}
        },
        {
          "name": "Cancel Order",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"reason\": \"Customer requested cancellation.\"\n}"}, "url": "{{base_url}}/api/v1/admin/orders/{{order_uuid}}/cancel"},
          "description": "Only unpaid pending/confirmed/processing orders can be cancelled. This releases active inventory reservations."
        },
        {
          "name": "Request Refund",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"reason\": \"Customer requested refund.\"\n}"}, "url": "{{base_url}}/api/v1/admin/orders/{{order_uuid}}/refund-requests"},
          "description": "Requires a paid order. Provider refund execution is implemented in Phase 7."
        },
        {
          "name": "Create Shipping Method",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Postman Flat Rate\",\n  \"code\": \"postman-flat\",\n  \"type\": \"flat_rate\",\n  \"price_amount\": 2990,\n  \"currency\": \"TRY\",\n  \"is_active\": true\n}"}, "url": "{{base_url}}/api/v1/admin/shipping-methods"},
          "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) { pm.environment.set('shipping_method_uuid', pm.response.json().data.id); pm.environment.set('shipping_method_code', pm.response.json().data.code); }"]}}]
        },
        {
          "name": "Create Discount",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Postman %15\",\n  \"code\": \"POSTMAN15\",\n  \"type\": \"percentage\",\n  \"value\": 15,\n  \"minimum_order_amount\": 10000,\n  \"usage_limit\": 100,\n  \"is_active\": true\n}"}, "url": "{{base_url}}/api/v1/admin/discounts"},
          "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) { pm.environment.set('discount_uuid', pm.response.json().data.id); pm.environment.set('coupon_code', pm.response.json().data.code); }"]}}]
        },
        {
          "name": "List EPIN Products",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/products?type=epin&per_page=20"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('EPIN products returned', () => pm.response.to.have.status(200));", "const products = pm.response.json().data;", "if (products && products.length) {", "  pm.environment.set('product_uuid', products[0].id);", "  pm.environment.set('product_slug', products[0].slug);", "  if (products[0].variants.length) pm.environment.set('variant_uuid', products[0].variants[0].id);", "}"]}}]
        },
        {
          "name": "Create EPIN Pool",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"product_id\": \"{{product_uuid}}\",\n  \"variant_id\": \"{{variant_uuid}}\",\n  \"name\": \"Postman EPIN Pool\",\n  \"status\": \"active\"\n}"}, "url": "{{base_url}}/api/v1/admin/epin-pools"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('EPIN pool created', () => pm.response.to.have.status(201));", "if (pm.response.code === 201) pm.environment.set('epin_pool_uuid', pm.response.json().data.id);"]}}]
        },
        {
          "name": "Import EPIN Codes",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"codes\": [\n    \"POSTMAN-{{epin_seed_suffix}}-0001\",\n    \"POSTMAN-{{epin_seed_suffix}}-0002\"\n  ]\n}"}, "url": "{{base_url}}/api/v1/admin/epin-pools/{{epin_pool_uuid}}/codes/import"},
          "event": [
            {"listen": "prerequest", "script": {"exec": ["if (!pm.environment.get('epin_seed_suffix')) pm.environment.set('epin_seed_suffix', pm.variables.replaceIn('{{$guid}}'));"]}},
            {"listen": "test", "script": {"exec": ["pm.test('EPIN import accepted', () => pm.response.to.have.status(201));", "if (pm.response.code === 201) pm.environment.set('epin_import_uuid', pm.response.json().data.id);"]}}
          ]
        },
        {
          "name": "Import EPIN CSV",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "formdata", "formdata": [{"key": "file", "type": "file", "src": []}]}, "url": "{{base_url}}/api/v1/admin/epin-pools/{{epin_pool_uuid}}/imports"},
          "description": "Select a local CSV/TXT file whose first column contains codes. A header named code, epin or epin_code is optional.",
          "event": [{"listen": "test", "script": {"exec": ["pm.test('CSV import accepted', () => pm.response.to.have.status(201));", "if (pm.response.code === 201) pm.environment.set('epin_import_uuid', pm.response.json().data.id);"]}}]
        },
        {
          "name": "Show EPIN Import",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/epin-imports/{{epin_import_uuid}}"}
        },
        {
          "name": "List EPIN Codes",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/epin-pools/{{epin_pool_uuid}}/codes?per_page=50"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Only masked codes returned', () => pm.response.to.have.status(200));", "const codes = pm.response.json().data;", "if (codes && codes.length) pm.environment.set('epin_code_uuid', codes[0].id);"]}}]
        },
        {
          "name": "Reveal Sold EPIN",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"reason\": \"Customer support verification\"\n}"}, "url": "{{base_url}}/api/v1/admin/epin-codes/{{epin_code_uuid}}/reveal"},
          "description": "Requires a sold code assigned to an order and the epins.reveal permission. Run Show Order after payment to capture the sold code UUID."
        },
        {
          "name": "List Digital Products",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/products?type=digital&per_page=20"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Digital products returned', () => pm.response.to.have.status(200));", "const products = pm.response.json().data;", "if (products && products.length) {", "  pm.environment.set('product_uuid', products[0].id);", "  pm.environment.set('product_slug', products[0].slug);", "  if (products[0].variants.length) pm.environment.set('variant_uuid', products[0].variants[0].id);", "}"]}}]
        },
        {
          "name": "Upload Digital File",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "formdata", "formdata": [{"key": "name", "value": "Postman Digital File", "type": "text"}, {"key": "variant_id", "value": "{{variant_uuid}}", "type": "text"}, {"key": "file", "type": "file", "src": []}]}, "url": "{{base_url}}/api/v1/admin/products/{{product_uuid}}/digital-files"},
          "description": "Select a private PDF, ZIP, EPUB, MP3, MP4 or TXT file. Internal disk/path fields are never returned.",
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Digital file uploaded', () => pm.response.to.have.status(201));", "if (pm.response.code === 201) pm.environment.set('digital_file_uuid', pm.response.json().data.id);"]}}]
        },
        {
          "name": "List Digital Files",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/products/{{product_uuid}}/digital-files"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Digital files returned without paths', () => pm.response.to.have.status(200));", "const files = pm.response.json().data;", "if (files && files.length) pm.environment.set('digital_file_uuid', files[0].id);"]}}]
        },
        {
          "name": "Delete Product",
          "request": {"method": "DELETE", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/products/{{product_uuid}}"}
        }
      ]
    },
    {
      "name": "Settings, Themes & Dashboard",
      "description": "Phase 11 merchant settings, theme assignment and bounded store dashboard requests.",
      "auth": {"type": "bearer", "bearer": [{"key": "token", "value": "{{merchant_token}}", "type": "string"}]},
      "item": [
        {
          "name": "Merchant Dashboard",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/dashboard?days=30"}
        },
        {
          "name": "Show Store Settings",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/settings"}
        },
        {
          "name": "Update Store Settings",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"branding\": {\n    \"tagline\": \"Oyun ve dijital ürün mağazası\"\n  },\n  \"contact\": {\n    \"support_email\": \"support@example.com\",\n    \"support_phone\": \"+905551112233\"\n  },\n  \"seo\": {\n    \"title\": \"Originos Demo Store\",\n    \"description\": \"Headless commerce storefront\"\n  },\n  \"announcement\": {\n    \"enabled\": true,\n    \"message\": \"Aynı gün kargo\"\n  },\n  \"payments\": {\n    \"default_method\": \"bank_transfer\",\n    \"bank_transfer\": {\n      \"enabled\": true,\n      \"bank_name\": \"Originos Bank\",\n      \"account_holder\": \"Originos Demo Store\",\n      \"iban\": \"TR33 0006 1005 1978 6457 8413 26\",\n      \"instructions\": \"Sipariş numarasını açıklamaya yazınız.\"\n    }\n  }\n}"}, "url": "{{base_url}}/api/v1/admin/settings"}
        },
        {
          "name": "Upload Store Logo",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "formdata", "formdata": [{"key": "logo", "type": "file", "src": []}]}, "url": "{{base_url}}/api/v1/admin/settings/logo"}
        },
        {
          "name": "Remove Store Logo",
          "request": {"method": "DELETE", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/settings/logo"}
        },
        {
          "name": "List Available Themes",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/themes"},
          "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 200) { const themes = pm.response.json().data; if (themes && themes.length) pm.environment.set('theme_uuid', themes[0].id); }"]}}]
        },
        {
          "name": "Assign Theme",
          "request": {"method": "PUT", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"theme_id\": \"{{theme_uuid}}\"\n}"}, "url": "{{base_url}}/api/v1/admin/theme"}
        },
        {
          "name": "Show Assigned Theme",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/theme"}
        },
        {
          "name": "Update Theme Settings",
          "request": {"method": "PUT", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"settings\": {\n    \"primary_color\": \"#2563eb\",\n    \"hero_title\": \"Originos'a hoş geldiniz\"\n  }\n}"}, "url": "{{base_url}}/api/v1/admin/theme/settings"}
        },
        {
          "name": "Upload Theme Image",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "formdata", "formdata": [{"key": "image", "type": "file", "src": []}, {"key": "purpose", "value": "hero", "type": "text", "description": "hero, promo veya editorial"}]}, "url": "{{base_url}}/api/v1/admin/theme/assets/images"}
        },
        {
          "name": "Storefront Config with Theme",
          "request": {"auth": {"type": "noauth"}, "method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/storefront/store"}
        }
      ]
    },
    {
      "name": "Webhook Integrations",
      "description": "Outbound store webhook CRUD, delivery observation, retry/replay and secret rotation. Start a webhooks queue worker to perform deliveries.",
      "auth": {"type": "bearer", "bearer": [{"key": "token", "value": "{{merchant_token}}", "type": "string"}]},
      "item": [
        {
          "name": "Supported Events",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/webhook-events"}
        },
        {
          "name": "Create Webhook",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Postman Order Events\",\n  \"url\": \"{{webhook_target_url}}\",\n  \"events\": [\n    \"order.created\",\n    \"order.paid\",\n    \"payment.succeeded\"\n  ],\n  \"is_active\": true\n}"}, "url": "{{base_url}}/api/v1/admin/webhooks"},
          "description": "The signing secret is returned only in this response. The target must resolve publicly and use port 80 or 443.",
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Webhook created', () => pm.response.to.have.status(201));", "if (pm.response.code === 201) { const data = pm.response.json().data; pm.environment.set('webhook_uuid', data.id); pm.environment.set('webhook_signing_secret', data.signing_secret); }"]}}]
        },
        {
          "name": "List Webhooks",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/webhooks"}
        },
        {
          "name": "Update Webhook",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"events\": [\n    \"order.created\",\n    \"order.paid\",\n    \"order.cancelled\",\n    \"payment.succeeded\"\n  ],\n  \"is_active\": true\n}"}, "url": "{{base_url}}/api/v1/admin/webhooks/{{webhook_uuid}}"}
        },
        {
          "name": "List Deliveries",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/webhook-deliveries?per_page=20"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Deliveries returned', () => pm.response.to.have.status(200));", "if (pm.response.code === 200) { const rows = pm.response.json().data; if (rows && rows.length) pm.environment.set('webhook_delivery_uuid', rows[0].id); }"]}}]
        },
        {
          "name": "Show Delivery",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/webhook-deliveries/{{webhook_delivery_uuid}}"}
        },
        {
          "name": "Retry Delivery",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/webhook-deliveries/{{webhook_delivery_uuid}}/retry"},
          "description": "Queues the same delivery UUID again and resets its attempt state. Receivers should keep X-Originos-Delivery idempotent."
        },
        {
          "name": "Replay Delivery",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/webhook-deliveries/{{webhook_delivery_uuid}}/replay"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Replay created', () => pm.response.to.have.status(201));", "if (pm.response.code === 201) pm.environment.set('webhook_delivery_uuid', pm.response.json().data.id);"]}}]
        },
        {
          "name": "Rotate Signing Secret",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/webhooks/{{webhook_uuid}}/rotate-secret"},
          "description": "Immediately replaces the signing secret. Update your receiver before further events.",
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Secret rotated', () => pm.response.to.have.status(200));", "if (pm.response.code === 200) pm.environment.set('webhook_signing_secret', pm.response.json().data.signing_secret);"]}}]
        },
        {
          "name": "Delete Webhook",
          "request": {"method": "DELETE", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/webhooks/{{webhook_uuid}}"}
        }
      ]
    },
    {
      "name": "Customer",
      "auth": {"type": "bearer", "bearer": [{"key": "token", "value": "{{customer_token}}", "type": "string"}]},
      "item": [
        {
          "name": "Register",
          "request": {"auth": {"type": "noauth"}, "method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"first_name\": \"Ada\",\n  \"last_name\": \"Lovelace\",\n  \"email\": \"{{customer_email}}\",\n  \"password\": \"password1\",\n  \"password_confirmation\": \"password1\",\n  \"device_name\": \"postman-customer\"\n}"}, "url": "{{base_url}}/api/v1/storefront/customer/auth/register"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Customer registered', () => pm.response.to.have.status(201));", "if (pm.response.code === 201) { const data = pm.response.json().data; pm.environment.set('customer_token', data.token); pm.environment.set('customer_uuid', data.customer.id); }"]}}]
        },
        {
          "name": "Login",
          "request": {"auth": {"type": "noauth"}, "method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"email\": \"{{customer_email}}\",\n  \"password\": \"password1\",\n  \"device_name\": \"postman-customer\"\n}"}, "url": "{{base_url}}/api/v1/storefront/customer/auth/login"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Customer login succeeded', () => pm.response.to.have.status(200));", "if (pm.response.code === 200) { const data = pm.response.json().data; pm.environment.set('customer_token', data.token); pm.environment.set('customer_uuid', data.customer.id); }"]}}]
        },
        {
          "name": "Me",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/storefront/customer/me"}
        },
        {
          "name": "Create Address",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"type\": \"both\",\n  \"label\": \"Home\",\n  \"first_name\": \"Ada\",\n  \"last_name\": \"Lovelace\",\n  \"phone\": \"+905551112233\",\n  \"address_line_1\": \"Customer Street 1\",\n  \"city\": \"Istanbul\",\n  \"country\": \"TR\",\n  \"is_default\": true\n}"}, "url": "{{base_url}}/api/v1/storefront/customer/addresses"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Address created', () => pm.response.to.have.status(201));", "if (pm.response.code === 201) pm.environment.set('customer_address_uuid', pm.response.json().data.id);"]}}]
        },
        {
          "name": "List Addresses",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/storefront/customer/addresses"}
        },
        {
          "name": "Show Address",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/storefront/customer/addresses/{{customer_address_uuid}}"}
        },
        {
          "name": "Update Address",
          "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"label\": \"Primary Address\",\n  \"first_name\": \"Ada\",\n  \"last_name\": \"Lovelace\",\n  \"phone\": \"+905551112233\",\n  \"address_line_1\": \"Updated Customer Street 1\",\n  \"city\": \"Istanbul\",\n  \"country\": \"TR\",\n  \"is_default\": true\n}"}, "url": "{{base_url}}/api/v1/storefront/customer/addresses/{{customer_address_uuid}}"}
        },
        {
          "name": "Delete Address",
          "request": {"method": "DELETE", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/storefront/customer/addresses/{{customer_address_uuid}}"}
        },
        {
          "name": "List Orders",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/storefront/customer/orders?per_page=20"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Customer orders returned', () => pm.response.to.have.status(200));", "const orders = pm.response.json().data;", "if (orders && orders.length) pm.environment.set('order_uuid', orders[0].order_id);"]}}]
        },
        {
          "name": "Order Detail",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/storefront/customer/orders/{{order_uuid}}"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Customer owns order', () => pm.response.to.have.status(200));", "if (pm.response.code === 200) { const downloads = pm.response.json().data.downloads; if (downloads && downloads.length) { pm.environment.set('download_grant_uuid', downloads[0].id); pm.environment.set('download_url', downloads[0].download_url); } }"]}}]
        },
        {
          "name": "Guest Order Detail",
          "request": {"auth": {"type": "noauth"}, "method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}, {"key": "X-Order-Token", "value": "{{guest_order_token}}"}], "url": "{{base_url}}/api/v1/storefront/guest/orders/{{order_uuid}}"},
          "event": [{"listen": "test", "script": {"exec": ["pm.test('Guest order token accepted', () => pm.response.to.have.status(200));", "if (pm.response.code === 200) { const downloads = pm.response.json().data.downloads; if (downloads && downloads.length) { pm.environment.set('download_grant_uuid', downloads[0].id); pm.environment.set('download_url', downloads[0].download_url); } }"]}}]
        },
        {
          "name": "Download Digital File",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/octet-stream"}], "url": "{{download_url}}"},
          "description": "Uses the short-lived signed URL captured from a customer or guest order. Customer-bound grants require the customer bearer token."
        },
        {
          "name": "Logout",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/storefront/customer/auth/logout"}
        }
      ]
    },
    {
      "name": "Advanced Catalog",
      "auth": {"type": "bearer", "bearer": [{"key": "token", "value": "{{merchant_token}}", "type": "string"}]},
      "item": [
        {"name": "List Brands", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/brands"}},
        {"name": "Create Brand", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Originos Select\",\n  \"slug\": \"originos-select\",\n  \"is_active\": true\n}"}, "url": "{{base_url}}/api/v1/admin/brands"}, "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) pm.environment.set('brand_uuid', pm.response.json().data.uuid || pm.response.json().data.id);"]}}]},
        {"name": "Create Collection", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Yeni Gelenler\",\n  \"slug\": \"yeni-gelenler\",\n  \"is_active\": true,\n  \"sort_order\": 10\n}"}, "url": "{{base_url}}/api/v1/admin/collections"}, "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) pm.environment.set('collection_uuid', pm.response.json().data.uuid || pm.response.json().data.id);"]}}]},
        {"name": "Create Product Tag", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Çok Satan\",\n  \"slug\": \"cok-satan\"\n}"}, "url": "{{base_url}}/api/v1/admin/product-tags"}, "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) pm.environment.set('product_tag_uuid', pm.response.json().data.uuid || pm.response.json().data.id);"]}}]},
        {"name": "Bulk Update Products", "request": {"method": "PATCH", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"product_ids\": [\"{{product_uuid}}\"],\n  \"status\": \"active\",\n  \"brand_id\": \"{{brand_uuid}}\",\n  \"collection_ids\": [\"{{collection_uuid}}\"],\n  \"tag_ids\": [\"{{product_tag_uuid}}\"]\n}"}, "url": "{{base_url}}/api/v1/admin/products/bulk"}},
        {"name": "Set Primary Product Image", "request": {"method": "PUT", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/products/{{product_uuid}}/media/{{product_media_uuid}}/primary"}},
        {"name": "Export Products CSV", "request": {"method": "GET", "header": [{"key": "Accept", "value": "text/csv"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/products/export/csv"}},
        {"name": "Import Products CSV", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "formdata", "formdata": [{"key": "file", "type": "file", "src": []}]}, "url": "{{base_url}}/api/v1/admin/products/import/csv"}}
      ]
    },
    {
      "name": "Advanced CRM",
      "auth": {"type": "bearer", "bearer": [{"key": "token", "value": "{{merchant_token}}", "type": "string"}]},
      "item": [
        {"name": "Create Merchant Customer", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"first_name\": \"Ada\",\n  \"last_name\": \"Lovelace\",\n  \"email\": \"ada@example.com\",\n  \"status\": \"active\",\n  \"marketing_email_consent\": true\n}"}, "url": "{{base_url}}/api/v1/admin/customers"}},
        {"name": "Create CRM Tag", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"VIP\",\n  \"color\": \"#7c3aed\"\n}"}, "url": "{{base_url}}/api/v1/admin/crm-tags"}, "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) pm.environment.set('crm_tag_uuid', pm.response.json().data.id);"]}}]},
        {"name": "List CRM Tags", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/crm-tags"}},
        {"name": "Sync Customer Tags", "request": {"method": "PUT", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"tag_ids\": [\"{{crm_tag_uuid}}\"]\n}"}, "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}/tags"}},
        {"name": "Customer Data Export", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/customers/{{customer_uuid}}/data-export"}},
        {"name": "Export Customers CSV", "request": {"method": "GET", "header": [{"key": "Accept", "value": "text/csv"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/customers/export/csv"}},
        {"name": "Import Customers CSV", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "formdata", "formdata": [{"key": "file", "type": "file", "src": []}]}, "url": "{{base_url}}/api/v1/admin/customers/import/csv"}}
      ]
    },
    {
      "name": "Notifications",
      "auth": {"type": "bearer", "bearer": [{"key": "token", "value": "{{merchant_token}}", "type": "string"}]},
      "item": [
        {"name": "List Notification Templates", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/notification-templates"}},
        {"name": "Update Order Created Template", "request": {"method": "PUT", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"subject\": \"Siparişiniz alındı: {{order_number}}\",\n  \"body\": \"Siparişiniz alındı. Toplam: {{order_total}} {{currency}}\",\n  \"is_active\": true\n}"}, "url": "{{base_url}}/api/v1/admin/notification-templates/order.created"}},
        {"name": "Send Test Notification", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"event\": \"order.created\",\n  \"recipient\": \"test@example.com\",\n  \"variables\": {\"order_number\": \"TEST-1\", \"order_total\": 12990, \"currency\": \"TRY\"}\n}"}, "url": "{{base_url}}/api/v1/admin/notifications/test"}},
        {"name": "Notification Logs", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/notification-logs?per_page=20"}}
      ]
    },
    {
      "name": "Reports",
      "auth": {"type": "bearer", "bearer": [{"key": "token", "value": "{{merchant_token}}", "type": "string"}]},
      "item": [
        {"name": "Overview Report", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/reports/overview?date_from=2026-08-01&date_to=2026-08-31"}},
        {"name": "Product Report", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/reports/products?limit=25"}},
        {"name": "Customer Report", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/reports/customers?limit=25"}},
        {"name": "Discount Report", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/reports/discounts?limit=25"}},
        {"name": "Inventory Report", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/reports/inventory?limit=100"}},
        {"name": "Export Report CSV", "request": {"method": "GET", "header": [{"key": "Accept", "value": "text/csv"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "url": "{{base_url}}/api/v1/admin/reports/export/csv?type=products"}}
      ]
    },
    {
      "name": "Payment Webhooks",
      "auth": {"type": "noauth"},
      "item": [
        {
          "name": "Create PayTR IFrame Token",
          "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Store-Key", "value": "{{store_key}}"}], "body": {"mode": "raw", "raw": "{\n  \"order_id\": \"{{order_uuid}}\",\n  \"guest_access_token\": \"{{guest_order_token}}\"\n}"}, "url": "{{base_url}}/api/v1/storefront/payments/paytr/token"}
        },
        {
          "name": "PayTR Callback",
          "description": "PayTR bu isteği sunucudan sunucuya gönderir. hash değeri merchant key/salt ile üretilmelidir ve başarılı yanıt düz OK metnidir.",
          "request": {"method": "POST", "header": [{"key": "Content-Type", "value": "application/x-www-form-urlencoded"}], "body": {"mode": "urlencoded", "urlencoded": [{"key": "merchant_oid", "value": "{{payment_uuid}}"}, {"key": "status", "value": "success"}, {"key": "total_amount", "value": "{{payment_amount}}"}, {"key": "hash", "value": "{{paytr_hash}}"}]}, "url": "{{base_url}}/api/v1/payment/paytr/callback"}
        },
        {
          "name": "Signed Bank Transfer Callback",
          "request": {
            "method": "POST",
            "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}, {"key": "X-Payment-Signature", "value": "{{payment_signature}}"}],
            "body": {"mode": "raw", "raw": "{\n  \"event_id\": \"{{payment_event_id}}\",\n  \"store_id\": \"{{store_uuid}}\",\n  \"order_id\": \"{{order_uuid}}\",\n  \"payment_id\": \"{{payment_uuid}}\",\n  \"transaction_id\": \"{{payment_transaction_id}}\",\n  \"status\": \"paid\",\n  \"amount\": {{payment_amount}},\n  \"currency\": \"{{payment_currency}}\",\n  \"occurred_at\": \"{{payment_occurred_at}}\"\n}"},
            "url": "{{base_url}}/api/v1/payment/webhooks/bank_transfer"
          },
          "description": "Run Store Config, Checkout and Show Order first. The pre-request script signs the exact rendered raw body. Keep event/transaction/timestamp values unchanged for an idempotent retry.",
          "event": [
            {"listen": "prerequest", "script": {"exec": ["if (!pm.environment.get('payment_event_id')) pm.environment.set('payment_event_id', 'evt-' + pm.variables.replaceIn('{{$guid}}'));", "if (!pm.environment.get('payment_transaction_id')) pm.environment.set('payment_transaction_id', 'txn-' + pm.variables.replaceIn('{{$guid}}'));", "if (!pm.environment.get('payment_occurred_at')) pm.environment.set('payment_occurred_at', new Date().toISOString());", "const CryptoJS = require('crypto-js');", "const rawBody = pm.variables.replaceIn(pm.request.body.raw);", "const secret = pm.environment.get('manual_payment_webhook_secret');", "const signature = CryptoJS.HmacSHA256(rawBody, secret).toString(CryptoJS.enc.Hex);", "pm.environment.set('payment_signature', signature);"]}},
            {"listen": "test", "script": {"exec": ["pm.test('Payment callback accepted', () => pm.response.to.have.status(200));", "if (pm.response.code === 200) pm.environment.set('payment_receipt_id', pm.response.json().data.receipt_id);"]}}
          ]
        }
      ]
    },
    {
      "name": "Platform",
      "auth": {"type": "bearer", "bearer": [{"key": "token", "value": "{{platform_token}}", "type": "string"}]},
      "item": [
        {"name": "Login", "request": {"auth": {"type": "noauth"}, "method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}], "body": {"mode": "raw", "raw": "{\n  \"email\": \"admin@example.com\",\n  \"password\": \"password\",\n  \"device_name\": \"postman-platform\"\n}"}, "url": "{{base_url}}/api/v1/platform/auth/login"}, "event": [{"listen": "test", "script": {"exec": ["pm.test('Platform login succeeded', () => pm.response.to.have.status(200));", "if (pm.response.code === 200) pm.environment.set('platform_token', pm.response.json().data.token);"]}}]},
        {"name": "Dashboard", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/platform/dashboard"}},
        {"name": "Create Tenant", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Postman Merchant\",\n  \"email\": \"postman-merchant@example.com\"\n}"}, "url": "{{base_url}}/api/v1/platform/tenants"}, "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) pm.environment.set('tenant_uuid', pm.response.json().data.id);"]}}]},
        {"name": "Create Plan", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Postman Starter\",\n  \"slug\": \"postman-starter\",\n  \"price_amount\": 9900,\n  \"currency\": \"TRY\",\n  \"billing_interval\": \"monthly\",\n  \"is_active\": true,\n  \"features\": {\n    \"stores_limit\": \"1\",\n    \"products_limit\": \"100\",\n    \"themes_enabled\": \"true\"\n  }\n}"}, "url": "{{base_url}}/api/v1/platform/plans"}, "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) pm.environment.set('plan_uuid', pm.response.json().data.id);"]}}]},
        {"name": "Create Theme", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}], "body": {"mode": "raw", "raw": "{\n  \"name\": \"Postman Starter Theme\",\n  \"slug\": \"postman-starter-theme\",\n  \"version\": \"1.1.0\",\n  \"type\": \"free\",\n  \"is_active\": true,\n  \"is_public\": true,\n  \"manifest\": {\n    \"schema_version\": \"1.1.0\",\n    \"settings\": [\n      {\"key\": \"primary_color\", \"default\": \"#111827\"},\n      {\"key\": \"hero_title\", \"default\": \"Welcome\"},\n      {\"key\": \"custom_css\", \"default\": \".product-card { border-radius: 16px; }\"}\n    ]\n  }\n}"}, "url": "{{base_url}}/api/v1/platform/themes"}, "event": [{"listen": "test", "script": {"exec": ["pm.test('Theme created', () => pm.response.to.have.status(201));", "pm.test('Theme contract normalized', () => { if (pm.response.code === 201) { const manifest = pm.response.json().data.manifest; pm.expect(manifest.schema_version).to.eql('1.5.0'); pm.expect(manifest.settings).to.have.length(84); } });", "if (pm.response.code === 201) pm.environment.set('theme_uuid', pm.response.json().data.id);"]}}]},
        {"name": "List Themes", "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/platform/themes?per_page=20"}},
        {"name": "Onboard Store", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}], "body": {"mode": "raw", "raw": "{\n  \"tenant_id\": \"{{tenant_uuid}}\",\n  \"plan_id\": \"{{plan_uuid}}\",\n  \"name\": \"Postman Store\",\n  \"slug\": \"postman-store\",\n  \"email\": \"store@example.com\",\n  \"owner_name\": \"Postman Owner\",\n  \"owner_email\": \"owner@example.com\",\n  \"owner_password\": \"very-secret-password\"\n}"}, "url": "{{base_url}}/api/v1/platform/stores"}, "event": [{"listen": "test", "script": {"exec": ["if (pm.response.code === 201) { const data = pm.response.json().data; pm.environment.set('platform_store_uuid', data.store.id); pm.environment.set('store_key', data.public_key); }"]}}]},
        {"name": "Suspend Store", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/platform/stores/{{platform_store_uuid}}/suspend"}},
        {"name": "Activate Store", "request": {"method": "POST", "header": [{"key": "Accept", "value": "application/json"}], "url": "{{base_url}}/api/v1/platform/stores/{{platform_store_uuid}}/activate"}}
      ]
    }
  ]
}
