What's New This Week: Updated 2026-04-18 20:28:44 UTC
Wallet and Telegram mission rollout updates shipped this week across mission catalog hardening, mini-app UX, and operator visibility.
Open full release notes

OpenAPI Schema Explorer

Search endpoints, fields, and examples across the public API specs.

Last updated: 2026-06-17 01:39:55 UTC

JSON

Operations (137)

This explorer is part of the public project trust stack. It lets partners verify the live public API contract against the same status and transparency surfaces that describe system behavior.

Operation Summary Fields Example
GET /api/partner/analytics/usage Per-key usage analytics and webhook delivery health hours {"success":true,"partner":"Acme","key_id":"k_test","window":{"hours":24,"start_utc":"2026-03-09T00:00:00Z","end_utc":"2026-03-10T00:00:00Z"},"request_metrics":{"total_requests":12,"success_requests":10,"error_requests":2,"rate_limited_requests":1,"endpoint_breakdown":[{"path":"/api/partner/users","requests":7,"errors":1,"error_rate_pct":14.29}]},"latency_metrics_ms":{"available":true,"overall":{"samples":3,"p50_ms":240,"p95_ms":320,"p99_ms":320},"endpoint_breakdown":[{"path":"/api/partner/users"
GET /api/partner/capabilities Partner API capability discovery include_meta, If-Modified-Since {"success":true,"partner":"Acme Partner","key_id":"acme_key","key_mode":"sandbox","sandbox":{"enabled_for_key":true,"verify_endpoint":"/api/partner/sandbox/verify","promotion_report_endpoint":"/api/partner/sandbox/promotion-report","supports_deterministic_fixtures":true,"fixture_endpoints":["/api/partner/sandbox/verify","/api/partner/sandbox/token-status","/api/partner/sandbox/promotion-report","/api/partner/sandbox/webhook-simulator/scenarios","/api/partner/sandbox/webhook-simulator/run"],"stat
POST /api/partner/donation-claim Issue a donation claim (if enabled) n/a {"success":true,"status":"success","claim_status":"issued","claim_code":"abc123","partner_key_id":"k_live","docs_links":{"developers_api_guide":"/developers/api-guide.md","openapi":"/api/openapi.yaml","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_donation_claim":"/api/partner/donation-claim","partner_wallet_info":"/api/partner/wallet-info/7e2vExampleWallet11111111111111111111111111111111","partner_wallet_verification":"/api/partner/wallet-verification/7e2vExampleWallet1111111
GET /api/partner/errors.json Machine-readable partner error taxonomy and retry guidance include_meta {"success":true,"partner":"Acme Partner","key_id":"acme_key","key_mode":"live","count":3,"entries":[{"error_code":"rate_limited","title":"Rate Limit Reached","category":"throttling","http_status":429,"retry_class":"retry_after","retry_behavior":"Respect Retry-After and back off with jitter before retrying.","retry_after_seconds":60,"available_in_modes":["live","sandbox"],"endpoint_groups":["all_partner"],"recovery_links":{"partner_errors":"/api/partner/errors.json","partner_usage_analytics":"/ap
POST /api/partner/sandbox/donation-claim Deterministic sandbox donation-claim rehearsal for sandbox keys Idempotency-Key, include_meta {"success":true,"mode":"sandbox","partner":"Acme Partner","key_id":"acme_sandbox_key","partner_key_id":"acme_sandbox_key","fixture_profile":"deterministic_partner_sandbox_donation_claim_v1","source":"deterministic_fixture","status":"success","claim_code":"sandbox-5f9d1be7f6b4d4975c4f7f7d","claim_url":"/faucet?key=sandbox-5f9d1be7f6b4d4975c4f7f7d","email_sent":false,"claim_status":"sandbox_preview","claim_campaign_id":"12","requested_claim":{"campaign_id":"spring_drive","amount":50.0,"email":"don
GET /api/partner/sandbox/promotion-report Sandbox promotion-readiness report for sandbox keys user_id, limit, include_meta {"success":true,"mode":"sandbox","partner":"Acme Partner","key_id":"acme_sandbox_key","fixture_profile":"deterministic_partner_sandbox_promotion_v1","source":"sandbox_state","promotion_policy":"sandbox_to_live_manual_approval","docs_links":{"developers_api_guide":"/developers/api-guide.md","developers_api_errors":"/developers/api-errors","developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","openapi":"/api/openapi.yaml","ope
GET /api/partner/sandbox/salutes/balance Sandbox salutes practice balance for sandbox keys user_id, include_meta {"success":true,"mode":"sandbox","partner":"Acme Partner","key_id":"acme_sandbox_key","fixture_profile":"deterministic_partner_sandbox_salutes_v1","user_id":"partner-user-7","balance":1000,"currency":"salutes","source":"sandbox_state","docs_links":{"developers_api_guide":"/developers/api-guide.md","developers_api_errors":"/developers/api-errors","developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","openapi":"/api/openapi.ya
POST /api/partner/sandbox/salutes/credit Credit sandbox salutes practice balance without touching live state Idempotency-Key, include_meta {"success":true,"mode":"sandbox","partner":"Acme Partner","key_id":"acme_sandbox_key","fixture_profile":"deterministic_partner_sandbox_salutes_v1","user_id":"partner-user-7","balance":1075,"delta":75,"idempotency_key":"idem-credit-1","ledger_entry_id":1,"source":"sandbox_state","docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_status":"/api/p
POST /api/partner/sandbox/salutes/debit Debit sandbox salutes practice balance without touching live state Idempotency-Key, include_meta {"success":true,"mode":"sandbox","partner":"Acme Partner","key_id":"acme_sandbox_key","fixture_profile":"deterministic_partner_sandbox_salutes_v1","user_id":"partner-user-7","balance":1035,"delta":-40,"idempotency_key":"idem-debit-1","ledger_entry_id":2,"source":"sandbox_state","docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_status":"/api/p
GET /api/partner/sandbox/salutes/ledger Sandbox salutes practice ledger for sandbox keys user_id, limit, offset, order, reason, source, include_meta {"success":true,"mode":"sandbox","partner":"Acme Partner","key_id":"acme_sandbox_key","fixture_profile":"deterministic_partner_sandbox_salutes_v1","user_id":"partner-user-7","balance":1035,"source":"sandbox_state","docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"ledger":[{"id":1,"user_id":"partner-user-7","delta":75,"balance_after":1075,"reason":"bonus","sou
GET /api/partner/sandbox/token-status Deterministic sandbox token diagnostics fixture for sandbox keys include_meta {"success":true,"mode":"sandbox","partner":"Acme Partner","key_id":"acme_sandbox_key","fixture_profile":"deterministic_partner_onboarding_v1","mint":"9d6tEX6d834TRHuirEbfUgEFJfqpgTnpWQxvUrBUqMhC","decimals":6,"rpc_url":"sandbox://deterministic-fixture","chain":{"total_supply":1000000000.0,"treasury_balance":125000000.0,"reserve_balance":250000000.0,"tracked_treasury_balance":375000000.0,"circulating_supply":625000000.0,"holders":42,"holders_source":"deterministic_fixture"},"docs_links":{"develop
GET /api/partner/sandbox/users List sandbox partner users for no-loss rehearsal status, q, include_wallets, limit, offset, cursor, include_meta {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_users_v1","source":"sandbox_state","docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"count":1,"users":[{"id":1,"external_id":"partner-2048","username":"partner_acme_partner_2048","display_name":"Captain Sandbox","status":"active","is_verified":false,"wallet_address":"11111111111
POST /api/partner/sandbox/users Create a sandbox partner user without touching live state n/a {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_users_v1","source":"sandbox_state","live_side_effects_performed":false,"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"external_id":"partner-2048","user":{"id":1,"username":"partner_acme_partner_2048","display_name":"Captain Sandbox","status":"active","is_verified":false,"wall
GET /api/partner/sandbox/users/{user_id} Get one sandbox partner user user_id, external_id, include_wallets {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_users_v1","source":"sandbox_state","live_side_effects_performed":false,"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"user":{"id":1,"username":"partner_acme_partner_2048","display_name":"Captain Sandbox","status":"active","is_verified":false,"wallet_address":"1111111111111111
PATCH /api/partner/sandbox/users/{user_id} Update a sandbox partner user without touching live state user_id {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_users_v1","source":"sandbox_state","live_side_effects_performed":false,"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"user":{"id":1,"username":"partner_acme_partner_2048","display_name":"Captain Updated","status":"suspended","is_verified":false,"wallet_address":"1111111111111
POST /api/partner/sandbox/users/{user_id}/wallets Link a wallet to a sandbox partner user user_id {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_users_v1","source":"sandbox_state","live_side_effects_performed":false,"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"wallets":[{"blockchain":"solana","wallet_address":"11111111111111111111111111111111","label":"Primary","is_primary":1,"verified":0},{"blockchain":"solana","wa
GET /api/partner/sandbox/verify Deterministic sandbox onboarding verification surface for sandbox keys include_meta {"success":true,"mode":"sandbox","partner":"Acme Partner","key_id":"acme_sandbox_key","fixture_profile":"deterministic_partner_onboarding_v1","verification":{"signature_verified":true,"nonce_policy":"global_optional_unless_required","idempotency_policy":"required_by_default_for_mutations","safe_for_replay_testing":true},"fixtures":{"salutes_balance":{"user_id":"sandbox-user-001","balance":1000,"currency":"salutes","source":"deterministic_fixture"},"wallet_verification":{"external_id":"sandbox-us
GET /api/partner/sandbox/webhook-events List replay-safe sandbox webhook events derived from fake-state salutes activity user_id, limit, offset, order, event_type, include_meta {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_webhook_replay_v1","user_id":"partner-user-7","count":2,"source":"sandbox_state","docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"events":[{"event_id":"sandbox-salutes-1","event_type":"salutes.credit","user_id":"partner-user-7","amount":75,"delta":75,"balance_after":1075,"reaso
POST /api/partner/sandbox/webhook-events/replay Build replay-safe sandbox webhook deliveries from fake-state event rows include_meta {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_webhook_replay_v1","count":2,"replayed_count":2,"failed_count":0,"source":"sandbox_state","docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"results":[{"event_id":"sandbox-salutes-1","replayed":true,"event_type":"salutes.credit","simulation":{"headers":{"X-Webhook-Event":"salutes
GET /api/partner/sandbox/webhook-simulator/run Sandbox webhook simulator metadata for sandbox keys include_meta {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_webhook_simulator_v1","method":"POST","required_fields":["scenario_id"],"optional_fields":["secret","key_id"],"safe_for_replay_testing":true,"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_status":"/api/partner/status","scenarios":"/api/partner/sandbox/webhook-simulat
POST /api/partner/sandbox/webhook-simulator/run Build a deterministic sandbox webhook simulation payload include_meta {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_webhook_simulator_v1","selected_scenario_id":"claim_created","safe_for_replay_testing":true,"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"simulation":{"headers":{"X-Webhook-Timestamp":"1700000000","X-Webhook-Signature":"abc123","X-Partner-Key":"acme_sandbox_key"}},"links":{"partner_
GET /api/partner/sandbox/webhook-simulator/scenarios Deterministic sandbox webhook simulator scenarios for sandbox keys include_meta {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_webhook_simulator_v1","scenarios_count":3,"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"scenarios":[{"id":"claim_created","title":"Donation Claim Created","event_type":"donation.claim"}],"links":{"partner_status":"/api/partner/status","sandbox_webhook_simulator_run":"/api/partner/sa
GET /api/partner/sandbox/webhooks List sandbox webhook registry rows for sandbox keys event_type, is_active, limit, offset, cursor, include_meta {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_webhooks_v1","source":"sandbox_state","docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"count":1,"webhooks":[{"id":1,"event_type":"users.updated","target_url":"https://example.test/hook","secret":"sandbox-secret","is_active":true,"created_at":"2026-06-19T16:55:00Z","updated_at":
POST /api/partner/sandbox/webhooks Create sandbox webhook registry row for no-loss rehearsal n/a {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_webhooks_v1","source":"sandbox_state","live_side_effects_performed":false,"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"webhook":{"id":1,"event_type":"users.updated","target_url":"https://example.test/hook","secret":"sandbox-secret","is_active":true},"links":{"partner_status
DELETE /api/partner/sandbox/webhooks/{webhook_id} Disable sandbox webhook registry row webhook_id {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_webhooks_v1","source":"sandbox_state","live_side_effects_performed":false,"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"deleted":true,"webhook_id":1,"links":{"partner_status":"/api/partner/status","partner_errors":"/api/partner/errors.json","sandbox_webhooks":"/api/partner/s
POST /api/partner/sandbox/webhooks/{webhook_id}/test Build sandbox webhook test-delivery simulation from a sandbox registry row webhook_id {"success":true,"mode":"sandbox","fixture_profile":"deterministic_partner_sandbox_webhooks_v1","source":"sandbox_state","live_side_effects_performed":false,"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"queued":true,"event_id":"sandbox-webhook-test-1","webhook_id":1,"event_type":"users.updated","simulation":{"headers":{"X-Webhook-Event":"users.updated","X-
GET /api/partner/status Partner integration status page payload n/a {"success":true,"partner":"Acme","key_id":"k_sandbox","key_mode":"sandbox","overall_status":"ok","endpoint_percentiles_available":true,"endpoint_percentiles_ms":{"p50_ms":90,"p95_ms":180,"p99_ms":220},"request_metrics":{"total_requests":8,"error_requests":0},"webhook_delivery_health":{"dead_letter_events":0,"failed_events":0,"pending_events":0,"delivered_events":4},"delivery_slo_controls":{"max_attempts":6,"timeout_seconds":20,"retry_base_seconds":30,"retry_max_seconds":1800,"retry_jitter_second
GET /api/partner/token-status Partner-facing VETS token runtime status and snapshot summary include_meta {"success":true,"mint":"9d6tEX6d834TRHuirEbfUgEFJfqpgTnpWQxvUrBUqMhC","decimals":6,"rpc_url":"https://mainnet.helius-rpc.com/","docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"chain":{"total_supply":1000000000,"treasury_balance":250000000,"reserve_balance":50000000,"tracked_treasury_balance":300000000,"circulating_supply":700000000,"holders":43,"holders_sour
GET /api/partner/user-lookup Lookup partner-linked users by email/username/wallet q, email, username, wallet, include_wallets, status, limit, offset, cursor, include_meta {"success":true,"count":1,"users":[{"id":42,"username":"vet_user","status":"active"}],"docs_links":{"developers_api_guide":"/developers/api-guide.md","openapi":"/api/openapi.yaml","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_user_lookup":"/api/partner/user-lookup","partner_users":"/api/partner/users","partner_user_template":"/api/partner/users/USER_ID","partner_wallet_info_template":"/api/partner/wallet-info/WALLET_ADDRESS","partner_wallet_verification_template":"/api/partne
GET /api/partner/users List users linked to the partner key status, q, include_wallets, limit, offset, cursor, include_meta {"success":true,"count":1,"users":[{"id":2048,"external_id":"partner-2048","username":"new_user","status":"active"}],"docs_links":{"developers_api_guide":"/developers/api-guide.md","developers_api_errors_json":"/developers/api-errors.json","openapi":"/api/openapi.yaml"},"links":{"partner_user_lookup":"/api/partner/user-lookup","partner_users":"/api/partner/users","partner_user_template":"/api/partner/users/USER_ID","partner_wallet_link_template":"/api/partner/users/USER_ID/wallets","partner_wall
POST /api/partner/users Create a user n/a {"success":true,"external_id":"partner-2048","user":{"id":2048,"username":"new_user","status":"active"},"docs_links":{"developers_api_guide":"/developers/api-guide.md","openapi":"/api/openapi.yaml","sdk_python_starter":"/developers/sdk/python-starter.zip"},"links":{"partner_user":"/api/partner/users/2048","partner_wallet_link":"/api/partner/users/2048/wallets","partner_wallet_info_template":"/api/partner/wallet-info/WALLET_ADDRESS","partner_wallet_verification_template":"/api/partner/wallet-veri
GET /api/partner/users/{user_id} Get a user user_id {"success":true,"user":{"id":2048,"username":"new_user","status":"active"},"docs_links":{"developers_api_guide":"/developers/api-guide.md","openapi":"/api/openapi.yaml"},"links":{"partner_user":"/api/partner/users/2048","partner_wallet_info":"/api/partner/wallet-info/7e2vExampleWallet11111111111111111111111111111111","partner_wallet_verification":"/api/partner/wallet-verification/7e2vExampleWallet11111111111111111111111111111111","partner_wallet_link":"/api/partner/users/2048/wallets","partner_s
PATCH /api/partner/users/{user_id} Update a user (partial) user_id {"success":true,"user":{"id":2048,"username":"new_user","display_name":"Captain","status":"active"},"docs_links":{"developers_api_guide":"/developers/api-guide.md","developers_api_errors_json":"/developers/api-errors.json","openapi":"/api/openapi.yaml"},"links":{"partner_user":"/api/partner/users/2048","partner_wallet_link_template":"/api/partner/users/USER_ID/wallets","partner_wallet_info_template":"/api/partner/wallet-info/WALLET_ADDRESS","partner_wallet_verification_template":"/api/partner/wa
POST /api/partner/users/{user_id}/wallets Link a wallet to a user user_id {"success":true,"wallets":[{"blockchain":"solana","wallet_address":"7e2vExampleWallet11111111111111111111111111111111","label":"Primary","is_primary":1,"verified":0}],"docs_links":{"developers_api_guide":"/developers/api-guide.md","openapi":"/api/openapi.yaml","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_user":"/api/partner/users/2048","partner_wallet_link":"/api/partner/users/2048/wallets","partner_wallet_info":"/api/partner/wallet-info/7e2vExampleWallet11111111111111111111
GET /api/partner/wallet-info/{wallet_address} Get live SOL and VETS balances for a wallet wallet_address {"success":true,"wallet":"7e2vExampleWallet11111111111111111111111111111111","sol_balance":1.25,"vets_balance":456.0,"lp_mint":"MintLP111111111111111111111111111111111111","lp_amount":12.0,"docs_links":{"developers_api_guide":"/developers/api-guide.md","openapi":"/api/openapi.yaml","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_users":"/api/partner/users","partner_user_template":"/api/partner/users/USER_ID","partner_wallet_info":"/api/partner/wallet-info/7e2vExampleWallet11111
GET /api/partner/wallet-verification/{wallet_address} Get wallet verification freshness for a partner-owned wallet wallet_address {"success":true,"wallet":"7e2vExampleWallet11111111111111111111111111111111","wallet_states":{"linked":true,"connected_session":false,"verified":true,"stale_verification":false,"hidden":false},"verification":{"verified":true,"verified_at_utc":"2026-04-01T12:00:00Z","verification_age_days":16,"freshness":"fresh","status_text":"Verified 16d ago","reverify_days":60},"owner":{"user_id":2048,"external_id":"partner-2048","is_primary":true,"is_hidden":false},"state_model":["linked","connected_session",
GET /api/partner/webhook-events List partner webhook events with replay-oriented filters status, reason_tag, from, to {"success":true,"count":1,"events":[{"id":77,"webhook_id":3,"event_type":"users.updated","status":"failed","attempts":5,"is_dead_letter":true,"reason_tag":"http_error","last_error":"HTTP 500","target_url":"https://example.test/hook","created_at":"2026-03-10T00:00:00Z","last_attempt_at":"2026-03-10T00:05:00Z","delivered_at":null}],"query":{"limit":10,"offset":0,"cursor":null,"status":"dead_letter","reason_tag":null,"webhook_id":null,"from":null,"to":null},"pagination":{"has_more":false,"next_offs
POST /api/partner/webhook-events/replay Batch replay webhook events n/a {"success":true,"count":2,"replayed_count":1,"failed_count":1,"reason_tag":"receiver_fix","note":"receiver deployed fix","results":[{"event_id":77,"replayed":true,"error":null,"reason_tag":"receiver_fix"},{"event_id":88,"replayed":false,"error":"not_found","reason_tag":"receiver_fix"}],"docs_links":{"developers_api_errors_json":"/developers/api-errors.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_capabil
GET /api/partner/webhooks List partner webhooks event_type, is_active, limit, offset, cursor, include_meta {"success":true,"count":1,"webhooks":[{"id":42,"event_type":"salutes.credit","target_url":"https://example.com/webhooks/vets","is_active":1}],"docs_links":{"developers_api_guide":"/developers/api-guide.md","developers_api_errors_json":"/developers/api-errors.json","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_webhooks":"/api/partner/webhooks","partner_webhook_template":"/api/partner/webhooks/WEBHOOK_ID","partner_webhook_test_template":"/api/partner/webhooks/WEBHOOK_ID/test","
POST /api/partner/webhooks Create partner webhook n/a {"success":true,"webhook":{"id":42,"event_type":"salutes.credit","target_url":"https://example.com/webhooks/vets","secret":"generated-secret","is_active":true,"created_at":"2026-03-08T20:00:00Z","updated_at":"2026-03-08T20:00:00Z"},"docs_links":{"developers_api_guide":"/developers/api-guide.md","developers_api_errors_json":"/developers/api-errors.json","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_webhooks":"/api/partner/webhooks","partner_webhook":"/api/partner/webhooks/42",
GET /api/partner/webhooks/dlq Dead-letter queue summary and remediation guidance hours {"success":true,"window_hours":48,"dead_letter_count":1,"max_attempts":5,"by_event_type":[{"event_type":"users.updated","count":1}],"by_reason_tag":[{"reason_tag":"timeout","count":1}],"events":[{"event_id":11,"webhook_id":2,"event_type":"users.updated","target_url":"https://partner.example/webhooks","attempts":5,"reason_tag":"timeout","last_error":"timeout while sending","created_at":"2026-03-10T00:00:00Z","updated_at":"2026-03-10T01:00:00Z"}],"docs_links":{"developers_api_errors_json":"/develo
POST /api/partner/webhooks/signature/verify Verify webhook signature payloads against a candidate secret n/a {"success":true,"valid":true,"provided_signature":"abc123","expected_signature":"abc123","timestamp":"1700000000","canonical_body":"{\"event_id\":\"123\",\"event_type\":\"users.updated\",\"data\":{\"ok\":true}}","validator_example":{"formula":"hex(HMAC_SHA256(secret, f\"{timestamp}.{payload}\"))","header_names":["X-Webhook-Timestamp","X-Webhook-Signature"]},"docs_links":{"developers_api_guide":"/developers/api-guide.md","openapi":"/api/openapi.yaml","sdk_manifest":"/developers/sdk/manifest.json"
DELETE /api/partner/webhooks/{webhook_id} Delete partner webhook webhook_id {"success":true,"deleted":true,"webhook_id":42,"docs_links":{"developers_api_guide":"/developers/api-guide.md","openapi":"/api/openapi.yaml","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_webhooks":"/api/partner/webhooks","partner_webhook":"/api/partner/webhooks/42","partner_webhook_test":"/api/partner/webhooks/42/test","partner_webhook_events":"/api/partner/webhook-events","sandbox_webhook_test_template":"/api/partner/sandbox/webhooks/WEBHOOK_ID/test"}}
POST /api/partner/webhooks/{webhook_id}/test Test webhook delivery webhook_id {"success":true,"queued":true,"event_id":999,"webhook_id":42,"docs_links":{"developers_api_guide":"/developers/api-guide.md","openapi":"/api/openapi.yaml","sdk_manifest":"/developers/sdk/manifest.json"},"links":{"partner_webhooks":"/api/partner/webhooks","partner_webhook":"/api/partner/webhooks/42","partner_webhook_test":"/api/partner/webhooks/42/test","partner_webhook_events":"/api/partner/webhook-events","partner_webhook_signature_verify":"/api/partner/webhooks/signature/verify","sandbox_webho
GET /api/public-stats Public counters and stats n/a {"success":true,"stats":{"total_supply":1000000000,"circulating_supply":700000000,"holders":43,"holders_cached":43,"holders_onchain_lower_bound":20,"holders_source":"cache","volume_24h":125000},"cache":{"source":"live","available":true,"enabled":false,"reason":"ok","cached_at_utc":"2026-06-18T22:25:00Z","age_hours":0.0,"max_age_hours":24,"source_error":"","proof_url":"/api/public/public-stats-cache-freshness.json","proof_csv_url":"/api/public/public-stats-cache-freshness.csv","proof_page_url":"/
GET /api/public/holder-cache-freshness.csv Download public holder-cache freshness proof as CSV n/a n/a
GET /api/public/holder-cache-freshness.json Get public holder-cache freshness proof snapshot n/a {"success":true,"generated_at_utc":"2026-06-18T20:55:00Z","status":"ok","stale_after_hours":48.0,"latest_at":"2026-06-18T19:55:00Z","age_hours":1.0,"details":{"token_holders":{"table":"token_holders","column":"last_updated","latest_at":"2026-06-18T19:55:00Z","age_hours":1.0},"vets_token_accounts":{"table":"vets_token_accounts","column":"updated_at","latest_at":"2026-06-18T19:50:00Z","age_hours":1.083}},"source_ok":true,"source_error":null,"trust_context":{"surface":"public_holder_cache_freshness
GET /api/public/holder-growth-freshness.csv Download public holder-growth snapshot freshness proof as CSV n/a n/a
GET /api/public/holder-growth-freshness.json Get public holder-growth snapshot freshness proof n/a {"success":true,"generated_at_utc":"2026-06-18T21:20:00Z","snapshot_date":"2026-06-18","holders_count":43,"total_supply":1000000000.0,"mint":"9d6tEX6d834TRHuirEbfUgEFJfqpgTnpWQxvUrBUqMhC","source":"cron","created_at":"2026-06-18T00:05:00Z","freshness_status":"ok","stale_after_hours":48.0,"age_hours":21.25,"trust_context":{"surface":"public_holder_growth_freshness","purpose":"public proof surface for holder-growth snapshot freshness used by partner token status and token runtime review","related_
GET /api/public/public-stats-cache-freshness.csv Public-stats cache freshness and provenance proof as CSV n/a n/a
GET /api/public/public-stats-cache-freshness.json Public-stats cache freshness and provenance proof n/a {"success":true,"generated_at_utc":"2026-06-18T22:30:00Z","freshness_status":"ok","reason":"ok","cached_at_utc":"2026-06-18T22:25:00Z","age_hours":0.08,"max_age_hours":24,"cache_file":"/home/vets-coin/logs/public_stats/latest.json","stats_available":true,"stats_fields":["circulating_supply","holders","holders_cached","holders_onchain_lower_bound","holders_source","total_supply","volume_24h"],"cached_stats":{"total_supply":1000000000,"circulating_supply":700000000,"holders":43,"holders_cached":43
GET /api/public/quickstart/verify-key Deterministic preview of partner bootstrap order before signed API use api_key, client {"success":true,"docs_links":{"developers_api_guide":"/developers/api-guide.md","developers_api_errors_json":"/developers/api-errors.json","developers_getting_started_wizard_json":"/developers/getting-started-wizard.json","developers_schema_explorer_json":"/developers/schema-explorer.json","openapi":"/api/openapi.yaml","openapi_transparency":"/api/openapi-transparency.yaml","sdk_manifest":"/developers/sdk/manifest.json","public_quickstart_verify_key":"/api/public/quickstart/verify-key"},"result"
GET /api/public/system-status Public system health and automation status snapshot n/a {"success":true,"overall":"ok","checks":{"api":{"status":"ok"},"audit_anomalies":{"status":"ok"},"alert_monitor":{"status":"ok"},"ops_jobs_reliability":{"window_days":30,"job_count":8,"avg_success_streak":99.88,"avg_mttr_minutes":1602.22,"jobs_with_mttr_samples":4,"unresolved_failure_jobs":0},"token_mint_authorities":{"status":"ok","review_status":"open","expected_review_status":"open","expectation_configured":true,"mismatch":false},"ops_jobs":{"status":"ok","jobs":[{"job_name":"status_snapshot_
GET /api/public/system-status/incidents Incident windows derived from rolling status history hours, limit {"success":true,"hours":24,"limit":10,"incidents":[{"started_at":"2026-03-05T01:08:08Z","ended_at":"2026-03-05T01:09:39Z","severity":"warn"}]}
GET /api/public/system-status/policy Effective public status interpretation policy n/a {"success":true,"policy":{"source":"/home/vets-coin/flask_api/config/public_status_policy.json","loaded":true,"version":"2026-06-16","exclude_maintenance_default":true,"audit_anomalies_warn_degrades":false,"checks":{"audit_anomalies":{"warn_degrades":false},"token_mint_authorities":{"expected_review_status":"open","expectation_configured":true,"mismatch_status":"warn","unavailable_status":"warn","reason":"Authorities remain intentionally open while multisig and final governance timing are still
GET /api/public/system-status/trend Rolling status history for uptime trend charts limit {"success":true,"limit":20,"counts":{"ok":18,"warn":2,"bad":0},"points":[{"generated_at":"2026-03-06T00:00:00Z","overall":"ok"}]}
GET /api/public/system-status/uptime Windowed uptime percentages and per-check degraded rates hours {"success":true,"selected_hours":168,"overall":{"degraded_pct":0.0},"checks":{"api":{"degraded_pct":0.0}}}
GET /api/public/token-distribution-freshness.csv Token-distribution snapshot freshness and correctness proof CSV n/a n/a
GET /api/public/token-distribution-freshness.json Token-distribution snapshot freshness and correctness proof n/a {"success":true,"generated_at_utc":"2026-06-18T22:10:00Z","generated_at":"2026-06-18T21:00:00Z","mint":"Mint11111111111111111111111111111111111111111","decimals":6,"rpc_url":"https://rpc.example.test/","tolerance_ui":0.01,"rows_count":8,"status":"ok","mismatches":0,"errors":0,"expected_ui":1000,"actual_ui":1000,"delta_ui":0,"fetch_retry_summary":{"max_attempts":2,"retry_sleep_seconds":1,"fetches":12,"attempts_used":13,"retry_events":1,"recovered_fetches":1,"exhausted_fetches":0},"freshness_statu
GET /api/public/token-mint-authorities.csv Token mint-authority proof CSV n/a n/a
GET /api/public/token-mint-authorities.json Token mint-authority proof n/a {"success":true,"generated_at_utc":"2026-06-19T21:40:00Z","mint":"9d6tEX6d834TRHuirEbfUgEFJfqpgTnpWQxvUrBUqMhC","rpc_url":"https://mainnet.helius-rpc.com/","review_status":"locked","authority_state":{"mint_authority":null,"freeze_authority":null,"mint_authority_disabled":true,"freeze_authority_disabled":true},"mint_account":{"ok":true,"error":null,"token_program":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA","is_initialized":true,"decimals_expected":6,"decimals_reported":6,"decimals_match":true,
GET /api/public/token-snapshot-jobs-rollup.csv Token snapshot-job rollup proof CSV n/a n/a
GET /api/public/token-snapshot-jobs-rollup.json Token snapshot-job rollup proof n/a {"success":true,"generated_at_utc":"2026-06-18T23:50:00Z","snapshot_jobs":{"holder_growth_snapshot":{"job_name":"holder_growth_snapshot","status":"ok","message":"ok date=2026-06-18 holders=43 supply=1000.0","executed_at":"2026-06-18T00:05:00Z"},"token_distribution_snapshot":{"job_name":"token_distribution_snapshot","status":"ok","message":"mint=Mint111 mismatches=0 errors=0","executed_at":"2026-06-18T00:06:00Z"}},"snapshot_jobs_rollup":{"status":"ok","window_days":30,"job_count":2,"missing_jobs"
GET /api/public/transaction-sync-freshness.csv Token transaction-sync runtime freshness proof CSV n/a n/a
GET /api/public/transaction-sync-freshness.json Token transaction-sync runtime freshness proof n/a {"success":true,"generated_at_utc":"2026-06-18T23:55:00Z","window_days":30,"job_name":"refresh_txs","status":"ok","message":"done (status=ok code=0 duration_s=35)","executed_at":"2026-06-18T00:15:35Z","latest_success_at":"2026-06-18T00:15:35Z","latest_success_age_hours":0.0,"freshness_status":"ok","stale_after_hours":1.0,"age_hours":0.0,"incident_state":"clean","latest_non_ok_at":null,"trust_context":{"surface":"public_transaction_sync_freshness","purpose":"public proof surface for update-transa
GET /api/salutes/balance Get salutes balance for a partner-scoped user id user_id, include_meta {"success":true,"user_id":"42","balance":1200,"partner_key_id":"acme_key"}
GET /api/salutes/conversion-policy Fetch current salutes conversion policy n/a n/a
POST /api/salutes/convert Convert salutes to VETS (policy-controlled) n/a n/a
POST /api/salutes/credit Credit salutes (partner/admin) n/a {"success":true,"user_id":"42","balance":1300,"delta":100,"ledger_entry_id":101,"idempotency_key":"idem_abc123"}
POST /api/salutes/debit Debit salutes (partner/admin) n/a {"success":true,"user_id":"42","balance":1200,"delta":-100,"ledger_entry_id":102,"idempotency_key":"idem_def456"}
GET /api/salutes/ledger Get salutes ledger entries with optional filters/pagination user_id, limit, offset, order, reason, source, include_meta {"success":true,"user_id":"42","balance":1200,"ledger":[{"id":101,"delta":100,"reason":"bonus"}],"query":{"limit":200,"offset":0,"order":"desc","reason":null,"source":null},"pagination":{"has_more":false,"next_offset":null}}
GET /api/telegram/admin/bot/bootstrap-readiness Admin Telegram bot bootstrap readiness snapshot live {"success":true,"live_check_attempted":true,"config":{"token_configured":true,"webhook_secret_configured":true,"miniapp_url_configured":true},"checks":{"bot_api_reachable":true,"webhook_info_reachable":true},"webhook_info":{"url":"https://vets-coin.com/api/telegram/webhook","pending_update_count":0},"webhook_update_types":{"expected":["message","callback_query"]},"command_sync":{"status":"aligned","missing_commands":[],"extra_commands":[]}}
GET /api/telegram/admin/bot/command-helper Admin BotFather command helper and expected URL block n/a {"success":true,"bot_identity_expected":"@VETSCoinbot","expected_urls":{"miniapp_url":"https://vets-coin.com/telegram/miniapp","webhook_url":"https://vets-coin.com/api/telegram/webhook","webhook_allowed_updates":["message","callback_query"]},"botfather_commands_block":"start - Open VETS Coin and begin\nhelp - Show bot help and next steps\nmissions - View missions and launch mini-app\nwallet - Check wallet and profile mission status\nminiapp - Open the VETS mini-app directly\n"}
GET /api/telegram/admin/bot/preview Admin Telegram bot preview with command telemetry and readiness rollups hours, live {"success":true,"telemetry":{"totals":{"callback_used":7,"command_send_failures":2},"deltas":{"callback_used":{"delta":1}}},"bootstrap_readiness":{"live_check_attempted":false,"webhook_update_types":{"expected":["message","callback_query"]}},"command_sync":{"status":"live_check_failed","error_code":"live_check_not_requested"},"command_helper":{"bot_identity_expected":"@VETSCoinbot"},"command_preview":[{"command":"/start","description":"Open VETS Coin and begin"},{"command":"/miniapp","descriptio
GET /api/telegram/admin/games/audience-groups Admin list of Telegram game audience groups n/a {"success":true,"groups":[{"group_key":"vip_testers","member_count":2}]}
POST /api/telegram/admin/games/audience-groups Admin create or update an audience-group definition n/a {"success":true,"reason":"group_saved","group":{"group_key":"vip_testers","is_active":true}}
GET /api/telegram/admin/games/catalog-campaigns Admin list of cross-game catalog campaign definitions n/a {"success":true,"campaigns":[{"campaign_key":"launch_week","game_key":"spin_wheel_v1"}]}
POST /api/telegram/admin/games/catalog-campaigns Admin create or update a catalog campaign definition n/a {"success":true,"reason":"campaign_saved","campaign":{"campaign_key":"launch_week","game_key":"spin_wheel_v1"}}
GET /api/telegram/admin/games/catalog-preview Admin preview of campaign visibility for one Telegram user telegram_user_id, linked_user_id, admin_view {"success":true,"telegram_user_id":9001,"linked_user_id":77,"campaigns":[{"campaign_key":"launch_week","visible":true}]}
GET /api/telegram/admin/games/overview Admin overview analytics across Telegram mini-app games days, preset, games {"success":true,"summary_cards":{"game_plays_today":5},"daily_trend_count":2}
GET /api/telegram/admin/games/overview/export Admin export for Telegram game overview analytics format, days, preset, games {"success":true,"date_from":"2026-04-13","date_to":"2026-04-19","row_count":2}
GET /api/telegram/admin/games/promos Admin list of Recon promo definitions include_disabled {"success":true,"promos":[{"promo_key":"welcome_drop","enabled":true}]}
POST /api/telegram/admin/games/promos Admin create or update a Recon promo definition n/a {"success":true,"reason":"promo_saved","promo":{"promo_key":"welcome_drop","enabled":true}}
GET /api/telegram/admin/games/recon-grid Admin analytics focused on Recon Grid runtime days, preset {"success":true,"game":{"game_key":"recon_grid_v1"},"level_breakdown_count":2}
POST /api/telegram/admin/games/recon-grid/manual-grant Admin manual Recon missile grant for support or promotion workflows n/a {"success":true,"reason":"manual_grant_recorded","grant_duplicate":false,"grant":{"telegram_user_id":9001,"linked_user_id":77,"missiles_awarded":9,"source_key":"admin_grant:sir-mark-test"},"recon_status":{"missile_balance":9}}
GET /api/telegram/admin/games/rollout-checklist Admin rollout readiness checklist for Telegram game operations days, preset, games {"success":true,"checklist":{"status":"ready","items":[{"key":"spin_status"},{"key":"recon_schema_ready"},{"key":"utc_lock_anomalies"}]}}
GET /api/telegram/admin/games/spin-wheel Admin analytics focused on Spin Wheel runtime days, preset {"success":true,"game":{"game_key":"spin_wheel_v1"},"reward_distribution_count":2}
GET /api/telegram/admin/games/user-activity/{telegram_user_id} Admin activity summary for one Telegram game user telegram_user_id {"success":true,"activity":{"telegram_user_id":9001,"recent_events_count":4}}
GET /api/telegram/admin/games/user-profiles Admin list of Telegram game user profiles limit {"success":true,"profiles":[{"telegram_user_id":9001,"username":"vet_user"}]}
GET /api/telegram/admin/games/wheel-campaigns Admin list of Spin Wheel campaign definitions n/a {"success":true,"campaigns":[{"campaign_key":"daily_navy_default","status":"active"}]}
POST /api/telegram/admin/games/wheel-campaigns Admin create or update a Spin Wheel campaign n/a {"success":true,"reason":"campaign_saved","campaign":{"campaign_key":"daily_navy_default","status":"active"}}
GET /api/telegram/admin/missions Admin list of mission catalog entries n/a n/a
POST /api/telegram/admin/missions Admin create mission catalog entry n/a n/a
GET /api/telegram/admin/missions/comparison Admin side-by-side daily comparison across selected missions days n/a
PATCH /api/telegram/admin/missions/{mission_key} Admin update mission catalog entry mission_key, X-Expected-Revision n/a
POST /api/telegram/admin/missions/{mission_key}/activate Admin activate mission mission_key n/a
GET /api/telegram/admin/missions/{mission_key}/analytics Admin per-day mission trend rows mission_key, days n/a
POST /api/telegram/admin/missions/{mission_key}/deactivate Admin deactivate mission mission_key n/a
GET /api/telegram/admin/missions/{mission_key}/stats Admin mission usage rollup mission_key n/a
GET /api/telegram/engagement/activity-preview Read-only recent activity preview for the Telegram mini-app home surface init_data {"success":true,"telegram_user_id":91,"cached":true,"snapshot":{"feed_key":"home_preview","generated_at_utc":"2026-04-26T14:40:00Z","expires_at_utc":"2026-04-26T14:50:00Z"},"rows":[{"event_type":"spin_reward","user_display_name":"Sir Mark","short_message":"earned +5 Salutes","created_at_utc":"2026-04-26T14:39:00Z","relative_age_label":"1m ago"}]}
GET /api/telegram/engagement/leaderboard-preview Read-only leaderboard preview for the Telegram mini-app home surface init_data {"success":true,"telegram_user_id":91,"cached":true,"snapshot":{"id":7,"snapshot_date":"2026-04-26","created_at_utc":"2026-04-26T14:30:00Z"},"rows":[{"rank":1,"display_name":"Alpha Vet","score":12400,"score_label":"12,400"}]}
GET /api/telegram/games/catalog List the launchable Telegram game catalog for a verified mini-app user init_data {"success":true,"telegram_user_id":77,"is_admin":false,"games":[{"game_key":"recon_grid","title":"Recon Grid","status":"active","display_order":1,"launchable":true},{"game_key":"spin_wheel","title":"Spin Wheel","status":"active","display_order":2,"launchable":true}],"campaigns":[{"campaign_key":"daily_spin"}]}
POST /api/telegram/games/catalog List the launchable Telegram game catalog using JSON init data n/a n/a
POST /api/telegram/games/items/purchase Purchase a generic mini-app game item such as spin plays n/a {"success":true,"reason":"purchase_recorded","telegram_user_id":5607,"game_key":"spin_wheel_v1","free_spin_balance":3,"promo_spin_tokens_balance":3,"miniapp_salutes_balance":25,"miniapp_vets_balance":80,"miniapp_vets_wallet_linked":true,"miniapp_vets_wallet_verified":true,"spin_purchase_options":[{"bundle_key":"spin_salutes_scout_pack","affordable":true}],"purchase":{"bundle_key":"spin_salutes_patrol_pack","item_type":"spin_play","payment_currency":"salutes","payment_amount":15,"bundle_amount":3
POST /api/telegram/games/promos/claim Claim a one-time promo reward for the Telegram mini-app n/a {"success":true,"reason":"promo_claimed","telegram_user_id":56015,"claim":{"promo_key":"welcome_drop","title":"Welcome Drop","reward_payload":{"missiles":10,"spin_tokens":1},"reward_summary":"10 Missiles and 1 Free Spin","amount_label":"+10 Missiles + 1 Free Spin"},"spin_status":{"free_spin_balance":1,"promo_spin_tokens_balance":1,"promo_spin_integration_status":"usable_free_spins"},"recon_status":{"missile_balance":10}}
POST /api/telegram/games/recon-grid/purchase Purchase Recon Grid missiles for the Telegram mini-app n/a {"success":true,"reason":"purchase_recorded","telegram_user_id":5601,"game_key":"recon_grid_v1","missile_balance":5,"miniapp_salutes_balance":22,"miniapp_vets_balance":76,"miniapp_vets_wallet_linked":true,"miniapp_vets_wallet_verified":true,"missile_purchase_currency":"salutes","missile_purchase_options":[{"bundle_key":"salutes_scout_pack","affordable":true}],"purchase":{"bundle_key":"salutes_patrol_pack","payment_currency":"salutes","payment_amount":18,"missiles_awarded":5,"amount_label":"+5 Mi
POST /api/telegram/games/recon-grid/reveal Reveal a Recon Grid tile for the Telegram mini-app n/a {"success":true,"reason":"round_completed","telegram_user_id":5601,"game_key":"recon_grid_v1","level":3,"missile_balance":2,"can_start_next_board":true,"result":{"reward_salutes":8,"board_completed":true},"reveal":{"tile_index":4,"hit":true,"ship_completed":true,"board_completed":true}}
POST /api/telegram/games/recon-grid/start Start or continue a Recon Grid round for the Telegram mini-app n/a {"success":true,"reason":"started","telegram_user_id":5600,"game_key":"recon_grid_v1","level":1,"missile_balance":5,"in_progress":true,"interaction_enabled":true,"tile_interaction_enabled":true}
POST /api/telegram/games/recon-grid/status Read-only Recon Grid availability and board status for the Telegram mini-app n/a {"success":true,"telegram_user_id":5599,"game_key":"recon_grid_v1","level":2,"board_size":4,"ship_sizes":[2,3],"missile_balance":5,"current_board_index":1,"available_today":true,"interaction_enabled":true,"tile_interaction_enabled":false}
POST /api/telegram/games/spin-wheel/play Play the Telegram mini-app spin wheel n/a {"success":true,"reason":"played","telegram_user_id":5577,"game_key":"spin_wheel_v1","already_played_today":true,"active_campaign_key":"daily_navy_default","result":{"id":9,"reward_salutes":8,"reward_amount":8,"reward_type":"salutes","reward_label":"8 Salutes","winning_slice_id":"spin_salutes_8_rare","play_source_type":"daily"}}
POST /api/telegram/games/spin-wheel/status Read-only spin wheel availability and campaign status for the Telegram mini-app n/a {"success":true,"telegram_user_id":5566,"game_key":"spin_wheel_v1","available_today":true,"already_played_today":false,"daily_spin_available":true,"bonus_spin_available":false,"spin_availability_mode":"daily","active_campaign_key":"daily_navy_default","active_theme_key":"daily_navy","reward_options_model":"weighted_slices_v1","reward_options":[{"slice_id":"spin_salutes_2_common","reward_type":"salutes","reward_amount":2,"weight":34}]}
POST /api/telegram/init/verify Verify Telegram mini-app init_data and return identity status n/a n/a
POST /api/telegram/missions/catalog List active Telegram mission catalog for mini-app n/a n/a
POST /api/telegram/missions/enroll Enroll Telegram user in mission with idempotency support n/a n/a
POST /api/telegram/missions/history Get mission history and streak context for Telegram user n/a n/a
POST /api/telegram/missions/list List mission status and policy for Telegram user n/a n/a
POST /api/telegram/missions/progress Submit mission progress event with replay and abuse controls n/a n/a
GET /api/telegram/ops/health Admin Telegram telemetry health snapshot hours, limit n/a
POST /api/telegram/wallet-claim/verify Verify wallet claim proof and link wallet to Telegram identity n/a n/a
POST /api/telegram/wallet-proof/challenge Issue wallet proof challenge for Telegram-linked user n/a n/a
POST /api/telegram/webhook Telegram webhook ingest endpoint with secret verification and replay suppression X-Telegram-Bot-Api-Secret-Token n/a
GET /api/transactions/latest Latest known token transactions limit {"success":true,"rows":[{"signature":"5SdxExampleTxSig111111111111111111111111111111111","block_time":"2026-03-05T20:00:00Z","vets_delta":"125.00"}]}
GET /status.json Alias of /api/public/system-status n/a {"success":true,"overall":"ok","checks":{"api":{"status":"ok"},"audit_anomalies":{"status":"ok"},"alert_monitor":{"status":"ok"},"ops_jobs_reliability":{"window_days":30,"job_count":8,"avg_success_streak":99.88,"avg_mttr_minutes":1602.22,"jobs_with_mttr_samples":4,"unresolved_failure_jobs":0},"token_mint_authorities":{"status":"ok","review_status":"open","expected_review_status":"open","expectation_configured":true,"mismatch":false},"ops_jobs":{"status":"ok","jobs":[{"job_name":"status_snapshot_
GET /transparency/audit-anomalies/alerts.csv Download current alert snapshot as CSV run, sigs_increase_threshold_pct, rows_increase_threshold_pct n/a
GET /transparency/audit-anomalies/alerts.json Evaluate selected run against configurable alert thresholds run, sigs_increase_threshold_pct, rows_increase_threshold_pct, include_recommendations {"success":true,"selected_run":"latest","selected_label":"Latest (rolling)","evaluated_at":"2026-02-16T08:00:00Z","snapshot":{"alert_level":"bad","should_alert":true,"thresholds":{"sigs_increase_threshold_pct":50.0,"rows_increase_threshold_pct":50.0},"points_available":5,"current":{"run_id":"latest","overall":"bad","signatures_with_anomalies":4,"rows_total":12,"sig_delta":3,"sig_delta_pct":300.0,"rows_delta":3,"rows_delta_pct":33.3},"baseline":{"run_id":"20260215T100000Z","overall":"warn","signa
GET /transparency/audit-anomalies/diff/compare.csv Download anomaly type deltas between any two runs as CSV run_a, run_b, include_rows, row_limit n/a
GET /transparency/audit-anomalies/diff/compare.json Compare anomaly type deltas between any two runs run_a, run_b, include_rows, row_limit {"success":true,"run_a":{"selector":"20260215T113203Z","resolved_run":"20260215T113203Z"},"run_b":{"selector":"latest","resolved_run":"latest"},"total_delta":2,"include_rows":false,"rows":[{"type":"outlier_delta","selected":4,"latest":1,"delta":3}]}
GET /transparency/audit-anomalies/diff/export.json Get selected-vs-latest anomaly type diff as JSON run, include_rows, row_limit {"success":true,"selected_run":"20260215T113203Z","latest_generated_at":"2026-02-16T00:00:00Z","selected_total":5,"latest_total":3,"total_delta":2,"include_rows":true,"row_limit":1,"selected_rows_count":1,"latest_rows_count":1,"rows":[{"type":"outlier_delta","selected":4,"latest":1,"delta":3,"pct_delta":300.0}]}
GET /transparency/audit-anomalies/glossary.json Plain-language glossary for anomaly type labels n/a {"success":true,"count":5,"glossary":[{"type":"outlier_delta","description":"Signature has an unusually large owner-level VETS delta."}]}
GET /transparency/audit-anomalies/runs.json List available anomaly runs run {"success":true,"selected_run":"latest","count":2,"runs":[{"run":"latest","label":"Latest (rolling files)","is_complete":true,"is_selected":true},{"run":"20260215T113203Z","label":"2026-02-15 11:32:03 UTC","is_complete":true,"is_selected":false}]}
GET /transparency/audit-anomalies/summary.json Get selected run anomaly summary run, include_top_anomalies, top_limit {"success":true,"selected_run":"latest","selected_label":"Latest (rolling)","summary_available":true,"compare_with_latest":null,"include_top_anomalies":true,"top_limit":5,"top_anomalies_count":2,"top_anomalies":[{"severity":"bad","signature":"abc123","anomaly_types":"outlier_delta","max_abs_delta":1200}]}
GET /transparency/audit-anomalies/threshold-history.json Threshold change history for anomaly detector settings limit {"success":true,"count":1,"rows":[{"changed_at":"2026-03-10T20:30:00Z","parameter":"abs_delta_warn_threshold","previous_value":25000,"new_value":20000,"owner":"ops","reason":"Raise sensitivity"}]}
GET /transparency/audit-anomalies/trend.json Get anomaly trend points run, metric, include_status_counts, severity, signature, types, min_abs_delta, limit {"success":true,"selected_run":"latest","selected_metric":"rows","include_status_counts":true,"status_counts":{"ok":1,"warn":1,"bad":1,"other":0},"count":3,"points":[{"run_id":"20260214T100000Z","label":"2026-02-14 10:00:00 UTC","rows_total":9,"metric":"rows","metric_value":9,"metric_delta":null,"metric_delta_pct":null}]}
GET /transparency/audit-anomalies/triage.json Triage lifecycle snapshot for anomaly signatures status {"success":true,"count":1,"rows":[{"signature":"abc123","status":"investigating","owner":"ops","eta_utc":"2026-03-11T12:00:00Z"}]}
GET /transparency/trust-dashboard.json Consolidated trust dashboard payload n/a {"success":true,"generated_at_utc":"2026-03-10T20:40:00Z","status":{"overall":"ok"},"incidents":[],"anomaly_summary":{},"monthly_digest":[],"wallet_concentration":{"success":true}}
GET /transparency/wallet-concentration.csv Wallet concentration trend export as CSV n/a n/a
GET /transparency/wallet-concentration.json Wallet concentration snapshot and trend points n/a {"success":true,"latest":{"top1_pct":12.4,"top5_pct":37.1,"top10_pct":52.8},"trend_points":[{"generated_at":"2026-03-10T20:00:00Z","top10_pct":52.8}]}

Schemas (0)

Schema Field Count Fields
No schema entries match the current query.