Migrationsleitfaden
2.0.x zu 2.0.18
Der nachfolgende Migrationsleitfaden ist lediglich für ATLAS-API Nutzer relevant, welche Datenbank-Übertragungskanäle per API verwalten. Sollten Sie keine Datenbank-Übertragungskanäle per API verwalten, müssen keine Anpassungen vorgenommen werden.
Wichtig: Die Änderungen treten sofort mit dem Release in Kraft. Alte Endpunkte und Objektbestandteile sind nicht mehr verfügbar.
Objekte
Am Objekt IntegrationDatabase sind folgende Änderungen nötig:
databaseLocationist nunlocationdatabasePortist nunportdatabaseUserist nunuserdatabasePasswordist nunpassworddatabaseNameist nundbNamedatabaseTypeist nuntypeundversiondatabaseTablefällt auf dieser Ebene weg, ebenso wiedeviceIds- Dafür gibt es nun
deviceIdsByTableName(solange der ParameterattachTablesgesetzt ist). Dieses Objekt beinhaltet ein Array mit den FelderndeviceIdsundtableName.- Durch das Entfallen des Feldes
deviceIdsist es nun auch nicht mehr möglich, eine Liste an Sensor-IDs beim Erstellen oder Aktualisieren einer Integration zu übermitteln. - Stattdessen sind nun zwei Endpunkte
POST/DELETE /integration/database/{integrationId}/devices/{deviceId}für das Hinzufügen bzw. Entfernen von Sensoren zu verwenden.
- Durch das Entfallen des Feldes
Änderung der Endpunkte
Der Grundpfad wurde von /dbhook zu /integration/database geändert. Der Endpunkt zum Verbindungstest mit einer Datenbank ist nicht mehr unter /test, sondern unter /test-connection erreichbar.
2.0.x zu 2.0.17
Der nachfolgende Migrationsleitfaden ist lediglich für ATLAS-API Nutzer relevant. Sollten Sie keine Accounts, Rechnungsaccounts oder Benutzer und deren Module/Berechtigungen per API verwalten, müssen Sie keine Anpassungen vornehmen.
Wichtig:
Alle Endpunkte und Objekte sind aktuell noch in ihrer ursprünglichen Form vorhanden. Sie werden allerdings in zukünftigen Versionen nach und nach vollständig entfernt. Sie können die neuen Endpunkte ab sofort nutzen und Ihre Schnittstellen entsprechend anpassen. Wir empfehlen Ihnen die Anpassungen zeitnah einzuplanen. Wir informieren Sie entsprechend, sobald die geänderten Endpunkte und Objekte vollständig entfernt werden.
Allgemeine Änderungen
Die Angabe von Adressen in ATLAS ist nun komplett standardisiert. Sie besteht immer aus folgenden Feldern: street, houseNumber, postalCode, state, city, country
All diese Felder sind verpflichtend und müssen angegeben werden. Die Angabe einer Adresse kann aber sowohl optional, als auch verpflichtend sein. Das bestimmt der jeweilige Anwendungsfall.
Account-Verwaltung
Objekte
Das Objekt Company bleibt bestehen und kann vorläufig ohne Änderungen genutzt werden. In Zukunft sind aber einige Änderungen an dem Objekt nötig:
deletedAtist nundisabledAtentityTypeist nunlegalFormphoneist nunphoneNumberfaxist nunfaxNumbermodulesist nunmoduleIds, wobei sich hier auch der Inhalt verändern muss. Vorher wurde eine Liste anModule-Objekten übergeben, jetzt ist es nur noch eine Liste aus den IDs der Module.childCount,userCountundbillingAccountCountsind nun in einem extra Unterobjekt im Feldstatisticszu finden. Das FeldchildCountheißt dort nunchildCompaniesCount.
Beim Anlegen oder Aktualisieren von Company-Objekten werden diese nun genauer validiert:
- Pflichtfelder sind
parentId,name,email. Wenn ein Pflichtfeld nicht angegeben ist, wird die Anfrage mit dem HTTP-Statuscode 400 abgebrochen. - Die Adressfelder
visitAddressundpostalAddresssind leer zu lassen, wenn keine Adresse angegeben werden soll. Sind sie befüllt, muss ein validesAddress-Objekt übermittelt werden. - Beim Anlegen/Aktualisieren eines Accounts müssen auch immer dessen Module als Liste von IDs im Objekt enthalten sein. Übergangsweise können auch noch die kompletten
Module-Objekte in einer Liste übermittelt werden. - Bisher wurde ein entferntes Modul nicht von allen Benutzern des Accounts, Mandanten des Accounts und auch nicht von den Benutzern der Mandanten entfernt.
- Beim Bearbeiten eines Accounts über den neuen Endpunkt
PUT /companies/{companyId}wird in all diesen Fällen ein HTTP-Statuscode 400 zurückgegeben und das Modul muss überall manuell entfernt werden. Mit dem ParameterunlinkModulesFromChildCompanieswird dieser Vorgang automatisiert durchgeführt. - Vorsicht: Beim Bearbeiten eines Accounts über den alten Endpunkt
PUT /company/{companyId}wird nun, um evtl. auftretende Fehler zu vermeiden, dieser Vorgang auch automatisch ausgeführt!
- Beim Bearbeiten eines Accounts über den neuen Endpunkt
Änderung der Endpunkte
Für die Account-Verwaltung wurde der Grundpfad von /company zu /companies geändert. Um aber die gleiche Ausgabe wie vorher zu erhalten, sind nun teilweise zusätzliche Parameter nötig:
GET /companyist nunGET /companiesmit den Parametern?includeChildCompanies=false&attachModuleIds=true&attachStatistics=true.GET /company/{companyId}ist nunGET /companies/{companyId}mit den Parametern?attachModuleIds=true&attachStatistics=true.GET /company/myist nunGET /companiesmit den Parametern?includeRequestCompany=false&attachModuleIds=true&attachStatistics=true.GET /company/allist nunGET /companiesmit den Parametern?attachModuleIds=true&attachStatistics=true. Der Parameterinactiveheißt nunincludeDisabled.PUT /company/{companyId}/activateist nunPUT /companies/{companyId}/reactivateund enthält nun auch direkt den reaktivierten Account.GET /company/{companyId}/modulesist nunGET /companies/{companyId}/modulesweiterhin mit dem optionalen ParameterincludePermissions.GET /company/{companyId}/modules/allist nunGET /companies/{companyId}/modules/allneu mit dem optionalen ParameterincludePermissions.DELETE /company/{companyId}/external-links/{externalLinkId}ist nunDELETE /companies/{companyId}/external-links/{externalLinkId}mit dem HTTP-Statuscode 204, statt bisher 200.
Neue Endpunkte
Neben diesen Änderungen gibt es auch neue Endpunkte, die weitere Informationen direkt bereitstellen:
- Über den Endpunkt
GET /companies/ownkann nun der eigene Account von der API direkt abgerufen werden. - Der Endpunkt
GET /companies/{companyId}/modules/availableliefert alle noch nicht verwendeten Module für den Account. - Mit
POST /companies/{companyId}/modules/{moduleId}lässt sich einem Account ein Modul hinzufügen, ohne dafür den kompletten Account bearbeiten zu müssen. - Zum Entfernen eines Modules kann auch der Endpunkt
DELETE /companies/{companyId}/modules/{moduleId}verwendet werden. Auch hier gibt es den ParameterunlinkModuleFromChildCompanieszum direkten Entfernen des Moduls bei allen Benutzern des Accounts/Mandanten und bei den Mandanten selbst.
Die standardmäßige Kartenposition eines Accounts wird nun mit eigenen Endpunkten und eigenem Objekt abgebildet. Daher entfallen folgende Endpunkte dauerhaft und werden durch neue ersetzt:
- Der Endpunkt
GET /heatmap/positiondes Heatmap-Controllers ist durch den EndpunktGET /companies/{companyId}/settings/map/default-positionersetzt. - Auch der Endpunkt
PUT /company/{companyId}/mapzum Anlegen/Aktualisieren dieser Position wurde entfernt und durch den EndpunktPUT /companies/{companyId}/settings/map/default-positionersetzt. - Durch das Auslagern der standardmäßigen Kartenposition in die neu entstandenen Account-Einstellungen wurden auch die drei Felder
mapLatitude,mapLongitude,mapZoomaus dem ObjektCompanyentfernt.
Rechnungsaccount-Verwaltung
Objekte
Das Objekt BillingAccount bleibt bestehen und kann vorläufig ohne Änderungen genutzt werden. In Zukunft sind aber einige Änderungen an dem Objekt nötig:
- Die Felder
status,numberunddeliveryMethodsind schon jetzt ersatzlos entfallen deletedAtist nundisabled_atcontractual_organizationist nunnamesalutationist nuncontact_person_salutationcontactist nuncontact_personemailist nuncontact_emailibanist nunpayment_ibanbicist nunpayment_bicstreet,houseNumber,postalCode,state,city,countrysind nun im Feldaddresszusammengefasst.
Beim Anlegen oder Aktualisieren von Billing-Account-Objekten werden diese nun genauer validiert:
- Pflichtfelder sind:
name,contactPersonSalutation,contactPerson,contactEmail,address. Wenn ein Pflichtfeld nicht angegeben ist, wird die Anfrage mit dem HTTP-Statuscode 400 abgebrochen. - Das Feld
addressmuss ein gültigesAddress-Objekt enthalten. Vorübergehend können noch die einzelnen Felder dafür verwendet werden.
Änderung der Endpunkte
Für die Verwaltung der Rechnungsaccounts wurde der Grundpfad von /billing-account zu /billing-accounts geändert. Um aber die gleiche Ausgabe wie vorher zu erhalten, sind nun teilweise zusätzliche Parameter nötig:
GET /billing-accountist nunGET /billing-accounts. Der ParametershowInactiveheißt nunincludeDisabled.DELETE /billing-account/{billingAccountId}ist nunDELETE /billing-accounts/{billingAccountId}, allerdings mit dem HTTP-Status 204 statt 200PUT /billing-account/{billingAccountId}/activateist nunPUT /billing-accounts/{billingAccountId}/reactivateund gibt nun auch direkt den reaktivierten Rechnungsaccount zurück.
Durch das Entfernen des Feldes status aus dem Objekt BillingAccount ist auch der Endpunkt GET /billing-account/status entfallen.
Neue Endpunkte
- Der Endpunkt
GET /billing-accountsist um den ParameterincludeFromChildCompanies(Standardwerttrue) erweitert worden. Mit diesem Parameter lässt sich einstellen, ob auch Rechnungsaccounts der Mandanten mit ausgegeben werden sollen. - Zusätzlich gibt es noch den neuen Endpunkt
GET /billing-accounts/{billingAccountId}um einen speziellen Rechnungsaccount abzurufen. Der optionale ParameterincludeDisablederlaubt es auch hier, deaktivierte Rechnungsaccounts abzurufen.
Benutzer-Verwaltung
Objekte
Das Objekt User bleibt bestehen und kann vorläufig ohne Änderungen genutzt werden. In Zukunft sind aber einige Änderungen an dem Objekt nötig:
- Die Felder
defaultBillingAccountId,mobile,emailOptOut,phoneOptOutundmobileOptOutsind ersatzlos entfallen. roleist nunposition.phoneist nunphone_number.modulesist nunmoduleIds, wobei sich hier auch der Inhalt verändern muss. Vorher wurde eine Liste anModule-Objekten übergeben, jetzt ist es nur noch eine Liste aus den IDs der Module.permissionsist nunpermissionIds, wobei sich hier auch der Inhalt verändern muss. Vorher wurde eine Map ausPermission-Objekten übergeben, jetzt ist es nur noch eine Liste aus den IDs der Berechtigungen.
Auch das Objekt PasswordContainer, welches ab sofort UserPasswordContainer heißt, wird in Zukunft ein geändertes Feld haben:
confirmPasswordist nunconfirmationNewPassword.
Für alle Endpunkte, die auf /own enden, sind keine besonderen Rechte erforderlich. Alle anderen Endpunkte benötigen mindestens das Administrationsmodul für Benutzer.
Beim Anlegen oder Aktualisieren von User-Objekten werden diese nun genauer validiert:
- Pflichtfelder sind
email,salutation,firstname,lastname. Wird ein Pflichtfeld nicht angegeben, wird die Anfrage mit dem HTTP-Statuscode 400 abgebrochen. - Beim Anlegen ist zusätzlich noch das Feld
passwordverpflichtend. Eine Passwortänderung findet über separate Endpunkte statt. - Ist das Feld
addressangegeben, muss es ein gültigesAddress-Objekt enthalten. - Das Feld
emailmuss für aktive und deaktivierte Benutzer einmalig sein.- Über den Endpunkt
GET /users/email-in-uselässt sich prüfen, ob eine E-Mail bereits verwendet wird. - Wird beim Anlegen oder Bearbeiten eine bereits verwendete E-Mail angegeben, wird der Vorgang mit dem HTTP-Statuscode 409 abgebrochen.
- Beim Bearbeiten gilt zu beachten, dass die E-Mail des eigenen Benutzers NICHT änderbar ist!
- Die E-Mail eines permanent gelöschten Benutzers kann für einen anderen Benutzer aber wiederverwendet werden.
- Über den Endpunkt
- Über das optionale Feld
expireAtkann angegeben werden, ab welchem Tag sich ein Benutzer nicht mehr anmelden kann. Damit ist der Benutzer NICHT automatisch deaktiviert, lediglich ein Login ist nicht mehr möglich. - Zum Aktualisieren des eigenen Benutzers kann auch der Endpunkt
PUT /users/owngenutzt werden.
Änderung der Endpunkte
Für die Verwaltung der Benutzer wurde der Grundpfad von /user zu /users geändert. Um aber die gleiche Ausgabe wie vorher zu erhalten, sind nun teilweise zusätzliche Parameter nötig:
GET /user/company/{companyId}ist nunGET /usersmit den Parametern?includeFromChildCompanies=false&attachModuleIds=true&attachPermissionIds=true. Der Parameterinactiv eheißt nunincludeDisabled.GET /user/allist nunGET /usersmit den Parametern?attachModuleIds=true&attachPermissionIds=true. Der ParametershowInactiveheißt nunincludeDisabled.GET /user/accountist nunGET /users/ownmit den Parametern?attachModuleIds=true&attachPermissionIds=true.DELETE /user/{userId}ist nunDELETE /users/{userId}mit dem HTTP-Statuscode 204, statt bisher 200.DELETE /user/{userId}/disableist nunDELETE /users/{userId}/deactivate.PUT /user/{userId}/activateist nunPUT /users/{userId}/reactivateund enthält nun auch direkt den reaktivierten Benutzer.POST /user/{userId}/change-user-passwordist nunPUT /users/{userId}/password. Als HTTP-Body ist im neuen Endpunkt nicht mehr nur ein Passwort als String anzugeben, sondern ein vollständigesUserPasswordContainer-Objekt.PUT /user/change-own-passwordist nunPUT /users/own/password.POST /user/{userId}/module/{moduleId}ist nunPOST /users/{userId}/modules/{moduleId}.DELETE /user/{userId}/module/{moduleId}ist nunDELETE /users/{userId}modules/{moduleId}mit dem HTTP-Statuscode 204, statt bisher 200.POST /user/{userId}/permission/{permissionId}ist nunPOST /users/{userId}/permissions/{permissionId}.DELETE /user/{userId}/permission/{permissionId}ist nunDELETE /users/{userId}/permissions/{permissionId}mit dem HTTP-Statuscode 204, statt bisher 200.PUT /user/password/reset-by-emailist nunPUT /users/password/reset. Im neuen Endpunkt ist nun kein HTTP-Body mehr nötig, dafür aber der Parameteremail. Der optionale ParameterforceSendNewheißt nunforceResendConfirmationEmail.GET /user/password/reset-by-email/{resetToken}/validateist nunGET /users/password/reset/{resetToken}/validate.PUT /user/password/reset-by-email/{resetToken}ist nunPUT /users/password/reset/{resetToken}. Als HTTP-Body wird im neuen Endpunkt kein eigener Passwort-Container mehr benötigt, sondern dasUserPasswordContainer-Objekt verwendet.
Ein Benutzer kann nur deaktiviert (DELETE /users/{userId}/deactivate) oder permanent gelöscht werden (DELETE /users/{userId}). Der Unterschied besteht darin, dass ein deaktivierter Benutzer auch wieder aktiviert (PUT /users/{userId}/reactivate) werden kann. Ein permanent gelöschter Benutzer kann aber nicht wieder aktiviert werden. Daher ist es nötig, einen Benutzer zuerst zu deaktivieren und erst im Anschluss kann dieser permanent gelöscht werden.
Module und Berechtigungen
Für die Module und Berechtigungen eines Benutzers gibt es weiterhin folgendes zu beachten:
- Module und Berechtigungen werden weiterhin einzeln hinzugefügt oder entfernt.
- Beim Hinzufügen eines Moduls, auf das der Account des Benutzers keinen Zugriff hat, wird der HTTP-Statuscode 412 zurückgeliefert.
- Ist das Modul diesem Benutzer bereits hinzugefügt, wird der HTTP-Statuscode 409 zurückgeliefert.
- Beim Entfernen eines Moduls von einem Benutzer werden nun auch automatisch alle Berechtigungen dieses Moduls entfernt.
- Auch beim Hinzufügen von Berechtigungen, für die dem Benutzer das passende Modul fehlt, wird der HTTP-Statuscode 412 zurückgeliefert.
- Wenn die Berechtigung für den Benutzer schon vorhanden ist, wird auch der HTTP-Statuscode 409 zurückgeliefert.
- Zusätzlich zum Anhängen der Modul- oder Berechtigungs-IDs an das
User-Objekt, können nun auch direkt alle dem Benutzer zugewiesenen Module (GET /users/{userId}/modules) oder Berechtigungen (GET /users/{userId}/permissions) abgefragt werden.
Passwort ändern
Das Ändern eines Passworts ist entweder als Administrator oder nur für den eigenen Benutzer möglich:
- Jeder Benutzer hat die Möglichkeit, sein eigenes Passwort über den Endpunkt
PUT /users/own/passwordzu ändern. Dabei muss das ObjektUserPasswordContainerals HTTP-Body übermittelt werden und neben dem neuen Passwort inkl. seiner Bestätigung auch das alte Passwort enthalten. - Als Administrator mit dem Recht Passwörter für Benutzer zu ändern, muss der Endpunkt
PUT /users/{userId}/passwordverwendet werden. Auch dort wird das ObjektUserPasswordContainerim HTTP-Body benötigt. Es genügen hier allerdings das neue Passwort und seine Bestätigung.