Preset catalogue
/api/v1/reportsNeeds a key with the full scope.
Every built-in report the account's plan includes, with the filters it accepts and the columns it returns. Read this first and build your query from it rather than hardcoding keys: the catalogue is the contract, and it shrinks or grows with the plan.
A fixed set of definitions rather than records, so there is no page.
Response · 200
dataobject[]requiredShow fieldsHide fields
keystringWhat you pass as
{id}to run it.plan_featurestringThe plan flag this report needs.
filtersobject[]The filters this preset accepts, as definitions rather than values.
columnsobject[]The columns it returns, in order, with their labels and types.
Responses
401Missing or invalid Bearer token403Policy denied or account has no owner429Rate limit exceeded
curl -X GET 'https://YOUR-CELL.lydira.com/api/v1/reports' \
-H 'Authorization: Bearer sek_YOUR_API_KEY'{
"data": [
{
"key": "ar_aging",
"plan_feature": "reports_advanced",
"filters": [
{
"key": "currency",
"type": "string"
},
{
"key": "overdue_min",
"type": "integer"
},
{
"key": "overdue_max",
"type": "integer"
}
],
"columns": [
{
"key": "number",
"label_key": "reports.cols.invoice_number",
"type": "string"
},
{
"key": "bill_to_name",
"label_key": "reports.cols.customer",
"type": "string"
},
{
"key": "issued_on",
"label_key": "reports.cols.issued_on",
"type": "date"
},
{
"key": "due_on",
"label_key": "reports.cols.due_on",
"type": "date"
},
{
"key": "days_overdue",
"label_key": "reports.cols.days_overdue",
"type": "number"
},
{
"key": "bucket",
"label_key": "reports.cols.bucket",
"type": "badge"
},
{
"key": "currency",
"label_key": "reports.cols.currency",
"type": "string"
},
{
"key": "total",
"label_key": "reports.cols.total",
"type": "money"
},
{
"key": "paid",
"label_key": "reports.cols.collected",
"type": "money"
},
{
"key": "balance",
"label_key": "reports.cols.balance_due",
"type": "money"
}
]
}
]
}