126 lines
5.3 KiB
Markdown
126 lines
5.3 KiB
Markdown
# 04 - API
|
|
|
|
## Public web routes
|
|
|
|
| Route | Purpose |
|
|
| --- | --- |
|
|
| `/` | configurator |
|
|
| `/configs` | configuration list |
|
|
| `/configs/:uuid/revisions` | revision history page |
|
|
| `/projects` | project list |
|
|
| `/projects/:uuid` | project detail |
|
|
| `/pricelists` | pricelist list |
|
|
| `/pricelists/:id` | pricelist detail |
|
|
| `/partnumber-books` | partnumber book page |
|
|
| `/setup` | DB setup page |
|
|
|
|
## Setup and health
|
|
|
|
| Method | Path | Purpose |
|
|
| --- | --- | --- |
|
|
| `GET` | `/health` | process health |
|
|
| `GET` | `/setup` | setup page |
|
|
| `POST` | `/setup` | save tested DB settings |
|
|
| `POST` | `/setup/test` | test DB connection |
|
|
| `GET` | `/setup/status` | setup status |
|
|
| `GET` | `/api/db-status` | current DB/sync status |
|
|
| `GET` | `/api/current-user` | local user identity |
|
|
| `GET` | `/api/ping` | lightweight API ping |
|
|
|
|
`POST /api/restart` exists only in `debug` mode.
|
|
|
|
## Reference data
|
|
|
|
| Method | Path | Purpose |
|
|
| --- | --- | --- |
|
|
| `GET` | `/api/components` | list component metadata |
|
|
| `GET` | `/api/components/:lot_name` | one component |
|
|
| `GET` | `/api/categories` | list categories |
|
|
| `GET` | `/api/pricelists` | list local pricelists |
|
|
| `GET` | `/api/pricelists/latest` | latest pricelist by source |
|
|
| `GET` | `/api/pricelists/:id` | pricelist header |
|
|
| `GET` | `/api/pricelists/:id/items` | pricelist rows |
|
|
| `GET` | `/api/pricelists/:id/lots` | lot names in a pricelist |
|
|
| `GET` | `/api/partnumber-books` | local partnumber books |
|
|
| `GET` | `/api/partnumber-books/:id` | book items by `server_id` |
|
|
|
|
## Quote and export
|
|
|
|
| Method | Path | Purpose |
|
|
| --- | --- | --- |
|
|
| `POST` | `/api/quote/validate` | validate config items |
|
|
| `POST` | `/api/quote/calculate` | calculate quote totals |
|
|
| `POST` | `/api/quote/price-levels` | resolve estimate/warehouse/competitor prices |
|
|
| `POST` | `/api/export/csv` | export a single configuration |
|
|
| `GET` | `/api/configs/:uuid/export` | export a stored configuration |
|
|
| `GET` | `/api/projects/:uuid/export` | legacy project BOM export |
|
|
| `POST` | `/api/projects/:uuid/export` | pricing-tab project export |
|
|
|
|
## Configurations
|
|
|
|
| Method | Path | Purpose |
|
|
| --- | --- | --- |
|
|
| `GET` | `/api/configs` | list configurations |
|
|
| `POST` | `/api/configs/import` | import configurations from server |
|
|
| `POST` | `/api/configs` | create configuration |
|
|
| `POST` | `/api/configs/preview-article` | preview article |
|
|
| `GET` | `/api/configs/:uuid` | get configuration |
|
|
| `PUT` | `/api/configs/:uuid` | update configuration |
|
|
| `DELETE` | `/api/configs/:uuid` | archive configuration |
|
|
| `POST` | `/api/configs/:uuid/reactivate` | reactivate configuration |
|
|
| `PATCH` | `/api/configs/:uuid/rename` | rename configuration |
|
|
| `POST` | `/api/configs/:uuid/clone` | clone configuration |
|
|
| `POST` | `/api/configs/:uuid/refresh-prices` | refresh prices |
|
|
| `PATCH` | `/api/configs/:uuid/project` | move configuration to project |
|
|
| `GET` | `/api/configs/:uuid/versions` | list revisions |
|
|
| `GET` | `/api/configs/:uuid/versions/:version` | get one revision |
|
|
| `POST` | `/api/configs/:uuid/rollback` | rollback by creating a new head revision |
|
|
| `PATCH` | `/api/configs/:uuid/server-count` | update server count |
|
|
| `GET` | `/api/configs/:uuid/vendor-spec` | read vendor BOM |
|
|
| `PUT` | `/api/configs/:uuid/vendor-spec` | replace vendor BOM |
|
|
| `POST` | `/api/configs/:uuid/vendor-spec/resolve` | resolve PN -> LOT |
|
|
| `POST` | `/api/configs/:uuid/vendor-spec/apply` | apply BOM to cart |
|
|
|
|
## Projects
|
|
|
|
| Method | Path | Purpose |
|
|
| --- | --- | --- |
|
|
| `GET` | `/api/projects` | paginated project list |
|
|
| `GET` | `/api/projects/all` | lightweight list for dropdowns |
|
|
| `POST` | `/api/projects` | create project |
|
|
| `GET` | `/api/projects/:uuid` | get project |
|
|
| `PUT` | `/api/projects/:uuid` | update project |
|
|
| `POST` | `/api/projects/:uuid/archive` | archive project |
|
|
| `POST` | `/api/projects/:uuid/reactivate` | reactivate project |
|
|
| `DELETE` | `/api/projects/:uuid` | delete project variant only |
|
|
| `GET` | `/api/projects/:uuid/configs` | list project configurations |
|
|
| `PATCH` | `/api/projects/:uuid/configs/reorder` | persist line order |
|
|
| `POST` | `/api/projects/:uuid/configs` | create configuration inside project |
|
|
| `POST` | `/api/projects/:uuid/configs/:config_uuid/clone` | clone config into project |
|
|
| `POST` | `/api/projects/:uuid/vendor-import` | import CFXML workspace into project |
|
|
|
|
Vendor import contract:
|
|
- multipart field name is `file`;
|
|
- file limit is `1 GiB`;
|
|
- oversized payloads are rejected before XML parsing.
|
|
|
|
## Sync
|
|
|
|
| Method | Path | Purpose |
|
|
| --- | --- | --- |
|
|
| `GET` | `/api/sync/status` | sync status |
|
|
| `GET` | `/api/sync/readiness` | sync readiness |
|
|
| `GET` | `/api/sync/info` | sync modal data |
|
|
| `GET` | `/api/sync/users-status` | remote user status |
|
|
| `GET` | `/api/sync/pending/count` | pending queue count |
|
|
| `GET` | `/api/sync/pending` | pending queue rows |
|
|
| `POST` | `/api/sync/components` | pull components |
|
|
| `POST` | `/api/sync/pricelists` | pull pricelists |
|
|
| `POST` | `/api/sync/partnumber-books` | pull partnumber books |
|
|
| `POST` | `/api/sync/partnumber-seen` | report unresolved vendor PN |
|
|
| `POST` | `/api/sync/all` | push and pull full sync |
|
|
| `POST` | `/api/sync/push` | push pending changes |
|
|
| `POST` | `/api/sync/repair` | repair broken pending rows |
|
|
|
|
When readiness is blocked, sync write endpoints return `423 Locked`.
|