# 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`.