API-Referenz Gutscheine
Der Endpunkt vouchers/ stellt Ihnen eine Schnittstelle zur Verfügung mit der Sie Gutscheine in unserem Shop-System verwalten können. Mit dieser Schnittstelle können Sie Gutscheine erzeugen, löschen, Vorlagen erstellen und und vorhandene Gutscheine einsehen.
Inhaltsverzeichnis:
1. Unterstützte Methoden
Angabe aller unterstützten Methoden.
Befehl/Info | Endpunkte | GET | PUT | POST | DELETE |
|---|---|---|---|---|---|
Gutscheine | vouchers/ | ||||
Gutschein-Chargen | vouchers/charges/ | ||||
Gutschein-Blaupausen | vouchers/templates/ | ||||
Gutschein-Vorlagen | vouchers/presets/ |
2. Datenfelder
2.1 Datenfelder eines Gutscheins
Name | Typ | Bedeutung |
|---|---|---|
active | Boolean | Gibt an, ob der Gutschein aktiv ist (true = aktiv, false = deaktiviert). |
chargeId | String | ID der Charge, zu der der Gutschein gehört. |
createdAt | String | Zeitpunkt der Erstellung des Gutscheins. |
id | String | Eindeutige ID des Gutscheins. |
labels | String[] | Tags oder Bezeichnungen zur Gruppierung oder Identifikation des Gutscheins (z. B. Marketingaktionen). |
maxUseCount | Integer | Maximale Anzahl an Einlösungen, bevor der Gutschein deaktiviert wird. |
pool | Boolean | Gibt an, ob der Gutschein Teil eines Pools ist (gemeinsamer Kontingent). |
types.appOnly | Boolean | Gutschein kann nur über die App eingelöst werden. |
types.discount | Boolean | Werbegutschein / Kaufgutschein |
types.freeShipping | Boolean | Gutschein gewährt kostenlosen Versand. |
types.keepSurplus | Boolean | Verbleibender Restwert darf behalten und später erneut eingelöst werden. |
types.multipleCustomer | Boolean | Gutschein ist mehrfach von verschiedenen Kunden einlösbar. |
types.newCustomersOnly | Boolean | Gutschein darf nur von Neukunden verwendet werden. |
types.maxUseCountSet | Boolean | Gutschein ist pro Benutzer begrenzt einlösbar. |
types.maxUseCountPerUser | Integer | Maximale Anzahl an Einlösungen pro Benutzer |
updatedAt | String | Zeitpunkt der letzten Aktualisierung des Gutscheins. |
validCustomers[].id | Integer | ID eines Kunden, der berechtigt ist, den Gutschein einzulösen. |
validCustomers[].number | String | Kundennummer eines berechtigten Kunden. |
validProducts[].number | String | Produktnummer, für das der Gutschein gültig ist. |
validProducts[].quantity | Integer | Mindestanzahl des Produkts im Warenkorb, damit Gutschein gilt. |
validSubshops[] | String[] | Liste der Subshop-IDs, in denen der Gutschein gültig ist. |
values[].currency | String | Währungscode (z. B. EUR, GBP), für den der jeweilige Wert gilt. |
values[].percentValue | Float | Prozentualer Rabatt (z. B. 0.1 für 10 %). |
values[].taxId | String | Steuer-ID, die auf den Gutscheinwert angewendet wird. |
values[].usedValue | Float | Bereits eingelöster Wert des Gutscheins (für Mehrfachnutzung). |
values[].value | Float | Gesamtwert des Gutscheins in der jeweiligen Währung. |
values[].minOrderValue | Float | Mindestbestellwert in der Währung, um den Gutschein einzulösen. |
Beispiel:
{
"active": true,
"chargeId": "example-charge",
"createdAt": "2025-01-17T07:57:26.000Z",
"id": "VOUCHER-XY57Z3",
"labels": [
"summer2025"
],
"maxUseCount": 5,
"pool": false,
"types": {
"appOnly": false,
"discount": false,
"freeShipping": false,
"keepSurplus": true,
"multipleCustomer": false,
"newCustomersOnly": false,
"maxUseCountPerUser": 122
"maxUseCountSet": true
},
"updatedAt": "2025-01-17T07:57:26.000Z",
"validCustomers": [
{
"id": 48
},
{
"number": "1234"
}
],
"validProducts": [
{
"number": "go1",
"quantity": 1
}
],
"validSubshops": [
"deutsch",
],
"values": [
{
"currency": "EUR",
"percentValue": 0.0,
"taxId": "",
"usedValue": 10.0,
"value": 42.0
},
{
"currency": "GBP",
"minOrderValue": 50.0,
"percentValue": 0.0,
"taxId": "",
"value": 10.0
}
]
} |
2.2 Datenfelder einer Gutschein-Charge
Name | Typ | Bedeutung |
|---|---|---|
createdAt | String | Zeitpunkt der Erstellung der Gutscheinladung (ISO 8601-Format, UTC). |
creator | Integer | ID des Benutzers, der die Charge erstellt hat. |
description | String | Freitextbeschreibung der Gutschein-Charge. |
id | String | Eindeutige ID der Gutschein-Charge. |
name | String | Name der Gutschein-Charge. |
redeemed | Integer | Gibt an, ob Gutscheine der Charge eingelöst wurden. Mögliche Werte:
|
updatedAt | String | Zeitpunkt der letzten Aktualisierung der Charge (ISO 8601-Format, UTC). |
voucherChargeCount | Integer | Anzahl der mit dieser Charge erstellten Gutscheine. |
voucherData | Objekt | Details zu Gutscheinen. Alle Felder stimmen mit den Feldern der Gutscheine überein. |
Beispiel:
{
"createdAt": "2025-04-11T13:25:53.000Z",
"creator": 1,
"description": "",
"id": "82",
"name": "myCharge",
"redeemed": 0,
"updatedAt": "2025-04-11T13:25:53.000Z",
"voucherChargeCount": 1,
"voucherData": {
"labels": [
"82"
],
"maxUseCount": 999,
"pool": false,
"types": {
"appOnly": false,
"discount": true,
"freeShipping": true,
"keepSurplus": false,
"maxUseCountSet": false,
"multipleCustomer": true,
"newCustomersOnly": false
},
"validProducts": [
{
"id": "100-41232",
"quantity": 1
}
],
"values": [
{
"currency": "EUR",
"minOrderValue": 1,
"percentValue": 0,
"taxId": "19",
"usedValue": 0,
"value": 55
}
]
}
}
2.3 Datenfelder einer Gutschein-Vorlage
Name | Typ | Bedeutung |
|---|---|---|
active (optional) | Boolean | Gibt an, ob die Blaupause aktiv ist. |
createdAt | String | Zeitpunkt, zu dem die Blaupause erstellt wurde (ISO 8601-Format, UTC). |
templateId | String | Technische ID oder eindeutiger Name der Gutscheinblaupause. |
updatedAt | String | Zeitpunkt der letzten Aktualisierung der Blaupause (ISO 8601-Format, UTC). |
validFrom (optional) | String | Beginn der Gültigkeit. |
validUntil (optional) | String | Ende der Gültigkeit. |
Weitere Felder stimmen mit den Feldern der Gutscheine überein.
Beispiel:
{
"active": true,
"chargeId": "53",
"createdAt": "2025-04-09T08:57:59.000Z",
"labels": [],
"templateId": "newTemplateName2",
"types": {
"appOnly": false,
"discount": false,
"freeShipping": false,
"keepSurplus": false,
"maxUseCountSet": false,
"multipleCustomer": false,
"newCustomersOnly": false
},
"updatedAt": "2025-04-29T08:48:39.000Z",
"values": [
{
"currency": "EUR",
"minOrderValue": 10,
"percentValue": 0,
"taxId": "",
"value": 1
}
]
}
2.4 Datenfelder einer Gutschein-Vorlage
Name | Typ | Bedeutung |
|---|---|---|
createdAt | String | Zeitpunkt, zu dem die Vorlage erstellt wurde (ISO 8601-Format, UTC). |
updatedAt | String | Zeitpunkt der letzten Aktualisierung der Vorlage (ISO 8601-Format, UTC). |
presetId | String | Technische ID oder eindeutiger Name der Gutscheinvorlage. |
system | Boolean | Gibt an, ob die Vorlage von Websale bereitgestellt wurde. Bei solchen Vorlagen können nicht alle Felder bearbeitet werden. |
data.count | Integer | Anzahl der Gutscheine |
data.data | Objekt | Details zum Gutschein. Alle Felder stimmen mit den Feldern der Gutscheine überein. |
Beispiel:
{
"createdAt": "1970-01-01T00:33:45.000Z",
"data": {
"count": 1,
"data": {
"active": true,
"basketProducts": [],
"chargeId": "",
"labels": [],
"maxUseCount": 19,
"name": "myPreset",
"types": {
"appOnly": false,
"discount": true,
"freeShipping": false,
"keepSurplus": false,
"maxUseCountSet": false,
"multipleCustomer": true
},
"values": [
{
"currency": "GBP",
"minOrderValue": 40,
"taxId": "19",
"value": 20
}
]
}
},
"presetId": "myPreset",
"system": false,
"updatedAt": "1970-01-01T00:33:45.000Z"
}
3. Methoden zur Verwaltung von Gutscheinen
In diesem Abschnitt werden alle Endpunkte zur Verwaltung einzelner Gutscheine beschrieben. Über die Schnittstelle können Gutscheine erstellt, aktualisiert, gelöscht und abgerufen werden. Die Verwaltung von Gutschein-Chargen wird in einem eigenen Abschnitt separat behandelt.
Für alle Operationen sind entsprechende Lese-, Schreib-, Erstell- oder Löschberechtigungen erforderlich.
3.1 GET vouchers
Diese Methode liefert eine paginierte Liste aller im System vorhandenen Gutscheine.
Über Filter- und Sortierparameter können die Ergebnisse gezielt eingeschränkt und geordnet werden. Die zurückgegebenen Gutscheindaten umfassen Informationen zu Aktivität, Gültigkeit, Einlösebedingungen und Wertangaben.
Für den Zugriff sind Leseberechtigungen erforderlich.
Beispiel:
https://www.<ihr-shop>.de/admin/api/v1/vouchers?size=100Antwort:
{
"endReached": true,
"items": [
{
"active": true,
"chargeId": "example-charge",
"createdAt": "2025-01-17T07:57:26.000Z",
"id": "VOUCHER-XY57Z3",
"labels": [
"summer2025"
],
"maxUseCount": 5,
"pool": false,
"types": {
"appOnly": false,
"discount": false,
"freeShipping": false,
"keepSurplus": true,
"multipleCustomer": false,
"newCustomersOnly": false,
"oncePerUser": false
},
"updatedAt": "2025-01-17T07:57:26.000Z",
"validCustomers": [
{
"id": 48
},
{
"number": "1234"
}
],
"validProducts": [
{
"number": "go1",
"quantity": 1
}
],
"validSubshops": [
"deutsch",
],
"values": [
{
"currency": "EUR",
"percentValue": 0.0,
"taxId": "",
"usedValue": 10.0,
"value": 42.0
},
{
"currency": "GBP",
"minOrderValue": 50.0,
"percentValue": 0.0,
"taxId": "",
"value": 10.0
}
]
}
],
"nextPageToken": "Mw",
"totalCount": 1
}Filterfelder:
id, active, pool, chargeId, createdAt, updatedAt, validFrom, validUntil, maxUseCount
Sortierfelder:
id, active, pool, chargeId, createdAt, updatedAt, validFrom, validUntil, maxUseCount
Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Gutschein-Daten. |
400 Bad Request | "invalidValue" |
|
400 Bad Request | "unknownDataField" | Ein Filter- oder Sortierfeld ist ungültig. |
400 Bad Request | "unknownOperation" | Ein Filtertyp ist ungültig. |
400 Bad Request | "invalidCharacters" |
|
400 Bad Request | "syntaxError" |
|
3.2 PUT vouchers/{id} - Coming soon
Diese Methode aktualisiert die Eigenschaften eines bestehenden Gutscheins anhand seiner eindeutigen ID. Über den Request-Body können verschiedene Felder wie Aktivierungsstatus, Gültigkeitszeiträume, Werte oder Einlösebedingungen geändert werden. Nach erfolgreicher Aktualisierung wird eine Bestätigung zurückgegeben.
Schreibberechtigungen für Gutschein-Daten sind erforderlich.
Diese Methode ist derzeit noch nicht implementiert und für eine zukünftige Version geplant.
Beispiel:
https://www.<ihr-shop>.de/admin/api/v1/vouchers/1CUA-8341-FD8Q-KPJ2Antwort:
{
"updateVoucher": "not implemented"
}Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Gutschein-Daten. |
3.3 POST vouchers
Diese Methode erstellt einen oder mehrere neue Gutscheine. Die Gutscheine können entweder einer neuen Charge zugeordnet oder an eine bestehende Charge angehängt werden. Damit eine neue Charge erstellt wird, muss das Feld chargeId im Request Body leer sein.
Pro Anfrage können maximal 10.000 Gutscheine erstellt werden. Nach erfolgreicher Erstellung werden die zugehörige Charge-ID sowie die Anzahl der erzeugten Gutscheine zurückgegeben.
Erstellberechtigungen für Gutschein-Daten sind erforderlich.
Beispiel:
https://www.<ihr-shop>.de/admin/api/v1/vouchersRequest Body:
{
"count": 1,
"data": {
"active": true,
"name": "cvcv89",
"chargeId": "",
"maxUseCount": 1,
"values": [
{
"value": 55,
"currency": "GBP",
"minOrderValue": 55,
"taxId": ""
}
],
"types": {
"keepSurplus": false,
"discount": true,
"freeShipping": false,
"oncePerUser": true,
"multipleCustomer": true,
"appOnly": false
},
"basketProducts": [],
"labels": []
}
}Antwort:
{
"chargeId": "122",
"count": 1
}Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen von Gutschein-Daten. |
400 Bad Request |
| Request body konnte nicht geladen werden. |
400 Bad Request | "invalidFormat" |
|
400 Bad Request | "missing" |
|
400 Bad Request | "invalidValue" |
|
400 Bad Request | "invalidCombination" |
|
400 Bad Request | "duplicateEntry" |
|
© 2025 WEBSALE AG | Impressum | Datenschutz