29 KiB
29 KiB
Dash API Routes Overview
Overview of all 162 API endpoints across all modules.
| Method | Route | Params | Return Type | Summary | Docs |
|---|---|---|---|---|---|
POST |
/article |
body: { parentId, name, track_stock } |
201 { article: ArticleSummary } |
Create article | routes/article/create.md |
GET |
/article/export.zip |
?categoryId:integer |
200 zip |
Export articles as ZIP | routes/article/export.zip.md |
DELETE |
/article/{sku} |
sku:string |
204 void |
Delete article by SKU | routes/article/delete.md |
GET |
/article/{sku} |
sku:string |
200 { article: ArticleDetail } |
Get article by SKU | routes/article/get.md |
PATCH |
/article/{sku} |
sku:string, body: { name, unitamount, unitSi, … } |
200 { article: ArticleDetail } |
Update article by SKU | routes/article/update.md |
GET |
/article/{sku}/articlelist |
sku:string |
200 { items: { id, articleId, sku, … }[] } |
Get Stückliste (bundle items) for an article | routes/article/_sku/articlelist.get.md |
PUT |
/article/{sku}/articlelist |
sku:string, body: { items: { articleId, sku, count, … }[] } |
200 { items: object[] } |
Set Stückliste (bundle items) for an article | routes/article/_sku/articlelist.put.md |
GET |
/article/{sku}/attributevalue |
sku:string |
200 { attributevalues: ArticleAttributeValue[] } |
List article attribute values | routes/article/_sku/attributevalue.get.md |
PUT |
/article/{sku}/attributevalue |
sku:string, body: { attributevalues: any[] } |
200 { attributevalues: ArticleAttributeValue[] } |
Bulk set article attribute values | routes/article/_sku/attributevalue.put.md |
PUT |
/article/{sku}/brand |
sku:string, body: { brandId: integer } |
200 { article: ArticleDetail } |
Set or clear article brand by SKU | routes/article/set-brand.md |
PUT |
/article/{sku}/categories |
sku:string, body: { categoryIds: integer[] } |
200 { article: ArticleDetail } |
Replace article categories by SKU | routes/article/set-categories.md |
GET |
/article/{sku}/children |
sku:string |
200 { children: { id, sku, name, … }[] } |
List child articles of a father article | routes/article/_sku/children.get.md |
POST |
/article/{sku}/children |
sku:string, body: { attributeValueId, value, name } |
201 { article: Article } |
Add a child article to a father article | routes/article/_sku/children.post.md |
DELETE |
/article/{sku}/children/{childSku} |
sku:string, childSku:string, ?deleteArticle:boolean |
200 { success, deleted } |
Remove a child article from a father article | routes/article/_sku/children/_childSku.md |
PUT |
/article/{sku}/eans |
sku:string, body: { eans: string[] } |
200 { article: ArticleDetail } |
Replace article EANs by SKU | routes/article/set-eans.md |
POST |
/article/{sku}/father |
sku:string, body: { isFather, attributeNameId } |
200 { article: Article } |
Toggle father mode for an article | routes/article/_sku/father.md |
GET |
/article/{sku}/history |
sku:string |
200 { history: ArticleHistoryEntry[] } |
Get article history by SKU | routes/article/history.md |
POST |
/article/{sku}/image |
sku:string, image/avif |
201 { image: ArticleImage } |
Add article image | routes/article/add-image.md |
DELETE |
/article/{sku}/image/{fullHash} |
sku:string, fullHash:string |
204 void |
Delete article image | routes/article/delete-image.md |
PUT |
/article/{sku}/images/order |
sku:string, body: { fullHashes: string[] } |
200 { fullHashes: string[] } |
Reorder article images | routes/article/order-images.md |
GET |
/article/{sku}/optionslist |
sku:string |
200 { options: { id, articleId, sku, … }[] } |
Get options list for an article | routes/article/_sku/optionslist.get.md |
PUT |
/article/{sku}/optionslist |
sku:string, body: { options: { articleId, sku, count, … }[] } |
200 { options: object[] } |
Set options list for an article | routes/article/_sku/optionslist.put.md |
PUT |
/article/{sku}/prices |
sku:string, body: { prices: { price, tax, minmultiplier }[] } |
200 { article: ArticleDetail } |
Replace POS prices by SKU | routes/article/set-prices.md |
POST |
/article/{sku}/print |
sku:string, body: { templateId, printerId, quantity } |
200 |
Print article label | routes/article/_sku/print.md |
GET |
/article/{sku}/property |
sku:string |
200 { properties: ArticleProperty[] } |
List article properties | routes/article/_sku/property.get.md |
PUT |
/article/{sku}/property |
sku:string, body: { properties: { propertyId, value, sort }[] } |
200 { properties: ArticleProperty[] } |
Bulk set article properties | routes/article/_sku/property.put.md |
DELETE |
/article/{sku}/property/{propertyId} |
sku:string, propertyId:integer |
200 |
Delete article property | routes/article/_sku/property/_propertyId.md |
GET |
/article/{sku}/supplier |
sku:string |
200 { suppliers: ArticleSupplier[] } |
List article suppliers | routes/article/supplier/list.md |
POST |
/article/{sku}/supplier |
sku:string, body: { entityId, sku, pu, … } |
201 { supplier: ArticleSupplier } |
Assign supplier to article | routes/article/supplier/create.md |
PUT |
/article/{sku}/supplier/order |
sku:string, body: { ids: integer[] } |
200 { ids: integer[] } |
Reorder article suppliers | routes/article/supplier/order.md |
DELETE |
/article/{sku}/supplier/{id} |
sku:string, id:integer |
204 void |
Remove supplier assignment from article | routes/article/supplier/delete.md |
PATCH |
/article/{sku}/supplier/{id} |
sku:string, id:integer, body: { sku, pu, stock, … } |
200 { supplier: ArticleSupplier } |
Update article supplier assignment | routes/article/supplier/update.md |
PUT |
/article/{sku}/track_stock |
sku:string, body: { track_stock: boolean } |
200 { article: ArticleDetail } |
Set article track_stock flag by SKU | routes/article/_sku/track_stock.md |
PUT |
/article/{sku}/weight |
sku:string, body: { weight: number } |
200 { article: ArticleDetail } |
Set article weight by SKU | routes/article/set-weight.md |
GET |
/articleIndex |
— | 200 { articles: { id, sku, name, … }[] } |
List article search index | routes/articleIndex.md |
GET |
/attributename |
— | 200 { attributenames: Attributename[] } |
List attribute names | routes/attributename.get.md |
POST |
/attributename |
body: { name, sort, exclusive } |
201 { attributename: Attributename } |
Create attribute name | routes/attributename.post.md |
PUT |
/attributename/order |
body: { attributenameIds: integer[] } |
200 |
Reorder attribute names | routes/attributename/order.md |
GET |
/attributename/{attributeId}/value |
attributeId:integer |
200 { values: AttributeValue[] } |
List values for an attribute | routes/attributename/_attributeId/value.get.md |
POST |
/attributename/{attributeId}/value |
attributeId:integer, body: { value, sort } |
201 { attributevalue: AttributeValue } |
Create value for an attribute | routes/attributename/_attributeId/value.post.md |
PUT |
/attributename/{attributeId}/value/order |
attributeId:integer, body: { attributevalueIds: integer[] } |
200 |
Reorder values of an attribute | routes/attributename/_attributeId/value/order.md |
DELETE |
/attributename/{id} |
id:integer |
200 |
Delete attribute name | routes/attributename/_id.delete.md |
PATCH |
/attributename/{id} |
id:integer, body: { name, sort, exclusive } |
200 { attributename: Attributename } |
Update attribute name | routes/attributename/_id.patch.md |
DELETE |
/attributevalue/{id} |
id:integer |
200 |
Delete attribute value | routes/attributevalue/_id.delete.md |
PATCH |
/attributevalue/{id} |
id:integer, body: { value, sort } |
200 { attributevalue: AttributeValue } |
Update attribute value | routes/attributevalue/_id.patch.md |
POST |
/auth/login |
body: { idToken: string } |
200 { message, user } |
Login with Google ID token | routes/auth/login.md |
POST |
/auth/logout |
— | 200 { message: string } |
Logout | routes/auth/logout.md |
GET |
/auth/me |
— | 200 { user, googleClientId } |
Current user | routes/auth/me.md |
PUT |
/auth/selected-company |
body: { companyId: integer } |
200 { user: User } |
Set selected company | routes/auth/selected-company.md |
GET |
/brand |
— | 200 { brands: Brand[] } |
List brands | routes/brand/list.md |
PUT |
/brand |
body: { name, gsprpinfo } |
200 { brand: Brand } |
Upsert brand | routes/brand/upsert.md |
DELETE |
/brand/{id} |
id:integer |
204 void |
Delete brand | routes/brand/delete.md |
POST |
/category |
body: { parentId, name } |
201 { category: Category } |
Create category | routes/category/create.md |
GET |
/category/export.zip |
— | 200 zip |
Export categories as ZIP | routes/category/export.zip.md |
PUT |
/category/order |
body: { parentId, categoryIds } |
200 { categoryIds: integer[] } |
Reorder sibling categories | routes/category/order.md |
GET |
/category/tree |
— | 200 { languageId, tree, articles } |
Category tree | routes/category/tree.md |
DELETE |
/category/{id} |
id:integer |
204 void |
Delete category | routes/category/delete.md |
PATCH |
/category/{id} |
id:integer, body: { name, parentId } |
200 { category: { id, name, slug, … } } |
Update category (rename or move) | routes/category/update.md |
GET |
/category/{id}/articles |
id:integer |
200 { articles: { id, sku, name, … }[] } |
Articles in category | routes/category/articles.md |
DELETE |
/category/{id}/image |
id:integer |
200 { category: { id, thumbW, thumbH, … } } |
Delete category image | routes/category/delete-image.md |
POST |
/category/{id}/image |
id:integer, image/avif |
201 { category: { id, thumbW, thumbH, … } } |
Add category image | routes/category/add-image.md |
GET |
/company |
— | 200 { companies: Company[] } |
List companies | routes/company/list.md |
POST |
/company |
body: { iso639, name, taxrate, … } |
201 { company, user } |
Create company | routes/company/create.md |
GET |
/company/setting |
— | 200 { settings: CompanySetting[] } |
List company settings | routes/companysetting/list.md |
GET |
/company/setting/{key} |
key:string |
200 { setting: CompanySetting } |
Get company setting by key | routes/companysetting/get.md |
PUT |
/company/setting/{key} |
key:string, body: { value, frontend } |
200 { setting: CompanySetting } |
Upsert company setting | routes/companysetting/set.md |
DELETE |
/company/{id} |
id:integer |
204 void |
Delete company | routes/company/delete.md |
PUT |
/company/{id} |
id:integer, body: { iso639, name, taxrate, … } |
200 { company: Company } |
Update company | routes/company/update.md |
GET |
/customergroup |
— | 200 { customergroups: CustomergroupListItem[] } |
List customer groups | routes/customergroup/list.md |
POST |
/customergroup |
body: { name: string } |
201 { customergroup: Customergroup } |
Create customer group | routes/customergroup/create.md |
PUT |
/customergroup/order |
body: { customergroupIds: integer[] } |
200 { customergroupIds: integer[] } |
Reorder customer groups | routes/customergroup/order.md |
DELETE |
/customergroup/{id} |
id:integer |
204 void |
Delete customer group | routes/customergroup/delete.md |
PATCH |
/customergroup/{id} |
id:integer, body: { name: string } |
200 { customergroup: Customergroup } |
Update customer group | routes/customergroup/update.md |
GET |
/delivery |
— | 200 { deliveries: DeliverySummary[] } |
List deliveries | routes/delivery/list.md |
POST |
/delivery |
body: { externalNumber, date, supplierId, … } |
201 { delivery: Delivery } |
Create delivery | routes/delivery/create.md |
POST |
/delivery/parse |
form: { file } |
200 SSE |
Parse document (SSE) | routes/delivery/parse.md |
DELETE |
/delivery/{id} |
id:integer |
204 void |
Delete delivery | routes/delivery/delete.md |
GET |
/delivery/{id} |
id:integer |
200 { delivery: Delivery } |
Get delivery | routes/delivery/get.md |
PATCH |
/delivery/{id} |
id:integer, body: { externalNumber, date, supplierId, … } |
200 { delivery: Delivery } |
Update delivery | routes/delivery/update.md |
GET |
/delivery/{id}/file/{fileId} |
id:integer, fileId:integer, ?download:boolean |
200 string |
Get delivery attachment file content | routes/delivery/file.md |
GET |
/entity |
?customergroupId:integer, ?role:string |
200 { entities: Entity[] } |
List entities | routes/entity/list.md |
POST |
/entity |
body: { customergroupId, name, firstName, … } |
201 { entity: Entity } |
Create entity | routes/entity/create.md |
GET |
/entity/next-number |
— | 200 { number: string } |
Peek next customer number | routes/entity/next-number.md |
GET |
/entity/{entityId}/address |
entityId:integer |
200 { addresses: EntityAddress[] } |
List entity addresses | routes/entity/address/list.md |
POST |
/entity/{entityId}/address |
entityId:integer, body: { addressType, firstName, name, … } |
201 { address: EntityAddress } |
Create entity address | routes/entity/address/create.md |
DELETE |
/entity/{entityId}/address/{id} |
entityId:integer, id:integer |
204 void |
Delete entity address | routes/entity/address/delete.md |
PATCH |
/entity/{entityId}/address/{id} |
entityId:integer, id:integer, body: { addressType, firstName, name, … } |
200 { address: EntityAddress } |
Update entity address | routes/entity/address/update.md |
GET |
/entity/{entityId}/contact |
entityId:integer |
200 { contacts: EntityContact[] } |
List entity contacts | routes/entity/contact/list.md |
POST |
/entity/{entityId}/contact |
entityId:integer, body: { contactType, contact } |
201 { contact: EntityContact } |
Create entity contact | routes/entity/contact/create.md |
DELETE |
/entity/{entityId}/contact/{id} |
entityId:integer, id:integer |
204 void |
Delete entity contact | routes/entity/contact/delete.md |
PATCH |
/entity/{entityId}/contact/{id} |
entityId:integer, id:integer, body: { contactType, contact } |
200 { contact: EntityContact } |
Update entity contact | routes/entity/contact/update.md |
DELETE |
/entity/{id} |
id:integer |
204 void |
Delete entity | routes/entity/delete.md |
GET |
/entity/{id} |
id:integer |
200 { entity: Entity } |
Get entity | routes/entity/get.md |
PATCH |
/entity/{id} |
id:integer, body: { name, firstName, number } |
200 { entity: Entity } |
Update entity | routes/entity/update.md |
GET |
/events |
— | 200 SSE |
Subscribe to update signals (SSE) | routes/events.md |
GET |
/health |
— | 200 { ok: boolean } |
Database health check | routes/health.md |
GET |
/image/{fullHash} |
fullHash:string |
200 avif |
Full image by hash | routes/image/get.md |
GET |
/labeltemplate |
— | 200 { labeltemplates: LabelTemplate[] } |
List label templates | routes/labeltemplate/list.md |
POST |
/labeltemplate |
body: LabelTemplateCreateInput |
201 { labeltemplate: LabelTemplate } |
Create label template | routes/labeltemplate/create.md |
DELETE |
/labeltemplate/{id} |
id:integer |
204 void |
Delete label template | routes/labeltemplate/delete.md |
GET |
/labeltemplate/{id} |
id:integer |
200 { labeltemplate: LabelTemplate } |
Get label template by ID | routes/labeltemplate/get.md |
PATCH |
/labeltemplate/{id} |
id:integer, body: LabelTemplateUpdateInput |
200 { labeltemplate: LabelTemplate } |
Update label template (partial) | routes/labeltemplate/update.md |
PUT |
/labeltemplate/{id} |
id:integer, body: LabelTemplateUpdateInput |
200 { labeltemplate: LabelTemplate } |
Update label template | routes/labeltemplate/update.md |
GET |
/ledger |
?manifestarticle_id:integer, ?sku:string, ?transaction_type:string |
200 { ledger: LedgerEntry[] } |
Query ledger by manifest article ID or SKU | routes/ledger.get.md |
POST |
/ledger |
body: LedgerEntryInput |
201 { ledger: LedgerEntry } |
Add ledger entry | routes/ledger.post.md |
GET |
/ledger/manifestarticle/{manifestarticleId} |
manifestarticleId:integer, ?transaction_type:string |
200 { ledger: LedgerEntry[] } |
Query ledger by manifest article ID | routes/ledger/manifestarticle/_manifestarticleId.md |
GET |
/ledger/sku/{sku} |
sku:string, ?transaction_type:string |
200 { ledger: LedgerEntry[] } |
Query ledger by article SKU | routes/ledger/sku/_sku.md |
GET |
/number |
— | 200 { numbers: NumberSequence[] } |
List number sequences | routes/number/list.md |
PATCH |
/number/{id} |
id:integer, body: { prefix, padding, next } |
200 { number: NumberSequence } |
Update number sequence | routes/number/update.md |
GET |
/order |
— | 200 { orders: OrderSummary[] } |
List orders | routes/order/list.md |
POST |
/order |
body: { number, date, entityId, … } |
201 { order: Order } |
Create order | routes/order/create.md |
DELETE |
/order/{id} |
id:integer |
204 void |
Delete order | routes/order/delete.md |
GET |
/order/{id} |
id:integer |
200 { order: Order } |
Get order | routes/order/get.md |
PATCH |
/order/{id} |
id:integer, body: { number, date, entityId, … } |
200 { order: Order } |
Update order | routes/order/update.md |
GET |
/posterminal |
— | 200 { posterminals: Posterminal[] } |
List POS terminals | routes/posterminal/list.md |
PUT |
/posterminal |
body: { name: string } |
200 { posterminal: Posterminal } |
Create POS terminal | routes/posterminal/upsert.md |
DELETE |
/posterminal/{id} |
id:integer |
204 void |
Delete POS terminal | routes/posterminal/delete.md |
DELETE |
/posterminal/{id}/all |
id:integer |
200 { id, categoryIds } |
Disable all categories on terminal | routes/posterminal/setOffAll.md |
PUT |
/posterminal/{id}/all |
id:integer |
200 { id, categoryIds } |
Enable all categories on terminal | routes/posterminal/setOnAll.md |
DELETE |
/posterminal/{id}/category/{categoryId} |
id:integer, categoryId:integer |
200 { id, categoryIds } |
Disable category on terminal | routes/posterminal/setOff.md |
PUT |
/posterminal/{id}/category/{categoryId} |
id:integer, categoryId:integer |
200 { id, categoryIds } |
Enable category on terminal | routes/posterminal/setOn.md |
GET |
/printer |
— | 200 { printers: Printer[] } |
List printers | routes/printer/list.md |
POST |
/printer |
body: PrinterCreateInput |
201 { printer: Printer } |
Create printer | routes/printer/create.md |
PUT |
/printer/order |
body: { printerIds: integer[] } |
200 { printerIds: integer[] } |
Reorder printers | routes/printer/order.md |
DELETE |
/printer/{id} |
id:integer |
204 void |
Delete printer | routes/printer/delete.md |
GET |
/printer/{id} |
id:integer |
200 { printer: Printer } |
Get printer by ID | routes/printer/get.md |
PATCH |
/printer/{id} |
id:integer, body: PrinterUpdateInput |
200 { printer: Printer } |
Update printer (partial) | routes/printer/update.md |
PUT |
/printer/{id} |
id:integer, body: PrinterUpdateInput |
200 { printer: Printer } |
Update printer | routes/printer/_id.put.md |
GET |
/propertyname |
— | 200 { propertynames: Propertyname[] } |
List property names | routes/propertyname.get.md |
POST |
/propertyname |
body: { name, sort, exclusive } |
201 { propertyname: Propertyname } |
Create property name | routes/propertyname.post.md |
PUT |
/propertyname/order |
body: { propertynameIds: integer[] } |
200 |
Reorder property names | routes/propertyname/order.md |
DELETE |
/propertyname/{id} |
id:integer |
200 |
Delete property name | routes/propertyname/_id.delete.md |
PATCH |
/propertyname/{id} |
id:integer, body: { name, sort, exclusive } |
200 { propertyname: Propertyname } |
Update property name | routes/propertyname/_id.patch.md |
GET |
/quote |
— | 200 { quotes: QuoteSummary[] } |
List quotes | routes/quote/list.md |
POST |
/quote |
body: { number, date, entityId, … } |
201 { quote: Quote } |
Create quote | routes/quote/create.md |
DELETE |
/quote/{id} |
id:integer |
204 void |
Delete quote | routes/quote/delete.md |
GET |
/quote/{id} |
id:integer |
200 { quote: Quote } |
Get quote | routes/quote/get.md |
PATCH |
/quote/{id} |
id:integer, body: { number, date, entityId, … } |
200 { quote: Quote } |
Update quote | routes/quote/update.md |
POST |
/serper/image |
body: { url: string } |
200 avif |
Crawl image from URL, crop white/transparency borders, and return AVIF | routes/serper/image.md |
POST |
/serper/images |
body: { q, gl, hl, … } |
200 SSE |
Search images via Serper.dev and stream WebP thumbnails (SSE) | routes/serper/images.md |
POST |
/stock/adjust |
body: StockAdjustmentInput |
201 StockAdjustmentResult |
Adjust stock manually | routes/stock/adjust.md |
GET |
/supplier |
— | 200 { suppliers: Supplier[] } |
List suppliers | routes/supplier/list.md |
POST |
/supplier |
body: { name: string } |
201 { supplier: Supplier } |
Create supplier | routes/supplier/create.md |
DELETE |
/supplier/{id} |
id:integer |
204 void |
Delete supplier | routes/supplier/delete.md |
PATCH |
/supplier/{id} |
id:integer, body: { name: string } |
200 { supplier: Supplier } |
Update supplier | routes/supplier/update.md |
GET |
/supplier/{id}/articles |
id:integer, ?skus |
200 { articles: SupplierArticle[] } |
List supplier articles by SKUs | routes/supplier/articles.get.md |
POST |
/supplier/{id}/articles |
id:integer, body: { skus: string[] } |
200 { articles: SupplierArticle[] } |
Query supplier articles by SKUs (bulk) | routes/supplier/articles.post.md |
GET |
/thumb/{fullHash} |
fullHash:string |
200 avif |
Thumb image by hash | routes/thumb/get.md |
DELETE |
/unit |
?si:string |
204 void |
Delete unit | routes/unit/delete.md |
GET |
/unit |
— | 200 { units: Unit[] } |
List units | routes/unit/list.md |
PUT |
/unit |
body: { si, basesi, basesifactor, … } |
200 { unit: Unit } |
Upsert unit | routes/unit/upsert.md |
GET |
/v1/category |
?lastChangedCategory:string, ?limit:integer |
200 object[] |
JTL-POS category synchronization | routes/v1/category.md |
GET |
/v1/client |
?authCode:string, ?name:string |
200 { authCode, authToken, certificateFingerprint, … } |
POS discovery and pairing | routes/pos/client.md |
GET |
/v1/init |
?lastChangedProduct:integer, ?lastChangedCategory:integer, ?lastChangedCustomer:integer, ?lastChangedCustomerGroup:integer, ?lastChangedCompositeProduct:integer, ?lastChangedDeletedEntity:integer |
200 { version, product_count, category_count, … } |
POS sync initialization counts | routes/pos/init.md |
GET |
/v1/product |
?lastChangedProduct:string, ?limit:integer |
200 object[] |
JTL-POS product catalog synchronization | routes/v1/product.md |
GET |
/warehouse |
— | 200 { warehouses: Warehouse[] } |
List warehouses | routes/warehouse/list.md |
POST |
/warehouse |
body: WarehouseCreateInput |
201 { warehouse: Warehouse } |
Create warehouse | routes/warehouse/create.md |
PUT |
/warehouse/order |
body: { warehouseIds: integer[] } |
200 { warehouseIds: integer[] } |
Reorder warehouses | routes/warehouse/order.md |
DELETE |
/warehouse/{id} |
id:integer |
204 void |
Delete warehouse | routes/warehouse/delete.md |
GET |
/warehouse/{id} |
id:integer |
200 { warehouse: Warehouse } |
Get warehouse by ID | routes/warehouse/get.md |
PATCH |
/warehouse/{id} |
id:integer, body: WarehouseUpdateInput |
200 { warehouse: Warehouse } |
Update warehouse (partial) | routes/warehouse/update.md |
PUT |
/warehouse/{id} |
id:integer, body: WarehouseUpdateInput |
200 { warehouse: Warehouse } |
Update warehouse | routes/warehouse/_id.put.md |