OAuth ermöglicht es anderen Kunden von Notiondesk, Ihre App mit ihrem Workspace zu verbinden, ohne einen API-Schlüssel teilen zu müssen. Der Kunde meldet sich bei Notiondesk an, prüft die Anfragen Ihrer App und bestätigt sie. Ihre App erhält ein Zugriffstoken für die REST-API von Notiondesk, das der Kunde jederzeit widerrufen kann. Dieser Artikel beschreibt die Registrierung Ihrer App, die Ausführung des OAuth 2.0-Autorisierungscode-Flows mit PKCE, die Aktualisierung von Tokens und die Fehlerbehandlung.
Wann sollte man OAuth anstelle eines API-Schlüssels verwenden?
| OAuth-Zugriffstoken | Workspace-API-Schlüssel | |
|---|---|---|
| Verwenden Sie es für | Eine App, die andere Notiondesk-Kunden verbindet: ein SaaS-Produkt, eine Marktplatzintegration, ein Reporting-Tool | Automatisierungen, die Sie für Ihren eigenen Arbeitsbereich ausführen: ein Skript, ein geplanter Job, ein CI-Schritt |
| Wer erschafft es? | Der Kunde, indem er Ihre App genehmigt | Sie finden die API-Schlüssel unter Einstellungen > Entwickler > API-Schlüssel |
| Lebensdauer | Zugriffstoken: 1 Stunde. Aktualisierungstoken: 30 Tage, wird bei jeder Aktualisierung erneuert. | Bis zum Ablauf, der Rotation oder dem Widerruf |
| Entzogen von | Einstellungen > Entwickler > Verbundene Apps | Einstellungen > Entwickler > API-Schlüssel |
Jede Notiondesk API-Route akzeptiert beide Arten von Anmeldeinformationen und beantwortet sie auf die gleiche Weise: mit den gleichen Bereichen, Antworten und Fehlern.
Was Ihre App wissen muss
| Artikel | Wert |
|---|---|
| Metadaten des Autorisierungsservers | https://api.notiondesk.so/.well-known/oauth-authorization-server |
| Autorisierungsendpunkt | https://api.notiondesk.so/oauth/authorize |
| Token-Endpunkt | https://api.notiondesk.so/oauth/token |
| Client-Registrierungs-Endpunkt | https://api.notiondesk.so/oauth/register |
| Ressource | https://api.notiondesk.so |
| Zielfernrohre | read, write, sync, admin |
| Förderarten | authorization_code mit PKCE und refresh_token |
| PKCE-Methode | S256 nur |
Lesen Sie die Endpunkte aus dem Metadatendokument des Autorisierungsservers, anstatt sie fest zu kodieren.
Schritt 1: Registrieren Sie Ihre App
Einmalige Registrierung mit dynamischer Kundenregistrierung :
Die Antwort 201 Created enthält Ihre client_id und, da Sie client_secret_post angefordert haben, auch eine client_secret. Das Geheimnis wird nur einmal angezeigt; speichern Sie es zusammen mit Ihren anderen Servergeheimnissen.
Mit "token_endpoint_auth_method": "none" ist Ihre App ein öffentlicher Client ohne Geheimnisse, und PKCE schützt den Codeaustausch.
Anstatt sich zu registrieren, können Sie die HTTPS-URL eines Client-Metadatendokuments als client_id verwenden. Notiondesk ruft das Dokument ab, sobald ein Kunde Ihre App autorisiert, und speichert es bis zu fünf Minuten lang im Cache.
Umleitungs-URI-Regeln
curl -X POST "https://api.notiondesk.so/oauth/register" \
-H "Content-Type: application/json" \
-d '{"client_name": "Acme Reports", "redirect_uris": ["https://acme.example/oauth/callback"], "token_endpoint_auth_method": "client_secret_post"}'- Verwenden Sie
httpsoderhttpauf einem Loopback-Host:127.0.0.1,localhostoder[::1].
- Eine Loopback-Weiterleitung funktioniert auf jedem Port. Jede andere Weiterleitung muss exakt übereinstimmen.
- Platzhalter, Fragmente, Anmeldeinformationen vor dem Hostnamen (
user@), Backslashes, Nicht-ASCII-Zeichen und prozentkodierte Hostnamen werden abgelehnt.
- Der Host, den ein Kunde auf dem Zustimmungsbildschirm sieht, stammt aus Ihren Redirect-URIs oder Ihrer
client_id-URL. Registrieren Sie nur Hosts, die Ihnen gehören.
Schritt 2: Den Kunden an Notiondesk weiterleiten
Erstellen Sie eine zufällige code_verifier-Zahl und leiten Sie anschließend die code_challenge-Zahl als SHA-256-Hash des Prüfers ab, kodiert in base64url ( PKCE ). Leiten Sie den Browser des Kunden um zu:
https://api.notiondesk.so/oauth/authorize
?response_type=code
&client_id=YOUR_CLIENT_ID
&redirect_uri=https%3A%2F%2Facme.example%2Foauth%2Fcallback
&scope=read%20write
&state=RANDOM_STATE
&code_challenge=YOUR_CODE_CHALLENGE
&code_challenge_method=S256
&resource=https%3A%2F%2Fapi.notiondesk.soresourceist erforderlich und muss exakthttps://api.notiondesk.soentsprechen: Kleinbuchstaben, kein abschließender Schrägstrich, kein Pfad. Ein fehlender oder abweichender Wert beantwortetinvalid_request.
scopeist eine durch Leerzeichen getrennte Liste. Fragen Sie nur nach den Bereichen, die Ihre App verwendet.
stateschützt vor Cross-Site-Request-Forgery. Überprüfen Sie dies, wenn der Kunde zurückkehrt.
Ein für die Notiondesk REST-API ausgestelltes Token funktioniert nur mit der REST-API. Ein für Workspace MCP ausgestelltes Token wird von der REST-API abgelehnt, und umgekehrt.
Schritt 3: Der Kunde genehmigt Ihre App
Notiondesk zeigt den Zustimmungsbildschirm an. Der Kunde meldet sich an und sieht den Namen und Host Ihrer App, seinen Arbeitsbereich und die Berechtigungen Ihrer Anfrage, die seine Rolle zulässt. Er genehmigt oder lehnt die gesamte Anfrage ab.
Die Berechtigungen, die Ihre App erhalten kann, hängen von der Workspace-Rolle des Kunden ab:
| Rolle des Kunden | Bereiche, die Ihre App empfangen kann |
|---|---|
| Betrachter- oder Abrechnungsmanager | read |
| Editor | read, write, sync |
| Administrator oder Arbeitsbereichsinhaber | read, write, sync, admin |
Mit admin kann Ihre App das Branding des Hilfecenters ändern, Integrationen konfigurieren, deren Skripte im öffentlichen Hilfecenter geladen werden, und Weiterleitungen löschen. Fordern Sie diese Option nur an, wenn Ihre App diese Routen verwendet.
Der Kunde kann die Anfrage nicht genehmigen, wenn:
- Ihre Rolle erlaubt keinen der von Ihnen angeforderten Aufgabenbereiche;
- Ihr Arbeitsbereich verfügt nicht über API-Zugriff. Auf dem Zustimmungsbildschirm wird dann angezeigt: „Der Arbeitsbereichsplan beinhaltet keinen API-Zugriff.“ Für den API-Zugriff ist ein Enterprise-Plan erforderlich.
Nach der Genehmigung leitet der Browser Sie mit den Informationen code, Ihrem state und iss, der Kennung des Autorisierungsservers Notiondesk, zurück zu Ihrer Adresse redirect_uri. Verweigert der Kunde die Authentifizierung, wird stattdessen die Adresse error=access_denied weitergeleitet.
Schritt 4: Tausche den Code gegen Token ein
Der Code ist 60 Sekunden lang gültig und kann nur einmal verwendet werden:
Lassen Sie client_secret für einen öffentlichen Client weg. Die Antwort:
scope listet die vom Kunden gewährten Berechtigungen auf; diese können geringer sein als die von Ihnen angeforderten. Speichern Sie beide Token auf Ihrem Server.
Schritt 5: Rufen Sie die Notiondesk API auf.
Senden Sie das Zugriffstoken als Bearer-Token, genau wie einen API-Schlüssel:
Die Gültigkeitsbereiche des Tokens sind auf die aktuelle Rolle des genehmigenden Kunden beschränkt: Wenn ein Kunde zur Rolle „Viewer“ wechselt, bleibt Ihrer App nur noch der Bereich „read“ erhalten, und eine Route, die einen fehlenden Bereich benötigt, antwortet mit dem Fehlercode 403 „insufficient_scope“.
Ratenlimit-Budgets und Idempotency-Key-Werte gehören zur jeweiligen Berechtigung. Jede Genehmigung stellt eine neue Berechtigung mit eigenen Budgets und Schlüsseln dar, und eine Token-Aktualisierung erhält beides.
Schritt 6: Zugriffstoken aktualisieren
Ein Zugriffstoken ist eine Stunde gültig. Bevor es abläuft, tauschen Sie das Aktualisierungstoken gegen ein neues Paar ein:
Bei jeder Aktualisierung wird ein neues Aktualisierungstoken zurückgegeben, das 30 Tage gültig ist und das zuvor gesendete Token ungültig macht. Speichern Sie das neue Aktualisierungstoken, bevor Sie das neue Zugriffstoken verwenden.
curl -X POST "https://api.notiondesk.so/oauth/token" \
-d grant_type=authorization_code \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d code=THE_CODE \
-d code_verifier=YOUR_CODE_VERIFIER \
-d redirect_uri=https://acme.example/oauth/callback{
"access_token": "eyJ...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "8f3c...",
"scope": "read write"
}curl "https://api.notiondesk.so/sites" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "nd-version: 2026-10-16"curl -X POST "https://api.notiondesk.so/oauth/token" \
-d grant_type=refresh_token \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d refresh_token=THE_REFRESH_TOKENWie Kunden Ihre App widerrufen
Workspace-Inhaber und Administratoren sehen alle Apps mit Zugriff auf ihren Workspace unter Einstellungen > Entwickler > Verbundene Apps . Apps, die die REST-API verwenden, zeigen die REST-API in der Spalte „ Zugriff“ an, zusammen mit der App, der Person, die sie autorisiert hat, ihren Berechtigungen und ihrer letzten Aktivität. Durch das Widerrufen der Berechtigung wird diese sofort beendet: Zugriffstoken und Aktualisierungstoken sind für die nächste Anfrage ungültig.
Eine Förderung endet auch von selbst:
- nach 30 Tagen ohne Aktualisierung;
- wenn sein Aktualisierungstoken wiederverwendet wird.
Solange der genehmigende Kunde nicht über die für eine Route erforderliche Rolle verfügt oder der Workspace-Plan keinen API-Zugriff besitzt, werden Anfragen abgelehnt. Sie funktionieren wieder, sobald die Rolle oder der Plan vor Ablauf der Berechtigung wiederhergestellt ist.
Fehlerbehebung bei Notiondesk OAuth
Die Autorisierungs- und Token-Endpunkte beantworten Standard-OAuth-Fehler, nicht den API-Fehlerumschlag Notiondesk:
{"error": "invalid_grant", "error_description": "Invalid authorization code."}error | Status | Wann |
|---|---|---|
invalid_request | 400 | Ein Parameter fehlt oder ist ungültig: ein unbekannter resource, eine fehlende PKCE-Challenge, ein nicht registrierter redirect_uri, ein unbekannter Client am Autorisierungsendpunkt oder ein nicht unterstützter grant_type. |
invalid_client | 401 | Das Client-Geheimnis fehlt oder ist falsch. |
invalid_grant | 400 | Der Code oder das Aktualisierungstoken ist unbekannt, abgelaufen, bereits verwendet oder widerrufen, code_verifier oder redirect_uri stimmt nicht überein, oder der Token-Endpunkt kennt den Client nicht. |
server_error | 500 | Notiondesk ist fehlgeschlagen; bitte später erneut versuchen. |
Der Autorisierungsendpunkt zeigt diese Fehler selbst an und leitet ungültige Anfragen niemals an Ihre redirect_uri weiter. Eine verweigerte Zustimmung erreicht Ihre App nur durch die error=access_denied-Weiterleitung.
API-Aufrufe selbst antworten mit dem API-Fehlercode Notiondesk . Ein abgelaufenes oder widerrufenes Zugriffstoken antwortet mit dem Statuscode 401 authentication_error und der Meldung „Ungültiger oder fehlender API-Schlüssel.“, der gleichen Meldung, die bei einem nicht verwendbaren API-Schlüssel ausgegeben wird.
Häufig gestellte Fragen
Kann ich die Notiondesk API von einer Single-Page-Anwendung mit OAuth aufrufen?
Nein. Browserbasierte Clients werden nicht unterstützt. Führen Sie den OAuth-Ablauf und jeden API-Aufruf auf Ihrem Server aus und halten Sie Tokens vom Browser fern.
Wie lange ist ein Notiondesk Zugriffstoken gültig?
Eine Stunde. Aktualisieren Sie die Berechtigung mit dem Aktualisierungstoken, das 30 Tage gültig ist und bei jeder Aktualisierung ersetzt wird. Eine Berechtigung, die 30 Tage lang nicht aktualisiert wird, erlischt.
Kann meine OAuth-App Workspace MCP verwenden?
Nein. Ein für die REST-API ausgestelltes Token mit dem Präfix resource=https://api.notiondesk.so wird von Workspace MCP abgelehnt. Workspace MCP stellt eigene Token für KI-Clients aus.
Warum hat meine App weniger Berechtigungen erhalten als angefordert?
Die Rolle des Kunden im Arbeitsbereich schränkt die Berechtigungen ein. Ein Redakteur kann die Berechtigungen read, write und sync erteilen, jedoch nicht admin. Das Feld scope der Token-Antwort listet die erteilten Berechtigungen auf.