{
  "schema": "https://gcagochina.com/api-status.json",
  "pageUrl": "https://gcagochina.com/api-status.html",
  "status": "public-member-access-api-status-published",
  "lastUpdated": "2026-06-18",
  "latestPublicCheckAt": "2026-06-18T08:41:31Z",
  "latestPublicCheckStatus": "passed",
  "latestDeployReadinessCheckAt": "2026-06-18T08:37:28Z",
  "latestDeployReadinessStatus": "blocked-cloudflare-auth-or-worker-deploy-permission-code-10000",
  "latestDeployReadinessSummary": {
    "wranglerDeployDryRun": "passed",
    "cloudflareD1Visibility": "passed",
    "cloudflareAuthSession": "failed",
    "cloudflareWorkerDeployPermission": "failed",
    "writesD1Records": false,
    "deploysWorker": false,
    "readsUserLedgers": false,
    "printsAdminReadToken": false
  },
  "latestDailyStatusSnapshot": "https://gcagochina.com/daily-status.html",
  "title": "GCA Registration and Member Access API Status",
  "apiBaseUrl": "https://gca-registration-api.gcagochina.workers.dev",
  "futureCustomDomain": "https://api.gcagochina.com",
  "futureCustomDomainStatus": "pending-cloudflare-zone-access",
  "provider": "Cloudflare Workers + D1",
  "sourceDirectory": "cloudflare/gca-registration-worker/",
  "workerMain": "cloudflare/gca-registration-worker/src/worker.mjs",
  "healthEndpoint": {
    "method": "GET",
    "url": "https://gca-registration-api.gcagochina.workers.dev/health",
    "expectedService": "gca-registration-api",
    "public": true,
    "requiresSecret": false
  },
  "publicEndpoints": [
    {
      "id": "email-registration-create",
      "method": "POST",
      "path": "/gca/email-registrations",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/email-registrations",
      "status": "live",
      "packetVersion": "gca_email_registration_v1",
      "public": true,
      "requiresWallet": false,
      "requiresSignature": false,
      "requiresTransaction": false,
      "automaticTokenTransfer": false
    },
    {
      "id": "contact-suppression-create",
      "method": "POST",
      "path": "/gca/contact-suppressions",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/contact-suppressions",
      "status": "live",
      "packetVersion": "gca_contact_suppression_v1",
      "public": true,
      "requiresWallet": false,
      "requiresSignature": false,
      "requiresTransaction": false,
      "automaticTokenTransfer": false
    },
    {
      "id": "access-config-read",
      "method": "GET",
      "path": "/gca/access-config",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/access-config",
      "status": "live",
      "public": true,
      "requiresWallet": false,
      "requiresSignature": false,
      "requiresTransaction": false,
      "automaticTokenTransfer": false
    },
    {
      "id": "wallet-verification-create",
      "method": "POST",
      "path": "/gca/wallet-verifications",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/wallet-verifications",
      "status": "live",
      "packetVersion": "gca_wallet_verification_v1",
      "public": true,
      "requiresWallet": true,
      "requiresSignature": false,
      "requiresTransaction": false,
      "readOnlyEthCall": true,
      "automaticTokenTransfer": false
    },
    {
      "id": "member-access-create",
      "method": "POST",
      "path": "/gca/member-access",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/member-access",
      "status": "live",
      "packetVersion": "gca_member_access_v1",
      "public": true,
      "requiresWallet": true,
      "requiresSignature": false,
      "requiresTransaction": false,
      "readOnlyEthCall": true,
      "writesEligibleCreditLedger": true,
      "writesEligibleMemberLedger": true,
      "automaticTokenTransfer": false
    }
  ],
  "adminEndpoints": [
    {
      "id": "email-registration-read",
      "method": "GET",
      "path": "/gca/email-registrations",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/email-registrations",
      "status": "live-token-protected",
      "requiresAdminReadToken": true,
      "publicLedgerReadable": false
    },
    {
      "id": "contact-suppression-read",
      "method": "GET",
      "path": "/gca/contact-suppressions",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/contact-suppressions",
      "status": "live-token-protected",
      "requiresAdminReadToken": true,
      "publicLedgerReadable": false
    },
    {
      "id": "wallet-verification-read",
      "method": "GET",
      "path": "/gca/wallet-verifications",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/wallet-verifications",
      "status": "live-token-protected",
      "requiresAdminReadToken": true,
      "publicLedgerReadable": false
    },
    {
      "id": "member-access-read",
      "method": "GET",
      "path": "/gca/member-access",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/member-access",
      "status": "live-token-protected",
      "requiresAdminReadToken": true,
      "publicLedgerReadable": false
    },
    {
      "id": "credit-ledger-read",
      "method": "GET",
      "path": "/gca/credit-ledger",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/credit-ledger",
      "status": "live-token-protected",
      "requiresAdminReadToken": true,
      "publicLedgerReadable": false
    },
    {
      "id": "member-ledger-read",
      "method": "GET",
      "path": "/gca/member-ledger",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/member-ledger",
      "status": "live-token-protected",
      "requiresAdminReadToken": true,
      "publicLedgerReadable": false
    },
    {
      "id": "service-requests-read-write",
      "method": "GET/POST",
      "path": "/gca/service-requests",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/service-requests",
      "status": "prepared-worker-deploy-permission-pending",
      "requiresAdminReadToken": true,
      "publicLedgerReadable": false,
      "workerDryRunPassed": true,
      "blockedBy": "Latest 2026-06-18 readiness check passed Worker dry-run and D1 visibility; blocked by Cloudflare account authentication and Worker deploy permission error [code: 10000]"
    },
    {
      "id": "credit-usage-read-write",
      "method": "GET/POST",
      "path": "/gca/credit-usage",
      "url": "https://gca-registration-api.gcagochina.workers.dev/gca/credit-usage",
      "status": "prepared-worker-deploy-permission-pending",
      "requiresAdminReadToken": true,
      "publicLedgerReadable": false,
      "workerDryRunPassed": true,
      "blockedBy": "Latest 2026-06-18 readiness check passed Worker dry-run and D1 visibility; blocked by Cloudflare account authentication and Worker deploy permission error [code: 10000]"
    }
  ],
  "checks": {
    "tool": "tools/check_gca_registration_api.py",
    "workerDeployReadinessTool": "tools/check_gca_worker_deploy_readiness.py",
    "workerDeployReadinessCommand": "python3 tools/check_gca_worker_deploy_readiness.py --run-wrangler --run-cloudflare --require-deploy-auth",
    "workerDeployReadinessAuthSessionCheck": "cloudflare-auth-session",
    "workerDeployReadinessAuthRecoveryField": "authRecovery",
    "publicOnlyCommand": "python3 tools/check_gca_registration_api.py --public-only --timeout 30",
    "adminCommand": "python3 tools/check_gca_registration_api.py --token-file cloudflare/gca-registration-worker/.env.admin.local --limit 5",
    "publicOnlyWorkflow": ".github/workflows/check-gca-registration-api.yml",
    "publicOnlyWorkflowRequiresSecrets": false,
    "adminCheckRequiresLocalTokenFile": true,
    "writesTestRecords": false,
    "readOnly": true
  },
  "pendingRoutesDeployHandoff": {
    "document": "docs/gca_worker_pending_routes_deploy_handoff.md",
    "pageUrl": "https://gcagochina.com/worker-routes-handoff.html",
    "dataUrl": "https://gcagochina.com/worker-routes-handoff.json",
    "status": "prepared-not-production-live",
    "blockedBy": "Latest 2026-06-18 readiness check passed Worker dry-run and D1 visibility; blocked by Cloudflare account authentication and Worker deploy permission error [code: 10000]",
    "routes": [
      "/gca/service-requests",
      "/gca/credit-usage"
    ],
    "readOnlyGateCommand": "python3 tools/check_gca_worker_deploy_readiness.py --run-wrangler --run-cloudflare --require-deploy-auth",
    "remoteMigrationCommand": "cd cloudflare/gca-registration-worker && npx wrangler d1 migrations apply gca_registration --remote",
    "deployCommand": "cd cloudflare/gca-registration-worker && npx wrangler deploy",
    "postDeployPublicSmokeCommand": "python3 tools/check_gca_registration_api.py --public-only --timeout 30 --include-pending-routes",
    "postDeployAdminSmokeCommand": "python3 tools/check_gca_registration_api.py --token-file cloudflare/gca-registration-worker/.env.admin.local --limit 5 --include-pending-routes",
    "statusUpdateAllowedAfter": [
      "cloudflare-auth-session passes",
      "D1 visibility passes",
      "Worker deploy permission passes",
      "remote D1 migrations apply successfully",
      "wrangler deploy succeeds",
      "public smoke check passes with --include-pending-routes",
      "admin smoke check passes with --include-pending-routes"
    ],
    "boundaries": {
      "operatorOnly": true,
      "requiresAdminReadToken": true,
      "publicLedgerReadable": false,
      "serviceRequestsDoNotDeductCredits": true,
      "noWalletConnection": true,
      "noWalletSignature": true,
      "noTransaction": true,
      "noAutomaticTokenTransfer": true,
      "noTradingPermission": true,
      "doNotClaimLiveBeforeSmokeChecks": true
    }
  },
  "operatorTools": {
    "adminExport": "tools/export_cloudflare_email_registrations.py",
    "adminSync": "tools/sync_cloudflare_email_registrations.py",
    "contactCsvExport": "tools/export_gca_email_contacts.py",
    "registrationOps": "tools/run_gca_registration_ops.py",
    "contactSuppressionSync": "tools/sync_cloudflare_contact_suppressions.py"
  },
  "publicBoundaries": {
    "noPrivateKeyCollection": true,
    "noSeedPhraseCollection": true,
    "noExchangeApiSecretCollection": true,
    "noWithdrawalPermission": true,
    "noWalletSignatureForEmailRegistration": true,
    "noPaymentForEmailRegistration": true,
    "noPublicLedgerRead": true,
    "noSelfServiceCreditsActivation": false,
    "noSelfServiceMemberActivation": false,
    "noWalletSignatureForWalletVerification": true,
    "noTransactionForWalletVerification": true,
    "memberAccessWritesEligibleLedgers": true,
    "noAutomaticTokenTransfer": true,
    "memberBenefitManualReviewOnly": true
  },
  "officialLinks": {
    "registrationPage": "https://gcagochina.com/register.html",
    "unsubscribePage": "https://gcagochina.com/unsubscribe.html",
    "accessApiPage": "https://gcagochina.com/access-api.html",
    "dataRoom": "https://gcagochina.com/data.html",
    "githubWorkflow": "https://github.com/timchen078/gca_token/actions/workflows/check-gca-registration-api.yml",
    "memberAccessPage": "https://gcagochina.com/gca/member-access/",
    "workerRoutesHandoffPage": "https://gcagochina.com/worker-routes-handoff.html",
    "workerRoutesHandoff": "https://gcagochina.com/worker-routes-handoff.json"
  }
}
