u
This commit is contained in:
@@ -42,7 +42,14 @@ Updated Stückliste items
|
||||
```json
|
||||
{
|
||||
"items": [
|
||||
{}
|
||||
{
|
||||
"id": 1,
|
||||
"articleId": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"count": 1,
|
||||
"sort": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -44,7 +44,14 @@ Attached child article and list of children
|
||||
"track_stock": true
|
||||
},
|
||||
"children": [
|
||||
{}
|
||||
{
|
||||
"id": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"parentsort": 1,
|
||||
"attributeValueId": 1,
|
||||
"attributeValue": "…"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -44,7 +44,15 @@ Updated options list
|
||||
```json
|
||||
{
|
||||
"options": [
|
||||
{}
|
||||
{
|
||||
"id": 1,
|
||||
"articleId": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"count": 1,
|
||||
"sort": 1,
|
||||
"mandated": true
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -43,8 +43,21 @@ Updated article detail
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {},
|
||||
"brand": {},
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
|
||||
@@ -26,8 +26,21 @@ Article detail
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {},
|
||||
"brand": {},
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
|
||||
@@ -23,8 +23,8 @@ Sets `articlepic.sort` to `0..n-1` in the given order.
|
||||
```json
|
||||
{
|
||||
"fullHashes": [
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
"aB1cD2eF",
|
||||
"gH3iJ4kL"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -44,8 +44,21 @@ Updated article detail
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {},
|
||||
"brand": {},
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
|
||||
@@ -48,8 +48,21 @@ Updated article detail
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {},
|
||||
"brand": {},
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
|
||||
@@ -46,8 +46,21 @@ Updated article detail
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {},
|
||||
"brand": {},
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
|
||||
@@ -5,7 +5,8 @@ Protected. Requires a valid session cookie (`credentials: 'include'`).
|
||||
Replace POS prices by SKU
|
||||
|
||||
Replace-all prices for the company POS customer group.
|
||||
Each entry: `price` (net), `tax` (rate, ensured via tax.ensure), optional `minmultiplier` (default 1).
|
||||
Each entry accepts `net` OR `gross` price (or legacy `price`), `taxRate` OR `tax` (percentage, e.g. 19 for 19%, ensured via tax.ensure), optional `minmultiplier` (default 1).
|
||||
When `gross` is provided, net price is computed as `gross / (1 + taxRate / 100)`.
|
||||
Empty `prices` clears all POS prices. Returns the same shape as GET by SKU (article `prices` array contains `{ minmultiplier, net, taxRate, customergroupId }`).
|
||||
|
||||
|
||||
@@ -20,20 +21,23 @@ Empty `prices` clears all POS prices. Returns the same shape as GET by SKU (arti
|
||||
| Field | Required | Type | Description |
|
||||
|-------|----------|------|-------------|
|
||||
| `prices` | yes | object[] | |
|
||||
| `prices[].price` | yes | number | Net price |
|
||||
| `prices[].tax` | yes | number | Tax rate (e.g. 19) |
|
||||
| `prices[].minmultiplier` | no | number | Defaults to 1; must be unique per request |
|
||||
| `prices[].net` | no | number | Net price (excl. VAT). Either `net`, `gross`, or legacy `price` is required. |
|
||||
| `prices[].gross` | no | number | Gross price (incl. VAT). Net is computed as `gross / (1 + taxRate / 100)`. |
|
||||
| `prices[].price` | no | number | Legacy alias for `net`. |
|
||||
| `prices[].taxRate` | no | number | Tax rate percentage (e.g. 19 for 19%, 7 for 7%, 0 for 0%). |
|
||||
| `prices[].tax` | no | number | Alias for `taxRate` percentage. |
|
||||
| `prices[].minmultiplier` | no | number | Defaults to 1; must be unique per request. |
|
||||
|
||||
```json
|
||||
{
|
||||
"prices": [
|
||||
{
|
||||
"price": 10.5,
|
||||
"tax": 19
|
||||
"net": 10.5,
|
||||
"taxRate": 19
|
||||
},
|
||||
{
|
||||
"price": 9.9,
|
||||
"tax": 19,
|
||||
"gross": 11.9,
|
||||
"taxRate": 19,
|
||||
"minmultiplier": 10
|
||||
}
|
||||
]
|
||||
@@ -58,8 +62,21 @@ Updated article detail
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {},
|
||||
"brand": {},
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
|
||||
@@ -44,8 +44,21 @@ Updated article detail
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {},
|
||||
"brand": {},
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
|
||||
@@ -48,8 +48,21 @@ Updated article detail
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {},
|
||||
"brand": {},
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
|
||||
@@ -17,16 +17,7 @@ Brand list
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"gsprpinfo": "…",
|
||||
"pics": [
|
||||
{
|
||||
"id": 1,
|
||||
"sort": 1,
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
]
|
||||
"pics": []
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -31,16 +31,7 @@ Upserted brand
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"gsprpinfo": "…",
|
||||
"pics": [
|
||||
{
|
||||
"id": 1,
|
||||
"sort": 1,
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
]
|
||||
"pics": []
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -30,11 +30,20 @@ Articles list
|
||||
"optionsCount": 1,
|
||||
"articleListCount": 1,
|
||||
"childCount": 1,
|
||||
"parentArticleId": 1,
|
||||
"parentSku": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…",
|
||||
"brand": {}
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -14,10 +14,48 @@ Tree and articles for the selected company
|
||||
{
|
||||
"languageId": 1,
|
||||
"tree": [
|
||||
{}
|
||||
{
|
||||
"id": 1,
|
||||
"parentId": 1,
|
||||
"sort": 1,
|
||||
"name": "…",
|
||||
"slug": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…",
|
||||
"posterminalIds": [
|
||||
1
|
||||
]
|
||||
}
|
||||
],
|
||||
"articles": [
|
||||
{}
|
||||
{
|
||||
"id": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"slug": "…",
|
||||
"net": 1,
|
||||
"taxRate": 1,
|
||||
"track_stock": true,
|
||||
"optionsCount": 1,
|
||||
"articleListCount": 1,
|
||||
"childCount": 1,
|
||||
"parentArticleId": 1,
|
||||
"parentSku": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…",
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -4,7 +4,7 @@ Protected. Requires a valid session cookie (`credentials: 'include'`).
|
||||
|
||||
Full image by hash
|
||||
|
||||
Returns the full AVIF by `pic.hash` (SHA-256 hex).
|
||||
Returns the full AVIF by `pic.hash` (8-char alphanumeric Base62).
|
||||
Auth via article category access. Browser-cacheable (`private`, `immutable`, `ETag`).
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Auth via article category access. Browser-cacheable (`private`, `immutable`, `ET
|
||||
|
||||
| Param | Required | Type | Description |
|
||||
|-------|----------|------|-------------|
|
||||
| `fullHash` | yes | string | SHA-256 hex of the full image bytes |
|
||||
| `fullHash` | yes | string | 8-char alphanumeric hash of the full image bytes |
|
||||
|
||||
## Response `200`
|
||||
|
||||
|
||||
@@ -55,7 +55,14 @@ Stock adjusted successfully
|
||||
"createdAt": "2026-08-10T00:00:00.000Z"
|
||||
},
|
||||
"lines": [
|
||||
{}
|
||||
{
|
||||
"manifestarticle_id": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"warehouse_id": 1,
|
||||
"amount": 1,
|
||||
"text": "…"
|
||||
}
|
||||
],
|
||||
"ledger": [
|
||||
{
|
||||
|
||||
@@ -12,7 +12,7 @@ Auth via article category access. Browser-cacheable (`private`, `immutable`, `ET
|
||||
|
||||
| Param | Required | Type | Description |
|
||||
|-------|----------|------|-------------|
|
||||
| `fullHash` | yes | string | SHA-256 hex of the full image bytes |
|
||||
| `fullHash` | yes | string | 8-char alphanumeric hash of the full image bytes |
|
||||
|
||||
## Response `200`
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ Protected. Requires a valid session cookie (`credentials: 'include'`).
|
||||
Delete a virtual filesystem file
|
||||
|
||||
Deletes a file from both the on-disk virtual filesystem and database for the authenticated user's selected company.
|
||||
Deleting read-only database files (`image/*` or filenames containing 64-character hex hashes) is blocked with HTTP 403.
|
||||
Deleting read-only database files (`image/*` or filenames containing 8-character image hashes) is blocked with HTTP 403.
|
||||
|
||||
|
||||
## Path parameters
|
||||
|
||||
@@ -8,7 +8,7 @@ Uploads one or more files to the virtual filesystem for the authenticated user's
|
||||
Files are written to the company's VFS root directory and saved to the database.
|
||||
An optional `targetDir` form field specifies a subfolder within the VFS.
|
||||
|
||||
Writing to read-only database paths (`image/*` or filenames containing 64-character hex hashes) is
|
||||
Writing to read-only database paths (`image/*` or filenames containing 8-character image hashes) is
|
||||
forbidden and automatically skipped during upload.
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Supports multiple request payload formats:
|
||||
- Binary body: raw binary buffer with optional `Content-Type` header
|
||||
- Plain text: raw UTF-8 string
|
||||
|
||||
Modifying read-only database paths (`image/*` or filenames containing 64-character hex hashes) is blocked with HTTP 403.
|
||||
Modifying read-only database paths (`image/*` or filenames containing 8-character image hashes) is blocked with HTTP 403.
|
||||
|
||||
|
||||
## Path parameters
|
||||
|
||||
Reference in New Issue
Block a user