Skip to content

Endpoints

This page is generated from the application's OpenAPI schema on every CI run, so it always matches the deployed code. Web pages (/, /upload, /r/..., /auth/..., /admin/...) are session-driven and not part of the JSON API; the JSON API lives under /api/v1/ and returns the uniform error envelope on failure.

GET /

Landing.

Responses: 200

GET /admin

Admin Home.

Responses: 200

POST /admin/audits/{audit_id}/purge

Purge Audit.

Manual purge (FR-19/FR-21): removes the raw upload, keeps derived data.

Parameter In Required Type
audit_id path yes string

Responses: 200, 422

GET /admin/audits/{audit_id}/report

Download Report.

FR-19 download report: the rendered PDF, without minting a signed URL.

Parameter In Required Type
audit_id path yes string

Responses: 200, 422

POST /admin/audits/{audit_id}/rerun

Rerun Audit.

Parameter In Required Type
audit_id path yes string

Responses: 200, 422

POST /admin/payments/mark-paid

Mark Paid.

FR-18 manual fulfillment; comp grants use provider='comp', amount 0 (Q8).

Responses: 200, 422

POST /api/v1/audits

Create Audit.

Parameter In Required Type
Idempotency-Key header no string
x-user-email header no string

Responses: 201, 422

GET /api/v1/audits/{audit_id}/status

Audit Status.

Parameter In Required Type
audit_id path yes string
x-user-email header no string

Responses: 200, 422

POST /api/v1/webhooks/razorpay

Razorpay Webhook.

Responses: 200

POST /api/v1/webhooks/stripe

Stripe Webhook.

Responses: 200

POST /auth/logout

Logout.

Responses: 200

POST /auth/magic-link

Request Magic Link.

Responses: 200, 422

GET /auth/verify

Verify.

Parameter In Required Type
token query yes string

Responses: 200, 422

GET /healthz

Healthz.

Responses: 200

GET /legal/dpa

Dpa.

Responses: 200

GET /legal/privacy

Privacy.

Responses: 200

GET /legal/terms

Terms.

Responses: 200

GET /r/{token}

Web Report.

Parameter In Required Type
token path yes string

Responses: 200, 422

GET /r/{token}/pdf

Report Pdf.

Parameter In Required Type
token path yes string

Responses: 200, 422

GET /upload

Upload Page.

Responses: 200