{
  "info": {
    "name": "SPOD (Spreadconnect) Fulfillment REST API",
    "description": "Print-on-demand fulfillment API for SPOD (Spreadshirt Print-On-Demand), now branded Spreadconnect. Create articles from designs, place and manage orders, choose shipping types and track shipments, browse product types, check stock, and manage webhook subscriptions. Base URL: https://rest.spod.com (staging: https://rest.spreadconnect-staging.app). Every request must include the X-SPOD-ACCESS-TOKEN header with your account access token generated in the SPOD/Spreadconnect web application.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      { "key": "key", "value": "X-SPOD-ACCESS-TOKEN", "type": "string" },
      { "key": "value", "value": "{{accessToken}}", "type": "string" },
      { "key": "in", "value": "header", "type": "string" }
    ]
  },
  "variable": [
    { "key": "baseUrl", "value": "https://rest.spod.com", "type": "string" },
    { "key": "accessToken", "value": "", "type": "string" }
  ],
  "item": [
    {
      "name": "Common",
      "item": [
        {
          "name": "Verify access token",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/authentication", "host": ["{{baseUrl}}"], "path": ["authentication"] },
            "description": "Confirms the supplied access token is valid."
          }
        }
      ]
    },
    {
      "name": "Articles",
      "item": [
        {
          "name": "List articles",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/articles?limit=50&offset=0", "host": ["{{baseUrl}}"], "path": ["articles"], "query": [ { "key": "limit", "value": "50" }, { "key": "offset", "value": "0" } ] },
            "description": "Retrieves all articles, paginated."
          }
        },
        {
          "name": "Create an article",
          "request": {
            "method": "POST",
            "header": [ { "key": "Content-Type", "value": "application/json" } ],
            "body": { "mode": "raw", "raw": "{\n  \"title\": \"My Article\",\n  \"description\": \"Custom tee\",\n  \"productTypeId\": 210,\n  \"configurations\": []\n}" },
            "url": { "raw": "{{baseUrl}}/articles", "host": ["{{baseUrl}}"], "path": ["articles"] },
            "description": "Creates a new customizable article by combining a design with a product type and view."
          }
        },
        {
          "name": "Get an article",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/articles/:articleId", "host": ["{{baseUrl}}"], "path": ["articles", ":articleId"], "variable": [ { "key": "articleId", "value": "" } ] },
            "description": "Fetches a specific article by ID."
          }
        },
        {
          "name": "Delete an article",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{baseUrl}}/articles/:articleId", "host": ["{{baseUrl}}"], "path": ["articles", ":articleId"], "variable": [ { "key": "articleId", "value": "" } ] },
            "description": "Removes an article."
          }
        }
      ]
    },
    {
      "name": "Orders",
      "item": [
        {
          "name": "Create an order",
          "request": {
            "method": "POST",
            "header": [ { "key": "Content-Type", "value": "application/json" } ],
            "body": { "mode": "raw", "raw": "{\n  \"orderItems\": [],\n  \"shipping\": {},\n  \"billingAddress\": {},\n  \"state\": \"CONFIRMED\"\n}" },
            "url": { "raw": "{{baseUrl}}/orders", "host": ["{{baseUrl}}"], "path": ["orders"] },
            "description": "Creates a new order. Simple flow: send preferred shipping type and state CONFIRMED. Controlled flow: create with mandatory fields, then set shipping type and confirm."
          }
        },
        {
          "name": "Get an order",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/orders/:orderId", "host": ["{{baseUrl}}"], "path": ["orders", ":orderId"], "variable": [ { "key": "orderId", "value": "" } ] },
            "description": "Retrieves order information."
          }
        },
        {
          "name": "Update an order",
          "request": {
            "method": "PUT",
            "header": [ { "key": "Content-Type", "value": "application/json" } ],
            "body": { "mode": "raw", "raw": "{\n  \"orderItems\": [],\n  \"shipping\": {},\n  \"billingAddress\": {}\n}" },
            "url": { "raw": "{{baseUrl}}/orders/:orderId", "host": ["{{baseUrl}}"], "path": ["orders", ":orderId"], "variable": [ { "key": "orderId", "value": "" } ] },
            "description": "Modifies an order that has not yet been confirmed."
          }
        },
        {
          "name": "Confirm an order",
          "request": {
            "method": "POST",
            "header": [],
            "url": { "raw": "{{baseUrl}}/orders/:orderId/confirm", "host": ["{{baseUrl}}"], "path": ["orders", ":orderId", "confirm"], "variable": [ { "key": "orderId", "value": "" } ] },
            "description": "Confirms an order so it enters production."
          }
        },
        {
          "name": "Cancel an order",
          "request": {
            "method": "POST",
            "header": [],
            "url": { "raw": "{{baseUrl}}/orders/:orderId/cancel", "host": ["{{baseUrl}}"], "path": ["orders", ":orderId", "cancel"], "variable": [ { "key": "orderId", "value": "" } ] },
            "description": "Attempts to cancel an order while it has not yet entered production."
          }
        }
      ]
    },
    {
      "name": "Shipping",
      "item": [
        {
          "name": "Get available shipping types",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/orders/:orderId/shippingTypes", "host": ["{{baseUrl}}"], "path": ["orders", ":orderId", "shippingTypes"], "variable": [ { "key": "orderId", "value": "" } ] },
            "description": "Lists shipping types available for an order with price and delivery estimate."
          }
        },
        {
          "name": "Set shipping type",
          "request": {
            "method": "POST",
            "header": [ { "key": "Content-Type", "value": "application/json" } ],
            "body": { "mode": "raw", "raw": "{\n  \"shippingType\": 1\n}" },
            "url": { "raw": "{{baseUrl}}/orders/:orderId/shippingType", "host": ["{{baseUrl}}"], "path": ["orders", ":orderId", "shippingType"], "variable": [ { "key": "orderId", "value": "" } ] },
            "description": "Sets the preferred shipping type on an order."
          }
        },
        {
          "name": "Get shipments",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/orders/:orderId/shipments", "host": ["{{baseUrl}}"], "path": ["orders", ":orderId", "shipments"], "variable": [ { "key": "orderId", "value": "" } ] },
            "description": "Retrieves shipment records and tracking details for an order."
          }
        }
      ]
    },
    {
      "name": "Product Types",
      "item": [
        {
          "name": "List product types",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/productTypes", "host": ["{{baseUrl}}"], "path": ["productTypes"] },
            "description": "Lists the catalog of available product types (article types)."
          }
        },
        {
          "name": "Get a product type",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/productTypes/:productTypeId", "host": ["{{baseUrl}}"], "path": ["productTypes", ":productTypeId"], "variable": [ { "key": "productTypeId", "value": "" } ] },
            "description": "Retrieves a product type with sizes, colors, views, and printable areas."
          }
        }
      ]
    },
    {
      "name": "Stock",
      "item": [
        {
          "name": "List stock for all variants",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/stock", "host": ["{{baseUrl}}"], "path": ["stock"] },
            "description": "Retrieves inventory availability across all product variants."
          }
        },
        {
          "name": "Get stock for a SKU",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/stock/:sku", "host": ["{{baseUrl}}"], "path": ["stock", ":sku"], "variable": [ { "key": "sku", "value": "" } ] },
            "description": "Retrieves stock for a specific variant SKU."
          }
        }
      ]
    },
    {
      "name": "Subscriptions",
      "item": [
        {
          "name": "List subscriptions",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/subscriptions", "host": ["{{baseUrl}}"], "path": ["subscriptions"] },
            "description": "Lists active webhook subscriptions."
          }
        },
        {
          "name": "Create a subscription",
          "request": {
            "method": "POST",
            "header": [ { "key": "Content-Type", "value": "application/json" } ],
            "body": { "mode": "raw", "raw": "{\n  \"eventType\": \"Order.processed\",\n  \"url\": \"https://example.com/webhooks/spod\",\n  \"secret\": \"my-webhook-secret\"\n}" },
            "url": { "raw": "{{baseUrl}}/subscriptions", "host": ["{{baseUrl}}"], "path": ["subscriptions"] },
            "description": "Registers a webhook subscription. Notifications arrive via POST and must be acknowledged with a 202, a response within 8 seconds, and payload [accepted]."
          }
        },
        {
          "name": "Delete a subscription",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{baseUrl}}/subscriptions/:subscriptionId", "host": ["{{baseUrl}}"], "path": ["subscriptions", ":subscriptionId"], "variable": [ { "key": "subscriptionId", "value": "" } ] },
            "description": "Removes a webhook subscription."
          }
        },
        {
          "name": "Simulate Order.cancelled event",
          "request": {
            "method": "POST",
            "header": [],
            "url": { "raw": "{{baseUrl}}/orders/:orderId/simulate/order-cancelled", "host": ["{{baseUrl}}"], "path": ["orders", ":orderId", "simulate", "order-cancelled"], "variable": [ { "key": "orderId", "value": "" } ] },
            "description": "Triggers a test Order.cancelled webhook notification (test/staging use)."
          }
        },
        {
          "name": "Simulate Order.processed event",
          "request": {
            "method": "POST",
            "header": [],
            "url": { "raw": "{{baseUrl}}/orders/:orderId/simulate/order-processed", "host": ["{{baseUrl}}"], "path": ["orders", ":orderId", "simulate", "order-processed"], "variable": [ { "key": "orderId", "value": "" } ] },
            "description": "Triggers a test Order.processed webhook notification (test/staging use)."
          }
        },
        {
          "name": "Simulate Shipment.sent event",
          "request": {
            "method": "POST",
            "header": [],
            "url": { "raw": "{{baseUrl}}/orders/:orderId/simulate/shipment-sent", "host": ["{{baseUrl}}"], "path": ["orders", ":orderId", "simulate", "shipment-sent"], "variable": [ { "key": "orderId", "value": "" } ] },
            "description": "Triggers a test Shipment.sent webhook notification (test/staging use)."
          }
        }
      ]
    }
  ]
}
