Download OpenAPI specification:Download
This will get a dashboards for a user by group id
| groupId required | string Id of group to get dashboard for |
[- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "groupId": 0,
- "userId": 0,
- "updatedAt": "string",
- "widgets": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "dashboardId": 0,
- "updatedAt": "string",
- "widgetType": "GROUP_SUMMARY",
- "configuration": {
- "property1": null,
- "property2": null
}
}
]
}
]This will update a dashboard
| dashboardId required | integer Id of dashboard to operate on |
Dashboard to update
| name required | string Dashboard name |
| groupId required | string Group foreign key |
Array of objects (UpsertWidgetCommand) Widgets associated to dashboard |
{- "name": "string",
- "groupId": "string",
- "widgets": [
- {
- "name": "string",
- "widgetType": "GROUP_SUMMARY",
- "configuration": {
- "property1": null,
- "property2": null
}
}
]
}{- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "groupId": 0,
- "userId": 0,
- "updatedAt": "string",
- "widgets": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "dashboardId": 0,
- "updatedAt": "string",
- "widgetType": "GROUP_SUMMARY",
- "configuration": {
- "property1": null,
- "property2": null
}
}
]
}This will delete a dashboard by id
| dashboardId required | integer Id of dashboard to operate on |
{- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "groupId": 0,
- "userId": 0,
- "updatedAt": "string",
- "widgets": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "dashboardId": 0,
- "updatedAt": "string",
- "widgetType": "GROUP_SUMMARY",
- "configuration": {
- "property1": null,
- "property2": null
}
}
]
}This will create a dashboard [SYSTEM USER]
Dashboard
| name required | string Dashboard name |
| groupId required | string Group foreign key |
Array of objects (UpsertWidgetCommand) Widgets associated to dashboard |
{- "name": "string",
- "groupId": "string",
- "widgets": [
- {
- "name": "string",
- "widgetType": "GROUP_SUMMARY",
- "configuration": {
- "property1": null,
- "property2": null
}
}
]
}{- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "groupId": 0,
- "userId": 0,
- "updatedAt": "string",
- "widgets": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "dashboardId": 0,
- "updatedAt": "string",
- "widgetType": "GROUP_SUMMARY",
- "configuration": {
- "property1": null,
- "property2": null
}
}
]
}This will get pie chart data for a group based on the specified grouping
| groupId required | integer Id of group to get pie chart data for |
Pie chart data request
| chartGrouping required | string (ChartGrouping) Enum: "CATEGORIES" "TAGS" "PAIDBY" What to group the pie chart by |
object (ReceiptPagedRequestFilter) Optional filter for receipts |
{- "chartGrouping": "CATEGORIES",
- "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}
}{- "data": [
- {
- "label": "string",
- "value": 0.1
}
]
}Generates a report over the receipts of one or more groups and streams it back as a file, or a zip when several formats are requested. Runs under the caller's group permissions and requires group.reports.read in every covered group.
The report builder configuration
| name | string Report name; used for the download filename |
| groupIds required | Array of strings Ids of the groups the report covers |
required | object (ReportPeriod) |
object (ReceiptPagedRequestFilter) Which receipts go into the report | |
| groupBy | Array of strings Ordered engine field keys to nest the report by |
required | object (ReportDetail) |
required | Array of objects (ReportColumn) |
| subtotals | boolean Emit a subtotal row at each grouping level |
| grandTotals | boolean Emit one grand-total row across everything |
object (ReportDocument) | |
| formats required | Array of strings Items Enum: "csv" "xlsx" "pdf" One or more output formats; multiple are zipped together |
{- "name": "string",
- "groupIds": [
- "string"
], - "period": {
- "preset": "this_month",
- "startDate": "string",
- "endDate": "string"
}, - "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}, - "groupBy": [
- "string"
], - "detail": {
- "mode": "records",
- "by": "string"
}, - "columns": [
- {
- "kind": "dimension",
- "name": "string",
- "label": "string",
- "field": "string",
- "aggFunc": "SUM",
- "measure": "string",
- "expr": "string"
}
], - "subtotals": true,
- "grandTotals": true,
- "document": {
- "title": "string",
- "intro": "string",
- "footer": "string"
}, - "formats": [
- "csv"
]
}{- "errorMsg": "string"
}Renders the current report configuration as HTML for the builder's live preview, along with the number of receipts it covers. Requires the app-level app.reports.read (or app.reports.readAll) and group.reports.read in every covered group. The preview is a row-capped sample of the engine's own output.
The report builder configuration
| name | string Report name; used for the download filename |
| groupIds required | Array of strings Ids of the groups the report covers |
required | object (ReportPeriod) |
object (ReceiptPagedRequestFilter) Which receipts go into the report | |
| groupBy | Array of strings Ordered engine field keys to nest the report by |
required | object (ReportDetail) |
required | Array of objects (ReportColumn) |
| subtotals | boolean Emit a subtotal row at each grouping level |
| grandTotals | boolean Emit one grand-total row across everything |
object (ReportDocument) | |
| formats required | Array of strings Items Enum: "csv" "xlsx" "pdf" One or more output formats; multiple are zipped together |
{- "name": "string",
- "groupIds": [
- "string"
], - "period": {
- "preset": "this_month",
- "startDate": "string",
- "endDate": "string"
}, - "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}, - "groupBy": [
- "string"
], - "detail": {
- "mode": "records",
- "by": "string"
}, - "columns": [
- {
- "kind": "dimension",
- "name": "string",
- "label": "string",
- "field": "string",
- "aggFunc": "SUM",
- "measure": "string",
- "expr": "string"
}
], - "subtotals": true,
- "grandTotals": true,
- "document": {
- "title": "string",
- "intro": "string",
- "footer": "string"
}, - "formats": [
- "csv"
]
}{- "html": "string",
- "receiptCount": 0,
- "allowedActions": [
- "string"
]
}Saves the current report configuration as a reusable template. App-scoped (requires app.reports.create) — it persists a configuration and touches no group's receipts.
The report builder configuration to save
| name | string Report name; used for the download filename |
| groupIds required | Array of strings Ids of the groups the report covers |
required | object (ReportPeriod) |
object (ReceiptPagedRequestFilter) Which receipts go into the report | |
| groupBy | Array of strings Ordered engine field keys to nest the report by |
required | object (ReportDetail) |
required | Array of objects (ReportColumn) |
| subtotals | boolean Emit a subtotal row at each grouping level |
| grandTotals | boolean Emit one grand-total row across everything |
object (ReportDocument) | |
| formats required | Array of strings Items Enum: "csv" "xlsx" "pdf" One or more output formats; multiple are zipped together |
{- "name": "string",
- "groupIds": [
- "string"
], - "period": {
- "preset": "this_month",
- "startDate": "string",
- "endDate": "string"
}, - "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}, - "groupBy": [
- "string"
], - "detail": {
- "mode": "records",
- "by": "string"
}, - "columns": [
- {
- "kind": "dimension",
- "name": "string",
- "label": "string",
- "field": "string",
- "aggFunc": "SUM",
- "measure": "string",
- "expr": "string"
}
], - "subtotals": true,
- "grandTotals": true,
- "document": {
- "title": "string",
- "intro": "string",
- "footer": "string"
}, - "formats": [
- "csv"
]
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "configuration": {
- "name": "string",
- "groupIds": [
- "string"
], - "period": {
- "preset": "this_month",
- "startDate": "string",
- "endDate": "string"
}, - "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}, - "groupBy": [
- "string"
], - "detail": {
- "mode": "records",
- "by": "string"
}, - "columns": [
- {
- "kind": "dimension",
- "name": "string",
- "label": "string",
- "field": "string",
- "aggFunc": "SUM",
- "measure": "string",
- "expr": "string"
}
], - "subtotals": true,
- "grandTotals": true,
- "document": {
- "title": "string",
- "intro": "string",
- "footer": "string"
}, - "formats": [
- "csv"
]
}, - "configurationVersion": 0,
- "allowedActions": [
- "string"
]
}Returns a paged, sorted list of saved report templates. App-scoped (requires app.reports.read).
Paging and sorting data
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc"
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}Returns every report template as a lightweight {id, name, groupIds} option for the role-form access matrix. Gated on app.roles.read (the admin role editor may not personally hold report permissions), not a report permission.
[- {
- "id": 0,
- "name": "string",
- "groupIds": [
- 0
]
}
]Returns a saved report template by id. Access is resolved per template (readAll, or the per-group ceiling plus the per-template matrix).
| id required | integer Id of the report template to get |
{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "configuration": {
- "name": "string",
- "groupIds": [
- "string"
], - "period": {
- "preset": "this_month",
- "startDate": "string",
- "endDate": "string"
}, - "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}, - "groupBy": [
- "string"
], - "detail": {
- "mode": "records",
- "by": "string"
}, - "columns": [
- {
- "kind": "dimension",
- "name": "string",
- "label": "string",
- "field": "string",
- "aggFunc": "SUM",
- "measure": "string",
- "expr": "string"
}
], - "subtotals": true,
- "grandTotals": true,
- "document": {
- "title": "string",
- "intro": "string",
- "footer": "string"
}, - "formats": [
- "csv"
]
}, - "configurationVersion": 0,
- "allowedActions": [
- "string"
]
}Updates a saved report template in place, replacing its name and stored configuration. App-scoped (requires app.reports.update).
| id required | integer Id of the report template to update |
The report builder configuration to save over the existing template
| name | string Report name; used for the download filename |
| groupIds required | Array of strings Ids of the groups the report covers |
required | object (ReportPeriod) |
object (ReceiptPagedRequestFilter) Which receipts go into the report | |
| groupBy | Array of strings Ordered engine field keys to nest the report by |
required | object (ReportDetail) |
required | Array of objects (ReportColumn) |
| subtotals | boolean Emit a subtotal row at each grouping level |
| grandTotals | boolean Emit one grand-total row across everything |
object (ReportDocument) | |
| formats required | Array of strings Items Enum: "csv" "xlsx" "pdf" One or more output formats; multiple are zipped together |
{- "name": "string",
- "groupIds": [
- "string"
], - "period": {
- "preset": "this_month",
- "startDate": "string",
- "endDate": "string"
}, - "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}, - "groupBy": [
- "string"
], - "detail": {
- "mode": "records",
- "by": "string"
}, - "columns": [
- {
- "kind": "dimension",
- "name": "string",
- "label": "string",
- "field": "string",
- "aggFunc": "SUM",
- "measure": "string",
- "expr": "string"
}
], - "subtotals": true,
- "grandTotals": true,
- "document": {
- "title": "string",
- "intro": "string",
- "footer": "string"
}, - "formats": [
- "csv"
]
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "configuration": {
- "name": "string",
- "groupIds": [
- "string"
], - "period": {
- "preset": "this_month",
- "startDate": "string",
- "endDate": "string"
}, - "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}, - "groupBy": [
- "string"
], - "detail": {
- "mode": "records",
- "by": "string"
}, - "columns": [
- {
- "kind": "dimension",
- "name": "string",
- "label": "string",
- "field": "string",
- "aggFunc": "SUM",
- "measure": "string",
- "expr": "string"
}
], - "subtotals": true,
- "grandTotals": true,
- "document": {
- "title": "string",
- "intro": "string",
- "footer": "string"
}, - "formats": [
- "csv"
]
}, - "configurationVersion": 0,
- "allowedActions": [
- "string"
]
}Duplicates a saved report template by id, returning the new copy. App-scoped (requires app.reports.duplicate).
| id required | integer Id of the report template to duplicate |
{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "configuration": {
- "name": "string",
- "groupIds": [
- "string"
], - "period": {
- "preset": "this_month",
- "startDate": "string",
- "endDate": "string"
}, - "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}, - "groupBy": [
- "string"
], - "detail": {
- "mode": "records",
- "by": "string"
}, - "columns": [
- {
- "kind": "dimension",
- "name": "string",
- "label": "string",
- "field": "string",
- "aggFunc": "SUM",
- "measure": "string",
- "expr": "string"
}
], - "subtotals": true,
- "grandTotals": true,
- "document": {
- "title": "string",
- "intro": "string",
- "footer": "string"
}, - "formats": [
- "csv"
]
}, - "configurationVersion": 0,
- "allowedActions": [
- "string"
]
}Generates a saved report template by id and streams the file. Enforces the per-template generate grant (generateAll, or the per-group ceiling plus the matrix), loading the stored configuration server-side.
| id required | integer Id of the report template to generate |
{- "errorMsg": "string"
}Renders a saved report template by id as a self-contained HTML document over the full dataset (unlike /report/preview, which caps the sample) for the dashboard report widget, loading the stored configuration server-side. Re-resolves the caller's access on every call; when the caller may not view the template (or it was deleted) a restricted-notice HTML document is returned at 200 with empty allowedActions, so the widget always has HTML to render. allowedActions carries the actions the caller may perform (drives the widget's download button).
| id required | integer Id of the report template to render |
{- "html": "string",
- "receiptCount": 0,
- "allowedActions": [
- "string"
]
}This will return paged categories
Paging and sorting data
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc"
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}This will create a category
Category to create
| createdAt | string |
| createdBy | integer <uint64> |
| id | integer <uint64> |
| name | string Name of the category |
| description | string Description of the category |
| updatedAt | string |
{- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}{- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}This will update a category
| categoryId required | integer Category Id to get |
Category to update
| createdAt | string |
| createdBy | integer <uint64> |
| id | integer <uint64> |
| name | string Name of the category |
| description | string Description of the category |
| updatedAt | string |
{- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}{- "errorMsg": "string"
}This will add a comment to a receipt, [SYSTEM USER]
Comment to create
| comment required | string Comment itself |
| receiptId required | integer Receipt foreign key |
| userId | integer User foreign key |
{- "comment": "string",
- "receiptId": 0,
- "userId": 0
}{- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}This will create a custom field
Custom field to create
| name required | string Custom Field name |
| type required | string (CustomFieldType) Enum: "TEXT" "DATE" "SELECT" "CURRENCY" "BOOLEAN" |
| description | string Custom Field description |
Array of objects (UpsertCustomFieldOptionCommand) |
{- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "value": "string",
- "customFieldId": 0
}
]
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}This will get a custom field by id
| customFieldId required | integer Custom field Id to get |
{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}This will return paged custom fields
Paging and sorting data
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc"
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}This will export all receipts that belong to a group based on a filter [SYSTEM USER]
| groupId required | integer Get all receipts that belong to groupId |
| format required | string (ExportFormat) Value: "CSV" |
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
object (ReceiptPagedRequestFilter) | |
| fullReceipts | boolean Whether to include all receipt associations (receiptItems, comments, customFields, imageFiles, etc.) |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc",
- "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}, - "fullReceipts": true
}{- "errorMsg": "string"
}This will get groups for the currently logged in user
[- {
- "createdAt": "string",
- "createdBy": 0,
- "groupSettings": {
- "id": 0,
- "groupId": 0,
- "emailIntegrationEnabled": true,
- "emailBodyProcessingEnabled": true,
- "systemEmailId": 0,
- "systemEmail": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "useStartTLS": true
}, - "emailToRead": "string",
- "subjectLineRegexes": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "regex": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailWhiteList": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "email": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailDefaultReceiptStatus": "OPEN",
- "emailDefaultReceiptPaidById": 0,
- "prompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "promptId": 0,
- "fallbackPrompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "fallbackPromptId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}, - "groupReceiptSettings": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "groupId": 0,
- "hideImages": true,
- "hideReceiptCategories": true,
- "hideReceiptTags": true,
- "hideItemCategories": true,
- "hideItemTags": true,
- "hideComments": true,
- "hideShareCategories": true,
- "hideShareTags": true,
- "quickScanPaidByEnabled": true,
- "quickScanPaidByRequired": true,
- "quickScanDefaultPaidByType": "UPLOADER",
- "quickScanDefaultPaidById": 0,
- "quickScanStatusEnabled": true,
- "quickScanStatusRequired": true,
- "quickScanDefaultStatus": "OPEN",
- "quickScanCategoriesEnabled": true,
- "quickScanCategoriesRequired": true,
- "quickScanTagsEnabled": true,
- "quickScanTagsRequired": true
}, - "groupMembers": [
- {
- "createdAt": "string",
- "groupId": 0,
- "groupRoleId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "id": 0,
- "isDefault": true,
- "name": "string",
- "isAllGroup": true,
- "status": "ACTIVE",
- "updatedAt": "string"
}
]This will create a group
Group to create
required | Array of objects (UpsertGroupMemberCommand) Members of the group |
| isDefault | boolean Is default group (not used yet) |
| name required | string Name of the group |
| isAllGroup | boolean Is all group for user |
| status required | string (GroupStatus) Enum: "ACTIVE" "ARCHIVED" |
{- "groupMembers": [
- {
- "groupId": 0,
- "groupRoleId": 0,
- "userId": 0
}
], - "isDefault": true,
- "name": "string",
- "isAllGroup": true,
- "status": "ACTIVE"
}{- "errorMsg": "string"
}This will update a group
| groupId required | integer Group Id to get |
Group to update
| createdAt | string |
| createdBy | integer <uint64> |
object (GroupSettings) | |
required | object (GroupReceiptSettings) |
required | Array of objects (GroupMember) Members of the group |
| id required | integer <uint64> |
| isDefault | boolean Is default group (not used yet) |
| name required | string Name of the group |
| isAllGroup required | boolean Is all group for user |
| status required | string (GroupStatus) Enum: "ACTIVE" "ARCHIVED" |
| updatedAt | string |
{- "createdAt": "string",
- "createdBy": 0,
- "groupSettings": {
- "id": 0,
- "groupId": 0,
- "emailIntegrationEnabled": true,
- "emailBodyProcessingEnabled": true,
- "systemEmailId": 0,
- "systemEmail": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "useStartTLS": true
}, - "emailToRead": "string",
- "subjectLineRegexes": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "regex": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailWhiteList": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "email": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailDefaultReceiptStatus": "OPEN",
- "emailDefaultReceiptPaidById": 0,
- "prompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "promptId": 0,
- "fallbackPrompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "fallbackPromptId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}, - "groupReceiptSettings": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "groupId": 0,
- "hideImages": true,
- "hideReceiptCategories": true,
- "hideReceiptTags": true,
- "hideItemCategories": true,
- "hideItemTags": true,
- "hideComments": true,
- "hideShareCategories": true,
- "hideShareTags": true,
- "quickScanPaidByEnabled": true,
- "quickScanPaidByRequired": true,
- "quickScanDefaultPaidByType": "UPLOADER",
- "quickScanDefaultPaidById": 0,
- "quickScanStatusEnabled": true,
- "quickScanStatusRequired": true,
- "quickScanDefaultStatus": "OPEN",
- "quickScanCategoriesEnabled": true,
- "quickScanCategoriesRequired": true,
- "quickScanTagsEnabled": true,
- "quickScanTagsRequired": true
}, - "groupMembers": [
- {
- "createdAt": "string",
- "groupId": 0,
- "groupRoleId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "id": 0,
- "isDefault": true,
- "name": "string",
- "isAllGroup": true,
- "status": "ACTIVE",
- "updatedAt": "string"
}{- "errorMsg": "string"
}This will update the group settings for a group
| groupId required | integer Group Id to update |
Group settings to update
| systemEmailId required | integer System email foreign key |
| emailIntegrationEnabled | boolean Whether email integration is enabled |
| emailBodyProcessingEnabled | boolean Whether email body text processing is enabled (opt-in, default false) |
required | Array of objects (SubjectLineRegex) Subject line regexes |
required | Array of objects (GroupSettingsWhiteListEmail) Email white list |
| emailDefaultReceiptStatus | string (ReceiptStatus) Enum: "OPEN" "NEEDS_ATTENTION" "RESOLVED" "DRAFT" "" Default receipt status |
| emailDefaultReceiptPaidById | integer User foreign key |
| promptId | integer Prompt foreign key |
| fallbackPromptId | integer Fallback prompt foreign key |
{- "systemEmailId": 0,
- "emailIntegrationEnabled": true,
- "emailBodyProcessingEnabled": true,
- "subjectLineRegexes": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "regex": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailWhiteList": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "email": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailDefaultReceiptStatus": "OPEN",
- "emailDefaultReceiptPaidById": 0,
- "promptId": 0,
- "fallbackPromptId": 0
}{- "id": 0,
- "groupId": 0,
- "emailIntegrationEnabled": true,
- "emailBodyProcessingEnabled": true,
- "systemEmailId": 0,
- "systemEmail": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "useStartTLS": true
}, - "emailToRead": "string",
- "subjectLineRegexes": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "regex": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailWhiteList": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "email": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailDefaultReceiptStatus": "OPEN",
- "emailDefaultReceiptPaidById": 0,
- "prompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "promptId": 0,
- "fallbackPrompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "fallbackPromptId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}This will update the group receipt settings for a group
| groupId required | integer Group Id to update |
Group settings to update
| hideImages | boolean Hide receipt images |
| hideReceiptCategories | boolean Hide receipt categories |
| hideReceiptTags | boolean Hide receipt tags |
| hideItemCategories | boolean Hide receipt item categories |
| hideItemTags | boolean Hide receipt item tags |
| hideComments | boolean Hide receipt comments |
| hideShareCategories | boolean Hide share categories |
| hideShareTags | boolean Hide share tags |
| quickScanPaidByEnabled | boolean Show the paid by field in quick scan |
| quickScanPaidByRequired | boolean Require the paid by field in quick scan |
| quickScanDefaultPaidByType | string (QuickScanDefaultPaidByType) Enum: "UPLOADER" "USER" "" How the default paid-by is resolved for optional quick-scan paid-by |
| quickScanDefaultPaidById | integer or null Default paid by user id when paid by is optional and type is USER |
| quickScanStatusEnabled | boolean Show the status field in quick scan |
| quickScanStatusRequired | boolean Require the status field in quick scan |
| quickScanDefaultStatus | string (ReceiptStatus) Enum: "OPEN" "NEEDS_ATTENTION" "RESOLVED" "DRAFT" "" Status of a receipt |
| quickScanCategoriesEnabled | boolean Show the categories field in quick scan |
| quickScanCategoriesRequired | boolean Require the categories field in quick scan |
| quickScanTagsEnabled | boolean Show the tags field in quick scan |
| quickScanTagsRequired | boolean Require the tags field in quick scan |
{- "hideImages": true,
- "hideReceiptCategories": true,
- "hideReceiptTags": true,
- "hideItemCategories": true,
- "hideItemTags": true,
- "hideComments": true,
- "hideShareCategories": true,
- "hideShareTags": true,
- "quickScanPaidByEnabled": true,
- "quickScanPaidByRequired": true,
- "quickScanDefaultPaidByType": "UPLOADER",
- "quickScanDefaultPaidById": 0,
- "quickScanStatusEnabled": true,
- "quickScanStatusRequired": true,
- "quickScanDefaultStatus": "OPEN",
- "quickScanCategoriesEnabled": true,
- "quickScanCategoriesRequired": true,
- "quickScanTagsEnabled": true,
- "quickScanTagsRequired": true
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "groupId": 0,
- "hideImages": true,
- "hideReceiptCategories": true,
- "hideReceiptTags": true,
- "hideItemCategories": true,
- "hideItemTags": true,
- "hideComments": true,
- "hideShareCategories": true,
- "hideShareTags": true,
- "quickScanPaidByEnabled": true,
- "quickScanPaidByRequired": true,
- "quickScanDefaultPaidByType": "UPLOADER",
- "quickScanDefaultPaidById": 0,
- "quickScanStatusEnabled": true,
- "quickScanStatusRequired": true,
- "quickScanDefaultStatus": "OPEN",
- "quickScanCategoriesEnabled": true,
- "quickScanCategoriesRequired": true,
- "quickScanTagsEnabled": true,
- "quickScanTagsRequired": true
}This will return paged groups
Paging and sorting data
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
object (GroupFilter) |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc",
- "filter": {
- "associatedGroup": "MINE"
}
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}This will log a user into the system
| tokensInBody | boolean Default: false When true, tokens are returned in the response body only without setting cookies |
Login data
| username required | string User's username |
| password required | string User's password |
{- "username": "string",
- "password": "string"
}{- "about": {
- "buildDate": "string",
- "version": "string"
}, - "claims": {
- "userId": 0,
- "displayName": "",
- "defaultAvatarColor": "",
- "username": "",
- "iss": "",
- "sub": "",
- "aud": [ ],
- "exp": 0,
- "nbf": 0,
- "iat": 0,
- "jti": ""
}, - "groups": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "groupSettings": {
- "id": 0,
- "groupId": 0,
- "emailIntegrationEnabled": true,
- "emailBodyProcessingEnabled": true,
- "systemEmailId": 0,
- "systemEmail": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "useStartTLS": true
}, - "emailToRead": "string",
- "subjectLineRegexes": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "regex": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailWhiteList": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "email": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailDefaultReceiptStatus": "OPEN",
- "emailDefaultReceiptPaidById": 0,
- "prompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "promptId": 0,
- "fallbackPrompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "fallbackPromptId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}, - "groupReceiptSettings": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "groupId": 0,
- "hideImages": true,
- "hideReceiptCategories": true,
- "hideReceiptTags": true,
- "hideItemCategories": true,
- "hideItemTags": true,
- "hideComments": true,
- "hideShareCategories": true,
- "hideShareTags": true,
- "quickScanPaidByEnabled": true,
- "quickScanPaidByRequired": true,
- "quickScanDefaultPaidByType": "UPLOADER",
- "quickScanDefaultPaidById": 0,
- "quickScanStatusEnabled": true,
- "quickScanStatusRequired": true,
- "quickScanDefaultStatus": "OPEN",
- "quickScanCategoriesEnabled": true,
- "quickScanCategoriesRequired": true,
- "quickScanTagsEnabled": true,
- "quickScanTagsRequired": true
}, - "groupMembers": [
- {
- "createdAt": "string",
- "groupId": 0,
- "groupRoleId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "id": 0,
- "isDefault": true,
- "name": "string",
- "isAllGroup": true,
- "status": "ACTIVE",
- "updatedAt": "string"
}
], - "users": [
- {
- "username": "string",
- "createdAt": "string",
- "createdBy": 0,
- "defaultAvatarColor": "string",
- "displayName": "string",
- "id": 0,
- "isDummyUser": true,
- "updatedAt": "string",
- "appRoleId": 0
}
], - "userPreferences": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "userId": 0,
- "quickScanDefaultGroupId": 0,
- "quickScanDefaultPaidById": 0,
- "quickScanDefaultStatus": "OPEN",
- "showLargeImagePreviews": null,
- "userShortcuts": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "userPreferncesId": 0,
- "name": "string",
- "url": "string",
- "icon": "string"
}
]
}, - "featureConfig": {
- "aiPoweredReceipts": true,
- "enableLocalSignUp": true
}, - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "jwt": "string",
- "refreshToken": "string",
- "currencyDisplay": "string",
- "currencyThousandthsSeparator": ",",
- "currencyDecimalSeparator": ",",
- "currencySymbolPosition": "START",
- "currencyHideDecimalPlaces": true,
- "icons": [
- {
- "value": "string",
- "displayValue": "string"
}
], - "appPermissions": [
- "app.users.create"
], - "groupPermissions": {
- "property1": [
- "app.users.create"
], - "property2": [
- "app.users.create"
]
}, - "groupCategories": {
- "property1": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "property2": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
]
}, - "groupTags": {
- "property1": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "property2": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
]
}
}This will log a user out of the system and revoke their token [SYSTEM USER]
Refresh token
| refreshToken required | string Refresh token |
{- "refreshToken": "string"
}{- "errorMsg": "string"
}This will sign a user up for the system
Sign up data
| username required | string User's username |
| password required | string User's password |
| displayName | string User's displayname |
| isDummyUser | boolean Whether the user is a dummy user |
| appRoleId | integer or null <uint64> Id of the modern app role to assign. Honored by admin user creation; ignored on public sign-up, where any caller-supplied value is stripped server-side. |
{- "username": "string",
- "password": "string",
- "displayName": "string",
- "isDummyUser": true,
- "appRoleId": 0
}{- "errorMsg": "string"
}This will get a fresh token pair for the user
Refresh token body for clients that don't use cookies
| refreshToken required | string Refresh token |
{- "refreshToken": "string"
}{- "jwt": "string",
- "refreshToken": "string"
}This will get all the notifications for the currently logged in user
[- {
- "body": "string",
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "title": "string",
- "type": "string",
- "updatedAt": "string",
- "userId": 0
}
]This will create a receipt [SYSTEM USER]
Receipt to create
| name required | string Receipt name |
| amount required | string Receipt total amount |
| date required | string Receipt date |
| groupId required | integer Group foreign key |
| paidByUserId required | integer User paid foreign key |
| status required | string (ReceiptStatus) Enum: "OPEN" "NEEDS_ATTENTION" "RESOLVED" "DRAFT" "" Status of a receipt |
Array of objects (UpsertCategoryCommand) Categories associated to receipt | |
Array of objects (UpsertTagCommand) Tags associated to receipt | |
Array of objects (UpsertItemCommand) Items associated to receipt | |
Array of objects (UpsertCommentCommand) Comments associated to receipt | |
Array of objects (UpsertCustomFieldValueCommand) Custom fields associated to receipt |
{- "name": "string",
- "amount": "string",
- "date": "string",
- "groupId": 0,
- "paidByUserId": 0,
- "status": "OPEN",
- "categories": [
- {
- "id": 0,
- "name": "string",
- "description": "string"
}
], - "tags": [
- {
- "id": 0,
- "name": "string",
- "description": "string"
}
], - "receiptItems": [
- {
- "amount": "string",
- "chargedToUserId": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "categories": [
- {
- "id": 0,
- "name": "string",
- "description": "string"
}
], - "tags": [
- {
- "id": 0,
- "name": "string",
- "description": "string"
}
], - "linkedItems": [
- { }
]
}
], - "comments": [
- {
- "comment": "string",
- "receiptId": 0,
- "userId": 0
}
], - "customFields": [
- {
- "receiptId": 0,
- "customFieldId": 0,
- "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
]
}{- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}This take an image and use magic fill to fill and save the receipt [SYSTEM USER]
Quick scan data
| files required | Array of strings <binary> [ items <binary > ] |
| groupIds required | Array of integers |
| paidByUserIds required | Array of integers |
| statuses required | Array of strings (ReceiptStatus) Items Enum: "OPEN" "NEEDS_ATTENTION" "RESOLVED" "DRAFT" "" |
| categoryIds | Array of strings |
| tagIds | Array of strings |
{- "errorMsg": "string"
}This will return whether or not the currently logged in user has access to the receipt
| receiptId required | integer |
| permission required | string (Permission) Enum: "app.users.create" "app.users.read" "app.users.update" "app.users.delete" "app.prompts.create" "app.prompts.read" "app.prompts.update" "app.prompts.delete" "app.categories.create" "app.categories.read" "app.categories.update" "app.categories.delete" "app.tags.create" "app.tags.read" "app.tags.update" "app.tags.delete" "app.custom-fields.create" "app.custom-fields.read" "app.custom-fields.delete" "app.system-settings.read" "app.system-settings.update" "app.system-settings.restart-task-server" "app.receipt-processing-settings.create" "app.receipt-processing-settings.read" "app.receipt-processing-settings.update" "app.receipt-processing-settings.delete" "app.system-emails.create" "app.system-emails.read" "app.system-emails.update" "app.system-emails.delete" "app.system-tasks.read" "app.imports.run" "app.groups.create" "app.groups.read" "app.groups.update-settings" "app.api-keys.create" "app.api-keys.read" "app.api-keys.read-any" "app.api-keys.update" "app.api-keys.delete" "app.api-keys.delete-any" "app.roles.create" "app.roles.read" "app.roles.update" "app.roles.delete" "app.notifications.read" "app.notifications.delete" "app.user-preferences.read" "app.user-preferences.update" "app.account.read" "app.account.update" "app.account.delete" "app.receipts.search" "app.reports.create" "app.reports.delete" "app.reports.duplicate" "app.reports.generate" "app.reports.read" "app.reports.update" "app.reports.readAll" "app.reports.createAll" "app.reports.updateAll" "app.reports.deleteAll" "app.reports.duplicateAll" "app.reports.generateAll" "group.view" "group.update" "group.delete" "group.receipts.create" "group.receipts.read" "group.receipts.update" "group.receipts.delete" "group.receipts.duplicate" "group.receipts.magic-fill" "group.receipts.quick-scan" "group.comments.create" "group.comments.delete" "group.dashboards.create" "group.dashboards.read" "group.dashboards.update" "group.dashboards.delete" "group.widgets.read" "group.reports.read" "group.activities.read" "group.activities.rerun" "group.email.poll" Group permission required to access the receipt |
{- "errorMsg": "string"
}This will get a receipt by receipt id [SYSTEM USER]
| receiptId required | integer Id of receipt to get |
{- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}This will update a receipt by receipt id [SYSTEM USER]
| receiptId required | integer Id of receipt to get |
Receipt to update
| name required | string Receipt name |
| amount required | string Receipt total amount |
| date required | string Receipt date |
| groupId required | integer Group foreign key |
| paidByUserId required | integer User paid foreign key |
| status required | string (ReceiptStatus) Enum: "OPEN" "NEEDS_ATTENTION" "RESOLVED" "DRAFT" "" Status of a receipt |
Array of objects (UpsertCategoryCommand) Categories associated to receipt | |
Array of objects (UpsertTagCommand) Tags associated to receipt | |
Array of objects (UpsertItemCommand) Items associated to receipt | |
Array of objects (UpsertCommentCommand) Comments associated to receipt | |
Array of objects (UpsertCustomFieldValueCommand) Custom fields associated to receipt |
{- "name": "string",
- "amount": "string",
- "date": "string",
- "groupId": 0,
- "paidByUserId": 0,
- "status": "OPEN",
- "categories": [
- {
- "id": 0,
- "name": "string",
- "description": "string"
}
], - "tags": [
- {
- "id": 0,
- "name": "string",
- "description": "string"
}
], - "receiptItems": [
- {
- "amount": "string",
- "chargedToUserId": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "categories": [
- {
- "id": 0,
- "name": "string",
- "description": "string"
}
], - "tags": [
- {
- "id": 0,
- "name": "string",
- "description": "string"
}
], - "linkedItems": [
- { }
]
}
], - "comments": [
- {
- "comment": "string",
- "receiptId": 0,
- "userId": 0
}
], - "customFields": [
- {
- "receiptId": 0,
- "customFieldId": 0,
- "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
]
}{- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}This will bulk update receipt statuses with the option of adding a comment to each [SYSTEM USER]
Bulk status data
| comment | string Optional comment to leave on each receipt |
| status required | string Status to update to |
| receiptIds required | Array of integers Receipt ids to update |
{- "comment": "string",
- "status": "string",
- "receiptIds": [
- 0
]
}[- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
]This will return receipts with the option to sort and filter [SYSTEM USER]
| groupId required | integer Get all receipts that belong to groupId |
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
object (ReceiptPagedRequestFilter) | |
| fullReceipts | boolean Whether to include all receipt associations (receiptItems, comments, customFields, imageFiles, etc.) |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc",
- "filter": {
- "date": { },
- "amount": { },
- "name": { },
- "paidBy": { },
- "categories": { },
- "tags": { },
- "status": { },
- "group": { },
- "resolvedDate": { },
- "createdAt": { }
}, - "fullReceipts": true
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}This will upload a receipt image, [SYSTEM USER]
Receipt image to upload
| file required | string <binary> |
| receiptId required | integer Receipt foreign key |
| encodedImage | string Base64 encoded image for file types that aren't viewable natively in the browser, such as PDFs |
{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "encodedImage": "string",
- "name": "string"
}This will convert a receipt image to jpg, [SYSTEM USER]
Receipt image to convert
| file required | string <binary> Base64 encoded image |
{- "encodedImage": "string"
}This will parse and read a receipt image, [SYSTEM USER]
| receiptImageId | integer Id of receipt image to perform magic fill on |
| file | string <binary> |
{- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}This will get a receipt image by id, [SYSTEM USER]
| receiptImageId required | integer Id of receipt image to get |
{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "encodedImage": "string",
- "name": "string"
}This will search for receipts based on a search term
| searchTerm required | string search term |
[- {
- "id": 0,
- "name": "string",
- "type": "string",
- "groupId": 0,
- "date": "string",
- "amount": "string",
- "receiptStatus": "OPEN",
- "paidByUserId": 0,
- "createdAt": "string"
}
]This will return paged tags
Paging and sorting data
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc"
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}This will update a tag
| tagId required | integer Id of tag to get |
Tag to update
| id | integer Tag id |
| name required | string Tag name |
| description | string Tag description |
{- "id": 0,
- "name": "string",
- "description": "string"
}{- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}This will create a tag
Tag to create
| id | integer Tag id |
| name required | string Tag name |
| description | string Tag description |
{- "id": 0,
- "name": "string",
- "description": "string"
}{- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}This will get all the users in the system and return a view without sensative information
[- {
- "username": "string",
- "createdAt": "string",
- "createdBy": 0,
- "defaultAvatarColor": "string",
- "displayName": "string",
- "id": 0,
- "isDummyUser": true,
- "updatedAt": "string",
- "appRoleId": 0
}
]This will to create a user, [SYSTEM ADMIN]
User to create
| password | string User's password |
| username required | string User's username used to login |
| createdAt | string |
| createdBy | integer <uint64> |
| defaultAvatarColor | string Default avatar color |
| displayName required | string Display name |
| id required | integer |
| isDummyUser required | boolean Is dummy user |
| updatedAt | string |
| appRoleId | integer or null <uint64> Id of the modern app role assigned to the user |
| lastLoginDate | string |
{- "password": "string",
- "username": "string",
- "createdAt": "string",
- "createdBy": 0,
- "defaultAvatarColor": "string",
- "displayName": "string",
- "id": 0,
- "isDummyUser": true,
- "updatedAt": "string",
- "appRoleId": 0,
- "lastLoginDate": "string"
}{- "errorMsg": "string"
}This will update a user by id, [SYSTEM ADMIN]
| userId required | integer Id of user to update |
User to update
| password | string User's password |
| username required | string User's username used to login |
| createdAt | string |
| createdBy | integer <uint64> |
| defaultAvatarColor | string Default avatar color |
| displayName required | string Display name |
| id required | integer |
| isDummyUser required | boolean Is dummy user |
| updatedAt | string |
| appRoleId | integer or null <uint64> Id of the modern app role assigned to the user |
| lastLoginDate | string |
{- "password": "string",
- "username": "string",
- "createdAt": "string",
- "createdBy": 0,
- "defaultAvatarColor": "string",
- "displayName": "string",
- "id": 0,
- "isDummyUser": true,
- "updatedAt": "string",
- "appRoleId": 0,
- "lastLoginDate": "string"
}{- "errorMsg": "string"
}This will convert a dummy user to a normal system user, [SYSTEM ADMIN]
| userId required | integer Id of user to convert to normal system user |
Login credentials for new user
| password required | string User's new password |
{- "password": "string"
}{- "errorMsg": "string"
}This will reset a password for a user, [SYSTEM ADMIN]
| userId required | integer Id of user to reset password |
Login credentials for new user
| password required | string User's new password |
{- "password": "string"
}{- "errorMsg": "string"
}This will return the amount owed for the logged in user, in the specified group, [SYSTEM USER]
| groupId | integer The Id of the group to get amount owed for |
| receiptIds | Array of integers The Id of the receipts to get amount owed for |
{- "property1": "string",
- "property2": "string"
}This will return the user's token claims for the currently logged in user [SYSTEM USER]
{- "userId": 0,
- "displayName": "",
- "defaultAvatarColor": "",
- "username": "",
- "iss": "",
- "sub": "",
- "aud": [ ],
- "exp": 0,
- "nbf": 0,
- "iat": 0,
- "jti": ""
}This will update the logged in user's user profile
User profile to update
| displayName required | string User's displayName |
| defaultAvatarColor required | string Color of default avatar |
{- "displayName": "string",
- "defaultAvatarColor": "string"
}{- "errorMsg": "string"
}This will delete the currently logged in user's account after verifying their password
Password confirmation for account deletion
| password required | string User's current password for confirmation |
{- "password": "string"
}{- "errorMsg": "string"
}This will return the user's app data for the currently logged in user [SYSTEM USER]
{- "about": {
- "buildDate": "string",
- "version": "string"
}, - "claims": {
- "userId": 0,
- "displayName": "",
- "defaultAvatarColor": "",
- "username": "",
- "iss": "",
- "sub": "",
- "aud": [ ],
- "exp": 0,
- "nbf": 0,
- "iat": 0,
- "jti": ""
}, - "groups": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "groupSettings": {
- "id": 0,
- "groupId": 0,
- "emailIntegrationEnabled": true,
- "emailBodyProcessingEnabled": true,
- "systemEmailId": 0,
- "systemEmail": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "useStartTLS": true
}, - "emailToRead": "string",
- "subjectLineRegexes": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "regex": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailWhiteList": [
- {
- "id": 0,
- "groupSettingsId": 0,
- "email": "string",
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}
], - "emailDefaultReceiptStatus": "OPEN",
- "emailDefaultReceiptPaidById": 0,
- "prompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "promptId": 0,
- "fallbackPrompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "fallbackPromptId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "updatedAt": "string"
}, - "groupReceiptSettings": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "groupId": 0,
- "hideImages": true,
- "hideReceiptCategories": true,
- "hideReceiptTags": true,
- "hideItemCategories": true,
- "hideItemTags": true,
- "hideComments": true,
- "hideShareCategories": true,
- "hideShareTags": true,
- "quickScanPaidByEnabled": true,
- "quickScanPaidByRequired": true,
- "quickScanDefaultPaidByType": "UPLOADER",
- "quickScanDefaultPaidById": 0,
- "quickScanStatusEnabled": true,
- "quickScanStatusRequired": true,
- "quickScanDefaultStatus": "OPEN",
- "quickScanCategoriesEnabled": true,
- "quickScanCategoriesRequired": true,
- "quickScanTagsEnabled": true,
- "quickScanTagsRequired": true
}, - "groupMembers": [
- {
- "createdAt": "string",
- "groupId": 0,
- "groupRoleId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "id": 0,
- "isDefault": true,
- "name": "string",
- "isAllGroup": true,
- "status": "ACTIVE",
- "updatedAt": "string"
}
], - "users": [
- {
- "username": "string",
- "createdAt": "string",
- "createdBy": 0,
- "defaultAvatarColor": "string",
- "displayName": "string",
- "id": 0,
- "isDummyUser": true,
- "updatedAt": "string",
- "appRoleId": 0
}
], - "userPreferences": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "userId": 0,
- "quickScanDefaultGroupId": 0,
- "quickScanDefaultPaidById": 0,
- "quickScanDefaultStatus": "OPEN",
- "showLargeImagePreviews": null,
- "userShortcuts": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "userPreferncesId": 0,
- "name": "string",
- "url": "string",
- "icon": "string"
}
]
}, - "featureConfig": {
- "aiPoweredReceipts": true,
- "enableLocalSignUp": true
}, - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "jwt": "string",
- "refreshToken": "string",
- "currencyDisplay": "string",
- "currencyThousandthsSeparator": ",",
- "currencyDecimalSeparator": ",",
- "currencySymbolPosition": "START",
- "currencyHideDecimalPlaces": true,
- "icons": [
- {
- "value": "string",
- "displayValue": "string"
}
], - "appPermissions": [
- "app.users.create"
], - "groupPermissions": {
- "property1": [
- "app.users.create"
], - "property2": [
- "app.users.create"
]
}, - "groupCategories": {
- "property1": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "property2": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
]
}, - "groupTags": {
- "property1": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "property2": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
]
}
}This will delete multiple users by their IDs [SYSTEM ADMIN]
User IDs to delete
| userIds required | Array of strings User IDs to delete |
{- "userIds": [
- "string"
]
}{- "errorMsg": "string"
}This will return the user's preferences for the currently logged in user [SYSTEM USER]
{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "userId": 0,
- "quickScanDefaultGroupId": 0,
- "quickScanDefaultPaidById": 0,
- "quickScanDefaultStatus": "OPEN",
- "showLargeImagePreviews": null,
- "userShortcuts": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "userPreferncesId": 0,
- "name": "string",
- "url": "string",
- "icon": "string"
}
]
}This will update the user's preferences for the currently logged in user [SYSTEM USER]
User preferences to update
| id required | integer <uint64> User preferences id |
| createdAt required | string |
| createdBy | integer <uint64> Default: 0 |
| createdByString | string Default: "" Created by entity's name |
| updatedAt | string Default: "" |
| userId required | integer User foreign key |
| quickScanDefaultGroupId | integer Default: 0 Group foreign key |
| quickScanDefaultPaidById | integer Default: 0 User foreign key |
| quickScanDefaultStatus | string (ReceiptStatus) Default: "OPEN" Enum: "OPEN" "NEEDS_ATTENTION" "RESOLVED" "DRAFT" "" Default quick scan status |
| showLargeImagePreviews | boolean Default: null Whether to show large image previews |
Array of objects (UserShortcut) |
{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "userId": 0,
- "quickScanDefaultGroupId": 0,
- "quickScanDefaultPaidById": 0,
- "quickScanDefaultStatus": "OPEN",
- "showLargeImagePreviews": null,
- "userShortcuts": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "userPreferncesId": 0,
- "name": "string",
- "url": "string",
- "icon": "string"
}
]
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "userId": 0,
- "quickScanDefaultGroupId": 0,
- "quickScanDefaultPaidById": 0,
- "quickScanDefaultStatus": "OPEN",
- "showLargeImagePreviews": null,
- "userShortcuts": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "userPreferncesId": 0,
- "name": "string",
- "url": "string",
- "icon": "string"
}
]
}This will create a system email
System email to create
| host required | string IMAP host |
| port required | string IMAP port |
| username required | string IMAP username |
| password required | string IMAP password |
| useStartTLS | boolean Whether to use STARTTLS |
{- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "useStartTLS": true
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "useStartTLS": true
}This will check system email connectivity
System email to check connectivity
| id | integer System email id |
| host | string IMAP host |
| port | integer IMAP port |
| username | string IMAP username |
| password | string IMAP password |
{- "id": 0,
- "host": "string",
- "port": 0,
- "username": "string",
- "password": "string"
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "type": "OCR_PROCESSING",
- "status": "SUCCEEDED",
- "startedAt": "string",
- "endedAt": "string",
- "associatedEntityId": 0,
- "associatedEntityType": "NOOP_ENTITY_TYPE",
- "ranByUserId": 0,
- "receiptId": 0,
- "groupId": 0,
- "resultDescription": "string",
- "apiKeyId": "string",
- "childSystemTasks": [
- null
]
}This will get a system email by id
| id required | integer Id of system email to get |
{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "useStartTLS": true
}This will update a system email by id
| id required | integer Id of system email to update |
| updatePassword required | boolean Whether or not to update the password |
System email to update
| host required | string IMAP host |
| port required | string IMAP port |
| username required | string IMAP username |
| password required | string IMAP password |
| useStartTLS | boolean Whether to use STARTTLS |
{- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "useStartTLS": true
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "host": "string",
- "port": "string",
- "username": "string",
- "password": "string",
- "useStartTLS": true
}This will return paged and sorted system emails
Paging and sorting data
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc"
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}This will return paged system tasks
Paging and sorting data
| associatedEntityId | integer Associated entity id |
| associatedEntityType | string (AssociatedEntityType) Enum: "NOOP_ENTITY_TYPE" "RECEIPT" "SYSTEM_EMAIL" "RECEIPT_PROCESSING_SETTINGS" "PROMPT" "API_KEY" |
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
{- "associatedEntityId": 0,
- "associatedEntityType": "NOOP_ENTITY_TYPE",
- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc"
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}This will return paged activities for a list of groups
Paging and sorting data
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
| groupIds | Array of integers |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc",
- "groupIds": [
- 0
]
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}This will create a prompt
Prompt to create
| name required | string Prompt name |
| description | string Prompt description |
| prompt required | string Prompt text |
{- "name": "string",
- "description": "string",
- "prompt": "string"
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}This will get a prompt by id
| id required | integer Id of prompt to get |
{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}This will update a prompt by id
| id required | integer Id of prompt to update |
Prompt to update
| name required | string Prompt name |
| description | string Prompt description |
| prompt required | string Prompt text |
{- "name": "string",
- "description": "string",
- "prompt": "string"
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}This will return paged prompts
Paging and sorting data
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc"
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}This will get receipt processing settings by id
| id required | integer Id of receipt processing settings to get |
{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "aiType": "OPEN_AI_CUSTOM",
- "url": "string",
- "key": "string",
- "model": "string",
- "isVisionModel": true,
- "enforceJsonResponseFormat": true,
- "ocrEngine": "TESSERACT",
- "prompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "promptId": 0
}This will update receipt processing settings by id
| id required | integer Id of receipt processing settings to update |
| updateKey required | boolean Whether or not to update the key |
Receipt processing settings to update
| name required | string Name of the settings |
| description | string Description of the settings |
| aiType required | string (AiType) Enum: "OPEN_AI_CUSTOM" "OPEN_AI" "GEMINI" "OLLAMA" |
| url | string URL for custom endpoints |
| key | string Key for endpoints that require authentication |
| model | string LLM model |
| isVisionModel | boolean Is vision model |
| enforceJsonResponseFormat | boolean Enforce JSON response format on the LLM provider. Disable if the provider does not support this flag. |
| ocrEngine required | string (OcrEngine) Enum: "TESSERACT" "EASY_OCR" |
| promptId required | integer Prompt foreign key |
{- "name": "string",
- "description": "string",
- "aiType": "OPEN_AI_CUSTOM",
- "url": "string",
- "key": "string",
- "model": "string",
- "isVisionModel": true,
- "enforceJsonResponseFormat": true,
- "ocrEngine": "TESSERACT",
- "promptId": 0
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "aiType": "OPEN_AI_CUSTOM",
- "url": "string",
- "key": "string",
- "model": "string",
- "isVisionModel": true,
- "enforceJsonResponseFormat": true,
- "ocrEngine": "TESSERACT",
- "prompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "promptId": 0
}This will create receipt processing settings
Receipt processing settings to create
| name required | string Name of the settings |
| description | string Description of the settings |
| aiType required | string (AiType) Enum: "OPEN_AI_CUSTOM" "OPEN_AI" "GEMINI" "OLLAMA" |
| url | string URL for custom endpoints |
| key | string Key for endpoints that require authentication |
| model | string LLM model |
| isVisionModel | boolean Is vision model |
| enforceJsonResponseFormat | boolean Enforce JSON response format on the LLM provider. Disable if the provider does not support this flag. |
| ocrEngine required | string (OcrEngine) Enum: "TESSERACT" "EASY_OCR" |
| promptId required | integer Prompt foreign key |
{- "name": "string",
- "description": "string",
- "aiType": "OPEN_AI_CUSTOM",
- "url": "string",
- "key": "string",
- "model": "string",
- "isVisionModel": true,
- "enforceJsonResponseFormat": true,
- "ocrEngine": "TESSERACT",
- "promptId": 0
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "aiType": "OPEN_AI_CUSTOM",
- "url": "string",
- "key": "string",
- "model": "string",
- "isVisionModel": true,
- "enforceJsonResponseFormat": true,
- "ocrEngine": "TESSERACT",
- "prompt": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "description": "string",
- "prompt": "string"
}, - "promptId": 0
}This will return paged processing settings
Paging and sorting data
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc"
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}Receipt processing settings to check connectivity
| id | integer Receipt processing settings id |
| name | string Name of the settings |
| aiType | string (AiType) Enum: "OPEN_AI_CUSTOM" "OPEN_AI" "GEMINI" "OLLAMA" |
| url | string URL for custom endpoints |
| key | string Key for endpoints that require authentication |
| model | string LLM model |
| enforceJsonResponseFormat | boolean Enforce JSON response format on the LLM provider. Disable if the provider does not support this flag. |
| numWorkers | integer Number of workers to use |
| ocrEngine | string (OcrEngine) Enum: "TESSERACT" "EASY_OCR" |
| promptId | integer Prompt foreign key |
{- "id": 0,
- "name": "string",
- "aiType": "OPEN_AI_CUSTOM",
- "url": "string",
- "key": "string",
- "model": "string",
- "enforceJsonResponseFormat": true,
- "numWorkers": 0,
- "ocrEngine": "TESSERACT",
- "promptId": 0
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "type": "OCR_PROCESSING",
- "status": "SUCCEEDED",
- "startedAt": "string",
- "endedAt": "string",
- "associatedEntityId": 0,
- "associatedEntityType": "NOOP_ENTITY_TYPE",
- "ranByUserId": 0,
- "receiptId": 0,
- "groupId": 0,
- "resultDescription": "string",
- "apiKeyId": "string",
- "childSystemTasks": [
- null
]
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "enableLocalSignUp": false,
- "currencyDisplay": "$",
- "currencyThousandthsSeparator": ",",
- "currencyDecimalSeparator": ",",
- "currencySymbolPosition": "START",
- "currencyHideDecimalPlaces": false,
- "debugOcr": false,
- "numWorkers": 1,
- "emailPollingInterval": 1800,
- "receiptProcessingSettingsId": 0,
- "fallbackReceiptProcessingSettingsId": 0,
- "taskConcurrency": 10,
- "pdfDpi": 300,
- "taskQueueConfigurations": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "quick_scan",
- "priority": 0
}
], - "mcpEnabled": false,
- "mcpPublicUrl": "string"
}This will update system settings
System settings to update
| enableLocalSignUp | boolean Whether local sign up is enabled |
| currencyDisplay | string Currency display |
| currencyThousandthsSeparator required | string (CurrencySeparator) Enum: "," "." |
| currencyDecimalSeparator required | string (CurrencySeparator) Enum: "," "." |
| currencySymbolPosition required | string (CurrencySymbolPosition) Enum: "START" "END" |
| currencyHideDecimalPlaces required | boolean Whether to hide decimal places |
| debugOcr | boolean |
| numWorkers | integer Default: 1 Number of workers to use |
| emailPollingInterval | integer Email polling interval |
| receiptProcessingSettingsId | integer Receipt processing settings foreign key |
| fallbackReceiptProcessingSettingsId | integer Fallback receipt processing settings foreign key |
| taskConcurrency required | integer Concurrency for task worker |
| pdfDpi | integer [ 72 .. 1200 ] DPI used when rasterizing PDFs for OCR/vision processing |
Array of objects (UpsertTaskQueueConfiguration) | |
| mcpEnabled | boolean Whether the OAuth 2.1-protected MCP server is enabled |
| mcpPublicUrl | string Externally reachable origin used for MCP OAuth/metadata/redirect URLs and token audience |
{- "enableLocalSignUp": true,
- "currencyDisplay": "string",
- "currencyThousandthsSeparator": ",",
- "currencyDecimalSeparator": ",",
- "currencySymbolPosition": "START",
- "currencyHideDecimalPlaces": true,
- "debugOcr": true,
- "numWorkers": 1,
- "emailPollingInterval": 0,
- "receiptProcessingSettingsId": 0,
- "fallbackReceiptProcessingSettingsId": 0,
- "taskConcurrency": 0,
- "pdfDpi": 72,
- "taskQueueConfigurations": [
- {
- "name": "quick_scan",
- "priority": 0
}
], - "mcpEnabled": true,
- "mcpPublicUrl": "string"
}{- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "enableLocalSignUp": false,
- "currencyDisplay": "$",
- "currencyThousandthsSeparator": ",",
- "currencyDecimalSeparator": ",",
- "currencySymbolPosition": "START",
- "currencyHideDecimalPlaces": false,
- "debugOcr": false,
- "numWorkers": 1,
- "emailPollingInterval": 1800,
- "receiptProcessingSettingsId": 0,
- "fallbackReceiptProcessingSettingsId": 0,
- "taskConcurrency": 10,
- "pdfDpi": 300,
- "taskQueueConfigurations": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "quick_scan",
- "priority": 0
}
], - "mcpEnabled": false,
- "mcpPublicUrl": "string"
}Create a new API key for the authenticated user
API key details
| name required | string API key name |
| description | string API key description |
| scope required | string (ApiKeyScope) Enum: "r" "w" "rw" Scope/permissions for API keys |
{- "name": "string",
- "description": "string",
- "scope": "r"
}{- "key": "string"
}This will return paged API keys for the authenticated user or all API keys for admins
Paging and sorting data
| page required | integer Page number |
| pageSize required | integer Number of records per page |
| orderBy | string field to order on |
| sortDirection | string (SortDirection) Enum: "asc" "desc" "" |
object (ApiKeyFilter) |
{- "page": 0,
- "pageSize": 0,
- "orderBy": "string",
- "sortDirection": "asc",
- "filter": {
- "associatedApiKeys": "MINE"
}
}{- "data": [
- {
- "amount": "string",
- "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "comments": [
- {
- "additionalInfo": "string",
- "comment": "string",
- "commentId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "receiptId": 0,
- "updatedAt": "string",
- "userId": 0
}
], - "customFields": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "receiptId": 0,
- "customFieldId": 0,
- "customField": {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "name": "string",
- "type": "TEXT",
- "description": "string",
- "options": [
- {
- "id": 0,
- "createdAt": "string",
- "createdBy": 0,
- "createdByString": "",
- "updatedAt": "",
- "value": "string",
- "customFieldId": 0
}
]
}, - "stringValue": "string",
- "dateValue": "string",
- "selectValue": 0,
- "currencyValue": "string",
- "booleanValue": true
}
], - "createdAt": "string",
- "createdBy": 0,
- "date": "string",
- "groupId": 0,
- "id": 0,
- "imageFiles": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "fileType": "string",
- "id": 0,
- "imageData": [
- 0
], - "name": "string",
- "receiptId": 0,
- "size": 0,
- "updatedAt": "string"
}
], - "name": "string",
- "paidByUserId": 0,
- "receiptItems": [
- {
- "IsTaxed": true,
- "amount": "string",
- "chargedToUserId": 0,
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "receiptId": 0,
- "status": "OPEN",
- "linkedItems": [
- { }
], - "categories": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string"
}
], - "resolvedDate": "string",
- "status": "OPEN",
- "tags": [
- {
- "createdAt": "string",
- "createdBy": 0,
- "id": 0,
- "name": "string",
- "description": "string",
- "updatedAt": "string"
}
], - "updatedAt": "string",
- "createdByString": "string"
}
], - "totalCount": 0
}This will update an API key. Users can only update their own API keys.
| id required | string API key ID to update |
API key details to update
| name required | string API key name |
| description | string API key description |
| scope required | string (ApiKeyScope) Enum: "r" "w" "rw" Scope/permissions for API keys |
{- "name": "string",
- "description": "string",
- "scope": "r"
}{- "errorMsg": "string"
}Returns the full catalog of permission strings the API recognizes, with metadata for UI rendering.
[- {
- "key": "app.users.create",
- "label": "string",
- "description": "string",
- "category": "string",
- "scope": "APP"
}
]Returns the full pool of roles, both app-scoped and group-scoped.
[- {
- "id": 0,
- "name": "string",
- "description": "string",
- "scope": "APP",
- "isDefault": true,
- "isSystem": true,
- "permissions": [
- "app.users.create"
], - "assignedCount": 0,
- "categoryGrants": [
- 0
], - "tagGrants": [
- 0
], - "paidByUserGrants": [
- 0
], - "includeOwnPaidReceipts": true,
- "reportTemplateGrants": [
- {
- "reportTemplateId": 0,
- "permissions": [
- "string"
]
}
]
}
]This will create an app-scoped or group-scoped role.
Role to create
| name required | string |
| description | string |
| scope required | string (PermissionScope) Enum: "APP" "GROUP" Whether a permission applies app-wide or within a single group. |
| permissions required | Array of strings (Permission) Items Enum: "app.users.create" "app.users.read" "app.users.update" "app.users.delete" "app.prompts.create" "app.prompts.read" "app.prompts.update" "app.prompts.delete" "app.categories.create" "app.categories.read" "app.categories.update" "app.categories.delete" "app.tags.create" "app.tags.read" "app.tags.update" "app.tags.delete" "app.custom-fields.create" "app.custom-fields.read" "app.custom-fields.delete" "app.system-settings.read" "app.system-settings.update" "app.system-settings.restart-task-server" "app.receipt-processing-settings.create" "app.receipt-processing-settings.read" "app.receipt-processing-settings.update" "app.receipt-processing-settings.delete" "app.system-emails.create" "app.system-emails.read" "app.system-emails.update" "app.system-emails.delete" "app.system-tasks.read" "app.imports.run" "app.groups.create" "app.groups.read" "app.groups.update-settings" "app.api-keys.create" "app.api-keys.read" "app.api-keys.read-any" "app.api-keys.update" "app.api-keys.delete" "app.api-keys.delete-any" "app.roles.create" "app.roles.read" "app.roles.update" "app.roles.delete" "app.notifications.read" "app.notifications.delete" "app.user-preferences.read" "app.user-preferences.update" "app.account.read" "app.account.update" "app.account.delete" "app.receipts.search" "app.reports.create" "app.reports.delete" "app.reports.duplicate" "app.reports.generate" "app.reports.read" "app.reports.update" "app.reports.readAll" "app.reports.createAll" "app.reports.updateAll" "app.reports.deleteAll" "app.reports.duplicateAll" "app.reports.generateAll" "group.view" "group.update" "group.delete" "group.receipts.create" "group.receipts.read" "group.receipts.update" "group.receipts.delete" "group.receipts.duplicate" "group.receipts.magic-fill" "group.receipts.quick-scan" "group.comments.create" "group.comments.delete" "group.dashboards.create" "group.dashboards.read" "group.dashboards.update" "group.dashboards.delete" "group.widgets.read" "group.reports.read" "group.activities.read" "group.activities.rerun" "group.email.poll" |
| categoryGrants | Array of integers <uint64> [ items <uint64 > ] Category ids to restrict a GROUP role's members to. Only valid on group roles; omit or leave empty for unrestricted access. |
| tagGrants | Array of integers <uint64> [ items <uint64 > ] Tag ids to restrict a GROUP role's members to. Only valid on group roles; omit or leave empty for unrestricted access. |
| paidByUserGrants | Array of integers <uint64> [ items <uint64 > ] User ids whose receipts a GROUP role's members may see (by the receipt's "paid by" user). Only valid on group roles; omit or leave empty (with includeOwnPaidReceipts false) for unrestricted access. |
| includeOwnPaidReceipts | boolean Whether to also let each member see receipts they paid for. Only valid on group roles. |
Array of objects (ReportTemplateGrant) Per-template action grants for a GROUP role, restricting which report templates its members may act on. Only valid on group roles; omit or leave empty for unrestricted access. |
{- "name": "string",
- "description": "string",
- "scope": "APP",
- "permissions": [
- "app.users.create"
], - "categoryGrants": [
- 0
], - "tagGrants": [
- 0
], - "paidByUserGrants": [
- 0
], - "includeOwnPaidReceipts": true,
- "reportTemplateGrants": [
- {
- "reportTemplateId": 0,
- "permissions": [
- "string"
]
}
]
}{- "id": 0,
- "name": "string",
- "description": "string",
- "scope": "APP",
- "isDefault": true,
- "isSystem": true,
- "permissions": [
- "app.users.create"
], - "assignedCount": 0,
- "categoryGrants": [
- 0
], - "tagGrants": [
- 0
], - "paidByUserGrants": [
- 0
], - "includeOwnPaidReceipts": true,
- "reportTemplateGrants": [
- {
- "reportTemplateId": 0,
- "permissions": [
- "string"
]
}
]
}Updates an existing app-scoped or group-scoped role. A role's type cannot be changed: the scope in the request must match the existing role's scope. System roles cannot be modified.
| roleId required | integer Id of the role to update |
Role to update
| name required | string |
| description | string |
| scope required | string (PermissionScope) Enum: "APP" "GROUP" Whether a permission applies app-wide or within a single group. |
| permissions required | Array of strings (Permission) Items Enum: "app.users.create" "app.users.read" "app.users.update" "app.users.delete" "app.prompts.create" "app.prompts.read" "app.prompts.update" "app.prompts.delete" "app.categories.create" "app.categories.read" "app.categories.update" "app.categories.delete" "app.tags.create" "app.tags.read" "app.tags.update" "app.tags.delete" "app.custom-fields.create" "app.custom-fields.read" "app.custom-fields.delete" "app.system-settings.read" "app.system-settings.update" "app.system-settings.restart-task-server" "app.receipt-processing-settings.create" "app.receipt-processing-settings.read" "app.receipt-processing-settings.update" "app.receipt-processing-settings.delete" "app.system-emails.create" "app.system-emails.read" "app.system-emails.update" "app.system-emails.delete" "app.system-tasks.read" "app.imports.run" "app.groups.create" "app.groups.read" "app.groups.update-settings" "app.api-keys.create" "app.api-keys.read" "app.api-keys.read-any" "app.api-keys.update" "app.api-keys.delete" "app.api-keys.delete-any" "app.roles.create" "app.roles.read" "app.roles.update" "app.roles.delete" "app.notifications.read" "app.notifications.delete" "app.user-preferences.read" "app.user-preferences.update" "app.account.read" "app.account.update" "app.account.delete" "app.receipts.search" "app.reports.create" "app.reports.delete" "app.reports.duplicate" "app.reports.generate" "app.reports.read" "app.reports.update" "app.reports.readAll" "app.reports.createAll" "app.reports.updateAll" "app.reports.deleteAll" "app.reports.duplicateAll" "app.reports.generateAll" "group.view" "group.update" "group.delete" "group.receipts.create" "group.receipts.read" "group.receipts.update" "group.receipts.delete" "group.receipts.duplicate" "group.receipts.magic-fill" "group.receipts.quick-scan" "group.comments.create" "group.comments.delete" "group.dashboards.create" "group.dashboards.read" "group.dashboards.update" "group.dashboards.delete" "group.widgets.read" "group.reports.read" "group.activities.read" "group.activities.rerun" "group.email.poll" |
| categoryGrants | Array of integers <uint64> [ items <uint64 > ] Category ids to restrict a GROUP role's members to. Only valid on group roles; omit or leave empty for unrestricted access. |
| tagGrants | Array of integers <uint64> [ items <uint64 > ] Tag ids to restrict a GROUP role's members to. Only valid on group roles; omit or leave empty for unrestricted access. |
| paidByUserGrants | Array of integers <uint64> [ items <uint64 > ] User ids whose receipts a GROUP role's members may see (by the receipt's "paid by" user). Only valid on group roles; omit or leave empty (with includeOwnPaidReceipts false) for unrestricted access. |
| includeOwnPaidReceipts | boolean Whether to also let each member see receipts they paid for. Only valid on group roles. |
Array of objects (ReportTemplateGrant) Per-template action grants for a GROUP role, restricting which report templates its members may act on. Only valid on group roles; omit or leave empty for unrestricted access. |
{- "name": "string",
- "description": "string",
- "scope": "APP",
- "permissions": [
- "app.users.create"
], - "categoryGrants": [
- 0
], - "tagGrants": [
- 0
], - "paidByUserGrants": [
- 0
], - "includeOwnPaidReceipts": true,
- "reportTemplateGrants": [
- {
- "reportTemplateId": 0,
- "permissions": [
- "string"
]
}
]
}{- "id": 0,
- "name": "string",
- "description": "string",
- "scope": "APP",
- "isDefault": true,
- "isSystem": true,
- "permissions": [
- "app.users.create"
], - "assignedCount": 0,
- "categoryGrants": [
- 0
], - "tagGrants": [
- 0
], - "paidByUserGrants": [
- 0
], - "includeOwnPaidReceipts": true,
- "reportTemplateGrants": [
- {
- "reportTemplateId": 0,
- "permissions": [
- "string"
]
}
]
}Deletes an app-scoped or group-scoped role. The scope query parameter disambiguates the role id, since app and group role ids overlap. A role cannot be deleted while it is assigned to any user or group member, and system roles cannot be deleted.
| roleId required | integer Id of the role to update |
| scope required | string (PermissionScope) Enum: "APP" "GROUP" Scope of the role to delete |
{- "errorMsg": "string"
}Makes the role the default for its scope — the role assigned to new accounts (APP) or to group creators (GROUP) — clearing the previous default. The scope query parameter disambiguates the role id, since app and group role ids overlap. System roles may be made default.
| roleId required | integer Id of the role to make the default for its scope |
| scope required | string (PermissionScope) Enum: "APP" "GROUP" Scope of the role to make default |
{- "id": 0,
- "name": "string",
- "description": "string",
- "scope": "APP",
- "isDefault": true,
- "isSystem": true,
- "permissions": [
- "app.users.create"
], - "assignedCount": 0,
- "categoryGrants": [
- 0
], - "tagGrants": [
- 0
], - "paidByUserGrants": [
- 0
], - "includeOwnPaidReceipts": true,
- "reportTemplateGrants": [
- {
- "reportTemplateId": 0,
- "permissions": [
- "string"
]
}
]
}