172 lines
4.7 KiB
YAML
172 lines
4.7 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: Label Printer API
|
|
description: API voor het beheren, afdrukken en downloaden van etiketten/labels via gLabels en CUPS.
|
|
version: 1.0.0
|
|
servers:
|
|
- url: http://localhost:3000
|
|
description: Lokale ontwikkelaars-server
|
|
paths:
|
|
/labels:
|
|
get:
|
|
summary: Haal een lijst op van alle beschikbare labels en hun velden
|
|
operationId: getLabels
|
|
responses:
|
|
'200':
|
|
description: Succesvol ophalen van labels
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/LabelInfo'
|
|
'500':
|
|
description: Serverfout bij ophalen labels
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
example: "Fout bij ophalen labels: ..."
|
|
|
|
/print:
|
|
post:
|
|
summary: Verstuur een label printopdracht naar de CUPS printer
|
|
operationId: printLabel
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PrintRequest'
|
|
responses:
|
|
'200':
|
|
description: Afdrukopdracht succesvol verzonden
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
example: "Labels geprint!"
|
|
'404':
|
|
description: Label sjabloon niet gevonden
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
example: "Label adres niet gevonden."
|
|
'500':
|
|
description: Fout bij genereren of afdrukken van de labels
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
example: "Print fout: ..."
|
|
|
|
/download:
|
|
post:
|
|
summary: Genereer en bekijk/download het gegenereerde label als PDF of PNG afbeelding
|
|
operationId: downloadLabel
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/DownloadRequest'
|
|
responses:
|
|
'200':
|
|
description: Het gegenereerde label in PDF of PNG formaat
|
|
content:
|
|
application/pdf:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
image/png:
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
'404':
|
|
description: Label sjabloon niet gevonden
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
example: "Label adres niet gevonden."
|
|
'500':
|
|
description: Fout bij genereren of converteren van het label
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
example: "Fout: ..."
|
|
|
|
components:
|
|
schemas:
|
|
LabelInfo:
|
|
type: object
|
|
required:
|
|
- name
|
|
- fields
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Naam van het labelbestand (zonder .glabels extensie)
|
|
example: etenopslag
|
|
fields:
|
|
type: array
|
|
description: Lijst van dynamische variabelen in het sjabloon
|
|
items:
|
|
type: string
|
|
example: ["Product", "Datum"]
|
|
|
|
LabelDataPayload:
|
|
type: object
|
|
required:
|
|
- labelName
|
|
properties:
|
|
labelName:
|
|
type: string
|
|
description: Naam van het sjabloon
|
|
example: etenopslag
|
|
headers:
|
|
type: array
|
|
description: Kolomkoppen voor de samenvoeggegevens (CSV headers)
|
|
items:
|
|
type: string
|
|
example: ["Product", "Datum"]
|
|
data:
|
|
type: array
|
|
description: Rijen met gegevens corresponderend met de headers
|
|
items:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: [["Aardappelpuree", "15-04-2026"]]
|
|
|
|
PrintRequest:
|
|
allOf:
|
|
- $ref: '#/components/schemas/LabelDataPayload'
|
|
- type: object
|
|
properties:
|
|
copies:
|
|
type: integer
|
|
minimum: 1
|
|
default: 1
|
|
description: Aantal af te drukken kopieën
|
|
example: 2
|
|
|
|
DownloadRequest:
|
|
allOf:
|
|
- $ref: '#/components/schemas/LabelDataPayload'
|
|
- type: object
|
|
properties:
|
|
format:
|
|
type: string
|
|
enum: [pdf, png]
|
|
default: pdf
|
|
description: Gewenste uitvoerformaat (pdf of png)
|
|
example: png
|
|
rotate:
|
|
type: number
|
|
default: 0
|
|
description: Rotatie in graden bij png formaat (bijv. 270)
|
|
example: 270
|