vin oder bank_account_number) enthalten, weshalb auf den entsprechenden Dienstseiten ausschließlich cURL angezeigt wird.
Installieren
Konfigurieren
Jedes SDK liest dieselben Umgebungsvariablen aus, sodass ein ohne Optionen erstellter Client sofort einsatzbereit ist. Edge-Laufzeitumgebungen verfügen über keine Prozessumgebung: Übergeben Sie den API-Schlüssel dem Node.js-Client dort als Option.
Alles, was Sie über die Umgebung festlegen können, lässt sich auch an den Client übergeben – zusammen mit der Basis-URL, dem Timeout, Wiederholungsversuchen, Standard-Headern und Ihrem eigenen HTTP-Client. Erstellen Sie einen Client pro Prozess und teilen Sie ihn: Er verwaltet einen Connection-Pool und kann sicher über mehrere Threads oder Tasks hinweg verwendet werden.
Die
account-Methoden (programmatische Registrierung: Registrieren, Anmelden, Organisationen und Anwendungen) rufen https://apx.didit.me/auth/v2 auf und senden Ihren API-Schlüssel zu keinem Zeitpunkt. Melden Sie sich mit account.login an und übergeben Sie das zurückgegebene Access-Token anschließend als Account-Token an den Client.
Was jedes SDK bietet
- Ressourcen und Methoden. Aufrufe folgen den Ressourcen der API:
client.<resource>.<method>(...), beispielsweisesessions.create,sessions.retrieve_decisionodertransactions.create, in der jeweiligen Schreibweise der Sprache. Pfad-IDs sind Positionsargumente; Body und Query bilden eine Gruppe benannter Felder. Python, Node.js, PHP und Ruby verwenden die API-eigenen Feldnamen (workflow_id); Go, Java und .NET nutzen die Konventionen ihrer jeweiligen Sprache (WorkflowID,workflowId,WorkflowId). - Listen. Listenmethoden paginieren automatisch durch alle Ergebnisse für Sie (unter Verwendung von
limitundoffset) und stellen zudem jede Seite mitcount,next,previousundresultsbereit. In Ruby iteriertauto_paging_eachdurch jede Seite, wobeitotal_count,next_urlundprevious_urleiner Seite den Felderncount,nextundpreviousder API entsprechen. - Dateien. Uploads (Dokumentbilder, Selfies, Adressnachweise, Importe) akzeptieren einen Pfad, Bytes oder einen Stream. Downloads (Sitzungs-PDFs, Berichte) geben Bytes oder einen Stream zurück, niemals geparstes JSON.
- Vorwärtskompatibilität. Ein Antwortfeld oder ein Enum-Wert, den die SDK-Version noch nicht kennt, wird beibehalten und bleibt lesbar, ohne einen Fehler auszulösen. So führt eine API-Erweiterung nicht zu Problemen in einer produktiven Integration.
- Webhooks.
webhooks.verifyprüft die HeaderX-Signature-V2undX-Signaturesowie den Zeitstempel einer Zustellung anhand Ihres Webhook-Secrets und gibt ein typisiertes Ereignis zurück. Es akzeptiert eine Liste von Secrets, während Sie ein Secret rotieren. Das Signaturschema finden Sie unter Webhooks. - Authentifizierung. Ein
Authentication-Helper verifiziert die Access- und ID-Token, die der Aussteller Ihrer Authentication signiert, und ruft dessen Token-, Sitzungs- und Step-up-Endpoints auf. Er verwendet Ihren API-Schlüssel zu keinem Zeitpunkt.
Fehler, Wiederholungsversuche und Timeouts
Jeder Fehler leitet sich von
DiditError ab. In Go implementiert jeder Fehler das didit.Error-Interface und ist ein Zeigertyp wie *didit.NotFoundError. Java, PHP und .NET benennen sie mit ihrem üblichen Exception-Suffix und schreiben API als Api: DiditException, ApiStatusException, NotFoundException.
Die SDKs wiederholen eine fehlgeschlagene Anfrage bis zu 2-mal mit exponentiellem Backoff ab 0,5 Sekunden (Full Jitter, maximal 8 Sekunden) und unter Berücksichtigung von Retry-After. GET, HEAD, PUT und DELETE werden bei Verbindungsfehlern, Timeouts, 408, 429 und 5xx wiederholt. POST und PATCH werden nur bei 429 wiederholt oder wenn die Verbindung vor dem Senden der Anfrage fehlgeschlagen ist, sodass ein Wiederholungsversuch niemals eine zweite Sitzung oder Transaktion erstellt. Das Standard-Timeout beträgt 60 Sekunden. Jede Antwort gibt außerdem den rohen HTTP-Status, die Header und die Request-ID zurück. Siehe Rate-Limiting für die Grenzwerte hinter 429.
Versionierung und Support
- Die SDKs folgen semantischer Versionierung mit einer Regel für API-Änderungen. Eine Änderung, die die Didit-API widerspiegelt, ist ein Minor-Release, selbst wenn sie zu Fehlern in typisiertem Code führen kann (ein Feld, dessen Typ sich geändert hat, ein Feld, das jetzt null sein kann, oder ein entfernter Endpoint, ein entferntes Feld oder ein entfernter Enum-Wert): Die API verhält sich für jeden Aufrufer bereits so, daher ist eine ältere SDK-Version nicht sicherer. In den Release Notes werden solche Änderungen unter „API changes that can break typed code“ aufgeführt.
- Eine Major-Version gibt es nur bei einer Änderung am Design des SDKs selbst: eine Methode oder Ressource wird umbenannt oder entfernt, während die API sie beibehält, eine Änderung an der Client-Konfiguration, an Fehlern, Wiederholungsversuchen, Paginierung oder dem Verhalten der Webhook-Verifizierung oder eine nicht mehr unterstützte Laufzeitversion. Wenn ein Endpoint die API verlässt oder seine Methode umbenannt wird, bleibt die alte Methode für mindestens eine weitere Minor-Version als veraltet markiert bestehen, sodass Ihr Code weiterhin gebaut werden kann, während Sie zur neuen Methode wechseln. Jede Sprache behält ihre eigene Versionsnummer: Node.js, PHP und Ruby sind bei 2.x und die anderen bei 1.x, da diese drei eine API-Änderung als Major-Version veröffentlicht haben, bevor diese Regel galt.
- Sie werden aus dem veröffentlichten API-Vertrag (
openapi-25.jsonundopenapi-auth.json) generiert, und ihre Didit Authentication-Methoden werden anhand vonopenapi-authentication.jsonüberprüft. Alle drei werden täglich geprüft, sodass ein neuer Endpoint oder ein neues Feld in einem regulären Release aller sieben SDKs verfügbar wird. - Jedes SDK unterstützt die in der Tabelle angegebene Mindestversion der Laufzeit und jedes neuere Release. Seine Tests laufen auf der Mindestversion und auf jedem neueren Release bzw. auf jeder Long-Term-Support-Version für Node.js und Java.
- Das
CHANGELOG.mdjedes Repositorys führt die Änderungen jedes Releases auf. - Melden Sie ein Sicherheitsproblem vertraulich über die Sicherheitsmeldungen des jeweiligen SDK-Repositorys oder an support@didit.me.