{
  "integration": {
    "product": "starail",
    "version": "3.2.3",
    "positioning": "Programmable stablecoin rail operating stack — embed Pay, Payout, Points, and Control in your product.",
    "safetyPolicy": {
      "noPrivateKeyCustody": true,
      "signingDisabledByDefault": true,
      "liveExecutionRequiresExplicitEnable": true,
      "kytFailClosed": true
    },
    "auth": {
      "header": "x-starail-api-key",
      "demoKey": "starail_demo_key (development only)",
      "docs": "https://starail-production.up.railway.app/v1/auth/status"
    },
    "modules": [
      {
        "id": "pay",
        "name": "Starail Pay",
        "status": "available",
        "entrypoint": "POST /v1/payment_intents"
      },
      {
        "id": "payout",
        "name": "Starail Payout",
        "status": "available",
        "entrypoint": "POST /v1/payout_intents"
      },
      {
        "id": "points",
        "name": "Starail Points",
        "status": "available",
        "entrypoint": "POST /v1/point_programs"
      },
      {
        "id": "treasury",
        "name": "Starail Treasury",
        "status": "available",
        "entrypoint": "GET /v1/balances/treasury"
      },
      {
        "id": "control",
        "name": "Starail Control",
        "status": "available",
        "entrypoint": "POST /v1/intents/{id}/analyze"
      },
      {
        "id": "security",
        "name": "Starail Security",
        "status": "available",
        "entrypoint": "GET /v1/rbac/matrix"
      }
    ],
    "partnerSecurity": {
      "rbac": "GET https://starail-production.up.railway.app/v1/rbac/matrix",
      "apiKeys": "GET|POST https://starail-production.up.railway.app/v1/workspace/api-keys",
      "apiKeyRotate": "POST https://starail-production.up.railway.app/v1/workspace/api-keys/{id}/rotate",
      "slos": "GET https://starail-production.up.railway.app/v1/ops/slos",
      "kytSmoke": "GET https://starail-production.up.railway.app/v1/kyt/smoke",
      "vaultKms": "GET https://starail-production.up.railway.app/v1/vault/kms-readiness",
      "haRunbook": "docs/ha-runbook.md"
    },
    "kytProduction": {
      "status": "GET https://starail-production.up.railway.app/v1/kyt/status",
      "smoke": "GET https://starail-production.up.railway.app/v1/kyt/smoke",
      "env": [
        "STARAIL_KYT_LIVE=true",
        "STARAIL_KYT_ENDPOINT_URL=<vendor-url>",
        "STARAIL_KYT_API_KEY=<vendor-key>",
        "STARAIL_KYT_FAIL_CLOSED_BLOCK=true (optional hard block)"
      ]
    },
    "merchant": [
      "GET https://starail-production.up.railway.app/v1/merchants/{merchantId}/settlement-profile",
      "POST https://starail-production.up.railway.app/v1/merchants/{merchantId}/settlement-profile — upsert settlement methods"
    ],
    "quickstart": {
      "pay": [
        "POST https://starail-production.up.railway.app/v1/payment_intents — create PaymentIntent",
        "POST https://starail-production.up.railway.app/v1/payment_intents/{id}/analyze — route + KYT + policy",
        "POST https://starail-production.up.railway.app/v1/payment_intents/{id}/confirm — confirm receipt (under/over variance)",
        "POST https://starail-production.up.railway.app/v1/payment_intents/{id}/post-ledger — double-entry ledger",
        "GET https://starail-production.up.railway.app/checkout/pay/{id} — hosted checkout page"
      ],
      "payout": [
        "POST https://starail-production.up.railway.app/v1/payout_intents — create PayoutIntent",
        "POST https://starail-production.up.railway.app/v1/payout_batches — batch create (up to 50)",
        "POST https://starail-production.up.railway.app/v1/payout_intents/{id}/approve — approval gate",
        "POST https://starail-production.up.railway.app/v1/payout_intents/{id}/reserve — treasury reservation"
      ],
      "points": [
        "POST https://starail-production.up.railway.app/v1/point_programs — create program",
        "POST https://starail-production.up.railway.app/v1/point_programs/{id}/credit — credit user balance",
        "POST https://starail-production.up.railway.app/v1/point_spend_intents — reserve + spend",
        "POST https://starail-production.up.railway.app/v1/points/shadow/mirror — legacy ledger mirror (Phase 0)",
        "POST https://starail-production.up.railway.app/v1/points/shadow/reconcile — shadow vs Starail diff"
      ],
      "webhooks": [
        "POST https://starail-production.up.railway.app/v1/webhooks/endpoints — register receiver",
        "GET https://starail-production.up.railway.app/v1/webhooks/status — delivery monitoring",
        "Event types: payment_intent.created, payment_intent.confirmed, payment_intent.refunded, payment_intent.ledger_posted, payout_intent.created, payout_intent.approved, payout_intent.reserved, point_spend_intent.created, point_spend_intent.captured, point_spend_intent.settled, point_shadow.mismatch"
      ]
    },
    "surfaces": {
      "productHub": "https://starail-production.up.railway.app/product-hub",
      "hostedCheckout": "https://starail-production.up.railway.app/checkout/pay/{paymentIntentId}",
      "console": "https://starail-production.up.railway.app/console",
      "openapi": "docs/openapi.json (npm run openapi:generate)",
      "verify": "npm run verify:integration (27+ checks)"
    },
    "embed": {
      "discovery": "GET https://starail-production.up.railway.app/v1/product/embed",
      "stack": "GET https://starail-production.up.railway.app/v1/product/stack",
      "canonicalUnits": "GET https://starail-production.up.railway.app/v1/money/canonical-units"
    }
  }
}