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