Einleitung
REST API Endpoint:
- Development: https://api-dev.condent.app
- Production: https://api.condent.app
Authentifizierung
Die folgenden HTTP-Header müssen für die Authentifizierung verwendet werden:
X-CONDENT-API-KEY: API Schlüssel, welcher vom Zahnarzt erstellt und in Ihrer Software gespeichert wirdX-CONDENT-TIMESTAMP: UTC Zeitstempel in MillisekundenX-CONDENT-SIGN: Eine aus den Request-Parametern abgeleitete Signatur
X-CONDENT-SIGN generieren
Um eine Signatur zu generieren, benötigen sie einen SecretKeywelchen Sie von uns erhalten (support@condent.ch).
Die Signatur setzt sich wie folgt zusammen:
- Prehash aus
timestamp+apiKey+bodyerstellen - Diesen Prehash mit HMAC SHA256 und dem
SecretKeysignieren - Diese Signatur zu base64 encoden
timestamp entspricht dem Header X-CONDENT-TIMESTAMP apiKey entspricht dem Header X-CONDENT-API-KEY body entspricht dem Request Body z.B. "{ patient: { firstName: 'XXXXX' } }"
Beispiele finden sie unter examples.
Wichtig ist, dass timestampnicht weniger oder mehr als 15 Sekunden Unterschied zur Serverzeit von Condent hat. Falls Ihre Software z.B. eine auf dem Windows installierte Software ist, müssen Sie berücksichtigen, dass der Benutzer die Uhrzeit auf dem Computer (fälschlicherweise) ändern kann. Sie können die aktuelle Serverzeit von Condent abfragen.
Änderungen: 27.02.26
Änderungen am Adressmodell
Aufgrund regulatorischer Anpassungen in der Schweiz wird das Adressmodell auf eine strukturierte Form umgestellt.
Änderungen
patient.address.address1
Wird als deprecated markiert.
Bitte stattdessen die neuen strukturierten Felder verwenden:patient.address.streetNamepatient.address.buildingNumber
patient.address.address2
Wird als obsolet markiert und in einer zukünftigen API-Version entfernt.
Dieses Feld sollte nicht mehr verwendet werden.
Grund
Diese Anpassung erfolgt im Kontext einer regulatorischen Änderung der Swiss Payment Standards.
Für Zahlungsüberweisungen sowie die Generierung von QR-Rechnungen wird künftig eine strukturierte Empfängeradresse benötigt.
Patient mit oder ohne Auftragsdaten an Condent schicken
Eine vollständige Dokumentation der API finden Sie hier: https://api-dev.condent.app/swagger/index.html
HTTP Request
POST /v1/order
Request-Parameter
| Parameter | Pflicht | Typ | Kommentar |
|---|---|---|---|
| title | Nein | string | Der Titel des Auftrags |
| costUnitType | Nein | string | Kostenträger des Auftrags |
| insurances | Nein | string array | Versicherungen des Patienten |
| color | Nein | string | Farbe, z.B. für Krone oder Schiene |
| description | Nein | string | Beschreibung des Auftrags |
| scanSentVia | Nein | string | Scan versendet via |
| trackingNumber | Nein | string | Trackingnummer (z.B. Post) des Auftrags |
| patient | Ja | object | Patientendaten |
| patient.reference | Ja | string | Eindeutige Patientennummer Ihrer Praxissoftware |
| patient.firstName | Ja | string | Vorname des Patienten |
| patient.lastName | Ja | string | Nachname des Patienten |
| patient.birthday | Nein | date | Geburtstag des Patienten in UTC (z.B. 1991-01-01T00:00:00Z) |
| patient.email | Nein | string | E-Mail-Adresse des Patienten |
| patient.phoneNumber | Nein | string | Telefonnummer des Patienten. Format: +(CountryCode)(NationalNumber) (z.B. +41761234455) |
| patient.address | Nein | object | Adresse des Patienten |
| patient.address.address1 | Nein | string | ⚠️ Deprecated – bitte streetName + buildingNumber verwenden |
| patient.address.address2 | Nein | string | ❌ Obsolet – wird entfernt |
| patient.address.streetName | Nein | string | Strassenname |
| patient.address.buildingNumber | Nein | string | Hausnummer |
| patient.address.zipCode | Nein | string | PLZ |
| patient.address.city | Nein | string | Ort |
| patient.address.countryCode | Nein | string | Land in Alpha-2 code. Condent unterstützt nicht alle Länder. Falls ein Land gesendet wird, welches wir nicht führen, kann der Patient/Auftrag trotzdem erfasst werden. |
| appointments | Nein | array | Termine |
| appointments.date | Nein | date | Datum und Zeit des Termins in UTC (z.B. 2023-02-22T11:43:00Z) |
| appointments.description | Nein | string | Beschreibung des Termins |
| attachments | Nein | array | Beilagen |
| attachments.upperJaw | Nein | bool | OK |
| attachments.lowerJaw | Nein | bool | UK |
| attachments.description | Nein | string | Beschreibung der Beilage |
Response-Parameter
| Parameter | Typ | Kommentar |
|---|---|---|
| url | string | URL für die Erfassung des Auftrags auf Condent |
| uploadToken | string | Token um Dateien zu hochzuladen |
| warnings | string array | Die Warnungen sind für die Entwickler:innen gedacht. Diese Warnungen weisen z.B. darauf hin, dass die gesendete Telefonnummer im falschen Format ist (z.B. wurde 076 123 44 55 statt +41761234455 gesendet). Der Patient resp. Auftrag kann trotz Warnungen erfasst werden. |
Request Beispiel
POST /v1/order HTTP/1.1
Host: api-dev.condent.app
X-CONDENT-SIGN: XXXXX
X-CONDENT-API-KEY: XXXXX
X-CONDENT-TIMESTAMP: 1672211928338
Content-Type: application/json
{
patient: {
reference: 'XXXXX'
firstName: 'XXXXX'
lastName: 'XXXXX'
}
}
X-CONDENT-SIGN wird aus dem geschickten JSON generiert.
Response Beispiel
{
url: 'https://my-dev.condent.app/xyz',
uploadToken: 'xyz'
warnings: []
}
Dateien hochladen
Sie müssen zuerst eine Order erstellen, um Dateien hochzuladen. Den UploadToken erhalten Sie im Response der Order.
Aktuell gelten folgende Beschränkungen:
- Grösse bis zu maximal 100 MB
- Jegliche Dateiformate werden akzeptiert (JPG, PNG, ZIP, PDF, STL, 3OX, ZIP, …)
(Sofern möglich, werden wir Dateien wie z.B. Bilder komprimieren.)
Dateien müssen einzeln geschickt werden, dies um Timeouts zu verhindern (wenn z.B. sehr viele, sehr grosse Dateien geschickt werden). Wir empfehlen, dass die Requests parallel geschickt werden (ein Beispiel in C# finden Sie hier).
Wenn es sehr viele Dateien sind, kann auch ein ZIP-File geschickt werden.
Grundsätzlich kann der Auftrag auf Condent erfasst werden, auch wenn einzelne Dateien durch einen Fehler nicht übermittelt werden konnten. Der Zahnarzt hat die Möglichkeit, die Dateien auch manuell auf Condent hochzuladen oder zu löschen.
HTTP Request
PUT /v1/order/{UploadToken}/upload
Request Body
Sie müssen die Datei als multipart/form-data schicken.
Request Beispiel
PUT /v1/order/XXXXX/upload HTTP/1.1
Host: api-dev.condent.app
X-CONDENT-SIGN: XXXXX
X-CONDENT-API-KEY: XXXXX
X-CONDENT-TIMESTAMP: 1672211928338
Content-Type: multipart/form-data; boundary=------------------------d74496d66958873e
--------------------------d74496d66958873e
Content-Disposition: form-data; name="file.jpg"; filename="file.jpg"
Content-Type: image/jpeg
X-CONDENT-SIGN wird aus dem geschickten Dateinamen (file.jpg) generiert.
Response Beispiel
HTTP/1.1 200 OK
Serverzeit
Eine Authentifizierung ist nicht notwendig.
HTTP Request
GET /v1/time
Request Parameter
Keine
Response Parameter
| Parameter | Typ | Kommentar |
|---|---|---|
| seconds | long | Condent Zeitstempel in Sekunden |
| milliseconds | long | Condent Zeitstempel in Millisekunden |
Request Beispiel
curl https://api-dev.condent.app/v1/time
Response Beispiel
{
seconds: 1677067413,
milliseconds: 1677067413774
}