{
  "opencollection": "1.0.0",
  "info": {
    "name": "ZeroSettle IAP Cancel Flow StoreKit API",
    "version": "1.0.0"
  },
  "request": {
    "auth": {
      "type": "apikey",
      "key": "X-ZeroSettle-Key",
      "value": "{{X-ZeroSettle-Key}}",
      "placement": "header"
    }
  },
  "items": [
    {
      "info": {
        "name": "StoreKit",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "Sync StoreKit Transaction",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.zerosettle.io/v1/iap/storekit-transactions",
            "body": {
              "type": "json",
              "data": "{}"
            }
          },
          "docs": "Forwards a StoreKit 2 JWS (JSON Web Signature) transaction to ZeroSettle for verification and recording. The backend verifies the JWS against Apple's root certificate chain, creates a `Transaction` and `Entitlement`, and returns success. The SDK should call `transaction.finish()` only after receiving a success response.\n\nSDK 1.3+ additionally forwards `will_auto_renew` (pulled from `Product.SubscriptionInfo.RenewalInfo.willAutoRenew`) on every sync. The backend diffs this against the stored enti"
        },
        {
          "info": {
            "name": "Get StoreKit Subscription Status",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.zerosettle.io/v1/iap/storekit-subscription-status",
            "params": [
              {
                "name": "original_transaction_id",
                "value": "",
                "type": "query",
                "description": "The StoreKit original transaction ID for the subscription."
              }
            ]
          },
          "docs": "Returns the current status of a StoreKit subscription by its original transaction ID. Useful for checking renewal state and expiry. The response includes normalized `is_active` and `auto_renew_enabled` booleans (SDK 1.2+); prefer these over the raw `status`/`auto_renew_status` fields for canonical access decisions."
        }
      ]
    }
  ],
  "bundled": true
}