API is running. --- Infrastructure / diagnostics --- GET / This index GET /health Liveness probe — returns "ok" GET /api JSON diagnostic info (config, URLs, issues) GET /api/ready Readiness — 200 if config valid, 400 if not GET /api/check?shop= Readiness for a specific shop (token + feature flags) GET /api/redirect-url Full OAuth redirect URL --- Shopify OAuth --- GET /install?shop= Start OAuth — redirects to Shopify authorize URL GET /oauth/callback OAuth callback — code exchange, saves token, registers webhooks --- Webhooks --- POST /webhooks/shopify Shopify webhook receiver (products/*, orders/*) --- DSS Internal API (X-DSS-Internal-Secret header required if configured) --- PUT /stores/api-key Set Shopify Admin token (see repo openapi.json) POST /tracking-update Monolith webhook: SyncShipmentsWithFulfillmentsRequest → sync Shopify fulfillments POST /sync-shipments-with-fulfillments Monolith webhook: TrackingUpdateRequest → Shopify FulfillmentEvent POST /tracking-updates Same TrackingUpdate body as .../sync-shipments-with-fulfillments (compat) --- Demo routes (disabled — set ENABLE_DEMO_ROUTES=true) --- GET /demo/products?shop= List products via Shopify GraphQL GET /demo/order?shop=&id= Load a single order by GID or numeric ID POST /demo/fulfillment/create Create a fulfillment with tracking POST /demo/fulfillment/tracking Update fulfillment tracking info