Registration API Status / Live Read-Only Check

GCA Registration API Status

This is the public status page for the live GCA email registration, member access, device-key account status, account service requests, queued-request cancellation, redacted history, key rotation, registered-email recovery, and contact suppression backend. The current production API runs on Cloudflare Workers + D1 at https://gca-registration-api.gcagochina.workers.dev.

The latest release public smoke check passed at 2026-08-10T13:23:22Z, followed by a token-protected admin read check at 2026-08-10T13:23:40Z. The browser panel below can repeat the safe read-only portion now without writing records.

gca_member_access_v2 creates a random device key in the browser. D1 stores only its SHA-256 hash, and gca_account_status_v1 returns a redacted read-only snapshot without email, full wallet address, the key, administrator data, or operator notes.

gca_account_status_rotation_v1 lets a browser holding the current valid key replace it safely. The old key immediately loses status-read access and can only retry the same completed rotation for 15 minutes; account, credit, member, wallet, and token records are unchanged.

Lost-key recovery uses gca_account_status_recovery_request_v1, registered-email manual review, and a single-use 24-hour credential. Public requests never reveal whether an account matched. Completion activates the pre-committed new key and changes no account, credit, member, wallet, GCA balance, or on-chain asset.

gca_account_service_request_v1 lets the device-key account submit a server-priced catalog service to manual review. A more-information review publishes a non-sensitive prompt, and gca_account_service_request_followup_v1 lets the matched account append a bounded response and return the request to review. Before review starts, the account can cancel its queued request. Review decisions remain append-only and approved delivery settles the server catalog credit unit at most once.

Service requests, service reviews, credit usage, append-only member review, holding verification, and member-benefit transfer evidence are production-live and token-protected. None of these routes connects a wallet, signs a message, sends a transaction, or creates trading permission.

The public checks verify health and read protections without writing test registrations. Admin reads remain token protected and should only be run locally by an operator with the local admin token file.

Provider Cloudflare Workers + D1
API Base gca-registration-api.gcagochina.workers.dev
Public Check Live / no secrets
Latest Check Running in this browser
Admin Read Token protected
Member Review Production-live / manual
Benefit Evidence Production-live / read-only chain verification
Account Status Device-key protected / redacted read-only
Device Key Rotation Live / 15-minute same-rotation retry
Lost-Key Recovery Live / registered-email review
Account Service Requests Live / device-key protected / manual review
Reviewed Delivery Live / approved first / at-most-once settlement
Delivery Receipt Live / completed delivery only / device-key protected
Worker Version def4a0ea-fcbb-4d0e-a380-ba9656d7dc05
Custom Domain api.gcagochina.com pending zone access
Public Records Not readable
Smoke Tool tools/check_gca_registration_api.py
Workflow check-gca-registration-api.yml

Live Read-Only Check

Current browser result for the official Worker. No registration, wallet verification, service request, credit usage, token transfer, or admin-token request is sent.

Not checked in this browser

Worker health and identity GET /health
Waiting
Access configuration GET /gca/access-config
Waiting
Existing admin-read protection Eleven GET routes, including service follow-ups, member reviews, holding evidence, benefit-transfer evidence, and recovery requests, must reject anonymous access with HTTP 401
Waiting
Protected operator routes Service requests, reviews, follow-up responses, and credit usage are live; HTTP 401 confirms anonymous reads are rejected
Waiting

Live Endpoints

GET /health

Public health endpoint. Expected service is gca-registration-api.

POST /gca/email-registrations

Live public gca_email_registration_v1 intake for email-only user registration.

POST /gca/contact-suppressions

Live public gca_contact_suppression_v1 intake for email do-not-contact requests.

GET /gca/access-config

Live public access configuration for chain ID 8453, the GCA contract, thresholds, ledger boundaries, and safety rules.

POST /gca/wallet-verifications

Live public read-only wallet verification. The Worker reads GCA balance with Base Mainnet eth_call; it does not request signatures or transactions.

POST /gca/member-access

Live gca_member_access_v2 account intake for email, Base wallet, holder-credit records, a queued GCA Member review record, and a browser-generated device status key. D1 stores only the key hash.

POST /gca/account-status

Live gca_account_status_v1 read-only lookup using the matching unexpired device key. It returns redacted account, wallet-verification, credits, member-review, and benefit-transfer state without email, full wallet, the key, admin data, or operator notes.

POST /gca/account-status/rotate

Live gca_account_status_rotation_v1 key replacement. The old key loses status-read access immediately and can retry only the same rotation for 15 minutes; no account, wallet, credit, member, or token records change.

POST /gca/account-status/recovery-requests

Live generic recovery intake. The browser pre-commits a new random device key; the response never reveals whether the registered email and Base wallet matched an account.

GET / POST /gca/account-status/recovery-requests + /recovery-approvals

Live token-protected operator review. A 24-hour credential is returned once only after registered-mailbox ownership is manually verified; D1 stores its SHA-256 hash.

POST /gca/account-status/recover

Live single-use completion. It activates the pre-committed new key and invalidates the old key without changing the account, wallet, credits, member records, GCA balance, or on-chain assets.

POST /gca/account-service-requests

Live device-key protected gca_account_service_request_v1 intake. The server selects the catalog unit, enforces account-scoped idempotency and a five-request daily limit, and queues manual review without reserving or deducting credits.

POST /gca/account-service-requests/status

Live read-only gca_account_service_request_status_v1 history. It returns a public review prompt plus follow-up time and count when applicable, but omits email, full wallet, keys, full request and response bodies, reviewer identity, and operator notes.

POST /gca/account-service-requests/follow-ups

Live device-key protected gca_account_service_request_followup_v1 intake. It accepts one idempotent, non-sensitive response only after the latest review asks for more information, allows at most five append-only responses per request, and returns the request to manual review without changing credits or wallet state.

POST /gca/account-service-requests/delivery-receipts

Live device-key protected gca_account_service_delivery_receipt_v1 confirmation after completed delivery. It is account-scoped and idempotent and does not change credits, wallets, tokens, member state, or trading permission.

POST /gca/account-service-requests/cancellations

Live device-key protected gca_account_service_request_cancellation_v1 cancellation before manual review. It is account-scoped, permanent, and idempotent; it changes no credits, wallets, tokens, member state, or trading permission and does not delete audit history.

GET /gca/email-registrations

Live token-protected admin read. Public visitors should receive an authorization error, not registration records.

GET /gca/contact-suppressions

Live token-protected admin read for suppression sync. Public visitors cannot read the suppression ledger.

GET /gca/credit-ledger

Live token-protected admin read for 100 credits ledger records.

GET /gca/member-ledger

Live token-protected admin read for GCA Member ledger records and member-benefit review status.

GET/POST /gca/member-reviews

Production-live gca_member_review_v1 operator route. Approval refreshes the balance at a safe Base block, reconstructs the observed 30-day transfer history, and records an append-only decision before changing member status. It does not request a signature, send tokens, or authorize the 10,000 GCA member-benefit transfer.

GET /gca/holding-verifications

Production-live, token-protected read for append-only gca_holding_verification_v1 evidence. It records the safe snapshot block, observed minimum balance, event counts, completeness, and reconstruction status. This is observed chain-history evidence, not a third-party audit or future guarantee.

GET/POST /gca/member-benefit-transfers

Production-live, token-protected gca_member_benefit_transfer_v1 evidence route. It requires an active approved member, successful receipt at or below the Base safe block, the official reserve sender, approved member recipient, official GCA contract, and exactly 10,000 GCA. It verifies an existing transaction only.

GET/POST /gca/service-requests

Production-live token-protected service request queue. The latest Worker deploy and public/admin read-only smoke checks passed on 2026-08-10 UTC. Anonymous reads return HTTP 401.

GET/POST /gca/service-request-reviews

Production-live token-protected gca_service_request_review_v1 route. More-information decisions require a public non-sensitive member prompt. Delivery requires prior approval plus a non-sensitive deliveryReference and creates at most one linked credit usage record using the server catalog unit.

GET /gca/service-request-followups

Production-live token-protected operator read for append-only account responses. Anonymous reads return HTTP 401. Response text stays out of public account history and is visible only to an authorized operator.

GET/POST /gca/credit-usage

Production-live token-protected credit usage ledger. The latest Worker deploy and public/admin read-only smoke checks passed on 2026-08-10 UTC. Anonymous reads return HTTP 401.

Future Domain api.gcagochina.com

Pending until the Cloudflare account used for Workers can manage the gcagochina.com DNS zone.

Public Check

This command checks the live health endpoint and confirms unauthenticated admin reads are blocked. It does not need secrets and does not write test records.

python3 tools/check_gca_registration_api.py --public-only --timeout 30

Admin Check

This local operator check reads a small record sample with ADMIN_READ_TOKEN. Keep the token file local and do not publish it.

python3 tools/check_gca_registration_api.py --token-file cloudflare/gca-registration-worker/.env.admin.local --limit 5

Deploy Readiness

This checks Worker bundling and the required 0014_service_request_cancellations.sql and 0015_service_request_followups.sql migrations, Cloudflare account authentication, D1 visibility, and read-only Worker deployment permission before publishing a new Worker version. All required checks passed on 2026-08-10 UTC.

python3 tools/check_gca_worker_deploy_readiness.py --run-wrangler --run-cloudflare --require-deploy-auth

Service Routes Deployment

/gca/service-requests, /gca/service-request-reviews, /gca/service-request-followups, and /gca/credit-usage are production-live. Anonymous reads return HTTP 401; token-protected admin reads return HTTP 200. Both public and admin read-only smoke checks passed with --include-pending-routes.

Worker Routes Deployment Record publishes the verified result, repeatable gate order, and claim boundaries.

Source handoffdocs/gca_worker_pending_routes_deploy_handoff.md
Migrationnpx wrangler d1 migrations apply gca_registration --remote
Public smokepython3 tools/check_gca_registration_api.py --public-only --timeout 30 --include-pending-routes
Admin smokepython3 tools/check_gca_registration_api.py --token-file cloudflare/gca-registration-worker/.env.admin.local --limit 5 --include-pending-routes

Manual delivery operator: .venv/bin/python tools/review_cloudflare_service_request.py --help. The tool requires explicit no-secrets, no-custody, no-trading-permission, delivery-completed, and credit-settlement confirmations.

Member Review Deployment

/gca/member-reviews and /gca/holding-verifications are production-live and protected by ADMIN_READ_TOKEN. Remote migrations, Worker deployment, public HTTP 401 verification, and admin HTTP 200 verification passed; the latest read-only smoke checks completed on 2026-07-28 UTC.

The operator command requires explicit production-write and evidence-review confirmations. It changes account and member status only; the 10,000 GCA benefit remains a separate reserve-wallet process.

.venv/bin/python tools/review_cloudflare_member.py --help

Member Benefit Evidence Deployment

Remote migration 0008_member_benefit_transfer_evidence.sql, Worker deploy, anonymous HTTP 401 check, and admin HTTP 200 read check passed; the latest read-only smoke completed on 2026-07-28 UTC. Deployment smoke observed zero records and did not submit a transfer.

Use this command only after the official reserve-wallet transfer is complete. All three safety acknowledgements are required.

.venv/bin/python tools/record_cloudflare_member_benefit_transfer.py --help

Operator Tools

Export registrationstools/export_cloudflare_email_registrations.py
Sync registrationstools/sync_cloudflare_email_registrations.py
Contact CSVtools/export_gca_email_contacts.py
Suppression synctools/sync_cloudflare_contact_suppressions.py
Member reviewtools/review_cloudflare_member.py
Member benefit evidencetools/record_cloudflare_member_benefit_transfer.py
Ops summarytools/run_gca_registration_ops.py

Public Boundaries

  • Email registration does not require a wallet, wallet signature, payment, private key, seed phrase, exchange API secret, or withdrawal permission.
  • Contact suppression does not change GCA balances, pool state, credits, member status, or on-chain assets.
  • Public visitors cannot read the registration ledger or suppression ledger.
  • Member-benefit execution remains manual reserve-wallet processing; production evidence verification is live and records only an already-completed exact 10,000 GCA transfer.

API Status References

Use these readable status, daily snapshot, API contract, operations, and privacy pages for public implementation context. The Operator Console is localhost-only at http://127.0.0.1:8787/operator.html after running the local backend.