upload all
This commit is contained in:
586
backend/openapi.yaml
Normal file
586
backend/openapi.yaml
Normal file
@@ -0,0 +1,586 @@
|
||||
openapi: 3.0.3
|
||||
info:
|
||||
title: Certigo Addon API
|
||||
description: API für die Verwaltung von Spaces, FQDNs und Certificate Signing Requests (CSRs)
|
||||
version: 1.0.0
|
||||
contact:
|
||||
name: Certigo Addon
|
||||
|
||||
servers:
|
||||
- url: http://localhost:8080/api
|
||||
description: Local development server
|
||||
|
||||
paths:
|
||||
/health:
|
||||
get:
|
||||
summary: System Health Check
|
||||
description: Prüft den Systemstatus des Backends
|
||||
tags:
|
||||
- System
|
||||
responses:
|
||||
'200':
|
||||
description: System ist erreichbar
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/HealthResponse'
|
||||
|
||||
/stats:
|
||||
get:
|
||||
summary: Statistiken abrufen
|
||||
description: Ruft Statistiken über die Anzahl der Spaces, FQDNs und CSRs ab
|
||||
tags:
|
||||
- System
|
||||
responses:
|
||||
'200':
|
||||
description: Statistiken erfolgreich abgerufen
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/StatsResponse'
|
||||
|
||||
/spaces:
|
||||
get:
|
||||
summary: Alle Spaces abrufen
|
||||
description: Ruft eine Liste aller Spaces ab
|
||||
tags:
|
||||
- Spaces
|
||||
responses:
|
||||
'200':
|
||||
description: Liste der Spaces
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Space'
|
||||
|
||||
post:
|
||||
summary: Space erstellen
|
||||
description: Erstellt einen neuen Space
|
||||
tags:
|
||||
- Spaces
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CreateSpaceRequest'
|
||||
responses:
|
||||
'201':
|
||||
description: Space erfolgreich erstellt
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Space'
|
||||
'400':
|
||||
description: Ungültige Anfrage
|
||||
|
||||
/spaces/{id}:
|
||||
delete:
|
||||
summary: Space löschen
|
||||
description: Löscht einen Space. Wenn der Space FQDNs enthält, muss der Parameter deleteFqdns=true gesetzt werden.
|
||||
tags:
|
||||
- Spaces
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
- name: deleteFqdns
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: boolean
|
||||
default: false
|
||||
description: Wenn true, werden alle FQDNs des Spaces mitgelöscht
|
||||
responses:
|
||||
'200':
|
||||
description: Space erfolgreich gelöscht
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/MessageResponse'
|
||||
'404':
|
||||
description: Space nicht gefunden
|
||||
'409':
|
||||
description: Space enthält noch FQDNs
|
||||
|
||||
/spaces/{id}/fqdns/count:
|
||||
get:
|
||||
summary: FQDN-Anzahl abrufen
|
||||
description: Ruft die Anzahl der FQDNs für einen Space ab
|
||||
tags:
|
||||
- FQDNs
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
responses:
|
||||
'200':
|
||||
description: Anzahl der FQDNs
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CountResponse'
|
||||
|
||||
/spaces/{id}/fqdns:
|
||||
get:
|
||||
summary: Alle FQDNs eines Spaces abrufen
|
||||
description: Ruft alle FQDNs für einen Space ab
|
||||
tags:
|
||||
- FQDNs
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
responses:
|
||||
'200':
|
||||
description: Liste der FQDNs
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/FQDN'
|
||||
'404':
|
||||
description: Space nicht gefunden
|
||||
|
||||
post:
|
||||
summary: FQDN erstellen
|
||||
description: Erstellt einen neuen FQDN innerhalb eines Spaces
|
||||
tags:
|
||||
- FQDNs
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CreateFQDNRequest'
|
||||
responses:
|
||||
'201':
|
||||
description: FQDN erfolgreich erstellt
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/FQDN'
|
||||
'400':
|
||||
description: Ungültige Anfrage
|
||||
'404':
|
||||
description: Space nicht gefunden
|
||||
'409':
|
||||
description: FQDN existiert bereits in diesem Space
|
||||
|
||||
delete:
|
||||
summary: Alle FQDNs eines Spaces löschen
|
||||
description: Löscht alle FQDNs eines Spaces
|
||||
tags:
|
||||
- FQDNs
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
responses:
|
||||
'200':
|
||||
description: Alle FQDNs erfolgreich gelöscht
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/DeleteResponse'
|
||||
|
||||
/spaces/{id}/fqdns/{fqdnId}:
|
||||
delete:
|
||||
summary: FQDN löschen
|
||||
description: Löscht einen einzelnen FQDN
|
||||
tags:
|
||||
- FQDNs
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
- name: fqdnId
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
responses:
|
||||
'200':
|
||||
description: FQDN erfolgreich gelöscht
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/MessageResponse'
|
||||
'404':
|
||||
description: FQDN nicht gefunden
|
||||
|
||||
/fqdns:
|
||||
delete:
|
||||
summary: Alle FQDNs global löschen
|
||||
description: Löscht alle FQDNs aus allen Spaces. Erfordert confirm=true Query-Parameter.
|
||||
tags:
|
||||
- FQDNs
|
||||
parameters:
|
||||
- name: confirm
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
type: boolean
|
||||
description: Muss true sein, um die Operation auszuführen
|
||||
responses:
|
||||
'200':
|
||||
description: Alle FQDNs erfolgreich gelöscht
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/DeleteResponse'
|
||||
'400':
|
||||
description: Bestätigung erforderlich
|
||||
|
||||
/csrs:
|
||||
delete:
|
||||
summary: Alle CSRs global löschen
|
||||
description: Löscht alle CSRs aus allen Spaces. Erfordert confirm=true Query-Parameter.
|
||||
tags:
|
||||
- CSRs
|
||||
parameters:
|
||||
- name: confirm
|
||||
in: query
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
description: Muss "true" sein, um die Operation auszuführen
|
||||
example: "true"
|
||||
responses:
|
||||
'200':
|
||||
description: Alle CSRs erfolgreich gelöscht
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/DeleteResponse'
|
||||
'400':
|
||||
description: Bestätigung erforderlich
|
||||
|
||||
/spaces/{spaceId}/fqdns/{fqdnId}/csr:
|
||||
post:
|
||||
summary: CSR hochladen
|
||||
description: Lädt einen CSR (Certificate Signing Request) im PEM-Format hoch
|
||||
tags:
|
||||
- CSRs
|
||||
parameters:
|
||||
- name: spaceId
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
- name: fqdnId
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
multipart/form-data:
|
||||
schema:
|
||||
type: object
|
||||
required:
|
||||
- csr
|
||||
- spaceId
|
||||
- fqdn
|
||||
properties:
|
||||
csr:
|
||||
type: string
|
||||
format: binary
|
||||
description: CSR-Datei im PEM-Format
|
||||
spaceId:
|
||||
type: string
|
||||
description: ID des Spaces
|
||||
fqdn:
|
||||
type: string
|
||||
description: Name des FQDNs
|
||||
responses:
|
||||
'201':
|
||||
description: CSR erfolgreich hochgeladen
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CSR'
|
||||
'400':
|
||||
description: Ungültige Anfrage oder ungültiges CSR-Format
|
||||
'404':
|
||||
description: Space oder FQDN nicht gefunden
|
||||
|
||||
get:
|
||||
summary: CSR(s) abrufen
|
||||
description: Ruft CSR(s) für einen FQDN ab. Mit latest=true wird nur der neueste CSR zurückgegeben.
|
||||
tags:
|
||||
- CSRs
|
||||
parameters:
|
||||
- name: spaceId
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
- name: fqdnId
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
- name: latest
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: boolean
|
||||
default: false
|
||||
description: Wenn true, wird nur der neueste CSR zurückgegeben
|
||||
responses:
|
||||
'200':
|
||||
description: CSR(s) erfolgreich abgerufen
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/CSR'
|
||||
- type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/CSR'
|
||||
'404':
|
||||
description: FQDN nicht gefunden
|
||||
|
||||
components:
|
||||
schemas:
|
||||
HealthResponse:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: string
|
||||
example: "ok"
|
||||
message:
|
||||
type: string
|
||||
example: "Backend ist erreichbar"
|
||||
time:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2024-01-15T10:30:00Z"
|
||||
|
||||
StatsResponse:
|
||||
type: object
|
||||
properties:
|
||||
spaces:
|
||||
type: integer
|
||||
example: 5
|
||||
fqdns:
|
||||
type: integer
|
||||
example: 12
|
||||
csrs:
|
||||
type: integer
|
||||
example: 7
|
||||
|
||||
Space:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
format: uuid
|
||||
example: "550e8400-e29b-41d4-a716-446655440000"
|
||||
name:
|
||||
type: string
|
||||
example: "Mein Space"
|
||||
description:
|
||||
type: string
|
||||
example: "Beschreibung des Spaces"
|
||||
createdAt:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2024-01-15T10:30:00Z"
|
||||
|
||||
CreateSpaceRequest:
|
||||
type: object
|
||||
required:
|
||||
- name
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
example: "Mein Space"
|
||||
description:
|
||||
type: string
|
||||
example: "Beschreibung des Spaces"
|
||||
|
||||
FQDN:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
format: uuid
|
||||
example: "660e8400-e29b-41d4-a716-446655440000"
|
||||
spaceId:
|
||||
type: string
|
||||
format: uuid
|
||||
example: "550e8400-e29b-41d4-a716-446655440000"
|
||||
fqdn:
|
||||
type: string
|
||||
example: "example.com"
|
||||
description:
|
||||
type: string
|
||||
example: "Beschreibung des FQDN"
|
||||
createdAt:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2024-01-15T10:30:00Z"
|
||||
|
||||
CreateFQDNRequest:
|
||||
type: object
|
||||
required:
|
||||
- fqdn
|
||||
properties:
|
||||
fqdn:
|
||||
type: string
|
||||
example: "example.com"
|
||||
description:
|
||||
type: string
|
||||
example: "Beschreibung des FQDN"
|
||||
|
||||
Extension:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
example: "2.5.29.37"
|
||||
oid:
|
||||
type: string
|
||||
example: "2.5.29.37"
|
||||
name:
|
||||
type: string
|
||||
example: "X509v3 Extended Key Usage"
|
||||
critical:
|
||||
type: boolean
|
||||
example: false
|
||||
value:
|
||||
type: string
|
||||
example: "301406082b0601050507030106082b06010505070302"
|
||||
description:
|
||||
type: string
|
||||
example: "TLS Web Server Authentication\n TLS Web Client Authentication"
|
||||
purposes:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["TLS Web Server Authentication", "TLS Web Client Authentication"]
|
||||
|
||||
CSR:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
format: uuid
|
||||
example: "770e8400-e29b-41d4-a716-446655440000"
|
||||
fqdnId:
|
||||
type: string
|
||||
format: uuid
|
||||
example: "660e8400-e29b-41d4-a716-446655440000"
|
||||
spaceId:
|
||||
type: string
|
||||
format: uuid
|
||||
example: "550e8400-e29b-41d4-a716-446655440000"
|
||||
fqdn:
|
||||
type: string
|
||||
example: "example.com"
|
||||
csrPem:
|
||||
type: string
|
||||
example: "-----BEGIN CERTIFICATE REQUEST-----\n...\n-----END CERTIFICATE REQUEST-----"
|
||||
subject:
|
||||
type: string
|
||||
example: "CN=example.com"
|
||||
publicKeyAlgorithm:
|
||||
type: string
|
||||
example: "RSA"
|
||||
signatureAlgorithm:
|
||||
type: string
|
||||
example: "SHA256-RSA"
|
||||
keySize:
|
||||
type: integer
|
||||
example: 2048
|
||||
dnsNames:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["example.com", "www.example.com"]
|
||||
emailAddresses:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["admin@example.com"]
|
||||
ipAddresses:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["192.168.1.1"]
|
||||
uris:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
example: ["https://example.com"]
|
||||
extensions:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Extension'
|
||||
createdAt:
|
||||
type: string
|
||||
format: date-time
|
||||
example: "2024-01-15T10:30:00Z"
|
||||
|
||||
MessageResponse:
|
||||
type: object
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
example: "Operation erfolgreich"
|
||||
|
||||
CountResponse:
|
||||
type: object
|
||||
properties:
|
||||
count:
|
||||
type: integer
|
||||
example: 5
|
||||
|
||||
DeleteResponse:
|
||||
type: object
|
||||
properties:
|
||||
message:
|
||||
type: string
|
||||
example: "Alle FQDNs erfolgreich gelöscht"
|
||||
deletedCount:
|
||||
type: integer
|
||||
example: 5
|
||||
|
||||
securitySchemes:
|
||||
{}:
|
||||
type: http
|
||||
scheme: none
|
||||
|
||||
Reference in New Issue
Block a user