đ APIâAuthentifizierung & Fehlercodes
Dieser Artikel erklĂ€rt die Anmeldung (HTTP Basic Auth) an der ValueStreamer REST API, zeigt HeaderâBeispiele fĂŒr verschiedene Tools und fasst die wichtigsten HTTPâFehlercodes samt typischer Ursachen und Lösungen zusammen.
đ Inhalt
- Voraussetzungen
- Authentifizierung (HTTP Basic Auth)
- Beispiele nach Tool (cURL, Postman, Power Automate, Python)
- Media Types (ContentâType & Accept)
- Fehlercodes & Ursachen
- TroubleshootingâCheckliste
- FAQ
Voraussetzungen
-
đ Dedizierter APIâBenutzer je Mandant (Tenant). Nicht mitarbeiterindividuell.
âčïž Hinweis: Ănderungen am API-Benutzer (z. B. PasswortĂ€nderungen) können nur ĂŒber den ValueStreamer Support erfolgen. -
đ Nur HTTPS:
https://api-<tenant>.valuestreamer.de/api/
-
đ§Ș Tool zur RequestâAusfĂŒhrung (z.âŻB. Postman, Swagger UI, Power Automate, Python, ...).
Authentifizierung (HTTP Basic Auth)
Die REST API verwendet HTTP Basic Auth. Benutzername und Passwort werden Base64âkodiert im Authorization
âHeader ĂŒbertragen.
HeaderâBeispiel:
Authorization: Basic <Base64(username:password)>
âš Tipp: Testen Sie die Anmeldedaten zuerst mit einem einfachen GET
(z.âŻB. /exchange/teams
).
â ïž Achtung: Es gibt kein Ablaufdatum fĂŒr den APIâBenutzer. Behandeln Sie Zugangsdaten dennoch wie Secrets.
đ§° Beispiele nach Tool
cURL
curl -X GET \
"https://api-<tenant>.valuestreamer.de/api/exchange/teams" \
-H "Authorization: Basic <BASE64>" \
-H "Accept: application/json"
Postman
-
Auth â Type: Basic Auth â Username/Password eintragen.
-
Headers â
Accept
/Content-Type
nach Endpunkt setzen (siehe unten).
Power Automate (HTTPâAktion)
-
Methode, URL eintragen.
-
Kopfzeilen:
Authorization: Basic <BASE64>
,Content-Type: âŠ
,Accept: âŠ
-
Körper: JSON gemÀà EndpunktâSchema.
Python (requests)
import requests
from requests.auth import HTTPBasicAuth
url = "https://api-<tenant>.valuestreamer.de/api/exchange/teams"
r = requests.get(url, auth=HTTPBasicAuth("<USER>", "<PASS>"))
print(r.status_code, r.json())
đ·ïž Media Types (ContentâType & Accept)
Die API verwendet versionsspezifische Media Types. Richten Sie Accept und ggf. ContentâType am jeweiligen Modul aus:
Modul / Kontext | Accept / ContentâType |
---|---|
KPI v2 | application/vs.v2.0+json |
List Editor v2 | application/vs.v2.0+json |
Prozessboard v1 | application/vs.pb.v1.0.0+json |
Taskboard v1 | application/json (falls nicht anders angegeben) |
Deviation / Countermeasures v1 | i.âŻd.âŻR. application/json bzw. modulÂspezifische Varianten |
âš Tipp: In den YAMLâSpezifikationen je Modul sind die exakten Media Types pro Endpunkt ausgewiesen.
đŠ Fehlercodes & Ursachen
Antworten folgen dem StandardâSchema (Beispiel):
{
"errorId": 0,
"errorMessage": "string"
}
Code | Bedeutung | Typische Ursache | Lösung |
200/201 | OK / Created | Request korrekt | â |
204 | Record deleted | Löschvorgang erfolgreich, kein Body | â |
400 | Bad Request | UngĂŒltiger Body, fehlende Felder, falsche UUID/Datentyp | RequestâSchema gegen YAML prĂŒfen; Pflichtfelder setzen; Datentypen korrigieren |
401 | Not authorized | Falsche/fehlende BasicâAuth | Benutzer/Passwort prĂŒfen; Base64 korrekt? Nur HTTPS verwenden |
404 | Not found | Ressource/ID existiert nicht oder falscher Pfad | IDs/URL prĂŒfen; vorher GET auf MetaâEndpunkte ausfĂŒhren |
409 | Conflict | Regel verletzt (z.âŻB. Duplikat, ungĂŒltiger Zustand) | Payload anpassen; GeschĂ€ftsregeln in Artikel/YAML beachten |
415 | Unsupported Media Type | Falscher Content-Type /Accept |
Media Type laut Modul setzen (Tabelle oben) |
422 | Unprocessable Entity | Valide JSON, aber fachlich inkonsistent | Pflichtbeziehungen/Validierungen prĂŒfen (z.âŻB. Status/Message) |
500 | Internal Server Error | Unerwarteter Fehler | Request minimieren, spÀter erneut versuchen; Support mit errorId , Zeitstempel & Payload kontaktieren |
âčïž Hinweis: Nicht jeder Endpunkt nutzt alle Codes; maĂgeblich ist die jeweilige OpenAPIâSpezifikation (YAML/Swagger).
đ§ TroubleshootingâCheckliste
-
Auth korrekt? Basic Auth aktiv, Base64 ohne Zeilenumbruch.
-
HTTPS? Nur
https://
zulÀssig. -
Media Types stimmen (
Accept
/ContentâType
). -
Pflichtfelder laut YAML gesetzt?
-
IDs validieren (Team/KPI/List/Phase etc. per MetaâGET holen).
-
GeschĂ€ftsregeln beachten (z.âŻB. Statuswechsel benötigt
statusMessage
). -
MinimalâPayload testen, dann Felder schrittweise ergĂ€nzen.
-
Fehlerdetails dokumentieren:
status
,errorId
,errorMessage
, Zeitstempel, AnfrageâID (falls vorhanden).
â FAQ
Gibt es individuelle APIâBenutzer pro Mitarbeiter?
Nein. Jeder Mandant hat einen dedizierten APIâBenutzer. Personenbezogene Logins sind fĂŒr APIâZugriffe nicht vorgesehen.
UnterstĂŒtzt die API Webhooks oder Tokenâbasierte Auth?
Aktuell nein. Es wird ausschlieĂlich HTTP Basic Auth ĂŒber HTTPS unterstĂŒtzt.
Wo finde ich die vollstÀndigen Fehlercodes und Media Types?
In den YAMLâDateien der jeweiligen Module; auĂerdem sind BeispielâResponses in Swagger/der PDFâDoku sichtbar.
Warum erhalte ich 401 trotz korrekter Zugangsdaten?
Meist fehlt der Header ganz oder die Base64âKodierung enthĂ€lt Sonderzeichen/Whitespace. In Postman Basic Auth verwenden (nicht selbst kodieren).
Wann verwende ich 415 vs. 400?415
= Header/Format falsch; 400
= Format korrekt, aber Inhalt/Schema fehlerhaft.