{
  "info": {
    "name": "EQUOS API",
    "description": "EQUOS public API (e9v3). Set the collection variables `client_id` / `client_secret` from an API key created in the subscriber console (Integrations → API Keys), then run 'Get access token' — it stores the token for every other request. Secrets are rotatable in the console; never hard-code them.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [{ "key": "token", "value": "{{access_token}}", "type": "string" }]
  },
  "variable": [
    { "key": "base_url", "value": "https://api.equos.one" },
    { "key": "token_url", "value": "https://id.equos.one/oidc/token" },
    { "key": "client_id", "value": "" },
    { "key": "client_secret", "value": "" },
    { "key": "access_token", "value": "" }
  ],
  "item": [
    {
      "name": "Auth",
      "item": [
        {
          "name": "Get access token",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "const data = pm.response.json();",
                  "if (data.access_token) {",
                  "  pm.collectionVariables.set('access_token', data.access_token);",
                  "  console.log('access_token stored; expires_in', data.expires_in);",
                  "} else {",
                  "  console.warn('no access_token in response', data);",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/x-www-form-urlencoded" }],
            "url": { "raw": "{{token_url}}", "host": ["{{token_url}}"] },
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                { "key": "grant_type", "value": "client_credentials" },
                { "key": "client_id", "value": "{{client_id}}" },
                { "key": "client_secret", "value": "{{client_secret}}" },
                { "key": "resource", "value": "https://api.equos.one" },
                { "key": "scope", "value": "orders:read orders:write inventory:read inventory:write contacts:read" }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Orders",
      "item": [
        {
          "name": "List orders",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/e9v3/orders?type=send&limit=20",
              "host": ["{{base_url}}"],
              "path": ["e9v3", "orders"],
              "query": [
                { "key": "type", "value": "send" },
                { "key": "limit", "value": "20" },
                { "key": "archived", "value": "true", "disabled": true },
                { "key": "status", "value": "", "disabled": true },
                { "key": "search", "value": "", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Get order",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/e9v3/orders/send/:orderId",
              "host": ["{{base_url}}"],
              "path": ["e9v3", "orders", "send", ":orderId"],
              "variable": [{ "key": "orderId", "value": "" }]
            }
          }
        },
        {
          "name": "Create send order",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": { "raw": "{{base_url}}/e9v3/orders/send", "host": ["{{base_url}}"], "path": ["e9v3", "orders", "send"] },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customerId\": \"cust-123\",\n  \"reference1\": \"PO-1001\",\n  \"items\": [\n    { \"sku\": \"SKU-001\", \"productName\": \"Widget A\", \"quantity\": 10 }\n  ],\n  \"sourceRecordId\": \"your-system-id-1001\"\n}"
            }
          }
        },
        {
          "name": "Create send order (match-or-create customer)",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": { "raw": "{{base_url}}/e9v3/orders/send-matched", "host": ["{{base_url}}"], "path": ["e9v3", "orders", "send-matched"] },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customerEmail\": \"jane@example.com\",\n  \"customerName\": \"Jane Citizen\",\n  \"customerPhone\": \"0400000000\",\n  \"items\": [\n    { \"sku\": \"SKU-001\", \"productName\": \"Widget A\", \"quantity\": 2 }\n  ],\n  \"sourceRecordId\": \"shop-order-5001\"\n}"
            }
          }
        },
        {
          "name": "Create receive order",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": { "raw": "{{base_url}}/e9v3/orders/receive", "host": ["{{base_url}}"], "path": ["e9v3", "orders", "receive"] },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"supplierId\": \"sup-123\",\n  \"items\": [\n    { \"sku\": \"SKU-001\", \"productName\": \"Widget A\", \"quantity\": 100 }\n  ],\n  \"sourceRecordId\": \"grn-2001\"\n}"
            }
          }
        },
        {
          "name": "Sync order (generic)",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": { "raw": "{{base_url}}/e9v3/orders/sync", "host": ["{{base_url}}"], "path": ["e9v3", "orders", "sync"] },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"orderType\": \"send\",\n  \"customerId\": \"cust-123\",\n  \"items\": [\n    { \"sku\": \"SKU-001\", \"productName\": \"Widget A\", \"quantity\": 10 }\n  ]\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Jobs",
      "item": [
        {
          "name": "Get job status",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/e9v3/jobs/:jobId",
              "host": ["{{base_url}}"],
              "path": ["e9v3", "jobs", ":jobId"],
              "variable": [{ "key": "jobId", "value": "" }]
            }
          }
        }
      ]
    },
    {
      "name": "Inventory",
      "item": [
        {
          "name": "List inventory",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/e9v3/inventory?limit=50",
              "host": ["{{base_url}}"],
              "path": ["e9v3", "inventory"],
              "query": [
                { "key": "limit", "value": "50" },
                { "key": "search", "value": "", "disabled": true },
                { "key": "cursor", "value": "", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Get inventory item",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/e9v3/inventory/:itemId",
              "host": ["{{base_url}}"],
              "path": ["e9v3", "inventory", ":itemId"],
              "variable": [{ "key": "itemId", "value": "" }]
            }
          }
        },
        {
          "name": "Declare on-hand quantity",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "url": { "raw": "{{base_url}}/e9v3/inventory/sync", "host": ["{{base_url}}"], "path": ["e9v3", "inventory", "sync"] },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"sku\": \"SKU-001\",\n  \"quantity\": 250,\n  \"sourceRecordId\": \"stock-sync-001\"\n}"
            }
          }
        }
      ]
    },
    {
      "name": "Contacts",
      "item": [
        {
          "name": "List contacts",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/e9v3/contacts?limit=50",
              "host": ["{{base_url}}"],
              "path": ["e9v3", "contacts"],
              "query": [
                { "key": "limit", "value": "50" },
                { "key": "search", "value": "", "disabled": true },
                { "key": "page", "value": "", "disabled": true }
              ]
            }
          }
        },
        {
          "name": "Get contact",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/e9v3/contacts/:contactId",
              "host": ["{{base_url}}"],
              "path": ["e9v3", "contacts", ":contactId"],
              "variable": [{ "key": "contactId", "value": "" }]
            }
          }
        }
      ]
    },
    {
      "name": "Manufacturing",
      "item": [
        {
          "name": "List manufacturing tasks",
          "request": {
            "method": "GET",
            "url": { "raw": "{{base_url}}/e9v3/manufacturing", "host": ["{{base_url}}"], "path": ["e9v3", "manufacturing"] }
          }
        },
        {
          "name": "Get manufacturing task",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/e9v3/manufacturing/:taskType/:taskId",
              "host": ["{{base_url}}"],
              "path": ["e9v3", "manufacturing", ":taskType", ":taskId"],
              "variable": [
                { "key": "taskType", "value": "" },
                { "key": "taskId", "value": "" }
              ]
            }
          }
        }
      ]
    },
    {
      "name": "Addresses",
      "item": [
        {
          "name": "Search addresses",
          "request": {
            "method": "GET",
            "url": {
              "raw": "{{base_url}}/e9v3/addresses/search?q=1 George St Sydney",
              "host": ["{{base_url}}"],
              "path": ["e9v3", "addresses", "search"],
              "query": [{ "key": "q", "value": "1 George St Sydney" }]
            }
          }
        }
      ]
    }
  ]
}
