4.5 KiB
LicServer API Spezifikation (v1)
Dokumentation der REST-Schnittstellen des CASPOS Lizenzservers.
1. Endpunkte (Port 9981 - Activation API)
Activation (Aktivierung)
POST /v1/activate
Aktiviert eine neue Lizenz.
Request Body (application/json):
{
"productId": "string",
"productVersion": "string",
"activationCode": "string",
"hardwareBindingType": "string",
"hardwareBindingId": "string"
}
Response 200 OK (application/json):
{
"licenseData": {
"id": "string",
"serialNumber": "string",
"productId": "string",
"filename": "string",
"content": "string" // Base64 Byte-Inhalt
},
"apiKey": "string",
"secret": "string"
}
Response Headers:
ETag(string): Der ETag-Wert der Lizenz.
POST /v1/activate-existing
Aktiviert eine bereits vorhandene Lizenz erneut.
Request Body (application/json):
{
"productId": "string",
"productVersion": "string",
"serialNumber": "string",
"proofOfPossessionHash": "string",
"salt": "string",
"hardwareBindingType": "string",
"hardwareBindingId": "string"
}
Response 200 OK (application/json):
Gleiche Struktur wie bei /v1/activate.
Licenses (Lizenzen)
GET /v1/licenses/{id}
Holt die Lizenz-Details zu einer bestimmten Lizenz-ID.
Request Parameters:
id(path, string, required): Die UUID der Lizenz.If-None-Match(header, string, optional): ETag zur Cache-Validierung.
Response 200 OK (application/json):
{
"id": "string",
"serialNumber": "string",
"productId": "string",
"filename": "string",
"content": "string" // Base64 Byte-Inhalt
}
Response 304 Not Modified:
Falls die Lizenz nicht verändert wurde.
Response 404 Not Found / 403 Forbidden:
Standard Fehlerobjekt ProblemDetails.
2. Endpunkte (Port 9980 - Management API)
Alle Anfragen an die Management-API müssen authentifiziert sein.
- Header-Format:
X-Api-Key: <Schlüssel>
Partners (Partner)
GET /api-v1/partners
Gibt eine paginierte Liste aller Partner zurück.
Request Parameters (Query):
search(string, optional): Filtert nach Name/E-Mail.page(integer, default: 1)pageSize(integer, default: 20)
Response 200 OK (application/json):
{
"page": 1,
"pageSize": 20,
"totalCount": 1,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false,
"items": [
{
"id": "string (UUID)",
"name": "string",
"email": "string",
"erpId": "string"
}
]
}
GET /api-v1/partners/{id}
Holt Partner-Details zu einer bestimmten ID.
Response 200 OK (application/json):
{
"id": "string (UUID)",
"name": "string",
"email": "string",
"erpId": "string"
}
Customers (Kunden von Partnern)
GET /api-v1/partners/{partnerId}/customers
Gibt eine paginierte Liste aller Kunden eines bestimmten Partners zurück.
Request Parameters (Query):
search(string, optional): Filtert nach Name/E-Mail.page(integer, default: 1)pageSize(integer, default: 20)
Response 200 OK (application/json):
{
"page": 1,
"pageSize": 20,
"totalCount": 1,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false,
"items": [
{
"id": "string (UUID)",
"name": "string",
"street": "string",
"houseNumber": "string",
"houseNumberAddon": "string",
"zipCode": "string",
"city": "string",
"countryCode": "string",
"email": "string",
"partnerId": "string (UUID)",
"erpId": "string"
}
]
}
GET /api-v1/partners/{partnerId}/customers/{customerId}
Holt detaillierte Kundeninformationen.
Response 200 OK (application/json):
{
"id": "string (UUID)",
"name": "string",
"street": "string",
"houseNumber": "string",
"houseNumberAddon": "string",
"zipCode": "string",
"city": "string",
"countryCode": "string",
"email": "string",
"partnerId": "string (UUID)",
"erpId": "string",
"partnerName": "string",
"taxNumber": "string",
"vatIdNumber": "string",
"notes": "string",
"locations": []
}
3. Typen & Schemas
LicenseData
{
"id": "string",
"serialNumber": "string",
"productId": "string",
"filename": "string",
"content": "string" // Base64 Byte-Inhalt
}
ProblemDetails
{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string"
}