Legal API

8 endpoints in this group.

POST /api/legal/accept

Accept Document

Record user acceptance of a specific legal document version.

Request body: application/json

Responses

CodeDescription
200Successful Response
422Validation Error

POST /api/legal/accept/current

Accept Current Documents

Accept active legal documents by doc_type.

This is the backend contract for the first-registration click-wrap modal: the client can ask for terms + privacy without knowing raw document IDs, while the server pins the current active versions in legal_acceptances.

Request body: application/json

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/legal/acceptances/me

Get My Acceptance Status

Return current terms/privacy acceptance status for the authenticated user.

Contract : the response MUST always include the canonical three fields — required (list), missing (list[str]), and needs_acceptance (bool). Even on infra hiccups (DB error, no rows for the required doc types) we degrade gracefully to required=[] + needs_acceptance=False instead of raising 5xx with an error envelope that omits required — that envelope crashed the FE before the defensive coerce in PR

Responses

CodeDescription
200Successful Response

GET /api/legal/documents/{doc_type}/current

Get Current Document

Return the row where doc_type=... AND is_active=TRUE; 404 otherwise.

Parameters

NameInTypeRequiredDescription
doc_typepathstringrequired

Responses

CodeDescription
200Successful Response
422Validation Error

GET /api/legal/settings/public

Get Public Settings

Return every legal_settings row where is_public=TRUE.

Responses

CodeDescription
200Successful Response

GET /api/legal/sub-processors/confirm

Confirm

Parameters

NameInTypeRequiredDescription
tokenquerystringrequired
emailquerystringrequired

Responses

CodeDescription
200Successful Response
422Validation Error

POST /api/legal/sub-processors/subscribe

Subscribe

Insert (or refresh) a subscription row + send confirmation email.

Idempotent: re-subscribing within _RESEND_COOLDOWN returns the same response without sending a second email.

Request body: application/json

Responses

CodeDescription
202Successful Response
422Validation Error

GET /api/legal/sub-processors/unsubscribe

Unsubscribe

Parameters

NameInTypeRequiredDescription
tokenquerystringrequired
emailquerystringrequired

Responses

CodeDescription
200Successful Response
422Validation Error

Occasional BlitzPulse product updates and offers, sent only if you tick the box and confirm your address.

How we handle your email

Footer Disclaimer BlitzPulse is educational decision support only. Not investment, tax, or legal advice. Not a broker. Trade at your own risk.