add openapi
This commit is contained in:
+171
@@ -0,0 +1,171 @@
|
|||||||
|
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
|
||||||
Reference in New Issue
Block a user