| GET /api/partner/analytics/usage |
Per-key usage analytics and webhook delivery health |
hours |
n/a |
| GET /api/partner/capabilities |
Partner API capability discovery |
include_meta, If-Modified-Since |
{"success":true,"partner":"Acme Partner","key_id":"acme_key","docs":{"api_guide":"/developers/api-guide.md","openapi":"/api/openapi.yaml"},"query_support":{"include_meta":true},"meta":{"request_id":"abc123","generated_at_utc":"2026-03-08T20:00:00Z"}} |
| POST /api/partner/donation-claim |
Issue a donation claim (if enabled) |
n/a |
n/a |
| GET /api/partner/status |
Partner integration status page payload |
n/a |
n/a |
| 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"}],"query":{"limit":10,"offset":0,"cursor":null,"q":null,"status":"active"},"pagination":{"has_more":false,"next_offset":null,"next_cursor":null},"meta":{"request_id":"abc123","generated_at_utc":"2026-03-08T20:00:00Z"}} |
| 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"}],"query":{"limit":25,"offset":0,"cursor":null,"status":null,"q":null,"include_wallets":false},"pagination":{"has_more":false,"next_offset":null,"next_cursor":null}} |
| POST /api/partner/users |
Create a user |
n/a |
{"success":true,"external_id":"partner-2048","user":{"id":2048,"username":"new_user","status":"active"}} |
| GET /api/partner/users/{user_id} |
Get a user |
user_id |
{"success":true,"user":{"id":2048,"username":"new_user","status":"active"}} |
| PATCH /api/partner/users/{user_id} |
Update a user (partial) |
user_id |
{"success":true,"user_id":2048,"updated":true} |
| POST /api/partner/users/{user_id}/wallets |
Link a wallet to a user |
user_id |
{"success":true,"user_id":2048,"wallet":{"address":"7e2vExampleWallet11111111111111111111111111111111","linked":true}} |
| GET /api/partner/webhook-events |
List partner webhook events with replay-oriented filters |
status, reason_tag, from, to |
n/a |
| POST /api/partner/webhook-events/replay |
Batch replay webhook events |
n/a |
n/a |
| 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","is_active":1}],"pagination":{"has_more":false,"next_offset":null,"next_cursor":null},"query":{"limit":50,"offset":0,"cursor":null,"event_type":null,"is_active":null}} |
| 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","is_active":true,"created_at":"2026-03-08T20:00:00Z","updated_at":"2026-03-08T20:00:00Z"}} |
| GET /api/partner/webhooks/dlq |
Dead-letter queue summary and remediation guidance |
hours |
n/a |
| POST /api/partner/webhooks/signature/verify |
Verify webhook signature payloads against a candidate secret |
n/a |
n/a |
| DELETE /api/partner/webhooks/{webhook_id} |
Delete partner webhook |
webhook_id |
n/a |
| POST /api/partner/webhooks/{webhook_id}/test |
Test webhook delivery |
webhook_id |
n/a |
| GET /api/public-stats |
Public counters and stats |
n/a |
{"success":true,"stats":{"users":1250,"wallets":980,"faucet_claims_24h":41}} |
| GET /api/public/system-status |
Public system health and automation status snapshot |
n/a |
{"success":true,"status":{"overall":"ok","checks":{"api":"ok","audit_anomalies":"ok","alert_monitor":"ok","ops_jobs":"ok"}}} |
| 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/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/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/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,"status":{"overall":"ok"}} |
| 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}]} |