Skip to content

Reports API

3 endpoints, generated from packages/core/openapi/v1.snapshot.json (OpenAPI 3.1.0, contract version 1.0). Conventions for lists, errors, money and authentication are on the API conventions page.

GET/api/v1/reports

Reports the member may run, with the module each reads

Access
Any signed-in member (own data only)

Responses

200 Success. object

  • itemsarray of objectrequired
    • idstringrequired
    • modulestringrequired
    • titlestringrequired
    • descriptionstringrequired
    • scopeenumrequired

      `team`: rows are limited to the reader's reports.

      one of "all", "team"

    • canExportbooleanrequired
  • 401 session_expired, session_revoked, unauthenticated
  • 403 mfa_enrolment_required

GET/api/v1/reports/{id}

Run a report: one page of rows, totals over every row in scope, redacted columns

403 when the member may not run the report, 404 when its module isn't installed. Rows are limited to the member's scope (all, or their team).

Access
Any signed-in member (own data only)

Parameters

NameInTypeRequired
idpathstringyes
pagequeryintegerno
sortquerystringno
dirqueryenumno
columns
Optional columns to include, comma-separated.
querystringno

Responses

200 Success. object

  • reportobjectrequired
    • idstringrequired
    • modulestringrequired
    • titlestringrequired
    • descriptionstringrequired
  • paramsobjectrequired
  • fieldsarray of objectrequired
    • keystringrequired
    • labelstringrequired
    • kindenumrequired

      one of "date", "month", "select"

    • optionsarray of object
      • valuestringrequired
      • labelstringrequired
    • hintstring
  • columnsarray of objectrequired
    • keystringrequired
    • titlestringrequired
    • typeenumrequired

      one of "text", "integer", "decimal", "money_cents", "percent", "hours", "date", "datetime", "boolean"

    • totalbooleanrequired
    • optionalbooleanrequired
  • optionalColumnsarray of objectrequired
    • keystringrequired
    • titlestringrequired
  • rowsarray of objectrequired

    One page (50 rows). Money is integer cents, percentages integer tenths of a percent (143 = 14.3%), hours integer minutes.

  • totalsobject or nullrequired
  • summaryarray of objectrequired
    • labelstringrequired
    • valuestring | number | boolean | nullrequired
    • typeenumrequired

      one of "text", "integer", "decimal", "money_cents", "percent", "hours", "date", "datetime", "boolean"

    • hintstring
  • pageintegerrequired

    min -9007199254740991

  • pageSizeintegerrequired

    min -9007199254740991

  • totalRowsintegerrequired

    min -9007199254740991

  • sortobjectrequired
    • keystringrequired
    • direnumrequired

      one of "asc", "desc"

  • redactedColumnsarray of stringrequired

    Sensitive columns left out because the reader may not see them for every row.

  • emptyMessagestring | nullrequired
  • notesarray of stringrequired
  • chartobject or nullrequired
    • labelstringrequired
    • valuestringrequired
  • canExportbooleanrequired
  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 forbidden, mfa_enrolment_required, reauth_required
  • 404 not_found
  • 422 too_many_rows

GET/api/v1/reports/{id}/export

Export the full report as CSV (UTF-8 with BOM) or XLSX, audit-logged

Access
Any signed-in member (own data only)

Parameters

NameInTypeRequired
idpathstringyes
pagequeryintegerno
sortquerystringno
dirqueryenumno
columns
Optional columns to include, comma-separated.
querystringno
formatqueryenumno

Responses

200 CSV or XLSX file text/csv

  • 400 validation_failed
  • 401 session_expired, session_revoked, unauthenticated
  • 403 forbidden, mfa_enrolment_required, reauth_required
  • 404 not_found
  • 422 too_many_rows