← all adapters

printify-style

simulates Printify API v1

restadapter v0.1.016 routes

verification

VMVM tier — no SDK suite yet· surface 16 · not implemented 5 · differs 4

use it

# add to stunt.yaml
services:
  printify:
    adapter: embedded:printify-style

# then
$ stunt up

The embedded: source extracts this adapter from the binary — no git clone, fully offline.

how to mock the Printify API locally

Install stunt, paste the service block above into stunt.yaml, run stunt up — then point your client at localhost instead of Printify API. It works offline, keeps state across requests and restarts, and every response is synthetic: the route shapes, status codes, pagination, and webhook delivery follow the real Printify API v1 surface — the data is fake, the behavior is real.

backing stores

productsorders

api surface (16)

generated from the adapter manifest — exactly what boots, nothing more · covers 27% of the real API's 40 routes (derived from spec Printify OpenAPI @ 1.0.0)

16 routes
GET/v1/catalog/blueprints.json
GET/v1/catalog/blueprints/{blueprint_id}/variants.json
GET/v1/shops/{shop_id}/products.json
POST/v1/shops/{shop_id}/products.json
GET/v1/shops/{shop_id}/products/{product_id}
PUT/v1/shops/{shop_id}/products/{product_id}
DELETE/v1/shops/{shop_id}/products/{product_id}
POST/v1/shops/{shop_id}/orders.json
GET/v1/shops/{shop_id}/orders/{order_id}
GET/v1/orders.json
POST/v1/orders.json
POST/v1/orders/{order_id}/send.json
GET/v1/shops/{shop_id}/webhooks.json
POST/v1/shops/{shop_id}/webhooks.json
GET/v1/shops/{shop_id}/webhooks/{webhook_id}
DELETE/v1/shops/{shop_id}/webhooks/{webhook_id}

VM-verified behaviors (10)

  • a missing or non-Bearer Authorization is a flat 401 at every surface
  • the static catalog serves both blueprints and their variant tables
  • product create mints sequential hex ids for each blueprint/provider pair
  • product lists are shop-scoped and walk the page cursor without repeats
  • update merges under the clock and delete leaves a flat 404
  • both order-create route forms build the same priced pending document
  • order polling strips .json and send flips it to fulfilled
  • the global order list pages by limit/page and rejects garbage cursors
  • webhook secrets stay masked through every read, and delete leaves a flat 404
  • deliveries are HMAC-signed by the subscribing hook's own secret

Not implemented (5)

  • No shops endpoints (GET /v1/shops.json); shop_id is a path placeholder
  • No image uploads (POST /v1/uploads/images.json)
  • No order update route (PUT /v1/shops/{shop_id}/orders/{order_id}.json)
  • No product publish/unpublish (publish.json, unpublish.json)
  • No shipping calculation or shipping-methods endpoints

Differs from the real API (4)

  • Webhook without a secret signs with built-in mock secret stunt_mock_potify_webhook_secret
  • List envelopes are a stunt invention with hardcoded current_page/per_page/last_page; real Printify returns bare arrays
  • total_price is a synthetic whole number (qty x 20); real prices are per-variant cent strings
  • The order list is global across shops; real Printify lists orders shop-scoped
want more of the Printify API surface? adapters are YAML + Starlark — the authoring guide covers adding routes, fixtures, and state machines. Open an issue for anything big first, or just file a PR — merged routes ship in the next release.