🔐 Staff backstage — every account protected by two-factor authentication
Sanny Ling Storebackstage

🔌 API reference

A small keyed JSON API for scripts and integrations. Create a key at Account → API keys (shown once). Send it as 'Authorization: Bearer ling_…' or as an api_key form/query field. Request bodies are form-encoded; responses are JSON; amounts are integer minor units.

GET/api/v1/ping

Liveness check (no auth).

GET/api/v1/me

Store name, your username, ledger currency.

GET/api/v1/products

The full catalog (active and archived), bilingual fields included.

POST/api/v1/products

Upsert by SKU. Fields: sku, name, price_cents (required); name_zh, description, description_zh, kind=product|service, currency, tax_percent, requires_shipping=1, stock, emoji. Live jadePOS mode re-syncs the item automatically.

GET/api/v1/orders

Orders newest-first, 50 per page (?page=N, ?status=paid|pending|refunded|void). Includes fulfillment, tracking and the linked jadePOS ref.

cURL

curl https://sannyling.store/api/v1/products \
  -H "Authorization: Bearer ling_..."

curl -X POST https://sannyling.store/api/v1/products \
  -H "Authorization: Bearer ling_..." \
  -d sku=tea-jasmine -d name="Jasmine tea" -d name_zh="茉莉花茶" \
  -d price_cents=1250 -d requires_shipping=1

🟢 jadePOS

Card payments and the back-office ledger run on the jadePOS JSON API. Its full reference lives at jadepos.store/docs/api.