Docs
Endpoints · Catalogue

GET/v1/catalogue

Every product as the store sees it, offered or not.

What it does

The whole catalogue for the key's store: each product, whether the store offers it (listed), its priced sizes, the names of sizes that have no price yet, its lowest price, whether it is priced by quantity tiers (which a Shopify variant cannot hold), and blocked -- why it cannot be offered yet (no size, no price, nowhere to deliver), or null. What a platform app shows in a products picker. A key with no store is refused. With offered=1, only the products on sale -- offered in this store or in at least one of the organisation's open stores -- and not_offered counts the products left out (drafts, retired copies, products only a draft store lists).

Send the key: Authorization: Bearer sk_test_… or sk_live_….

curl "https://printwisp.com/v1/catalogue" \
  -H "Authorization: Bearer $PRINTWISP_KEY"

# 200
{
  "store": { "code": "web-au", "name": "Harbour Prints AU", "currency": "AUD" },
  "products": [
    {
      "code": "layflat",
      "name": "Lay-flat photobook",
      "listed": false,
      "sizes": [{ "code": "layflat-8x8", "name": "8 x 8 in", "price": "345.00", "currency": "AUD" }],
      "unpriced_sizes": ["12 x 12 in"],
      "from_price": "345.00",
      "currency": "AUD",
      "quantity_priced": false,
      "blocked": null
    }
  ]
}
<?php
$ch = curl_init('https://printwisp.com/v1/catalogue');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . getenv('PRINTWISP_KEY'), 'Content-Type: application/json'],
]);
$answer = json_decode(curl_exec($ch), true);
// Node (your server). The key never reaches a browser.
const r = await fetch('https://printwisp.com/v1/catalogue', {
  headers: { Authorization: 'Bearer ' + process.env.PRINTWISP_KEY },
});
const answer = await r.json();
import os, requests

r = requests.get(
    "https://printwisp.com/v1/catalogue",
    headers={"Authorization": f"Bearer {os.environ['PRINTWISP_KEY']}"},
)
answer = r.json()

Parameters

ParameterTypeDescription
offeredstring1: only products offered in this store or in an open store of the organisation; the response adds not_offered, how many were left out.

Response

200 application/json. The store and every product.

{
  "store": { "code": "web-au", "name": "Harbour Prints AU", "currency": "AUD" },
  "products": [
    {
      "code": "layflat",
      "name": "Lay-flat photobook",
      "listed": false,
      "sizes": [{ "code": "layflat-8x8", "name": "8 x 8 in", "price": "345.00", "currency": "AUD" }],
      "unpriced_sizes": ["12 x 12 in"],
      "from_price": "345.00",
      "currency": "AUD",
      "quantity_priced": false,
      "blocked": null
    }
  ]
}

Errors

HTTPerrormessage
400no_storeThis key belongs to no store: use a store's key.
{ "error": "no_store", "message": "This key belongs to no store: use a store's key." }

← Every routeQuickstart →