This commit is contained in:
seb
2026-10-31 21:02:53 +01:00
parent 5a0b603306
commit dd5c9646b3
23 changed files with 1462 additions and 223 deletions

View File

@@ -28,7 +28,12 @@ List of agent printers
"model": "…",
"serial": "…",
"enabled": true,
"sort": 1
"sort": 1,
"open": true,
"pause": true,
"error": true,
"online": true,
"labelLength": 1
}
]
}

View File

@@ -25,7 +25,12 @@ Agent printer details
"model": "…",
"serial": "…",
"enabled": true,
"sort": 1
"sort": 1,
"open": true,
"pause": true,
"error": true,
"online": true,
"labelLength": 1
}
}
```

View File

@@ -44,7 +44,12 @@ Updated agent printer
"model": "…",
"serial": "…",
"enabled": true,
"sort": 1
"sort": 1,
"open": true,
"pause": true,
"error": true,
"online": true,
"labelLength": 1
}
}
```

View File

@@ -48,6 +48,7 @@ emits `{ sender, brandId }`.
| `printer` | `{}` | `POST /printer`, `PUT /printer/{id}`, `PATCH /printer/{id}`, `DELETE /printer/{id}` |
| `printeragent` | `{}` | `PUT /printeragent`, `PATCH /printeragent/{id}`, `DELETE /printeragent/{id}`, printer agent connect/disconnect/state |
| `agentprinter` | `{ printers }` or `{}` | `PATCH /agentprinter/{id}`, `PUT /agentprinter/order`, `DELETE /agentprinter/{id}`, agent state updates / printer discovery |
| `printerjob` | `{ job }` or `{ jobId, state }` | `POST /zpljob`, `POST /printerjob`, `POST /printerjob/{id}/cancel`, `DELETE /printerjob/{id}`, agent job state updates |
| `warehouse` | `{}` | `POST /warehouse`, `PUT /warehouse/{id}`, `PATCH /warehouse/{id}`, `DELETE /warehouse/{id}` |
| `supplier` | `{}` | `POST /supplier`, `PATCH /supplier/{id}`, `DELETE /supplier/{id}` |
| `vfs` | `{}` | VFS uploads and filesystem mutations such as `POST /vfs/upload`, `POST /vfs/mkdir`, `POST /vfs/rename`, `PUT /vfs/{*path}`, `DELETE /vfs/{*path}` |

View File

@@ -0,0 +1,46 @@
# `GET /printerjob`
Protected. Requires a valid session cookie (`credentials: 'include'`).
List printer jobs
Lists printer jobs for the selected company, optionally filtered by agent printer or state.
## Query parameters
| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `agentprinterId` | no | integer | Optional agent printer ID filter |
| `state` | no | string | Optional job state filter |
## Response `200`
List of printer jobs
```json
{
"printerjobs": [
{
"id": 1,
"agentprinterId": 1,
"printeragentId": 1,
"type": "zpl",
"state": "pending",
"data": "…",
"createdAt": "2026-08-10T00:00:00.000Z",
"completedAt": "2026-08-10T00:00:00.000Z"
}
]
}
```
## Errors
| Status | Description |
|--------|-------------|
| 400 | No company selected — `{"error":"…"}` |
| 401 | Unauthorized — `{"error":"…"}` |
---
_Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._

View File

@@ -0,0 +1,50 @@
# `POST /printerjob`
Protected. Requires a valid session cookie (`credentials: 'include'`).
Create print job
Creates a new print job for an agent printer. Notifies the agent in real time.
## Body (JSON)
| Field | Required | Type | Description |
|-------|----------|------|-------------|
| `agentprinterId` | yes | integer | |
| `type` | no | string | |
| `data` | yes | string | |
```json
{
"agentprinterId": 1,
"type": "zpl",
"data": "…"
}
```
## Signals
On success, emits SSE signal: `printerjob` (see [`GET /events`](../events.md)).
## Response `201`
Printer job created
```json
{
"printerjob": {
"id": 1,
"agentprinterId": 1,
"printeragentId": 1,
"type": "zpl",
"state": "pending",
"data": "…",
"createdAt": "2026-08-10T00:00:00.000Z",
"completedAt": "2026-08-10T00:00:00.000Z"
}
}
```
---
_Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._

View File

@@ -0,0 +1,43 @@
# `DELETE /printerjob/{id}`
Protected. Requires a valid session cookie (`credentials: 'include'`).
Cancel and delete printer job
Cancels and deletes a print job. If the job was pending or processing, sends a cancellation
event to the connected printer agent before deletion.
## Path parameters
| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `id` | yes | integer | |
## Signals
On success, emits SSE signal: `printerjob` (see [`GET /events`](../events.md)).
## Response `200`
Job cancelled and deleted
```json
{
"success": true,
"deletedJob": {
"id": 1,
"agentprinterId": 1,
"printeragentId": 1,
"type": "zpl",
"state": "pending",
"data": "…",
"createdAt": "2026-08-10T00:00:00.000Z",
"completedAt": "2026-08-10T00:00:00.000Z"
}
}
```
---
_Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._

View File

@@ -0,0 +1,44 @@
# `GET /printerjob/{id}`
Protected. Requires a valid session cookie (`credentials: 'include'`).
Get printer job
Retrieves details of a specific printer job by ID.
## Path parameters
| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `id` | yes | integer | |
## Response `200`
Printer job details
```json
{
"printerjob": {
"id": 1,
"agentprinterId": 1,
"printeragentId": 1,
"type": "zpl",
"state": "pending",
"data": "…",
"createdAt": "2026-08-10T00:00:00.000Z",
"completedAt": "2026-08-10T00:00:00.000Z"
}
}
```
## Errors
| Status | Description |
|--------|-------------|
| 400 | Invalid ID or no company selected — `{"error":"…"}` |
| 401 | Unauthorized — `{"error":"…"}` |
| 404 | Printer job not found — `{"error":"…"}` |
---
_Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._

View File

@@ -0,0 +1,41 @@
# `POST /printerjob/{id}/cancel`
Protected. Requires a valid session cookie (`credentials: 'include'`).
Cancel printer job
Marks a print job as cancelled and notifies the connected agent in real time.
## Path parameters
| Param | Required | Type | Description |
|-------|----------|------|-------------|
| `id` | yes | integer | |
## Signals
On success, emits SSE signal: `printerjob` (see [`GET /events`](../events.md)).
## Response `200`
Printer job cancelled
```json
{
"success": true,
"printerjob": {
"id": 1,
"agentprinterId": 1,
"printeragentId": 1,
"type": "zpl",
"state": "pending",
"data": "…",
"createdAt": "2026-08-10T00:00:00.000Z",
"completedAt": "2026-08-10T00:00:00.000Z"
}
}
```
---
_Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._

60
docs/api/routes/zpljob.md Normal file
View File

@@ -0,0 +1,60 @@
# `POST /zpljob`
Protected. Requires a valid session cookie (`credentials: 'include'`).
Create ZPL print job
Issues a new ZPL print job to an agent printer. If copiescount > 1, the ZPL quantity command (^PQ)
is automatically applied. The connected printer agent receives an immediate real-time event.
## Body (JSON)
| Field | Required | Type | Description |
|-------|----------|------|-------------|
| `agentprinterId` | yes | integer | Target agent printer ID |
| `copiescount` | no | integer | Optional copy count (defaults to 1) |
| `data` | yes | string | Raw ZPL string |
```json
{
"agentprinterId": 1,
"copiescount": 2,
"data": "^XA^FO50,50^ADN,36,20^FDHello Zebra^FS^XZ"
}
```
## Signals
On success, emits SSE signal: `printerjob` (see [`GET /events`](../events.md)).
## Response `201`
Print job created
```json
{
"printerjob": {
"id": 1,
"agentprinterId": 1,
"printeragentId": 1,
"type": "zpl",
"state": "pending",
"data": "…",
"createdAt": "2026-08-10T00:00:00.000Z",
"completedAt": "2026-08-10T00:00:00.000Z"
}
}
```
## Errors
| Status | Description |
|--------|-------------|
| 400 | Invalid input or missing fields — `{"error":"…"}` |
| 401 | Unauthorized — `{"error":"…"}` |
| 404 | Agent printer not found — `{"error":"…"}` |
---
_Generated from `@openapi` JSDoc. Do not edit by hand — run `npm run docs:api`._