API Explorer

ItsPawned API

A framework-free JSON API for catalog browsing, category navigation, cart flows, and token-based admin operations.

Version v1
Base URL https://api.ItsPawned.com/

Resource type

General

Service health and platform-wide utility endpoints.

GET

/

Health check

Confirms the API is available and returns service metadata.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "service": "ItsPawned",
    "api_version": "v1"
}

Live response

Press "Send request" to fetch a live response.
GET

/health

Health check alias

Alias of the root health check endpoint for uptime monitors and infrastructure probes.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "service": "ItsPawned",
    "api_version": "v1"
}

Live response

Press "Send request" to fetch a live response.
GET

/docs

Interactive API explorer

Returns the HTML API explorer UI generated from this documentation spec.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

"<!doctype html><html><head><title>API Explorer</title></head><body>Interactive API explorer</body></html>"

Live response

Press "Send request" to fetch a live response.
GET

/openapi.json

OpenAPI document

Returns the generated OpenAPI 3.0.3 document for this API.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "openapi": "3.0.3",
    "info": {
        "title": "ItsPawned API",
        "version": "v1"
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/spec

OpenAPI document alias

Alias of the generated OpenAPI document endpoint.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "openapi": "3.0.3",
    "info": {
        "title": "ItsPawned API",
        "version": "v1"
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/docs/postman-collection

Generated Postman collection

Downloads the generated Postman collection derived from the same endpoint specification used by the explorer and OpenAPI output.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "info": {
        "name": "ItsPawned API",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "item": []
}

Live response

Press "Send request" to fetch a live response.

Resource type

Products

Product listing, featured merchandising, and individual product lookups.

GET

/products

List products

Returns all products, optionally filtered by category slug and free-text search.

Request

Query parameters

Open in new tab

Request URL will appear here.

Example response

{
    "data": [
        {
            "sku": "NS-1050",
            "slug": "acrylic-price-blocks",
            "name": "Acrylic Price Blocks",
            "category": "Retail Display",
            "category_slug": "retail-display",
            "category_summary": "Display-support tools for cleaner demos, organized counters, and better small-format merchandising.",
            "summary": "Reusable acrylic blocks for pricing cards and short promotional copy.",
            "description": "The Acrylic Price Blocks keep pricing and short messaging clean, readable, and consistent across counters and display tables.",
            "price": 22.95,
            "inventory": 81,
            "featured": true,
            "features": [
                "Clear slot for paper or card inserts",
                "Low profile suited to smaller products",
                "Easy-wipe acrylic with rounded edges"
            ],
            "specs": {
                "Count": "6 blocks",
                "Insert size": "2 in x 3.5 in",
                "Material": "Clear acrylic"
            },
            "discount_percent": 15,
            "discount_label": "",
            "tags": [],
            "media": [
                {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%234338ca%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23c4b5fd%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ERetail%20Display%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EAcrylic%20Price%20Blocks%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1050%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Acrylic Price Blocks image 1"
                }
            ],
            "base_price": 27,
            "has_discount": true,
            "savings_amount": 4.05,
            "primary_image": {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%234338ca%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23c4b5fd%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ERetail%20Display%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EAcrylic%20Price%20Blocks%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1050%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Acrylic Price Blocks image 1"
            }
        },
        {
            "sku": "NS-1046",
            "slug": "field-crew-vest",
            "name": "Field Crew Vest",
            "category": "Apparel",
            "category_slug": "apparel",
            "category_summary": "Hard-wearing soft goods for retail floors, pop-up activations, and customer-facing demos.",
            "summary": "Light quilted vest with utility pockets and internal device sleeve.",
            "description": "The Field Crew Vest adds pocket capacity and light warmth without restricting movement during setup, visits, and inventory tasks.",
            "price": 92,
            "inventory": 24,
            "featured": true,
            "features": [
                "Light insulation for shoulder seasons",
                "Internal chest sleeve for phones or small scanners",
                "Two-way front zip for easier seated wear"
            ],
            "specs": {
                "Shell": "Recycled nylon",
                "Insulation": "60 gsm synthetic fill",
                "Fit": "Regular layering fit"
            },
            "base_price": 92,
            "discount_percent": 0,
            "discount_label": "",
            "has_discount": false,
            "savings_amount": 0,
            "tags": [],
            "media": [
                {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%237f1d1d%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23fca5a5%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3EApparel%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Crew%20Vest%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1046%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Field Crew Vest placeholder artwork"
                }
            ],
            "primary_image": {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%237f1d1d%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23fca5a5%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3EApparel%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Crew%20Vest%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1046%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Field Crew Vest placeholder artwork"
            }
        }
    ],
    "meta": {
        "count": 53,
        "page": 1,
        "per_page": 2,
        "total_pages": 27,
        "sort": "featured",
        "sort_options": [
            {
                "value": "featured",
                "label": "Featured first"
            },
            {
                "value": "price-asc",
                "label": "Price: low to high"
            },
            {
                "value": "price-desc",
                "label": "Price: high to low"
            },
            {
                "value": "name-asc",
                "label": "Name: A to Z"
            },
            {
                "value": "name-desc",
                "label": "Name: Z to A"
            }
        ],
        "search": "",
        "category": "",
        "from": 1,
        "to": 2,
        "has_previous": false,
        "has_next": true,
        "categories": [
            {
                "slug": "apparel",
                "name": "Apparel",
                "summary": "Hard-wearing soft goods for retail floors, pop-up activations, and customer-facing demos.",
                "product_count": 9
            },
            {
                "slug": "hydration",
                "name": "Hydration",
                "summary": "Everyday hydration gear for long routes, site visits, and all-day travel between meetings.",
                "product_count": 9
            },
            {
                "slug": "retail-display",
                "name": "Retail Display",
                "summary": "Display-support tools for cleaner demos, organized counters, and better small-format merchandising.",
                "product_count": 8
            },
            {
                "slug": "stationery",
                "name": "Stationery",
                "summary": "Paper goods made for field notes, planning, and structured follow-up after customer conversations.",
                "product_count": 9
            },
            {
                "slug": "travel-gear",
                "name": "Travel Gear",
                "summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
                "product_count": 9
            },
            {
                "slug": "workspace",
                "name": "Workspace",
                "summary": "Desk-bound tools designed to make counters, checkout stations, and shared work surfaces feel more deliberate.",
                "product_count": 9
            }
        ]
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/products/featured

Featured products

Returns the current featured product set for storefront merchandising.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "data": [
        {
            "sku": "NS-1050",
            "slug": "acrylic-price-blocks",
            "name": "Acrylic Price Blocks",
            "category": "Retail Display",
            "category_slug": "retail-display",
            "category_summary": "Display-support tools for cleaner demos, organized counters, and better small-format merchandising.",
            "summary": "Reusable acrylic blocks for pricing cards and short promotional copy.",
            "description": "The Acrylic Price Blocks keep pricing and short messaging clean, readable, and consistent across counters and display tables.",
            "price": 22.95,
            "inventory": 81,
            "featured": true,
            "features": [
                "Clear slot for paper or card inserts",
                "Low profile suited to smaller products",
                "Easy-wipe acrylic with rounded edges"
            ],
            "specs": {
                "Count": "6 blocks",
                "Insert size": "2 in x 3.5 in",
                "Material": "Clear acrylic"
            },
            "discount_percent": 15,
            "discount_label": "",
            "tags": [],
            "media": [
                {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%234338ca%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23c4b5fd%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ERetail%20Display%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EAcrylic%20Price%20Blocks%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1050%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Acrylic Price Blocks image 1"
                }
            ],
            "base_price": 27,
            "has_discount": true,
            "savings_amount": 4.05,
            "primary_image": {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%234338ca%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23c4b5fd%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ERetail%20Display%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EAcrylic%20Price%20Blocks%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1050%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Acrylic Price Blocks image 1"
            }
        },
        {
            "sku": "NS-1046",
            "slug": "field-crew-vest",
            "name": "Field Crew Vest",
            "category": "Apparel",
            "category_slug": "apparel",
            "category_summary": "Hard-wearing soft goods for retail floors, pop-up activations, and customer-facing demos.",
            "summary": "Light quilted vest with utility pockets and internal device sleeve.",
            "description": "The Field Crew Vest adds pocket capacity and light warmth without restricting movement during setup, visits, and inventory tasks.",
            "price": 92,
            "inventory": 24,
            "featured": true,
            "features": [
                "Light insulation for shoulder seasons",
                "Internal chest sleeve for phones or small scanners",
                "Two-way front zip for easier seated wear"
            ],
            "specs": {
                "Shell": "Recycled nylon",
                "Insulation": "60 gsm synthetic fill",
                "Fit": "Regular layering fit"
            },
            "base_price": 92,
            "discount_percent": 0,
            "discount_label": "",
            "has_discount": false,
            "savings_amount": 0,
            "tags": [],
            "media": [
                {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%237f1d1d%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23fca5a5%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3EApparel%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Crew%20Vest%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1046%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Field Crew Vest placeholder artwork"
                }
            ],
            "primary_image": {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%237f1d1d%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23fca5a5%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3EApparel%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Crew%20Vest%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1046%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Field Crew Vest placeholder artwork"
            }
        },
        {
            "sku": "NS-1001",
            "slug": "field-pack-utility-kit",
            "name": "Field Pack Utility Kit",
            "category": "Travel Gear",
            "category_slug": "travel-gear",
            "category_summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
            "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
            "description": "The Field Pack Utility Kit is a modular carry system built for fast-moving teams. It keeps chargers, documents, samples, and personal gear organized without becoming bulky during travel days.",
            "price": 89,
            "inventory": 24,
            "featured": true,
            "features": [
                "Weather-resistant shell with reinforced base panel",
                "Interior divider system sized for forms, cables, and accessories",
                "Quick-access side pocket for phone and badge carry"
            ],
            "specs": {
                "Material": "Waxed ripstop and ballistic nylon trim",
                "Capacity": "18 liters",
                "Weight": "2.1 lb"
            },
            "base_price": 89,
            "discount_percent": 0,
            "discount_label": "",
            "has_discount": false,
            "savings_amount": 0,
            "tags": [],
            "media": [
                {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Field Pack Utility Kit placeholder artwork"
                }
            ],
            "primary_image": {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Field Pack Utility Kit placeholder artwork"
            }
        }
    ],
    "meta": {
        "count": 11,
        "filter": "featured"
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/products/{slug}

Product detail

Returns one product, including normalized media fields, plus a related-product collection.

Request

Path parameters

Open in new tab

Request URL will appear here.

Example response

{
    "data": {
        "sku": "NS-1001",
        "slug": "field-pack-utility-kit",
        "name": "Field Pack Utility Kit",
        "category": "Travel Gear",
        "category_slug": "travel-gear",
        "category_summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
        "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
        "description": "The Field Pack Utility Kit is a modular carry system built for fast-moving teams. It keeps chargers, documents, samples, and personal gear organized without becoming bulky during travel days.",
        "price": 89,
        "inventory": 24,
        "featured": true,
        "features": [
            "Weather-resistant shell with reinforced base panel",
            "Interior divider system sized for forms, cables, and accessories",
            "Quick-access side pocket for phone and badge carry"
        ],
        "specs": {
            "Material": "Waxed ripstop and ballistic nylon trim",
            "Capacity": "18 liters",
            "Weight": "2.1 lb"
        },
        "base_price": 89,
        "discount_percent": 0,
        "discount_label": "",
        "has_discount": false,
        "savings_amount": 0,
        "tags": [],
        "media": [
            {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Field Pack Utility Kit placeholder artwork"
            }
        ],
        "primary_image": {
            "type": "image",
            "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
            "alt": "Field Pack Utility Kit placeholder artwork"
        }
    },
    "meta": {
        "related": [
            {
                "sku": "NS-1007",
                "slug": "trail-brief-organizer",
                "name": "Trail Brief Organizer",
                "category": "Travel Gear",
                "category_slug": "travel-gear",
                "category_summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
                "summary": "Slim zip organizer for proposals, receipts, and charging gear.",
                "description": "The Trail Brief Organizer keeps daily travel documents separated from cables and accessories, making quick stops and handoffs easier to manage.",
                "price": 48,
                "inventory": 39,
                "featured": false,
                "features": [
                    "Three-panel internal layout for paper and accessories",
                    "Water-shedding exterior with soft inner lining",
                    "Flat profile sized for briefcases and field packs"
                ],
                "specs": {
                    "Material": "Coated canvas",
                    "Closure": "YKK zip",
                    "Length": "13 in"
                },
                "base_price": 48,
                "discount_percent": 0,
                "discount_label": "",
                "has_discount": false,
                "savings_amount": 0,
                "tags": [],
                "media": [
                    {
                        "type": "image",
                        "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3ETrail%20Brief%20Organizer%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1007%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                        "alt": "Trail Brief Organizer placeholder artwork"
                    }
                ],
                "primary_image": {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3ETrail%20Brief%20Organizer%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1007%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Trail Brief Organizer placeholder artwork"
                }
            },
            {
                "sku": "NS-1008",
                "slug": "route-case-sling",
                "name": "Route Case Sling",
                "category": "Travel Gear",
                "category_slug": "travel-gear",
                "category_summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
                "summary": "Cross-body sling for tablets, forms, and quick-access personal carry.",
                "description": "The Route Case Sling is built for short site visits and high-mobility days, balancing document storage with a compact tablet sleeve.",
                "price": 72,
                "inventory": 27,
                "featured": true,
                "features": [
                    "Padded tablet sleeve with top zip access",
                    "Wide stabilizing strap for active movement",
                    "Front admin pocket with pen and badge slots"
                ],
                "specs": {
                    "Capacity": "9 liters",
                    "Weight": "1.4 lb",
                    "Fit": "Left or right shoulder carry"
                },
                "base_price": 72,
                "discount_percent": 0,
                "discount_label": "",
                "has_discount": false,
                "savings_amount": 0,
                "tags": [],
                "media": [
                    {
                        "type": "image",
                        "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3ERoute%20Case%20Sling%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1008%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                        "alt": "Route Case Sling placeholder artwork"
                    }
                ],
                "primary_image": {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3ERoute%20Case%20Sling%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1008%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Route Case Sling placeholder artwork"
                }
            },
            {
                "sku": "NS-1009",
                "slug": "survey-clip-folio",
                "name": "Survey Clip Folio",
                "category": "Travel Gear",
                "category_slug": "travel-gear",
                "category_summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
                "summary": "Hardback folio with internal clipboard and tablet pocket.",
                "description": "The Survey Clip Folio is designed for inspections, signatures, and field notes where teams need paper support without giving up device storage.",
                "price": 58,
                "inventory": 33,
                "featured": false,
                "features": [
                    "Integrated metal clip under a weather flap",
                    "Document pockets sized for letter forms",
                    "Elastic pen loop and stylus keeper"
                ],
                "specs": {
                    "Height": "12.5 in",
                    "Width": "9.75 in",
                    "Shell": "Compressed felt board"
                },
                "base_price": 58,
                "discount_percent": 0,
                "discount_label": "",
                "has_discount": false,
                "savings_amount": 0,
                "tags": [],
                "media": [
                    {
                        "type": "image",
                        "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3ESurvey%20Clip%20Folio%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1009%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                        "alt": "Survey Clip Folio placeholder artwork"
                    }
                ],
                "primary_image": {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3ESurvey%20Clip%20Folio%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1009%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Survey Clip Folio placeholder artwork"
                }
            }
        ]
    }
}

Live response

Press "Send request" to fetch a live response.

Resource type

Categories

Category summaries and product collections grouped by category.

GET

/categories

List categories

Returns category summaries with product counts for catalog navigation.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "data": [
        {
            "slug": "apparel",
            "name": "Apparel",
            "summary": "Hard-wearing soft goods for retail floors, pop-up activations, and customer-facing demos.",
            "product_count": 9
        },
        {
            "slug": "hydration",
            "name": "Hydration",
            "summary": "Everyday hydration gear for long routes, site visits, and all-day travel between meetings.",
            "product_count": 9
        },
        {
            "slug": "retail-display",
            "name": "Retail Display",
            "summary": "Display-support tools for cleaner demos, organized counters, and better small-format merchandising.",
            "product_count": 8
        },
        {
            "slug": "stationery",
            "name": "Stationery",
            "summary": "Paper goods made for field notes, planning, and structured follow-up after customer conversations.",
            "product_count": 9
        },
        {
            "slug": "travel-gear",
            "name": "Travel Gear",
            "summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
            "product_count": 9
        },
        {
            "slug": "workspace",
            "name": "Workspace",
            "summary": "Desk-bound tools designed to make counters, checkout stations, and shared work surfaces feel more deliberate.",
            "product_count": 9
        }
    ],
    "meta": {
        "count": 6
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/categories/{slug}

Category detail

Returns one category and a paginated, sortable list of the products assigned to it.

Request

Path parameters

Query parameters

Open in new tab

Request URL will appear here.

Example response

{
    "data": {
        "slug": "apparel",
        "name": "Apparel",
        "summary": "Hard-wearing soft goods for retail floors, pop-up activations, and customer-facing demos.",
        "product_count": 9
    },
    "meta": {
        "count": 9,
        "page": 1,
        "per_page": 2,
        "total_pages": 5,
        "sort": "featured",
        "sort_options": [
            {
                "value": "featured",
                "label": "Featured first"
            },
            {
                "value": "price-asc",
                "label": "Price: low to high"
            },
            {
                "value": "price-desc",
                "label": "Price: high to low"
            },
            {
                "value": "name-asc",
                "label": "Name: A to Z"
            },
            {
                "value": "name-desc",
                "label": "Name: Z to A"
            }
        ],
        "search": "",
        "category": "apparel",
        "from": 1,
        "to": 2,
        "has_previous": false,
        "has_next": true,
        "products": [
            {
                "sku": "NS-1046",
                "slug": "field-crew-vest",
                "name": "Field Crew Vest",
                "category": "Apparel",
                "category_slug": "apparel",
                "category_summary": "Hard-wearing soft goods for retail floors, pop-up activations, and customer-facing demos.",
                "summary": "Light quilted vest with utility pockets and internal device sleeve.",
                "description": "The Field Crew Vest adds pocket capacity and light warmth without restricting movement during setup, visits, and inventory tasks.",
                "price": 92,
                "inventory": 24,
                "featured": true,
                "features": [
                    "Light insulation for shoulder seasons",
                    "Internal chest sleeve for phones or small scanners",
                    "Two-way front zip for easier seated wear"
                ],
                "specs": {
                    "Shell": "Recycled nylon",
                    "Insulation": "60 gsm synthetic fill",
                    "Fit": "Regular layering fit"
                },
                "base_price": 92,
                "discount_percent": 0,
                "discount_label": "",
                "has_discount": false,
                "savings_amount": 0,
                "tags": [],
                "media": [
                    {
                        "type": "image",
                        "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%237f1d1d%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23fca5a5%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3EApparel%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Crew%20Vest%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1046%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                        "alt": "Field Crew Vest placeholder artwork"
                    }
                ],
                "primary_image": {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%237f1d1d%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23fca5a5%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3EApparel%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Crew%20Vest%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1046%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Field Crew Vest placeholder artwork"
                }
            },
            {
                "sku": "NS-1005",
                "slug": "canvas-merchant-apron",
                "name": "Canvas Merchant Apron",
                "category": "Apparel",
                "category_slug": "apparel",
                "category_summary": "Hard-wearing soft goods for retail floors, pop-up activations, and customer-facing demos.",
                "summary": "Waxed canvas apron with hidden phone pocket and removable cross-back straps.",
                "description": "The Canvas Merchant Apron is built for busy counters, demos, and merchandising tables, with balanced pocket placement and straps that stay comfortable through long shifts.",
                "price": 76,
                "inventory": 17,
                "featured": false,
                "features": [
                    "Waxed cotton canvas with brass hardware",
                    "Cross-back strap option for lower shoulder strain",
                    "Split front pockets with hidden phone sleeve"
                ],
                "specs": {
                    "Material": "12 oz waxed canvas",
                    "Fit": "Adjustable unisex",
                    "Care": "Spot clean and rewax as needed"
                },
                "base_price": 76,
                "discount_percent": 0,
                "discount_label": "",
                "has_discount": false,
                "savings_amount": 0,
                "tags": [],
                "media": [
                    {
                        "type": "image",
                        "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%237f1d1d%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23fca5a5%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3EApparel%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3ECanvas%20Merchant%20Apron%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1005%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                        "alt": "Canvas Merchant Apron placeholder artwork"
                    }
                ],
                "primary_image": {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%237f1d1d%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23fca5a5%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3EApparel%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3ECanvas%20Merchant%20Apron%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1005%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Canvas Merchant Apron placeholder artwork"
                }
            }
        ]
    }
}

Live response

Press "Send request" to fetch a live response.

Resource type

Cart

Token-aware cart retrieval and cart mutation endpoints.

GET

/cart

Current cart

Returns the current cart, including items, count, and subtotal. When a cart token is supplied, the request resumes that cart.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "cart": {
        "count": 1,
        "subtotal": 89,
        "is_empty": false,
        "items": [
            {
                "sku": "NS-1001",
                "slug": "field-pack-utility-kit",
                "name": "Field Pack Utility Kit",
                "category": "Travel Gear",
                "category_slug": "travel-gear",
                "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
                "price": 89,
                "inventory": 24,
                "quantity": 1,
                "line_total": 89
            }
        ]
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/cart/items

Add item to cart

Adds a SKU to the current cart and returns the updated cart state. If no cart token is supplied, the API creates one.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Added to cart.",
    "cart": {
        "count": 1,
        "subtotal": 89
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/cart/update

Update cart quantity

Updates the quantity for a cart item and returns the revised cart payload.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Cart quantity updated.",
    "cart": {
        "count": 2,
        "subtotal": 178
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/cart/remove

Remove cart item

Removes one SKU from the cart and returns the updated empty or reduced cart.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Item removed from cart.",
    "cart": {
        "count": 0,
        "subtotal": 0,
        "is_empty": true,
        "items": []
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/cart/clear

Clear cart

Clears the full cart for the current session.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Cart cleared.",
    "cart": {
        "count": 0,
        "subtotal": 0,
        "is_empty": true,
        "items": []
    }
}

Live response

Press "Send request" to fetch a live response.

Resource type

Chat

Storefront customer support chat session, live stream, and message endpoints.

GET

/chat

Current storefront chat session

Returns whether customer chat is enabled and, when a chat token is present, the current conversation. Send the chat token in the X-Newsite-Chat-Token header to resume an existing thread.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "enabled": true,
        "conversation": {
            "id": "chat-1001",
            "token": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1",
            "status": "open",
            "customer": {
                "name": "Alex Customer",
                "email": "customer@example.test"
            },
            "created_at": "2026-04-17T09:50:22+00:00",
            "updated_at": "2026-04-17T10:04:22+00:00",
            "last_message_at": "2026-04-17T10:04:22+00:00",
            "unread_admin_count": 0,
            "unread_customer_count": 0,
            "message_count": 2,
            "last_message_preview": "Absolutely. I can help with shipping and availability questions.",
            "last_message_sender": "admin",
            "messages": [
                {
                    "id": "msg-1001",
                    "sender": "customer",
                    "sender_name": "Alex Customer",
                    "body": "Hi, do you have this item in stock and ready to ship?",
                    "created_at": "2026-04-17T10:00:22+00:00"
                },
                {
                    "id": "msg-1002",
                    "sender": "admin",
                    "sender_name": "Support",
                    "body": "Absolutely. I can help with shipping and availability questions.",
                    "created_at": "2026-04-17T10:04:22+00:00"
                }
            ]
        }
    },
    "meta": {
        "chat_token": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1",
        "clear_chat_token": false
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/chat/stream

Stream storefront chat updates

Streams live chat session updates as server-sent events. The client may send an existing chat token in the optional chat_token query string when opening the stream, or establish the conversation first through GET /chat.

Request

Query parameters

Open in new tab

Request URL will appear here.

Example response

"event: conversation\ndata: {\"status\":\"ok\",\"data\":{\"enabled\":true,\"conversation\":{\"id\":\"chat-1001\",\"token\":\"c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1\",\"status\":\"open\",\"customer\":{\"name\":\"Alex Customer\",\"email\":\"customer@example.test\"},\"created_at\":\"2026-04-17T09:50:22+00:00\",\"updated_at\":\"2026-04-17T10:04:22+00:00\",\"last_message_at\":\"2026-04-17T10:04:22+00:00\",\"unread_admin_count\":0,\"unread_customer_count\":0,\"message_count\":2,\"last_message_preview\":\"Absolutely. I can help with shipping and availability questions.\",\"last_message_sender\":\"admin\",\"messages\":[{\"id\":\"msg-1001\",\"sender\":\"customer\",\"sender_name\":\"Alex Customer\",\"body\":\"Hi, do you have this item in stock and ready to ship?\",\"created_at\":\"2026-04-17T10:00:22+00:00\"},{\"id\":\"msg-1002\",\"sender\":\"admin\",\"sender_name\":\"Support\",\"body\":\"Absolutely. I can help with shipping and availability questions.\",\"created_at\":\"2026-04-17T10:04:22+00:00\"}]}},\"meta\":{\"chat_token\":\"c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1\",\"clear_chat_token\":false}}\n\n"

Live response

Press "Send request" to fetch a live response.
POST

/chat/messages

Send storefront chat message

Creates a new chat conversation or appends a customer reply to an existing one. When successful, the response includes the chat token in metadata for future polling or streaming requests.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Message sent. We will reply here as soon as possible.",
    "data": {
        "enabled": true,
        "conversation": {
            "id": "chat-1001",
            "token": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1",
            "status": "open",
            "customer": {
                "name": "Alex Customer",
                "email": "customer@example.test"
            },
            "created_at": "2026-04-17T09:50:22+00:00",
            "updated_at": "2026-04-17T10:04:22+00:00",
            "last_message_at": "2026-04-17T10:04:22+00:00",
            "unread_admin_count": 0,
            "unread_customer_count": 0,
            "message_count": 2,
            "last_message_preview": "Absolutely. I can help with shipping and availability questions.",
            "last_message_sender": "admin",
            "messages": [
                {
                    "id": "msg-1001",
                    "sender": "customer",
                    "sender_name": "Alex Customer",
                    "body": "Hi, do you have this item in stock and ready to ship?",
                    "created_at": "2026-04-17T10:00:22+00:00"
                },
                {
                    "id": "msg-1002",
                    "sender": "admin",
                    "sender_name": "Support",
                    "body": "Absolutely. I can help with shipping and availability questions.",
                    "created_at": "2026-04-17T10:04:22+00:00"
                }
            ]
        }
    },
    "meta": {
        "chat_token": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1",
        "clear_chat_token": false
    }
}

Live response

Press "Send request" to fetch a live response.

Resource type

Checkout

Order creation, secure confirmation links, and customer-safe order status lookups.

GET

/checkout/address-metadata

Checkout address metadata

Returns the supported checkout countries, controlled state lists, and whether USPS ZIP lookup is configured for this environment.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "default_country": "US",
        "countries": [
            {
                "code": "US",
                "name": "United States",
                "postal_code_label": "ZIP code",
                "postal_code_pattern": "^\\d{5}$"
            }
        ],
        "states_by_country": {
            "US": [
                {
                    "code": "CA",
                    "name": "California"
                },
                {
                    "code": "NY",
                    "name": "New York"
                }
            ]
        },
        "lookup": {
            "provider": "usps",
            "enabled": false,
            "requires_oauth": true
        }
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/checkout/address-lookup

ZIP to city/state lookup

Uses the local API as a USPS-backed proxy to resolve a 5-digit ZIP code into a city and two-letter state code for checkout autofill.

Request

Query parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "postal_code": "50314",
        "city": "Des Moines",
        "state": "IA",
        "state_name": "Iowa",
        "country": "United States",
        "country_code": "US",
        "source": "usps",
        "message": "City and state loaded from USPS."
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/checkout/orders

Create order from cart

Creates an order from the current cart, stores shipping and billing details, clears the cart, and sends a confirmation email with a secure status link. Billing details are not returned in the response.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Order placed. Check your email for the confirmation link.",
    "data": {
        "reference": "NSO-20260417-A1B2C3",
        "email": "customer@example.test"
    },
    "meta": {
        "email_sent": true
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/checkout/orders/{token}

Order status by secure token

Returns the customer-facing order confirmation payload for a valid confirmation token. Billing details are intentionally omitted, and the token is designed to be unguessable.

Request

Path parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "reference": "NSO-20260417-A1B2C3",
        "status": "received",
        "placed_at": "2026-04-17T10:05:22+00:00",
        "customer": {
            "email": "customer@example.test",
            "phone": "555-0100"
        },
        "shipping_address": {
            "full_name": "Alex Customer",
            "address1": "120 Market Street",
            "address2": "Suite 3",
            "city": "Tulsa",
            "state": "OK",
            "postal_code": "74103",
            "country": "United States"
        },
        "items": [
            {
                "sku": "NS-1001",
                "slug": "field-pack-utility-kit",
                "name": "Field Pack Utility Kit",
                "category": "Travel Gear",
                "category_slug": "travel-gear",
                "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
                "price": 89,
                "inventory": 24,
                "quantity": 1,
                "line_total": 89
            }
        ],
        "pricing": {
            "subtotal": 89,
            "currency": "USD"
        },
        "payment": {
            "status": "awaiting_processor"
        },
        "email_delivery": {
            "sent": true
        }
    }
}

Live response

Press "Send request" to fetch a live response.

Resource type

Auth

Token-based admin authentication and auth-status endpoints.

GET

/admin/session/invalidate

Invalidate current admin session

Explicitly clears the current admin session token. Intended for XMLHttpRequest-based security invalidation flows.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Admin session invalidated.",
    "data": {
        "authenticated": false,
        "user": null
    },
    "meta": {
        "clear_auth_token": true
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/session

Current admin session

Returns whether the current request has an authenticated admin token and, if so, the signed-in user record.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "authenticated": true,
        "user": {
            "id": "usr-1001",
            "name": "Administrator",
            "email": "admin@northstar.local",
            "role": "admin",
            "created_at": "2026-03-11T14:00:05+00:00",
            "updated_at": "2026-03-11T22:17:57+00:00"
        }
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/login

Admin sign in

Starts an admin login and returns an auth token that can be sent in the X-Newsite-Admin-Token header for protected admin endpoints.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Welcome back.",
    "data": {
        "authenticated": true,
        "user": {
            "id": "usr-1001",
            "name": "Administrator",
            "email": "admin@northstar.local",
            "role": "admin",
            "created_at": "2026-03-11T14:00:05+00:00",
            "updated_at": "2026-03-11T22:17:57+00:00"
        }
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/logout

Admin sign out

Clears the current admin session.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "You have been signed out.",
    "data": {
        "authenticated": false,
        "user": null
    }
}

Live response

Press "Send request" to fetch a live response.

Resource type

Admin

Protected back-office product, category, user, and profile endpoints.

GET

/admin/summary

Admin dashboard summary

Returns high-level counts for products, categories, users, and featured products. Requires an authenticated admin token.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "counts": {
            "orders": 1,
            "pending_shipments": 1,
            "products": 53,
            "categories": 6,
            "users": 2,
            "featured_products": 11,
            "unread_chats": 0
        },
        "user": {
            "id": "usr-1001",
            "name": "Administrator",
            "email": "admin@northstar.local",
            "role": "admin",
            "created_at": "2026-03-11T14:00:05+00:00",
            "updated_at": "2026-03-11T22:17:57+00:00"
        }
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/orders

List orders

Returns the admin order queue, with optional search and shipping-status filters, plus valid order and shipping status options.

Request

Query parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": [
        {
            "reference": "NSO-20260417-A1B2C3",
            "status": "received",
            "placed_at": "2026-04-17T10:05:22+00:00",
            "customer": {
                "email": "customer@example.test",
                "phone": "555-0100"
            },
            "shipping_address": {
                "full_name": "Alex Customer",
                "address1": "120 Market Street",
                "address2": "Suite 3",
                "city": "Tulsa",
                "state": "OK",
                "postal_code": "74103",
                "country": "United States"
            },
            "items": [
                {
                    "sku": "NS-1001",
                    "slug": "field-pack-utility-kit",
                    "name": "Field Pack Utility Kit",
                    "category": "Travel Gear",
                    "category_slug": "travel-gear",
                    "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
                    "price": 89,
                    "inventory": 24,
                    "quantity": 1,
                    "line_total": 89
                }
            ],
            "pricing": {
                "subtotal": 89,
                "currency": "USD"
            },
            "payment": {
                "status": "awaiting_processor"
            },
            "email_delivery": {
                "sent": true
            }
        }
    ],
    "meta": {
        "count": 1,
        "page": 1,
        "per_page": 20,
        "total_pages": 1,
        "order_status_options": [
            "received",
            "processing",
            "completed",
            "cancelled"
        ],
        "shipping_status_options": [
            "pending",
            "processing",
            "shipped",
            "delivered",
            "cancelled"
        ]
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/orders/{reference}

Order detail

Returns one order by reference, including editable shipping and payment fields plus valid status option lists.

Request

Path parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "reference": "NSO-20260417-A1B2C3",
        "status": "received",
        "placed_at": "2026-04-17T10:05:22+00:00",
        "customer": {
            "email": "customer@example.test",
            "phone": "555-0100"
        },
        "shipping_address": {
            "full_name": "Alex Customer",
            "address1": "120 Market Street",
            "address2": "Suite 3",
            "city": "Tulsa",
            "state": "OK",
            "postal_code": "74103",
            "country": "United States"
        },
        "items": [
            {
                "sku": "NS-1001",
                "slug": "field-pack-utility-kit",
                "name": "Field Pack Utility Kit",
                "category": "Travel Gear",
                "category_slug": "travel-gear",
                "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
                "price": 89,
                "inventory": 24,
                "quantity": 1,
                "line_total": 89
            }
        ],
        "pricing": {
            "subtotal": 89,
            "currency": "USD"
        },
        "payment": {
            "status": "awaiting_processor"
        },
        "email_delivery": {
            "sent": true
        }
    },
    "meta": {
        "order_status_options": [
            "received",
            "processing",
            "completed",
            "cancelled"
        ],
        "shipping_status_options": [
            "pending",
            "processing",
            "shipped",
            "delivered",
            "cancelled"
        ]
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/orders/{reference}/update

Update order

Updates order, shipping, payment, and item details. Status changes can trigger archived or delivered customer notifications depending on environment mail support.

Request

Path parameters

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Order updated and customer notified.",
    "data": {
        "reference": "NSO-20260417-A1B2C3",
        "status": "received",
        "placed_at": "2026-04-17T10:05:22+00:00",
        "customer": {
            "email": "customer@example.test",
            "phone": "555-0100"
        },
        "shipping_address": {
            "full_name": "Alex Customer",
            "address1": "120 Market Street",
            "address2": "Suite 3",
            "city": "Tulsa",
            "state": "OK",
            "postal_code": "74103",
            "country": "United States"
        },
        "items": [
            {
                "sku": "NS-1001",
                "slug": "field-pack-utility-kit",
                "name": "Field Pack Utility Kit",
                "category": "Travel Gear",
                "category_slug": "travel-gear",
                "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
                "price": 89,
                "inventory": 24,
                "quantity": 1,
                "line_total": 89
            }
        ],
        "pricing": {
            "subtotal": 89,
            "currency": "USD"
        },
        "payment": {
            "status": "awaiting_processor"
        },
        "email_delivery": {
            "sent": true
        }
    },
    "meta": {
        "status_changes": [
            {
                "field": "shipping_status",
                "label": "Shipping status",
                "from": "pending",
                "to": "shipped"
            }
        ],
        "status_email_sent": true
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/orders/{reference}/email

Email order customer

Sends or archives a manual admin message to the order customer and stores delivery metadata with the order.

Request

Path parameters

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Customer email sent.",
    "data": {
        "reference": "NSO-20260417-A1B2C3",
        "status": "received",
        "placed_at": "2026-04-17T10:05:22+00:00",
        "customer": {
            "email": "customer@example.test",
            "phone": "555-0100"
        },
        "shipping_address": {
            "full_name": "Alex Customer",
            "address1": "120 Market Street",
            "address2": "Suite 3",
            "city": "Tulsa",
            "state": "OK",
            "postal_code": "74103",
            "country": "United States"
        },
        "items": [
            {
                "sku": "NS-1001",
                "slug": "field-pack-utility-kit",
                "name": "Field Pack Utility Kit",
                "category": "Travel Gear",
                "category_slug": "travel-gear",
                "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
                "price": 89,
                "inventory": 24,
                "quantity": 1,
                "line_total": 89
            }
        ],
        "pricing": {
            "subtotal": 89,
            "currency": "USD"
        },
        "payment": {
            "status": "awaiting_processor"
        },
        "email_delivery": {
            "sent": true
        }
    },
    "meta": {
        "email_sent": true
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/products

List admin products

Returns a paginated product list for back-office management. Requires an authenticated admin token.

Request

Query parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": [
        {
            "sku": "NS-1001",
            "slug": "field-pack-utility-kit",
            "name": "Field Pack Utility Kit",
            "category": "Travel Gear",
            "category_slug": "travel-gear",
            "category_summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
            "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
            "description": "The Field Pack Utility Kit is a modular carry system built for fast-moving teams. It keeps chargers, documents, samples, and personal gear organized without becoming bulky during travel days.",
            "price": 89,
            "inventory": 24,
            "featured": true,
            "features": [
                "Weather-resistant shell with reinforced base panel",
                "Interior divider system sized for forms, cables, and accessories",
                "Quick-access side pocket for phone and badge carry"
            ],
            "specs": {
                "Material": "Waxed ripstop and ballistic nylon trim",
                "Capacity": "18 liters",
                "Weight": "2.1 lb"
            },
            "base_price": 89,
            "discount_percent": 0,
            "discount_label": "",
            "has_discount": false,
            "savings_amount": 0,
            "tags": [],
            "media": [
                {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Field Pack Utility Kit placeholder artwork"
                }
            ],
            "primary_image": {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Field Pack Utility Kit placeholder artwork"
            }
        },
        {
            "sku": "NS-1002",
            "slug": "ledger-desk-stand",
            "name": "Ledger Desk Stand",
            "category": "Workspace",
            "category_slug": "workspace",
            "category_summary": "Desk-bound tools designed to make counters, checkout stations, and shared work surfaces feel more deliberate.",
            "summary": "Angled oak stand for tablets, notebooks, and point-of-sale devices in small retail counters.",
            "description": "The Ledger Desk Stand lifts tablets and notebooks into a cleaner working angle, helping compact counters feel more intentional while reducing clutter around the register or intake desk.",
            "price": 54.5,
            "inventory": 41,
            "featured": true,
            "features": [
                "Solid oak face with cork-lined device rest",
                "Stable base sized for point-of-sale tablets and notebooks",
                "Cable pass-through channel under the rear edge"
            ],
            "specs": {
                "Footprint": "9.5 in x 7 in",
                "Angle": "18 degrees",
                "Finish": "Natural oil-sealed oak"
            },
            "base_price": 54.5,
            "discount_percent": 0,
            "discount_label": "",
            "has_discount": false,
            "savings_amount": 0,
            "tags": [],
            "media": [
                {
                    "type": "image",
                    "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23164e63%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%2338bdf8%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3EWorkspace%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3ELedger%20Desk%20Stand%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1002%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                    "alt": "Ledger Desk Stand placeholder artwork"
                }
            ],
            "primary_image": {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23164e63%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%231f2937%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%2338bdf8%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3EWorkspace%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3ELedger%20Desk%20Stand%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1002%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Ledger Desk Stand placeholder artwork"
            }
        }
    ],
    "meta": {
        "count": 53,
        "page": 1,
        "per_page": 2,
        "total_pages": 27,
        "sort": "name-asc"
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/products/{sku}

Admin product detail

Returns one product by SKU for editing and inventory management.

Request

Path parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "sku": "NS-1001",
        "slug": "field-pack-utility-kit",
        "name": "Field Pack Utility Kit",
        "category": "Travel Gear",
        "category_slug": "travel-gear",
        "category_summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
        "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
        "description": "The Field Pack Utility Kit is a modular carry system built for fast-moving teams. It keeps chargers, documents, samples, and personal gear organized without becoming bulky during travel days.",
        "price": 89,
        "inventory": 24,
        "featured": true,
        "features": [
            "Weather-resistant shell with reinforced base panel",
            "Interior divider system sized for forms, cables, and accessories",
            "Quick-access side pocket for phone and badge carry"
        ],
        "specs": {
            "Material": "Waxed ripstop and ballistic nylon trim",
            "Capacity": "18 liters",
            "Weight": "2.1 lb"
        },
        "base_price": 89,
        "discount_percent": 0,
        "discount_label": "",
        "has_discount": false,
        "savings_amount": 0,
        "tags": [],
        "media": [
            {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Field Pack Utility Kit placeholder artwork"
            }
        ],
        "primary_image": {
            "type": "image",
            "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
            "alt": "Field Pack Utility Kit placeholder artwork"
        }
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/products

Create product

Creates a new product record. Tags accept comma-separated values. Features, specs, and media accept pipe-separated values in the docs UI.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Product created.",
    "data": {
        "sku": "NS-1001",
        "slug": "field-pack-utility-kit",
        "name": "Field Pack Utility Kit",
        "category": "Travel Gear",
        "category_slug": "travel-gear",
        "category_summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
        "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
        "description": "The Field Pack Utility Kit is a modular carry system built for fast-moving teams. It keeps chargers, documents, samples, and personal gear organized without becoming bulky during travel days.",
        "price": 89,
        "inventory": 24,
        "featured": true,
        "features": [
            "Weather-resistant shell with reinforced base panel",
            "Interior divider system sized for forms, cables, and accessories",
            "Quick-access side pocket for phone and badge carry"
        ],
        "specs": {
            "Material": "Waxed ripstop and ballistic nylon trim",
            "Capacity": "18 liters",
            "Weight": "2.1 lb"
        },
        "base_price": 89,
        "discount_percent": 0,
        "discount_label": "",
        "has_discount": false,
        "savings_amount": 0,
        "tags": [],
        "media": [
            {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Field Pack Utility Kit placeholder artwork"
            }
        ],
        "primary_image": {
            "type": "image",
            "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
            "alt": "Field Pack Utility Kit placeholder artwork"
        }
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/products/{sku}/update

Update product

Updates an existing product by SKU.

Request

Path parameters

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Product updated.",
    "data": {
        "sku": "NS-1001",
        "slug": "field-pack-utility-kit",
        "name": "Field Pack Utility Kit",
        "category": "Travel Gear",
        "category_slug": "travel-gear",
        "category_summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
        "summary": "A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.",
        "description": "The Field Pack Utility Kit is a modular carry system built for fast-moving teams. It keeps chargers, documents, samples, and personal gear organized without becoming bulky during travel days.",
        "price": 89,
        "inventory": 24,
        "featured": true,
        "features": [
            "Weather-resistant shell with reinforced base panel",
            "Interior divider system sized for forms, cables, and accessories",
            "Quick-access side pocket for phone and badge carry"
        ],
        "specs": {
            "Material": "Waxed ripstop and ballistic nylon trim",
            "Capacity": "18 liters",
            "Weight": "2.1 lb"
        },
        "base_price": 89,
        "discount_percent": 0,
        "discount_label": "",
        "has_discount": false,
        "savings_amount": 0,
        "tags": [],
        "media": [
            {
                "type": "image",
                "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
                "alt": "Field Pack Utility Kit placeholder artwork"
            }
        ],
        "primary_image": {
            "type": "image",
            "src": "data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%201200%20900%27%3E%3Cdefs%3E%3ClinearGradient%20id%3D%27bg%27%20x1%3D%270%25%27%20y1%3D%270%25%27%20x2%3D%27100%25%27%20y2%3D%27100%25%27%3E%3Cstop%20offset%3D%270%25%27%20stop-color%3D%27%23115e59%27%2F%3E%3Cstop%20offset%3D%27100%25%27%20stop-color%3D%27%230f172a%27%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%271200%27%20height%3D%27900%27%20fill%3D%27url%28%23bg%29%27%2F%3E%3Ccircle%20cx%3D%27980%27%20cy%3D%27140%27%20r%3D%27180%27%20fill%3D%27%23f59e0b%27%20fill-opacity%3D%270.22%27%2F%3E%3Ccircle%20cx%3D%27220%27%20cy%3D%27760%27%20r%3D%27220%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.08%27%2F%3E%3Crect%20x%3D%2764%27%20y%3D%2764%27%20width%3D%271072%27%20height%3D%27772%27%20rx%3D%2736%27%20fill%3D%27%23ffffff%27%20fill-opacity%3D%270.10%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.22%27%2F%3E%3Ctext%20x%3D%27104%27%20y%3D%27152%27%20fill%3D%27%23f8fafc%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2734%27%20letter-spacing%3D%278%27%3ETravel%20Gear%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27430%27%20fill%3D%27%23ffffff%27%20font-family%3D%27Georgia%2C%20Times%20New%20Roman%2C%20serif%27%20font-size%3D%2774%27%20font-weight%3D%27700%27%3EField%20Pack%20Utility%20Kit%3C%2Ftext%3E%3Ctext%20x%3D%27104%27%20y%3D%27506%27%20fill%3D%27%23e2e8f0%27%20font-family%3D%27Arial%2C%20Helvetica%2C%20sans-serif%27%20font-size%3D%2728%27%3ENS-1001%3C%2Ftext%3E%3Cpath%20d%3D%27M104%20592%20C244%20548%20364%20548%20500%20592%20C642%20638%20764%20638%20912%20592%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.35%27%20stroke-width%3D%2710%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3Cpath%20d%3D%27M104%20664%20C212%20622%20332%20622%20446%20664%20C570%20710%20708%20710%20850%20664%27%20stroke%3D%27%23ffffff%27%20stroke-opacity%3D%270.18%27%20stroke-width%3D%276%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%2F%3E%3C%2Fsvg%3E",
            "alt": "Field Pack Utility Kit placeholder artwork"
        }
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/products/{sku}/delete

Delete product

Removes a product by SKU.

Request

Path parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Product removed."
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/products/export/csv

Export product catalog CSV

Exports the full product catalog as CSV using the same headers accepted by the import endpoint. Requires an authenticated admin token.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

"sku,slug,name,category_slug,category,summary,description,price,discount_percent,discount_label,inventory,featured,tags,features,specs,media\nNS-1001,field-pack-utility-kit,\"Field Pack Utility Kit\",travel-gear,\"Travel Gear\",\"A modular carry kit with cable sleeves, document pockets, and weather-resistant outer fabric.\",\"The Field Pack Utility Kit is a modular carry system built for fast-moving teams. It keeps chargers, documents, samples, and personal gear organized without becoming bulky during travel days.\",89,0,,24,1,,\"Weather-resistant shell with reinforced base panel|Interior divider system sized for forms, cables, and accessories|Quick-access side pocket for phone and badge carry\",,\n"

Live response

Press "Send request" to fetch a live response.
POST

/admin/products/import/csv

Import product catalog CSV

Validates and replaces the product catalog from an uploaded CSV file. Existing order references are preserved and invalid references are rejected. Requires an authenticated admin token.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Products imported.",
    "data": {
        "imported": 53,
        "csv_headers": [
            "sku",
            "slug",
            "name",
            "category_slug",
            "category",
            "summary",
            "description",
            "price",
            "discount_percent",
            "discount_label",
            "inventory",
            "featured",
            "tags",
            "features",
            "specs",
            "media"
        ]
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/categories

List admin categories

Returns the managed category list used by catalog navigation and product forms.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": [
        {
            "slug": "apparel",
            "name": "Apparel",
            "summary": "Hard-wearing soft goods for retail floors, pop-up activations, and customer-facing demos.",
            "product_count": 9
        },
        {
            "slug": "hydration",
            "name": "Hydration",
            "summary": "Everyday hydration gear for long routes, site visits, and all-day travel between meetings.",
            "product_count": 9
        },
        {
            "slug": "retail-display",
            "name": "Retail Display",
            "summary": "Display-support tools for cleaner demos, organized counters, and better small-format merchandising.",
            "product_count": 8
        },
        {
            "slug": "stationery",
            "name": "Stationery",
            "summary": "Paper goods made for field notes, planning, and structured follow-up after customer conversations.",
            "product_count": 9
        },
        {
            "slug": "travel-gear",
            "name": "Travel Gear",
            "summary": "Durable carrying systems and travel-ready goods for teams that work between desks, vehicles, and customer sites.",
            "product_count": 9
        },
        {
            "slug": "workspace",
            "name": "Workspace",
            "summary": "Desk-bound tools designed to make counters, checkout stations, and shared work surfaces feel more deliberate.",
            "product_count": 9
        }
    ],
    "meta": {
        "count": 6
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/categories/{slug}

Admin category detail

Returns one managed category including its current product count.

Request

Path parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "slug": "apparel",
        "name": "Apparel",
        "summary": "Hard-wearing soft goods for retail floors, pop-up activations, and customer-facing demos.",
        "product_count": 9
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/categories

Create category

Creates a managed category for storefront navigation and product assignment.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Category created.",
    "data": {
        "slug": "seasonal-kits",
        "name": "Seasonal Kits",
        "summary": "Short-run bundles and seasonal promotional packages.",
        "product_count": 0
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/categories/{slug}/update

Update category

Updates a managed category and syncs assigned products to the latest name, slug, and summary.

Request

Path parameters

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Category updated.",
    "data": {
        "slug": "apparel",
        "name": "Apparel",
        "summary": "Hard-wearing soft goods for retail floors, pop-up activations, and customer-facing demos.",
        "product_count": 9
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/categories/{slug}/delete

Delete category

Deletes an unused managed category. Categories with assigned products are rejected until those products are reassigned.

Request

Path parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Category removed."
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/users

List admin users

Returns the user records available to the admin area.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": [
        {
            "id": "usr-1001",
            "name": "Administrator",
            "email": "admin@northstar.local",
            "role": "admin",
            "created_at": "2026-03-11T14:00:05+00:00",
            "updated_at": "2026-03-11T22:17:57+00:00"
        },
        {
            "id": "usr-69b176eb8d59a",
            "name": "Jake",
            "email": "jake.pogorelec@ntalife.com",
            "role": "admin",
            "created_at": "2026-03-11T14:06:35+00:00",
            "updated_at": "2026-03-11T14:06:35+00:00"
        }
    ],
    "meta": {
        "count": 2
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/users/{id}

Admin user detail

Returns one admin user record by id.

Request

Path parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "id": "usr-1001",
        "name": "Administrator",
        "email": "admin@northstar.local",
        "role": "admin",
        "created_at": "2026-03-11T14:00:05+00:00",
        "updated_at": "2026-03-11T22:17:57+00:00"
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/users

Create admin user

Creates a new admin-area user.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "User created.",
    "data": {
        "id": "usr-1001",
        "name": "Administrator",
        "email": "admin@northstar.local",
        "role": "admin",
        "created_at": "2026-03-11T14:00:05+00:00",
        "updated_at": "2026-03-11T22:17:57+00:00"
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/users/{id}/update

Update admin user

Updates an existing user and optionally resets the password if a new password is provided.

Request

Path parameters

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "User updated.",
    "data": {
        "id": "usr-1001",
        "name": "Administrator",
        "email": "admin@northstar.local",
        "role": "admin",
        "created_at": "2026-03-11T14:00:05+00:00",
        "updated_at": "2026-03-11T22:17:57+00:00"
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/users/{id}/delete

Delete admin user

Deletes an admin-area user. The currently signed-in account cannot delete itself.

Request

Path parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "User removed."
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/profile

Current admin profile

Returns the currently authenticated admin user record.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "id": "usr-1001",
        "name": "Administrator",
        "email": "admin@northstar.local",
        "role": "admin",
        "created_at": "2026-03-11T14:00:05+00:00",
        "updated_at": "2026-03-11T22:17:57+00:00"
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/profile

Update current admin profile

Updates the current signed-in admin profile without changing role.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Profile updated.",
    "data": {
        "id": "usr-1001",
        "name": "Administrator",
        "email": "admin@northstar.local",
        "role": "admin",
        "created_at": "2026-03-11T14:00:05+00:00",
        "updated_at": "2026-03-11T22:17:57+00:00"
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/profile/chat

Update chat availability

Enables or disables storefront chat by updating app configuration.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Chat enabled.",
    "data": {
        "chat_enabled": true
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/profile/logo

Upload company logo

Uploads a new company logo asset and updates the storefront branding configuration to point at the stored file.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Logo uploaded.",
    "data": {
        "company_logo_url": "https://ItsPawned.com/assets/images/company-logo.png"
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/profile/password

Change current admin password

Updates the current signed-in admin password after validating the existing password.

Request

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Password updated."
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/chats

List chat conversations

Returns all customer chat conversations for the admin inbox, including unread counts and whether storefront chat is enabled.

Request

This endpoint does not require any inputs.

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": [
        {
            "id": "chat-1001",
            "token": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1",
            "status": "open",
            "customer": {
                "name": "Alex Customer",
                "email": "customer@example.test"
            },
            "created_at": "2026-04-17T09:50:22+00:00",
            "updated_at": "2026-04-17T10:04:22+00:00",
            "last_message_at": "2026-04-17T10:04:22+00:00",
            "unread_admin_count": 0,
            "unread_customer_count": 0,
            "message_count": 2,
            "last_message_preview": "Absolutely. I can help with shipping and availability questions.",
            "last_message_sender": "admin"
        },
        {
            "id": "chat-1001",
            "token": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1",
            "status": "closed",
            "customer": {
                "name": "Alex Customer",
                "email": "customer@example.test"
            },
            "created_at": "2026-04-17T09:50:22+00:00",
            "updated_at": "2026-04-17T10:05:22+00:00",
            "last_message_at": "2026-04-17T10:05:22+00:00",
            "unread_admin_count": 0,
            "unread_customer_count": 0,
            "message_count": 2,
            "last_message_preview": "Absolutely. I can help with shipping and availability questions.",
            "last_message_sender": "admin"
        }
    ],
    "meta": {
        "enabled": true,
        "unread_admin_count": 0
    }
}

Live response

Press "Send request" to fetch a live response.
GET

/admin/chats/{id}

Chat conversation detail

Returns one admin chat thread and marks unread admin messages as read.

Request

Path parameters

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "data": {
        "id": "chat-1001",
        "token": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1",
        "status": "open",
        "customer": {
            "name": "Alex Customer",
            "email": "customer@example.test"
        },
        "created_at": "2026-04-17T09:50:22+00:00",
        "updated_at": "2026-04-17T10:04:22+00:00",
        "last_message_at": "2026-04-17T10:04:22+00:00",
        "unread_admin_count": 0,
        "unread_customer_count": 0,
        "message_count": 2,
        "last_message_preview": "Absolutely. I can help with shipping and availability questions.",
        "last_message_sender": "admin",
        "messages": [
            {
                "id": "msg-1001",
                "sender": "customer",
                "sender_name": "Alex Customer",
                "body": "Hi, do you have this item in stock and ready to ship?",
                "created_at": "2026-04-17T10:00:22+00:00"
            },
            {
                "id": "msg-1002",
                "sender": "admin",
                "sender_name": "Support",
                "body": "Absolutely. I can help with shipping and availability questions.",
                "created_at": "2026-04-17T10:04:22+00:00"
            }
        ]
    },
    "meta": {
        "enabled": true
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/chats/{id}/messages

Reply to chat conversation

Sends an admin reply into an existing customer chat thread.

Request

Path parameters

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Reply sent.",
    "data": {
        "id": "chat-1001",
        "token": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1",
        "status": "open",
        "customer": {
            "name": "Alex Customer",
            "email": "customer@example.test"
        },
        "created_at": "2026-04-17T09:50:22+00:00",
        "updated_at": "2026-04-17T10:04:22+00:00",
        "last_message_at": "2026-04-17T10:04:22+00:00",
        "unread_admin_count": 0,
        "unread_customer_count": 0,
        "message_count": 2,
        "last_message_preview": "Absolutely. I can help with shipping and availability questions.",
        "last_message_sender": "admin",
        "messages": [
            {
                "id": "msg-1001",
                "sender": "customer",
                "sender_name": "Alex Customer",
                "body": "Hi, do you have this item in stock and ready to ship?",
                "created_at": "2026-04-17T10:00:22+00:00"
            },
            {
                "id": "msg-1002",
                "sender": "admin",
                "sender_name": "Support",
                "body": "Absolutely. I can help with shipping and availability questions.",
                "created_at": "2026-04-17T10:04:22+00:00"
            }
        ]
    }
}

Live response

Press "Send request" to fetch a live response.
POST

/admin/chats/{id}/status

Update chat conversation status

Closes or reopens an existing customer chat conversation.

Request

Path parameters

Body fields

Open in new tab

Request URL will appear here.

Example response

{
    "status": "ok",
    "message": "Chat closed.",
    "data": {
        "id": "chat-1001",
        "token": "c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1",
        "status": "closed",
        "customer": {
            "name": "Alex Customer",
            "email": "customer@example.test"
        },
        "created_at": "2026-04-17T09:50:22+00:00",
        "updated_at": "2026-04-17T10:05:22+00:00",
        "last_message_at": "2026-04-17T10:05:22+00:00",
        "unread_admin_count": 0,
        "unread_customer_count": 0,
        "message_count": 2,
        "last_message_preview": "Absolutely. I can help with shipping and availability questions.",
        "last_message_sender": "admin",
        "messages": [
            {
                "id": "msg-1001",
                "sender": "customer",
                "sender_name": "Alex Customer",
                "body": "Hi, do you have this item in stock and ready to ship?",
                "created_at": "2026-04-17T10:00:22+00:00"
            },
            {
                "id": "msg-1002",
                "sender": "admin",
                "sender_name": "Support",
                "body": "Absolutely. I can help with shipping and availability questions.",
                "created_at": "2026-04-17T10:04:22+00:00"
            }
        ]
    }
}

Live response

Press "Send request" to fetch a live response.