Docs
Dashboard
On this page

    Product statuses

    2 endpoints. Each needs an API key or OAuth token with the scope shown; the key already names its store, so paths start at /v1/store. Generated from the live contract; also in openapi.json.

    Every product with its game and live status badge (the status board)

    GET/v1/store/product-statuses

    Or name the store: GET /v1/stores/{storeId}/product-statuses

    catalog:readrole: catalog:readlistProductStatuses

    Response ListProductStatusesResponse

    • itemsProductStatusRow[]required

    Example

    curl "https://api.shopfa.st/v1/store/product-statuses" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/product-statuses', {
      method: 'GET',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "GET",
        "https://api.shopfa.st/v1/store/product-statuses",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/product-statuses", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Change live status badges (Working, Updating, Not working) of several products at once

    PATCH/v1/store/product-statuses

    Or name the store: PATCH /v1/stores/{storeId}/product-statuses

    catalog:writerole: catalog:writeupdateProductStatuses

    Body

    • itemsobject[]required
      • productIdprd_…required
      • status"undetected" | "updated" | "testing" | "updating" | "detected" | "down" | nullrequired
      • statusNotestringrequired

    Response UpdateProductStatusesResponse

    • itemsProductStatusRow[]required
    • changedintegerrequired

    Example

    curl -X PATCH "https://api.shopfa.st/v1/store/product-statuses" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "items": [
        {
          "productId": "prd_0123456789abcdefghjk",
          "status": "undetected",
          "statusNote": "string"
        }
      ]
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/product-statuses', {
      method: 'PATCH',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "items": [
          {
            "productId": "prd_0123456789abcdefghjk",
            "status": "undetected",
            "statusNote": "string"
          }
        ]
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "PATCH",
        "https://api.shopfa.st/v1/store/product-statuses",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "items": [
            {
              "productId": "prd_0123456789abcdefghjk",
              "status": "undetected",
              "statusNote": "string"
            }
          ]
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("PATCH", "https://api.shopfa.st/v1/store/product-statuses", strings.NewReader(`{
      "items": [
        {
          "productId": "prd_0123456789abcdefghjk",
          "status": "undetected",
          "statusNote": "string"
        }
      ]
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Was this page helpful?