4.2.2 Rechnungsdaten vom Produkt zum Partner
Details über die einzelnen Endpunkte können über das Developer Portal in der Swagger/OpenAPI Dokumentation nachgelesen werden.
Für alle folgenden Prozesse wird vorausgesetzt, dass eine Lizenz zur Übertragung der jeweiligen Daten existiert und diese von beiden Parteien bereits erfolgreich aktiviert wurde. (Siehe 5. Sicherheitsmechanismen unter Punkt a. Lizenzaktivierung)
1. Erstellung des Authentifizierungstokens
Um Daten aus der Cloud API empfangen zu können, ist es notwendig, zuvor ein Authentifizierungstoken zu übertragen, dass über den Endpunkt TokenCreate angefragt werden kann. Dafür müssen der grant_type (= „client_credentials“), requesttype (der zu übertragende Requesttype) und der scope (= LicenseIndicatorHash) im Body in URL-Encoded Form mit Content-Type: application/x-www-form-urlencoded übertragen werden.
Das Token ist grundsätzlich 30 Minuten gültig (sollte also ggf. für mehrere Requests wiederverwendet werden) und bezieht sich auf einen Requesttype (hier RechnungsdatenRequest) und dem jeweiligen Kunden mit dem man Daten austauschen möchte.
Der Auth-Token wird dann für weitere Requests im Header „Authentication: Bearer <token>“ genutzt.
POST TokenCreate
POST https://api.realestatehub.haufe.io/CloudApi/V1/api/oauth2/token HTTP/1.1
Host: api.realestatehub.haufe.io
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••
Content-Type: application/x-www-form-urlencoded
Accept: */*
Cache-Control: no-cache
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 116
grant_type=client_credentials&scope={LicenseIndicatorHash}&requesttype=RechnungsdatenRequest
HTTP/1.1 201 Created
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 190
Content-Type: application/json; charset=utf-8
Expires: -1
X-Powered-By: ASP.NET
Date: Fri, 30 Oct 2020 07:41:29 GMT
{
"access_token": "8a4267cb-d76e-4fd8-971a-9a1b2ebe448e",
"token_type": "Bearer",
"expires_in": 1800,
"scope": "{LicenseIndicatorHash}",
"requesttype": "RechnungsdatenRequest"
}
2. Daten von einer Gegenstelle empfangen
Für den Empfang eines Datenpakets ist der Endpunkt JobsGetItems vorgesehen.
Die Response kann hierbei mehrere Jobs auf einmal beinhalten und dementsprechend groß sein.
Für den Aufruf des Endpunktes wird ein Authentifizierungstoken im Header benötigt.
GET JobsGetItems
GET https://api.realestatehub.haufe.io/CloudApi/V1/api/jobs HTTP/1.1
Host: api.realestatehub.haufe.io
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••
Authorization: Bearer 8a4267cb-d76e-4fd8-971a-9a1b2ebe448e
Accept: */*
Cache-Control: no-cache
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 20827
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
X-Powered-By: ASP.NET
Date: Fri, 30 Oct 2020 09:24:42 GMT
{
"total_count": 1,
"_links": {
"self": {
"href": "https://testhlreapimanagement.azure-api.net/CloudApi/V1/api/jobs"
}
},
"_embedded": {
"jobs": [
{
"sequencenumber": "1",
"salt": "54zO/2bCBRXCi84yKe4WeYm3rbYp7Gb/3JjZvaXyxXM=",
"licenseownerid": "37",
"licensecounterpartid": "39",
"deleteflag": false,
"state": {
"JobState": 0,
"JobStateAsString": "New",
"StateDateTime": "2020-10-30T09:25:14.82179+00:00",
"PreviousJobState": {
"JobState": -1,
"JobStateAsString": "Queued",
"StateDateTime": "2020-10-30T09:24:42.4295984+00:00",
"PreviousJobState": null
}
},
"responseSalt": null,
"data": "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",
"hasheddata": "C5EEDDADA83CABADC88F2E54258418A068B1600525499B637B848CA769CF4E69DG312",
"response": null,
"responsecode": null,
"IsResponseOk": true,
"Entities": null,
"EntitiesCount": {
"RechnungsEntity": 1,
"RechnungsstatusEntity": 1,
"PositionenEntity": 1
},
"LicenseIndicatorHashSender": "{LicenseIndicatorHash}",
"LicenseIndicatorHashReceiver": null,
"AttachmentReference": "",
"id": "{JobId}",
"requesttype": "RechnungsdatenRequest",
"_links": {
"self": {
"href": "https://testhlreapimanagement.azure-api.net/CloudApi/V1/api/jobs/{JobId}/responses"
},
"confirm": {
"href": "https://testhlreapimanagement.azure-api.net/CloudApi/V1/api/jobs/{JobId}/confirmations"
}
}
}
]
}
}
3. Datenempfang bestätigen
Bevor die abgeholten Daten verarbeitet werden, muss der Datenempfang in der Cloud API bestätigt werden, dies geschieht mit dem Endpunkt ConfirmationCreate. Das soll verhindern, dass ggf. zwei Instanzen derselben Gegenstelle die Daten gleichzeitig bearbeiten. Dazu muss eine JobId in der URL mitgegeben werden, welches eine GUID ist. Außerdem wird ein Authentifizierungstoken im Header benötigt.
POST ConfirmationCreate
POST https://api.realestatehub.haufe.io/CloudApi/V1/api/jobs/{JobId}/confirmations HTTP/1.1
Host: api.realestatehub.haufe.io
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••
Authorization: Bearer 8a4267cb-d76e-4fd8-971a-9a1b2ebe448e
Accept: */*
Cache-Control: no-cache
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 0
HTTP/1.1 201 Created
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 379
Content-Type: application/json; charset=utf-8
Expires: -1
X-Powered-By: ASP.NET
Date: Fri, 30 Oct 2020 10:37:08 GMT
{
"id": "{JobId-GUID}",
"confirmationId": "{ConfirmationId-GUID}",
"_links": {
"self": {
"href": "https://testhlreapimanagement.azure-api.net/CloudApi/V1/api/jobs/{JobId}/confirmations"
},
"respond": {
"href": "https://testhlreapimanagement.azure-api.net/CloudApi/V1/api/jobs/{JobId}/responses"
}
}
}
Das Bestätigen mehrerer Jobs kann mit dem Endpunkt ConfirmationsCreate durchgeführt werden. Hier entfällt außerdem die einzelne JobId in der URL:
POST ConfirmationsCreate
POST https://api.realestatehub.haufe.io/CloudApi/V1/api/jobs/responseconfirmations HTTP/1.1
Host: api.realestatehub.haufe.io
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••
Content-Type: application/json
Authorization: Bearer e98db7a5-7b78-4c25-9140-9920946894af
Accept: */*
Cache-Control: no-cache
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 46
[
"{JobId-GUID}",
"{JobId-GUID}",
"{JobId-GUID}",
"{JobId-GUID}",
"{JobId-GUID}",
"{JobId-GUID}",
. ,
. ,
. ,
. ,
"{JobId-GUID}"
]
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 360
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
X-Powered-By: ASP.NET
Date: Fri, 30 Oct 2020 12:39:48 GMT
{
"responseCollection": [
{
"id": "{JobID-GUID}",
"confirmationId": "{ConfirmationId-GUID}",
"remark": "Job {JobID-GUID} confirmed."
},
{
"id": "{JobID-GUID}",
"confirmationId": "{ConfirmationId-GUID}",
"remark": "Job {JobID-GUID} confirmed."
},
{
"id": "{JobID-GUID}",
"confirmationId": "{ConfirmationId-GUID}",
"remark": "Job {JobID-GUID} confirmed."
},
{ .
},
{ .
},
{ .
},
{
"id": "{JobID-GUID}",
"confirmationId": "{ConfirmationId-GUID}",
"remark": "Job {JobID-GUID} confirmed."
}
],
"_links": {
"self": {
"href": "https://testhlreapimanagement.azure-api.net/CloudApi/V1/api/jobs/confirmations"
},
"respond": {
"href": "https://testhlreapimanagement.azure-api.net/CloudApi/V1/api/jobs/responses"
}
}
}
4. Beantwortung von Requests
Nach der Verarbeitung von Daten aus der Cloud API muss der Empfänger den Request beantworten, sodass der Absender die Information erhält, dass die Daten verarbeitet wurden. Dies geschieht über den Endpunkt ResponsesCreate. Dazu muss eine JobId mitgegeben werden, welches eine GUID ist. Außerdem wird ein Authentifizierungstoken im Header benötigt.
POST ResponsesCreate
POST https://api.realestatehub.haufe.io/CloudApi/V1/api/jobs/{JobId}/responses HTTP/1.1
Host: api.realestatehub.haufe.io
Content-Type: application/json
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••
Content-Type: application/json
Authorization: Bearer d94fb9c4-8cb5-4e8c-bdd6-51fba2ceed44
Accept: */*
Cache-Control: no-cache
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 342
{
"Response":"{Verschlüsselte Antwort}",
"Responsecode":"TestCode-0001",
"IsResponseOk": true,
"ConfirmationToken":
{
"id": "{JobId-GUID}",
"confirmationId": "{ConfirmationId-GUID, welches man vom Endpunkt ConfirmationCreate bekommt}"
},
"ResponseSalt":"ChangeMeToTheRealSalt"
}
HTTP/1.1 201 Created
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 698
Content-Type: application/json; charset=utf-8
Expires: -1
X-Powered-By: ASP.NET
Date: Fri, 30 Oct 2020 10:11:12 GMT
{
"id": "{JobId-GUID}",
"requesttype": "RechnungsdatenRequest",
"state": {
"JobState": 3,
"JobStateAsString": "Processed",
"StateDateTime": "2020-10-30T10:11:12.3078021+00:00",
"PreviousJobState": {
"JobState": 2,
"JobStateAsString": "Confirmed",
"StateDateTime": "2020-10-30T10:05:55.6473117+00:00",
"PreviousJobState": {
"JobState": 0,
"JobStateAsString": "New",
"StateDateTime": "2020-10-30T07:33:28.439343+00:00",
"PreviousJobState": {
"JobState": -1,
"JobStateAsString": "Queued",
"StateDateTime": "2020-10-30T07:33:27.1042678+00:00",
"PreviousJobState": null
}
}
}
},
"_links": {
"self": {
"href": "https://testhlreapimanagement.azure-api.net/CloudApi/V1/api/jobs/{JobId-GUID}/responses"
}
}
}