u
This commit is contained in:
@@ -34,13 +34,7 @@ Created child article
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"categoryId": 1,
|
||||
"name": "…",
|
||||
"sku": "…",
|
||||
"track_stock": true
|
||||
}
|
||||
"sku": "…"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -32,17 +32,10 @@ Attaches an existing article to this parent article. Idempotent if already a chi
|
||||
|
||||
## Response `200`
|
||||
|
||||
Attached child article and list of children
|
||||
List of children after attaching
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"categoryId": 1,
|
||||
"name": "…",
|
||||
"sku": "…",
|
||||
"track_stock": true
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"id": 1,
|
||||
|
||||
@@ -34,21 +34,11 @@ when `isParent` is `false`.
|
||||
}
|
||||
```
|
||||
|
||||
## Response `200`
|
||||
## Response `204`
|
||||
|
||||
Updated article
|
||||
Updated
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"categoryId": 1,
|
||||
"name": "…",
|
||||
"sku": "…",
|
||||
"track_stock": true
|
||||
}
|
||||
}
|
||||
```
|
||||
_No content_
|
||||
|
||||
## Errors
|
||||
|
||||
|
||||
@@ -29,99 +29,11 @@ Enables or disables inventory stock tracking for this article.
|
||||
|
||||
On success, emits SSE signal: `article-<sku>` (see [`GET /events`](../events.md)).
|
||||
|
||||
## Response `200`
|
||||
## Response `204`
|
||||
|
||||
Updated article detail
|
||||
Updated
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"slug": "…",
|
||||
"desc": "…",
|
||||
"seo": "…",
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
"photos": [
|
||||
{
|
||||
"sort": 1,
|
||||
"fullHash": "…",
|
||||
"fullW": 1,
|
||||
"fullH": 1,
|
||||
"fullSize": 1,
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
],
|
||||
"eans": [
|
||||
"…"
|
||||
],
|
||||
"prices": [
|
||||
{
|
||||
"minmultiplier": 1,
|
||||
"net": 1,
|
||||
"taxRate": 1,
|
||||
"customergroupId": 1
|
||||
}
|
||||
],
|
||||
"suppliers": [
|
||||
{
|
||||
"id": 1,
|
||||
"articleId": 1,
|
||||
"entityId": 1,
|
||||
"supplierName": "…",
|
||||
"sku": "…",
|
||||
"pu": 1,
|
||||
"stock": 1,
|
||||
"sort": 1,
|
||||
"priceId": 1,
|
||||
"price": {
|
||||
"net": 1,
|
||||
"taxId": 1,
|
||||
"taxRate": 1
|
||||
},
|
||||
"incoming": [
|
||||
{
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"undeliveredOrders": [
|
||||
{
|
||||
"orderId": 1,
|
||||
"orderNumber": "…",
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"customerName": "…",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
_No content_
|
||||
|
||||
## Errors
|
||||
|
||||
|
||||
@@ -33,13 +33,7 @@ Created
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"categoryId": 1,
|
||||
"name": "…",
|
||||
"sku": "…",
|
||||
"track_stock": true
|
||||
}
|
||||
"sku": "…"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -30,99 +30,11 @@ Pass `null` to clear the brand. Returns the same shape as GET by SKU.
|
||||
|
||||
On success, emits SSE signal: `article-<sku>` (see [`GET /events`](../events.md)).
|
||||
|
||||
## Response `200`
|
||||
## Response `204`
|
||||
|
||||
Updated article detail
|
||||
Updated
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"slug": "…",
|
||||
"desc": "…",
|
||||
"seo": "…",
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
"photos": [
|
||||
{
|
||||
"sort": 1,
|
||||
"fullHash": "…",
|
||||
"fullW": 1,
|
||||
"fullH": 1,
|
||||
"fullSize": 1,
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
],
|
||||
"eans": [
|
||||
"…"
|
||||
],
|
||||
"prices": [
|
||||
{
|
||||
"minmultiplier": 1,
|
||||
"net": 1,
|
||||
"taxRate": 1,
|
||||
"customergroupId": 1
|
||||
}
|
||||
],
|
||||
"suppliers": [
|
||||
{
|
||||
"id": 1,
|
||||
"articleId": 1,
|
||||
"entityId": 1,
|
||||
"supplierName": "…",
|
||||
"sku": "…",
|
||||
"pu": 1,
|
||||
"stock": 1,
|
||||
"sort": 1,
|
||||
"priceId": 1,
|
||||
"price": {
|
||||
"net": 1,
|
||||
"taxId": 1,
|
||||
"taxRate": 1
|
||||
},
|
||||
"incoming": [
|
||||
{
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"undeliveredOrders": [
|
||||
{
|
||||
"orderId": 1,
|
||||
"orderNumber": "…",
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"customerName": "…",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
_No content_
|
||||
|
||||
## Errors
|
||||
|
||||
|
||||
@@ -34,99 +34,11 @@ at least one category (empty array is rejected). Returns the same shape as GET b
|
||||
|
||||
On success, emits SSE signal: `article-<sku>` (see [`GET /events`](../events.md)).
|
||||
|
||||
## Response `200`
|
||||
## Response `204`
|
||||
|
||||
Updated article detail
|
||||
Updated
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"slug": "…",
|
||||
"desc": "…",
|
||||
"seo": "…",
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
"photos": [
|
||||
{
|
||||
"sort": 1,
|
||||
"fullHash": "…",
|
||||
"fullW": 1,
|
||||
"fullH": 1,
|
||||
"fullSize": 1,
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
],
|
||||
"eans": [
|
||||
"…"
|
||||
],
|
||||
"prices": [
|
||||
{
|
||||
"minmultiplier": 1,
|
||||
"net": 1,
|
||||
"taxRate": 1,
|
||||
"customergroupId": 1
|
||||
}
|
||||
],
|
||||
"suppliers": [
|
||||
{
|
||||
"id": 1,
|
||||
"articleId": 1,
|
||||
"entityId": 1,
|
||||
"supplierName": "…",
|
||||
"sku": "…",
|
||||
"pu": 1,
|
||||
"stock": 1,
|
||||
"sort": 1,
|
||||
"priceId": 1,
|
||||
"price": {
|
||||
"net": 1,
|
||||
"taxId": 1,
|
||||
"taxRate": 1
|
||||
},
|
||||
"incoming": [
|
||||
{
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"undeliveredOrders": [
|
||||
{
|
||||
"orderId": 1,
|
||||
"orderNumber": "…",
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"customerName": "…",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
_No content_
|
||||
|
||||
## Errors
|
||||
|
||||
|
||||
@@ -32,99 +32,11 @@ empty array clears all EANs. Returns the same shape as GET by SKU.
|
||||
|
||||
On success, emits SSE signal: `article-<sku>` (see [`GET /events`](../events.md)).
|
||||
|
||||
## Response `200`
|
||||
## Response `204`
|
||||
|
||||
Updated article detail
|
||||
Updated
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"slug": "…",
|
||||
"desc": "…",
|
||||
"seo": "…",
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
"photos": [
|
||||
{
|
||||
"sort": 1,
|
||||
"fullHash": "…",
|
||||
"fullW": 1,
|
||||
"fullH": 1,
|
||||
"fullSize": 1,
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
],
|
||||
"eans": [
|
||||
"…"
|
||||
],
|
||||
"prices": [
|
||||
{
|
||||
"minmultiplier": 1,
|
||||
"net": 1,
|
||||
"taxRate": 1,
|
||||
"customergroupId": 1
|
||||
}
|
||||
],
|
||||
"suppliers": [
|
||||
{
|
||||
"id": 1,
|
||||
"articleId": 1,
|
||||
"entityId": 1,
|
||||
"supplierName": "…",
|
||||
"sku": "…",
|
||||
"pu": 1,
|
||||
"stock": 1,
|
||||
"sort": 1,
|
||||
"priceId": 1,
|
||||
"price": {
|
||||
"net": 1,
|
||||
"taxId": 1,
|
||||
"taxRate": 1
|
||||
},
|
||||
"incoming": [
|
||||
{
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"undeliveredOrders": [
|
||||
{
|
||||
"orderId": 1,
|
||||
"orderNumber": "…",
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"customerName": "…",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
_No content_
|
||||
|
||||
## Errors
|
||||
|
||||
|
||||
@@ -50,99 +50,11 @@ Empty `prices` clears all POS prices. Returns the same shape as GET by SKU.
|
||||
|
||||
On success, emits SSE signal: `article-<sku>` (see [`GET /events`](../events.md)).
|
||||
|
||||
## Response `200`
|
||||
## Response `204`
|
||||
|
||||
Updated article detail
|
||||
Updated
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"slug": "…",
|
||||
"desc": "…",
|
||||
"seo": "…",
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
"photos": [
|
||||
{
|
||||
"sort": 1,
|
||||
"fullHash": "…",
|
||||
"fullW": 1,
|
||||
"fullH": 1,
|
||||
"fullSize": 1,
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
],
|
||||
"eans": [
|
||||
"…"
|
||||
],
|
||||
"prices": [
|
||||
{
|
||||
"minmultiplier": 1,
|
||||
"net": 1,
|
||||
"taxRate": 1,
|
||||
"customergroupId": 1
|
||||
}
|
||||
],
|
||||
"suppliers": [
|
||||
{
|
||||
"id": 1,
|
||||
"articleId": 1,
|
||||
"entityId": 1,
|
||||
"supplierName": "…",
|
||||
"sku": "…",
|
||||
"pu": 1,
|
||||
"stock": 1,
|
||||
"sort": 1,
|
||||
"priceId": 1,
|
||||
"price": {
|
||||
"net": 1,
|
||||
"taxId": 1,
|
||||
"taxRate": 1
|
||||
},
|
||||
"incoming": [
|
||||
{
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"undeliveredOrders": [
|
||||
{
|
||||
"orderId": 1,
|
||||
"orderNumber": "…",
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"customerName": "…",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
_No content_
|
||||
|
||||
## Errors
|
||||
|
||||
|
||||
@@ -30,99 +30,11 @@ Returns the same shape as GET by SKU.
|
||||
|
||||
On success, emits SSE signal: `article-<sku>` (see [`GET /events`](../events.md)).
|
||||
|
||||
## Response `200`
|
||||
## Response `204`
|
||||
|
||||
Updated article detail
|
||||
Updated
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"slug": "…",
|
||||
"desc": "…",
|
||||
"seo": "…",
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
"photos": [
|
||||
{
|
||||
"sort": 1,
|
||||
"fullHash": "…",
|
||||
"fullW": 1,
|
||||
"fullH": 1,
|
||||
"fullSize": 1,
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
],
|
||||
"eans": [
|
||||
"…"
|
||||
],
|
||||
"prices": [
|
||||
{
|
||||
"minmultiplier": 1,
|
||||
"net": 1,
|
||||
"taxRate": 1,
|
||||
"customergroupId": 1
|
||||
}
|
||||
],
|
||||
"suppliers": [
|
||||
{
|
||||
"id": 1,
|
||||
"articleId": 1,
|
||||
"entityId": 1,
|
||||
"supplierName": "…",
|
||||
"sku": "…",
|
||||
"pu": 1,
|
||||
"stock": 1,
|
||||
"sort": 1,
|
||||
"priceId": 1,
|
||||
"price": {
|
||||
"net": 1,
|
||||
"taxId": 1,
|
||||
"taxRate": 1
|
||||
},
|
||||
"incoming": [
|
||||
{
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"undeliveredOrders": [
|
||||
{
|
||||
"orderId": 1,
|
||||
"orderNumber": "…",
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"customerName": "…",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
_No content_
|
||||
|
||||
## Errors
|
||||
|
||||
|
||||
@@ -36,99 +36,11 @@ Patches article fields. At least one of `name`, `unitamount`, `unitSi` required.
|
||||
|
||||
On success, emits SSE signal: `articles` (see [`GET /events`](../events.md)).
|
||||
|
||||
## Response `200`
|
||||
## Response `204`
|
||||
|
||||
Updated article detail
|
||||
Updated
|
||||
|
||||
```json
|
||||
{
|
||||
"article": {
|
||||
"id": 1,
|
||||
"sku": "…",
|
||||
"name": "…",
|
||||
"slug": "…",
|
||||
"desc": "…",
|
||||
"seo": "…",
|
||||
"track_stock": true,
|
||||
"unitamount": 1,
|
||||
"weight": 1,
|
||||
"unit": {
|
||||
"si": "…",
|
||||
"basesi": "…",
|
||||
"basesifactor": 1,
|
||||
"symbol": "…",
|
||||
"name": "…"
|
||||
},
|
||||
"brand": {
|
||||
"id": 1,
|
||||
"name": "…",
|
||||
"fullHash": "…",
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
},
|
||||
"categoryIds": [
|
||||
1
|
||||
],
|
||||
"photos": [
|
||||
{
|
||||
"sort": 1,
|
||||
"fullHash": "…",
|
||||
"fullW": 1,
|
||||
"fullH": 1,
|
||||
"fullSize": 1,
|
||||
"thumbW": 1,
|
||||
"thumbH": 1,
|
||||
"thumbHash": "…"
|
||||
}
|
||||
],
|
||||
"eans": [
|
||||
"…"
|
||||
],
|
||||
"prices": [
|
||||
{
|
||||
"minmultiplier": 1,
|
||||
"net": 1,
|
||||
"taxRate": 1,
|
||||
"customergroupId": 1
|
||||
}
|
||||
],
|
||||
"suppliers": [
|
||||
{
|
||||
"id": 1,
|
||||
"articleId": 1,
|
||||
"entityId": 1,
|
||||
"supplierName": "…",
|
||||
"sku": "…",
|
||||
"pu": 1,
|
||||
"stock": 1,
|
||||
"sort": 1,
|
||||
"priceId": 1,
|
||||
"price": {
|
||||
"net": 1,
|
||||
"taxId": 1,
|
||||
"taxRate": 1
|
||||
},
|
||||
"incoming": [
|
||||
{
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"undeliveredOrders": [
|
||||
{
|
||||
"orderId": 1,
|
||||
"orderNumber": "…",
|
||||
"date": "2026-08-10T00:00:00.000Z",
|
||||
"customerName": "…",
|
||||
"amount": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
_No content_
|
||||
|
||||
## Errors
|
||||
|
||||
|
||||
Reference in New Issue
Block a user