Reports API
8 routes across 2 controllers: the etl-ep (server-to-server access key) routes the backend serves for this family at the commit named in the front matter, plus its read-only public-ep routes, listed one table per controller. How to authenticate, send a body, page a query and read the response envelope is in the Data API reference, and the way in for a new integration is the integration path.
Every path is resolved from the controller’s mapping annotations; nothing here describes behaviour, because nothing about behaviour has been read — the table is what the backend serves and no more. backoffice-ep routes (the platform’s own applets, with a signed-in user’s token) and anonymous write routes are not listed; what the family serves on backoffice-ep only, and how many of its routes carry no access segment at all, is at the end of the page. A path missing from this page is not a path your access key is refused — see which reference to read.
Sales reports
ReportFinancialCubeMonthlySalesByProductSalesmanController
7 routes under /core2/tnt/dm/erp/reports/monthly-sales-product-salesman (ReportFinancialCubeMonthlySalesByProductSalesmanController.java).
| Method | Path | Handler | Source |
|---|---|---|---|
GET | /core2/tnt/dm/erp/reports/monthly-sales-product-salesman/etl-ep | getAllEtlEp | ReportFinancialCubeMonthlySalesByProductSalesmanController.java:142 |
POST | /core2/tnt/dm/erp/reports/monthly-sales-product-salesman/etl-ep | createEtlEp | ReportFinancialCubeMonthlySalesByProductSalesmanController.java:112 |
PUT | /core2/tnt/dm/erp/reports/monthly-sales-product-salesman/etl-ep | updateEtlEp | ReportFinancialCubeMonthlySalesByProductSalesmanController.java:122 |
GET | /core2/tnt/dm/erp/reports/monthly-sales-product-salesman/etl-ep/query | getByCriteriaEtlEp | ReportFinancialCubeMonthlySalesByProductSalesmanController.java:161 |
GET | /core2/tnt/dm/erp/reports/monthly-sales-product-salesman/etl-ep/query/snapshot | getByCriteriaSnapshotEtlEp | ReportFinancialCubeMonthlySalesByProductSalesmanController.java:171 |
GET | /core2/tnt/dm/erp/reports/monthly-sales-product-salesman/etl-ep/{guid} | getByGuidEtlEp | ReportFinancialCubeMonthlySalesByProductSalesmanController.java:151 |
DELETE | /core2/tnt/dm/erp/reports/monthly-sales-product-salesman/etl-ep/{guid} | deleteEtlEp | ReportFinancialCubeMonthlySalesByProductSalesmanController.java:132 |
ReportSalesTotalSoldItemsQuantityController
1 route under /core2/tnt/dm/erp/reports/sales/total-sold-items-qty (ReportSalesTotalSoldItemsQuantityController.java).
| Method | Path | Handler | Source |
|---|---|---|---|
POST | /core2/tnt/dm/erp/reports/sales/total-sold-items-qty/etl-ep | createForEtlEp | ReportSalesTotalSoldItemsQuantityController.java:99 |
What this family does not expose over etl-ep
What follows is grouped by URL convention, and the convention does not decide which credential is accepted. The backend falls back in both directions: an etl-ep handler that finds no usable access key tries the bearer token (EndpointMethod.java:300-307), and a route reached with no Authorization header at all falls through to the access-key interceptor (TenantAuthorizationInterceptor.java:74-79). So read these lists as “no documented etl-ep path”, never as “your access key will be refused” — what still decides the outcome is the permission the handler checks.
Controllers in the same family whose routes all sit under backoffice-ep paths:
BiDashboardBlocksController— 6backoffice-eproutes (BiDashboardBlocksController.java)BiDashboardBlocksHdrController— 6backoffice-eproutes (BiDashboardBlocksHdrController.java)BiDashboardController— 6backoffice-eproutes (BiDashboardController.java)BiDashboardPermissionController— 8backoffice-eproutes (BiDashboardPermissionController.java)BiReportHdrController— 8backoffice-eproutes (BiReportHdrController.java)BiReportPermissionController— 7backoffice-eproutes (BiReportPermissionController.java)BiReportQueryEventHdrController— 8backoffice-eproutes (BiReportQueryEventHdrController.java)BiReportQueryRunOutputHdrController— 8backoffice-eproutes (BiReportQueryRunOutputHdrController.java)BiReportQueryRunHdrController— 7backoffice-eproutes (BiReportQueryRunHdrController.java)BiReportQueryRunOutputFileHdrController— 7backoffice-eproutes (BiReportQueryRunOutputFileHdrController.java)BiReportQueryTemplateHdrController— 7backoffice-eproutes (BiReportQueryTemplateHdrController.java)EntityOutstandingDocumentController— 3backoffice-eproutes (EntityOutstandingDocumentController.java)EntityReportController— 7backoffice-eproutes (EntityReportController.java)FinancialReportController— 3backoffice-eproutes (FinancialReportController.java)JournalPostingController— 8backoffice-eproutes (JournalPostingController.java)GenericDocumentGrossProfitReportController— 1backoffice-eproute (GenericDocumentGrossProfitReportController.java)PurchaseReportController— 5backoffice-eproutes (PurchaseReportController.java)SalesReportMallController— 15backoffice-eproutes (SalesReportMallController.java)SalesReportController— 20backoffice-eproutes (SalesReportController.java)StockReportController— 9backoffice-eproutes (StockReportController.java)
And 63 routes this page does not count at all. A route reaches the tables and the lists above only when its path carries an access segment; these 63, served by controllers in scope for this page, carry none — the resource sits directly under its base path, with no /etl-ep or /backoffice-ep suffix. By the same fallback an access key reaches them too, so their absence is a limit of the classification, not a statement about what you can call. Six of the resources in that position — chart of accounts, ledgers, cashbooks, suppliers, purchase invoices and payment vouchers — are documented in full on the ERP Core API pages, with request and response bodies verified against the live API.
Related
- Data API — reading the underlying records with a query instead
- API Reference — how many routes exist per family, and which have a page
- Authentication — the access key an
etl-epcall carries