Reports & branding
Reports (PDF client statements)
POST /v1/reports
json
{ "investor_id":"inv_…", "type":"client_statement",
"period_start":"2026-01-01", "period_end":"2026-03-31",
"sections":["summary","performance","holdings","trades"], "locale":"en" }Returns {report_id, state:"pending"}. Omitted sections = all; disclosures are always appended (regulatory). The PDF is generated asynchronously, sealed under the tenant's key before storage (the store holds ciphertext only), and retained ≥ 7 years.
GET /v1/reports/{id} · /download
state: pending → generating → ready | failed. GET …/download streams the PDF (409 REPORT_NOT_READY until ready; 410 REPORT_PURGED after retention). Every download is written to the hash-chained audit log.
Branding (statement theme)
GET/PUT /v1/branding sets the tenant's statement theme: display_name, primary_color/accent_color (strict #rrggbb), font (from the embedded set), footer_text, and a logo (PUT /v1/branding/logo, raw image ≤ 512 KiB).