Rekommendation API MT/MK
SDK API möjliggör intergration mellan olika leverantörers lösningar, det kan du läsa mer om på denna sida.
Inledning
Illustration: Bilden illustrerar scope för SDK API MT/MK (gränssnitt D). Se bilden i ett större format.
Leverantörer och deltagarorganisationer har efterfrågat en API-standardisering för informationsutbyte mellan meddelandetjänst och meddelandeklient (D gränssnittet).
- Deltagarorganisationer efterfrågar API för att underlätta kravställning mot leverantörer och minska risk för leverantörsinlåsning.
- Leverantörer efterfrågar standardiserade gränssnitt för att underlätta utveckling och anpassning av systemkomponenter/mjukvara.
SDK API MT/MK (“standardiserat API“) är primärt framtaget för att standardisera informationsöverföring mellan serverkomponenterna “meddelandetjänst” (MT) och “meddelandeklient/verksamhetssystem” (MK).
SDK API MT/MK ska möjliggöra en så kallad “lös koppling” mellan komponenterna MT och MK.
- SDK API MT/MK är framtaget för att stödja “system till system”-kommunikation.
- SDK API MT/MK stödjer meddelandetyp (dokumenttyp). “urn:riv:infrastructure:messaging:MessageWithAttachments:3“.
Leverantör av meddelandeklient kan ansöka och ansluta till miljön OPEN-TEST för att få tillgång till testklientens verifieringstjänst för SDK API, se Checklista för verifiering av meddelandeklient för SDK API MT/MK.
Testfall för meddelandestystem – SDK API innefattar testfall som avser meddelandeklient (API konsument) samt meddelandetjänst (API producent). Leverantör intygar i Försäkran om överensstämmelse för meddelandesystem att testfallen är utförda med godkänt resultat.
I det fallet en leverantör vill endast få meddelandeklient verifierad mot SDK API MT/MK intygar leverantören sina testresultat i Försäkran om överensstämmelse för MK API konsument.
1.1 Aktörer
Aktörer | Beskrivning |
---|---|
Federationsägare | Förvaltar regelverk och specifikationer där SDK API MT/MK ingår. Kan erbjuda valideringsfunktion till aktörer som önskar kontrollera/bevisa följsamhet mot SDK-specifikation. |
Deltagarorganisationer | Tillämpar eller kravställer att komponenter skall stödja och implementera SDK API MT/MK. |
Leverantörer | Tillämpar/är följsamma till SDK API MT/MK i sina komponenter. |
1.2 Vägval
Avsnittet sammanfattar vägval som gjorts i samband med framtagande av detta API.
Steg | Vägval | Beskrivning |
---|---|---|
1 | Typ av API - “content agnostic” eller “content specific“ | I dialog med leverantörer har beslutats att API skall vara meddelandetypspecifikt dvs “content specific”. Konsekvens: Det innebär att SDK API MT/MK inte kan användas för andra meddelandetyper eller majorversioner. Varje meddelandettyp behöver ha ett eget API. · Vid ny version av meddelandetyp kommer ett nytt API att tas fram och implementeras av MT/MK. |
2 | Scope för API är meddelandetjänst (MT)/meddelandeklient (MK) | API för accesspunkt ingår inte i detta arbete. Ett sådant API bör vara av typen “content-agnostic” dvs kunna hantera olika meddelandetyper. |
3 | Säkerhetslösning (rekommendation) ska ingå | API skall ha en beskrivning av en rekommenderad säkerhetslösning för att underlätta upphandling och implementation |
4 | Notifiering ingår ej | Ett notifieringskoncept kan användas för att effektivisera integration mellan MT/MK. Det har beslutats att inte inkluderats ett koncept för detta i syfte att minska komplexiteten vid implementation. Beslutet kan dock komma att omprövas till kommande versioner. |
5 | Metadataobjekt utgår | I tidigare version av SDK API MT/MK fanns ett metadata objekt med. Detta objekt var framtaget för att t.ex. bevaka meddelandestatus och innehöll inte själva meddelandet. Objektet bedöms kunna ersättas av anropsparameter för att exkludera meddelande (text, bilagor) varför metadataokbjekt utgår. |
2. Övergripande arkitektur
2.1 Meddelandetjänst (API producent - server)
SDK API MT/MK ”API producent” kan implementeras på olika sätt. API producenten kan implemetneras i meddelandetjänsten eller t.ex. konnektor eller adapter.
Ansvarsområde:
- Implementerar och producerar (tillhandahåller) SDK API MT/MK enligt openAPI-specifikation.
- Exempel på övriga krav enligt SDK-federationens regelverk som implementeras av meddelandetjänst:
- Hanterar organisationens O2O-nyckel.
- Ansvarar för kryptering, signering, dekryptering samt validering av signatur.
- Autentiserar och auktoriserar systemaktörer (meddelandeklienter, accesspunkt).
- Temporärlagrar/buffrar meddelanden.
2.2 Meddelandeklient (API konsument - client)
- Implementerar och konsumerar SDK API MT/MK (t.ex. via en adapter).
- Skapar och skickar meddelande enligt API-specifikation.
- Kontrollerar meddelandestatus.
- Hämtar nya meddelanden (funktionsadress) och lagrar meddelanden.
- Exempel på övriga krav: Presenterar och hanterar information (meddelanden) enligt SDK-federationens regelverk.
- Autentiserar och auktoriserar användaren.
Illustration: Bilden illustrerar övergripande hur meddelandetjänst (API producent) och meddelandeklienter (API konsument) kommunicerar med stöd av SDK-API. Observera att det kan finnas behov av att utveckla API-adapter för att integrera med MT och MK (verksamhetssystem). Se bilden i ett större format.
2.3 SDK API MT/MK - Specifikation
SDK API MT/MK (REST API) stödjer följande operationer:
- Skicka meddelande
- Hämta meddelande
- Radera meddelande
SDK API MT/MK (REST API) är beskrivet (kontrakt) enligt specifikation openAPI (version 3.1.x) och är utformat enligt/inspirerat av JSON:API.
https://open-test.digg.se/sdk-api/q/openapi Länk till annan webbplats.
3. API operationer – Översikt
Se API-specifikation (openAPI) för mer detaljer. Följande parametrar ska stödjas:
Operation | Regler Filter (ska stödjas) | Beskrivning | Informations objekt |
---|---|---|---|
Hämta meddelande per id (getMessageById)
GET /sdk/messages/{messageId} | Filtrering baserat på “path” parameter. meddelandeId | Returnerar ett komplett meddelande baserat på meddelandeId, inklusive: · Meddelande text (contentBodyText) · Bifogade filer contentFiles · Kan endast vara ett objekt | messages |
Hämta meddelande per filter (getMessageByFilter)
GET /sdk/messages?filter[attribute]=value | filter “query parameter” är reserverad för filtrering baserat på ett attribut i meddelandets innehåll. Denna operation inkluderar möjlighet att filtrera på: · Meddelandestatus enligt KV Meddelandestatus o messagestatus · Funktionsadress o recipientAttention.subOrganization.extension o senderAttention.subOrganization.extension · Datum. ISO8601, tidszon UTC skall användas. (creationDateTimeStart) · Slutdatum. ISO8601, tidszon UTC skall användas. (creationDateTimeStop)
Filter ska kunna kombineras Regel: [1] Denna operation ska alltid exkludera (text och filer): · digitalDocument [2] Obligatoriska meddelandestatus ska stödjas. Övriga status kan stödjas. | Returnerar en lista av (array) meddelanden baserad på filtrering. Kan vara en lista (array) av objekt. | messages |
Radera meddelande (deleteMessageById)
DELETE /sdk/messages/{messageId} | Regel: Endast meddelanden med slutlig status kan raderas · NEW · ACCEPTED · MESSAGE_EXCHANGE_ERROR
Alternativt tillämpning: · API konsument (MK) instruerar API producent att radera meddelande genom DELETE anrop · API producent (MT) raderart meddelandet automatiskt efter x timmar (enligt lokalt regelverk) | Raderar ett (1) meddelande | messages |
Skicka meddelande (sendMessage)
POST /sdk/messages | Referens till skapat meddelande SKA göras via HTTP response header “Location” (/sdk/messages/{messageId}). Regelverk för interna meddelanden: En meddelandetjänst som hanterar interna meddelanden (ex. "sender" och "recipient" innehåller samma deltagar-id) ska ha en funktion som säkerställer att meddelanden är unika (meddelande-id). · Meddelandet bör inte distribueras externt via ansluten accesspunkt. · Meddelandeklientens skickade interna meddelandet sätts till status "ACCEPTED" eller "MESSAGE_EXCHANGE_ERROR" · Ett nytt inkommande meddelande skapas för mottagande funktionsbrevlåda (enligt samma hantering som ett nytt inkommande meddelande) med status "NEW" | Skickar/skapar ett (1) meddelande (Se informationsobjekt) | messages |
4. Användningsfall
4.1 Skicka meddelande
Verksamhetssystem/meddelandeklient skapar och skickar ett meddelande. För mer information hur meddelandeklient skickar meddelande se SAD SDK, avsnitt om användningsfall – AF ”Skicka meddelande”.
Aktörer | Beskrivning |
---|---|
API producent | Implementerar och producerar SDK API MT/MK (meddelandetjänst). Exempel på funktioner: · Autentiserar konsumenter · Validerar meddelande · Paketerar meddelande · Levererar meddelande till AP · Bevakar meddelande och hanterar meddelandestatus (messageStatus) |
API konsument | Implementerar SDK API MT/MK (verksamhetssystem/meddelandeklient) Exempel: · Skapar meddelande · Bevakar meddelandestatus (messageStatus) · Raderar meddelande |
Authorization Server | Behörighetskomponent för OAuth2 protokollet. · Ansvarar för att ställa ut behörighet till API konsument (MK) |
Sekvens - Skicka meddelande
För att skicka ett meddelande behöver API konsument använda följande operationer:
- Skicka meddelande (sendMessage)
- Hämta meddelandestatus (getMessageById)
- Meddelanden kan också hämtas med stöd av filter (getMessageByFilter)
- Radera meddelande (deleteMessageById)
Bilden illustrerar ett UML-sekvensdiagram som beskrivs med i text i tabellen nedan. Se bilden i ett större format
Steg | Aktör | Beskrivning |
---|---|---|
1 | API konsument (MK) | Autentiseras mot lokal Auktorisationsserver. · Använder clientId + secret (signed jwt) |
2 | Authorization server | Autentiserar API konsument (MK). · Skapar och tilldelar en “Access token” innehållande behörighetsstyrande information (claims). |
3 | API konsument | Skapar meddelande enligt specifikation · Adresserar meddelande · Skapar meddelande |
4 | API producent | Validerar meddelande · Teknisk validering (enligt API specifikation) |
API producent | Response: · 201: Created · 400: Bad request o Informationsobjekt “Problem” returneras · 401: Unauthorized | |
5 | API konsument | Meddelandestatus - leveransstatus (Bevakning) API konsument anropar löpande API för meddelandestatus (messageStatus) (getMessageByFilter eller getMessageById). Filterparametrar bör användas för att t ex exkludera meddelande och bilagor. Exempel: Anropet filtrerar på ett specifikt meddelande och exkluderar meddelandetext och bilagor. GET /sdk/messages{messageId} |
6 | API producent | Response: · 200: OK · 401: Unauthorized · 404: Not found |
7 | API konsument | Meddelandeklient (API konsument) begär radering av meddelanden vid lyckad meddelandeleverans. Giltig status för radering av meddelande: · NEW · ACCEPTED · MESSAGE_EXCHANGE_ERROR DELETE /sdk/messages{messageId} Regelverk: · Ett meddelande kan endast raderas när det tilldelats en slutlig status enligt KV Meddelandestatus |
8 | API producent | Response: · 202: Accepted · 401: Unauthorized · 404: Not found |
4.2 Hämta meddelanden
En meddelandeklient/verksamhetssystem (API konsument) som hanterar funktionsbrevlådan anropar meddelandetjänsten (API producent) kontinuerligt för att kontrollera om det finns nya inkommande meddelanden. För mer information om hur meddelandetjänst hanterar inkommande meddelanden se SAD SDK, avsnitt om användningsfall – ”AF Ta del av meddelande”.
- Meddelandetjänsten (API producent) autentiserar och auktoriserar Meddelandeklienten (API producent)
Sekvens - Hämta meddelande
För att hämta ett meddelande behöver API konsument använda följande operationer:
- Hämta alla meddelanden som API konsumenten (MK) är behörig till (getMessageById) utan id
- Hämta meddelanden baserat på filter (getmessageByFilter)
Sekvensen nedan använder följande operationer för att hämta meddelanden:
- Hämta funktionens meddelanden (getMessageByFilter)
- Hämta meddelande (getMessageById)
- Radera meddelanden (deleteMessageById)
Bilden illustrerar ett UML-selvensdiagram som beskrivs med i text i tabellen nedan. Se bilden i ett större format.
Steg | Aktör | Beskrivning |
---|---|---|
1 | API konsument (MK) | Autentiseras mot lokal Auktorisationsserver. · Använder clientId + secret (signed jwt) |
2 | Authorization server | Autentiserar API konsument (MK). · Skapar och tilldelar en “Access token” innehållande behörighetsstyrande information (claims). |
3 | API konsument | Meddelandeklient (API konsument) anropar löpande Meddelandetjänst (API producent) för att hämta nya meddelanden. Exempel: Anropet filtrerar på en funktionsbrevlåda och exkluderar. GET /sdk/message?filter[recipientAttention.subOrganization.extension]=”sdk:inkorg01:0203:digg.se” |
4 | API producent | Meddelandetjänsten (API producent) returnerar en lista med nya meddelanden (message). Response: · 200: OK (Status) o Lista (message) returneras · 401: Unauthorized · 404: Not Found |
6 | API konsument | Meddelandeklienten (API konsument) hämtar ett meddelande (baserat på informationen i svaret från tidigare steg). Exempel: Ett specifikt meddelande hämtas i sin helhet. GET /sdk/messages/{messageId} |
6 | API producent | Returnerar meddelande. Response: · 200: OK (Status) o Meddelande (message) returneras · 401: Unauthorized · 404: Not Found |
7 | API konsument | Meddelandeklient (API konsument) begär radering av meddelanden då det är hämtat. DELETE /sdk/messages{messageId} Regelverk: · Ett meddelande kan endast raderas när det tilldelats en slutlig status enligt KV Meddelandestatus |
8 | API producent | Response: · 202: Accepted · 401: Unauthorized · 404: Not Found |
5. Säkerhet
SDK Regelverk för deltagarorganisationerregelverk ska tillämpas.
SDK rekommenderar följande:
- Säkerhetsprotokollet OAuth2 rekommenderas för att säkra kommunikation mellan meddelandeklient/Verksamhetssystem (OAuth client) och Meddelandetjänst (OAuth Resource Server)
- Då integrationsflödet inte är utformat för att utföras av slutanvändare rekommenderas att tillämpa flöde “client credentials flow“. Observera att detta API är framtaget för att stödja system-till-system.
Säkerhetsprotokoll | OAuth2 |
---|---|
Tillämpningsflöde | Client credentials flow |
Metod för autentisering | Signed Jwt |
Access token lifetime | Max 30 min |
Refresh token | Ej tillåtet. |
This specification defines an OAuth2 profile to use within the Single Digital Gateway (SDG) project. It profiles the OAuth2 protocol to get a baseline security and to facilitate interoperability between Relying Parties (clients), Resource Servers and Authorization Servers.
This profile applies to clients that connect directly to Resource Servers and do not act on behalf of a particular resource owner (user), such as those clients that facilitate bulk transfers.
These clients use the client credentials flow of OAuth2 by sending a request to the token endpoint with the client's credentials and obtaining an access token in the response. Since this profile does not involve an authenticated user, this flow is appropriate only for trusted applications, such as those that would traditionally use a developer key. For example, a partner system that performs bulk data transfers between two systems would be considered a direct access client.
This client type MUST NOT request or be issued a refresh token.
5.1 Rekommendation kring behörighetsstyrning (Autentisering)
“Authorization Server” autentiserar API konsument (MK) med stöd av OAuth2 “Client credentials flow”.
Behörighetsstyrande attribut förmedlas via scope och claims som kan tillgängliggöras via “Access Token” eller via “UserInfo“ (“userinfo endpoint” returnerar claims så som behörighetsstyrande attribut för autentiserad API konsument MK).
Behörighetsstyrande scope (API)
Följande scope reglerar tillgång till API vid olika operationer (operationId), dvs tillgång till API:ets olika funktioner.
Scope | Reglerar API konsumenter (MK) |
---|---|
urn:sdk.api:deleteMessage | Behörighet att nyttja API operation (operationId) “deleteMessageById“ |
urn:sdk.api:getMessage | Behörighet att nyttja API operation (operationId) “getMessageById“ |
urn:sdk.api:getMessageByFilter | Behörighet att nyttja API operation (operationId) “getMessageByFilter“ |
urn:sdk.api:sendMessages | Behörighet att nyttja API operation (operationId) “sendMessage” |
5.2 Behörighetsstyrande attribut (meddelande)
claim | Standard claim | Förklaring |
---|---|---|
azp (single value) | openID | Identifierar API konsument/Meddelandeklientens identitet. En API konsument (MK) hanterar funktionsbrevlådor. Authorized party - the party to which the ID Token was issued (RFC7519 JSON Web Token Claims) T.ex. Meddelandeklient.avd.organisation.se Länk till annan webbplats. |
auth_id (multivalued string) | rekommenderat tillägg | Behörighetsstyrande attribut. Attributet innehåller lokalt definierat data som styr tillgång till inkommande och utgående meddelanden. 1. Lokal organisation ska definiera en behörighetsmodell som säkerställer rätt behörighet till meddelanden 2. API producent (MT) ska kontrollera att API konsument (MK) endast får tillgång till meddelanden där denna är behörig (genom kontroll av behörighetsstyrande attribut).
Exempel på behörighetsstyrande information: · Grupptillhörighet · Roll · Meddelandeägare (t.ex. funktionsbrevlådans identitet) · Funktionsbrevlådans identitet. |
Innehåll i access token
Identifiering av API konsument (MK)
Exempel:
azp: "testclient01.sdk.inera.se",
Behörighetsstyrande attribut “urn:sdk.digg.se:auth_id” (innehåll och tillämpning definieras lokalt)
Exempel:
"scope": "urn:sdk.api:sendMessages urn:sdk.api:1:0 urn:sdk.api:deleteMessage urn:sdk.digg.se:auth_id offline_access phone urn:sdk.api:getMessage urn:sdk.api:getMessageByFilter","clientHost": "10.6.3.117","clientId": "testclient01.sdk.digg.se","urn:sdk.digg.se:auth_id": [ "funktion01.blue.sdk.inera.se" ], "clientAddress": "10.6.3.117"
Varje organisation beslutar hur lokal behörighet skall tillämpas. Behörighetsstyrande attribut reglerar vilken information som API konsument MK kan hantera.
Exempel: Registrera API konsument (MK)
Bilden illustrerar ett UML-selvensdiagram som beskrivs med i text i tabellen nedan. Se bilden i ett större format.
Steg | Aktör | Beskrivning |
---|---|---|
1 | Admin MK | Anslutning av API konsument (meddelandeklient) Meddelandeklient Initierar lokal anslutningsprocess. |
2 | Admin MT | Administratör registrerar API konsument (Meddelandeklient) · Skapar “client” o ClientID o Secret · Protokoll: OAuth2 “Client credentials flow” · Tilldelar scope för auktorisera delar av API. o urn:sdk.api:deleteMessage o urn:sdk.api:getMessage o urn:sdk.api:getMessageByFilter o urn:sdk.api:sendMessages · Tilldelar behörighetsstyrande attribut (claim “auth_id” (array)) o Lista med behörighetsstyrande attribut |
3 | Admin MT | ClientId + Secret distribueras på ett säkert sätt till Admin MK |
4 | Admin MK | Registrerar API konsument (MK) autentiseringsuppgifter ClientId + Secret |
Tillämpning av behörighetsmodell i lokal lösning (Inre säkerhet)
Bilden illustrerar ett UML-selvensdiagram som beskrivs med i text i tabellen nedan. Se bilden i ett större format.
Steg | Aktör | Beskrivning |
---|---|---|
1 | API konsument (MK) | Autentiseras mot lokal “Auktorisations server) för att kunna anropa API producent (MT) · Använder clientId + secret |
2 | Authorization server | Autentiserar API konsument (MK). · Skapar och tilldelar en “Access token” innehållande behörighetsstyrande information (claim “ayth_id). |
3 | API konsument (MK) | Anropar API producent (MT) med stöd av “Access token“ |
4 | API producent (MT) | Auktoriserar API konsument (MT) genom att validera “Access token“ (eller UserInfo) som kontrollera behörighetsstyrande attribut (claim “auth_id”) T.ex. auth_id innehåller “*.blue.sdk.inera.se“ Behörighetskontroll: · Kontrollerar att att nödvändiga scopes finns för respektive API operation. · API producent (MT) ger endast API-konsumenten(MK) tillgång till meddelanden/information som är kopplad till behörighetsstyrnade attribut “auth_id” innehållande “*.blue.sdk.inera.se“. |
Informationsobjekt
Meddelanden (message)
Meddelanden som hanteras av SDK API MT/MK definieras enligt SDK API MT/MK -specifikation.
API-specifikationen (openAPI) utgör en API-specifikation som direkt relateras till SDK-meddelandets innehållsspecifikation (Se B1.3.3 - Innehållsspecifikation-meddelande).
Attribut | Beskrivning och giltiga värden | |
---|---|---|
1 | type | Typ av resurs som hanteras Regelverk: · Ska vara “messages” |
2 | id | Resursens interna unik identifierare (UUID, RFC4122) . Kan vara samma som “messageId“. Regelverk: · Vid skapande av meddelande kan API konsument (MK) utelämna attributet. Attributet ska då sättas av API producent (MT) |
3 | messageStatus | Meddelandestatus Regelverk: · Vid skapande av meddelande ska API konsument (MK) inte sätta ett värde. · Koder “Obligatorisk status“ enligt KV Meddelandestatus ska stödja · Koder övriga koder“ enligt KV Meddelandestatus kan stödjas · Vid MESSAGE_EXCHANGE_ERROR ska mer information om orsak finns i “Event” objektet |
4 | creationDateTime | Tidsstämpel för när meddelandet skapades. Tidszon UTC skall användas (ISO8601). Regelverk: · Vid skapande av meddelande kan API konsument (MK) utelämna attributet. Attributet ska då sättas av API producent (MT) |
5 | messageId | Mappas mot SDK Innehållsspecifikation Regelverk: · Vid skapande av meddelande kan API konsument (MK) utelämna attributet. Attributet ska då sättas av API producent (MT) |
6 | conversationId | Mappas mot SDK Innehållsspecifikation Regelverk: · Vid skapande av meddelande kan API konsument (MK) utelämna attributet. Attributet ska då sättas av API producent (MT) |
7 | refToMessageId | Mappas mot SDK Innehållsspecifikation |
8 | confidentiality | Mappas mot SDK Innehållsspecifikation |
9 | generatingSystem | Mappas mot SDK Innehållsspecifikation |
10 | recipientAttention subOrganization attentionPerson referenceId | Mappas mot SDK Innehållsspecifikation |
11 | senderAttention subOrganization attentionPerson referenceId | Mappas mot SDK Innehållsspecifikation Regelverk: SKA valideras av API producent mot lokal säkerhetslösning. · API konsument (MK) skall vara behörig att representera avsändande funktionsadress. |
12 | sender | Mappas mot SDK Innehållsspecifikations “senderID.extension” Regelverk SKA valideras av API producent mot lokal säkerhetslösning. · API konsument (MK) skall vara behörig att representera avsändande användarorganisation. |
13 | recipient | Mappas mot SDK Innehållsspecifikations “recipientID.extension” |
14 | label | Meddelandets rubrik |
15 | digitalDocument | Mappas mot SDK Innehållsspecifikation “documents”. Avvikelse: digitalDocument.contentTextBody mappas mot contentAsTextType.characterSequence |
16 | events | Objekt för felhantering. Regelverk · events.eventIssues SKA presenteras senaste händelse (eventIssues) först. Enligt “ORDER BY dateTime DESC“ |
Exempel: Meddelande (messages)
SDK meddelande presenteras under “attributes”.
{ "meta": { "version": "1.0.0" }, "links": { "self": "https://otm-sdk.inera.se/sdk-api/v1/sdk/messages" }, "data": [ { "type": "messages", "id": "19c7e876-ef6f-4fb0-bccb-e93e3ab6e69f", "attributes": { "messageStatus": "NEW", "creationDateTime": "2018-09-12T15:06:00Z2023-", "messageId": "ff325210-0690-42fe-b86f-95ecab821223", "conversationId": "a8480ada-6a1f-44a3-a960-9acaf4efcdcd", "refToMessageId": "ff325210-0690-42fe-b86f-95ecab821223", "confidentiality": true, "generatingSystem": { "root": "string", "extension": "string", "label": "string" }, "recipientAttention": { "subOrganization": { "root": "urn:riv:infrastructure:messaging:functionalAddress", "extension": "sdk:inkorg:0203:digg.se", "label": "Inkorgen hos Digg" }, "attentionPerson": [ { "root": "1.2.752.29.6.2.1", "extension": "SE2321000016-nnnnn", "label": "Anna Andersson" } ], "referenceId": [ { "root": "1.2.752.129.2.1.3.1", "extension": "19121212-1212", "label": "Tolvan Tolvansson" } ] }, "senderAttention": { "subOrganization": { "root": "urn:riv:infrastructure:messaging:functionalAddress", "extension": "sdk:utkorg:0203:inera.se", "label": "Utkorgen hos Inera" }, "attentionPerson": [ { "root": "1.2.752.29.6.2.1", "extension": "SE2321000016-nnnnn", "label": "Anna Andersson" } ], "referenceId": [ { "root": "1.2.752.129.2.1.3.1", "extension": "19121212-1212", "label": "Tolvan Tolvansson" } ] }, "sender": "0203:inera.se", "recipient": "0203:digg.se", "label": "Meddelandets rubrik", "digitalDocument": [ { "documentName": "Document or issue containing information", "documentId": "Identifier", "index": "1", "contentTextBody": [ "characterSequence" ], "contentFiles": [ { "fileName": "hal.jpeg", "contentType": "image/jpeg", "content": "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" } ] } ], } } ]}
Felhantering (Event objekt)
Informationsobjektet “Event” används för att kommunicera fel mellan Meddelandetjänst(MT) och Meddelandeklient/Verksamhetssystem (MK). Informationsobjektet är utformat för att stödja Diggs rekommendation att använda RFC 7807.
Observera att felhanteringen är avsedd att stödja lokal felsökning mellan MT och MK.
Attribut | Beskrivning och giltiga värden | |
---|---|---|
1 | type | “A URI reference [RFC3986] that identifies the problem type.“ Max 128 En URI som identifierar typ av fel Giltiga värden enligt kodverk (KV): · KV: Type T.ex. urn:event-type:sdk:message |
2 | title | “A short, human-readable summary of the problem type.“ Max: 120 En kort beskrivning av problemet Meddelanden som ej accepteras av mottagaren markeras som “BadRequest“ Värden enligt kodverk: · KV: Meddelandestatus (slutlig status) T.ex. · MESSAGE_EXCHANGE_ERROR · ACCEPTED |
3 | detail | “A human-readable explanation specific to this occurrence of the problem.” En kort beskrivning av händelsen enligt kodverk.. Max: 128 Värden enligt kodverk: · KV: Meddelandestatus (slutlig status) |
4 | instance | “A URI reference that identifies the specific occurrence of the problem.“ Id som identifierar/refererar till resursen som falerat. Max: 2048 |
5 | SDK Addition to RFC | |
6 | eventIssues. | Händelser under pågående meddelandeflöde. events.eventIssues SKA presenteras senaste händelse (eventIssues) först. Enligt “ORDER BY dateTime DESC“ |
7 | eventIssues.typeCode | Specifik error code Giltiga ärden enligt kodverk: · KV: Meddelandestatus |
8 | eventIssues.title | Error title (Förklarande information) |
9 | eventIssues.detail | Error details (Förklarande detaljinformation) |
10 | eventIssues.in | Reference to error, ex row or xpath reference |
11 | eventIssues.datetime | Datetime for event |
Kodverk
KV Meddelandestatus
Bilden illustrerar hur “Meddelandestatus“ används för meddelanden som skickas. Blå rutor indikerar obligatorisk status. ERROR kan inträffa under hela flödet (illustreras ej). Se avsnitt MEDDELANDESTATUS KODER” för tabell med textuell beskrivning av bilden.
Bilden illustrerar hur “Meddelandestatus“ används för meddelanden som hämtas av klienten. Blå rutor indikerar obligatorisk status. ERROR kan inträffa under hela flödet (illustreras ej). Se avsnitt MEDDELANDESTATUS KODER” för tabell med textuell beskrivning av bilden.
Meddelandestatus koder
Obligatorisk status = Status som SKA kunna exponeras via API
Slutlig status = Flödet är avslutat. T.ex. Meddelandeklient kan radera meddelandet.
Status (messageStatus) | Beskrivning | Obligatorisk status | Slutlig status | |
---|---|---|---|---|
1 | SCHEDULED | Meddelandetjänsten har mottagit meddelandet från API konsument (MK). Följande valideringskontroller är genomförda. · Tekniskt format (schemavalidering av meddelande) · Adressbokskontroller Meddelandet har ett korrekt tekniskt format. | ||
2 | SUBMITTED | Meddelandetjänsten har paketerat meddelandet (XHE), förseglats och har skickat till Accesspunkten för distribution. Följande valideringskontroller genomförda (XHE etc): · Meddelandet (SDK-Meddelande) är skapat och validerat · Meddelandet är paketerat enligt transportformat (XHE) · Meddelandet förseglat och signerat · Integrations/kontroller mot SMP/CertPub genomförd. (Transport-id mottaget av AP) | ||
3 | SCHEDULED_FOR_RESEND | Omsändning. Meddelandet har ej kunnat levereras till mottagarens accesspunkt. T.ex. pga. tekniskt fel i transportinfrastrukturen. | ||
4 | ACKNOWLEDGE (Transportkvittens) | Meddelandet har levererats till mottagarens accesspunkt. · Transportkvittens mottaget (Accesspunkt) | ||
5 | WAITING_FOR_RECEIPT | Meddelandetjänsten väntar på meddelandekvittens (ACCEPTED, REJECTED alternativt utebliven kvittens) | Ja | |
6 | MESSAGE_EXCHANGE_ERROR | Meddelandet kan ej levereras p g a problem under överföring till mottagaren. Ex · Valideringsfel (Tekniskt format, schematron, transportinfrastruktur) · Utebliven transportkvittens för skickat meddelande · Utebliven meddelandekvittens · Meddelande kunde inte kvitteras · Meddelandet kunde inte avvisas. Felmeddelande (REJECT) kan ej levereras. · Utebliven transportkvittens för skickad meddelandekvittens · Oväntat fel under meddelandeflöde | Ja | Ja |
7 | ACCEPTED (Meddelandekvittens mottaget) | Meddelandet är levererat och accepterat av mottagaren. · Transportkvittens mottaget · Meddelandekvittens mottaget | Ja | Ja |
8 | REJECTED | Meddelandet har avvisats av mottagaren (Meddelandekvittens) | Ja | |
9 | RETRIEVED (Inkommet meddelande) | Nytt meddelandet inkommit till Meddelandetjänsten. · Meddelandet är validerat och kommer kvitteras. (funktionsadress/handlingServiceId). | ||
10 | RECEIPT_SENT | Nytt inkommit meddelande är kvitterat av Meddelandetjänsten. · Transportkvittens mottagen för meddelandekvittens. | ||
11 | NEW | Inkommit meddelandet är kvitterat och kan hämtas av Meddelandeklient.. | Ja | Ja |
12 | ERROR | Oväntat fel under meddelandeflödet. Resulterar i slutlig status “MESSAGE_EXCHANGE_ERROR“. | Ja |
KV: Type
Kodverket används för att kategorisera “problem“ (type).
Kod (Type) | Title | Kommentar |
---|---|---|
urn:problem-type:sdk:badRequest | badRequest | Tekniskt fel. Ej följsam mot · OpenAPI · Schema · Schematron Används endast vid synkrona felmeddelanden via API. |
urn:event-type:sdk:message | · MESSAGE_EXCHANGE_ERROR · ACCEPTED | Tekniskt fel alternativt meddelandet accepterat/kvitterat |
Exempel Event
Exemplen visar hur problemobjektet presenterar Diggs kvittensmeddelanden (vid fel)
Digg meddelandekvittens: AnnatFel (xml)
<cac:DocumentResponse> <cac:Response> <cbc:ResponseCode>REJECTED</cbc:ResponseCode> </cac:Response> <cac:DocumentReference> <cbc:ID>ID-FROM-XHE-12354689</cbc:ID> </cac:DocumentReference> <cac:LineResponse> <cac:LineReference> <cbc:LineID>/Nyttolast/Typkod</cbc:LineID> </cac:LineReference> <cac:Response> <cbc:ResponseCode>BV</cbc:ResponseCode> <cac:Status> <cbc:StatusReasonCode>RegelID-123</cbc:StatusReasonCode> <cbc:StatusReason>Typkoden måste vara A eller B om...</cbc:StatusReason> </cac:Status> </cac:Response> </cac:LineResponse> <cac:LineResponse> <cac:LineReference> <cbc:LineID>/Nyttolast/Referens</cbc:LineID> </cac:LineReference> <cac:Response> <cbc:ResponseCode>BV</cbc:ResponseCode> <cac:Status> <cbc:StatusReasonCode>RegelID-111</cbc:StatusReasonCode> <cbc:StatusReason>Referens som anges måste vara enligt den policy som angivits i specifikationen...</cbc:StatusReason> </cac:Status> </cac:Response> </cac:LineResponse> </cac:DocumentResponse>
Problem: AnnatFel (json)
Urklipp, endast problemobjektet visas.
{ "type": "urn:event-type:sdk:message", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "ID-FROM-XHE-12354689 (DocumentReference.Id)", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Message REJECTED by receiver", "detail": "", "in": "", "dateTime": "" }, { "typeCode": "BV (ResponseCode)", "title": "RegelID-123 (StatusReasonCode)", "detail": "Typkoden måste vara A eller B om... (StatusReason)", "in": "/Nyttolast/Typkod (LineId)", "dateTime": "" }, { "typeCode": "BV (ResponseCode)", "title": "RegelID-111 (StatusReasonCode)", "detail": "Referens som anges måste vara enligt den policy som angivits i specifikationen... (StatusReason)", "in": "/Nyttolast/Referens (LineId)", "dateTime": "" } ]}
Digg meddelandekvittens: SCHEFel (xml)
<cac:DocumentResponse> <cac:Response> <cbc:ResponseCode>REJECTED</cbc:ResponseCode> </cac:Response> <cac:DocumentReference> <cbc:ID>ID-FROM-XHE-12354689</cbc:ID> </cac:DocumentReference> <cac:LineResponse> <cac:LineReference> <cbc:LineID>/Nyttolast/Typkod</cbc:LineID> </cac:LineReference> <cac:Response> <cbc:ResponseCode>BV</cbc:ResponseCode> <cac:Status> <cbc:StatusReasonCode>RegelID-123</cbc:StatusReasonCode> <cbc:StatusReason>Typkoden måste vara A eller B om...</cbc:StatusReason> </cac:Status> </cac:Response> </cac:LineResponse> <cac:LineResponse> <cac:LineReference> <cbc:LineID>/Nyttolast/Rad[4]/Datum</cbc:LineID> </cac:LineReference> <cac:Response> <cbc:ResponseCode>BV</cbc:ResponseCode> <cac:Status> <cbc:StatusReasonCode>RegelID-678</cbc:StatusReasonCode> <cbc:StatusReason>Datum på rad får inte infalla efter ett annat datum på huvudet....</cbc:StatusReason> </cac:Status> </cac:Response> </cac:LineResponse> </cac:DocumentResponse>
Problem: SCHEFel (json)
Urklipp, endast problemobjektet visas.
{ "type": "urn:event-type:sdk:message", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "ID-FROM-XHE-12354689 (DocumentReference.Id)", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Message REJECTED by receiver", "detail": "", "in": "", "dateTime": "" }, { "typeCode": "BV (ResponseCode)", "title": "RegelID-123 (StatusReasonCode)", "detail": "Typkoden måste vara A eller B om... (StatusReason)", "in": "/Nyttolast/Typkod (LineId)", "dateTime": "" }, { "typeCode": "BV (ResponseCode)", "title": "RegelID-678 (StatusReasonCode)", "detail": "Datum på rad får inte infalla efter ett annat datum på huvudet.... (StatusReason)", "in": "/Nyttolast/Rad[4]/Datum (LineId)", "dateTime": "" } ]}
Digg meddelandekvittens: SIG (xml)
<cac:DocumentResponse> <cac:Response> <cbc:ResponseCode>REJECTED</cbc:ResponseCode> </cac:Response> <cac:DocumentReference> <cbc:ID>ID-FROM-XHE-12354689</cbc:ID> </cac:DocumentReference> <cac:LineResponse> <cac:LineReference> <cbc:LineID>NA</cbc:LineID> </cac:LineReference> <cac:Response> <cbc:ResponseCode>SIG</cbc:ResponseCode> <cac:Status> <!--<cbc:StatusReasonCode></cbc:StatusReasonCode>--> <cbc:StatusReason>Signatur ej korrekt</cbc:StatusReason> </cac:Status> </cac:Response> </cac:LineResponse> </cac:DocumentResponse>
Problem: SIG (json)
Urklipp, endast problemobjektet visas.
{ "type": "urn:event-type:sdk:message", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "ID-FROM-XHE-12354689 (DocumentReference.Id)", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Message REJECTED by receiver", "detail": "", "in": "", "dateTime": "" }, { "typeCode": "SIG (ResponseCode)", "title": "NA (StatusReasonCode)", "detail": "Signatur ej korrekt (StatusReason)", "in": "NA", "dateTime": "" } ]}
Digg meddelandekvittens: XSDFel (xml)
<cac:DocumentResponse> <cac:Response> <cbc:ResponseCode>REJECTED</cbc:ResponseCode> </cac:Response> <cac:DocumentReference> <cbc:ID>ID-FROM-XHE-12354689</cbc:ID> </cac:DocumentReference> <cac:LineResponse> <cac:LineReference> <cbc:LineID>NA</cbc:LineID> </cac:LineReference> <cac:Response> <cbc:ResponseCode>SV</cbc:ResponseCode> <cac:Status> <!--<cbc:StatusReasonCode></cbc:StatusReasonCode>--> <cbc:StatusReason>Element ABC is not allowed under element EFG</cbc:StatusReason> </cac:Status> </cac:Response> </cac:LineResponse> </cac:DocumentResponse>
Problem: XSDFel (json)
{ "type": "urn:event-type:sdk:message", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "ID-FROM-XHE-12354689 (DocumentReference.Id)", "eventsIssue": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Message REJECTED by receiver", "detail": "", "in": "", "dateTime": "" }, { "typeCode": "SV (ResponseCode)", "title": "NA (StatusReasonCode)", "detail": "Element ABC is not allowed under element EFG (StatusReason)", "in": "NA", "dateTime": "" } ]}
Exempel Meddelandeflöde
Exemplen innehåller kompletta meddelanden inklusive Event.
“Utebliven kvittens”
{ "meta": { "version": "1.0.0" }, "links": { "self": "https://otm-sdk.inera.se/sdk-api/v1/sdk/messages" }, "data": [ { "type": "messages", "id": "19c7e876-ef6f-4fb0-bccb-e93e3ab6e69f", "attributes": { "messageStatus": "MESSAGE_EXCHANGE_ERROR", "creationDateTime": "2018-09-12T15:06:00Z2023-", "messageId": "ff325210-0690-42fe-b86f-95ecab821223", "conversationId": "a8480ada-6a1f-44a3-a960-9acaf4efcdcd", "refToMessageId": "ff325210-0690-42fe-b86f-95ecab821223", "confidentiality": true, "generatingSystem": { "root": "string", "extension": "string", "label": "string" }, "recipientAttention": { "subOrganization": { "root": "urn:riv:infrastructure:messaging:functionalAddress", "extension": "sdk:inkorg:0203:digg.se", "label": "Inkorgen hos Digg" }, "attentionPerson": [ { "root": "1.2.752.29.6.2.1", "extension": "SE2321000016-nnnnn", "label": "Anna Andersson" } ], "referenceId": [ { "root": "1.2.752.129.2.1.3.1", "extension": "19121212-1212", "label": "Tolvan Tolvansson" } ] }, "senderAttention": { "subOrganization": { "root": "urn:riv:infrastructure:messaging:functionalAddress", "extension": "sdk:utkorg:0203:inera.se", "label": "Utkorgen hos Inera" }, "attentionPerson": [ { "root": "1.2.752.29.6.2.1", "extension": "SE2321000016-nnnnn", "label": "Anna Andersson" } ], "referenceId": [ { "root": "1.2.752.129.2.1.3.1", "extension": "19121212-1212", "label": "Tolvan Tolvansson" } ] }, "sender": "0203:inera.se", "recipient": "0203:digg.se", "event": { "type": "urn:event-type:sdk:message", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "7a366a80-9931-4f37-b224-de4069e1c8bf", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Timeout error. No receipt recived from...", "detail": "NA", "in": "NA", "dateTime": "" }, { "typeCode": "WAITING_FOR_RECEIPT", "title": "Waiting for receipt from remote party", "detail": "NA", "in": "NA", "dateTime": "" }, { "typeCode": "SCHEDULED", "title": "Message scheduled for sending to local Access Point", "detail": "NA", "in": "NA", "dateTime": "" } ] } } } ]}
Meddelandet accepterat
{ "meta": { "version": "1.0.0" }, "links": { "self": "https://otm-sdk.inera.se/sdk-api/v1/sdk/messages" }, "data": [ { "type": "messages", "id": "19c7e876-ef6f-4fb0-bccb-e93e3ab6e69f", "attributes": { "messageStatus": "ACCEPTED", "creationDateTime": "2018-09-12T15:06:00Z2023-", "messageId": "ff325210-0690-42fe-b86f-95ecab821223", "conversationId": "a8480ada-6a1f-44a3-a960-9acaf4efcdcd", "refToMessageId": "ff325210-0690-42fe-b86f-95ecab821223", "confidentiality": true, "generatingSystem": { "root": "string", "extension": "string", "label": "string" }, "recipientAttention": { "subOrganization": { "root": "urn:riv:infrastructure:messaging:functionalAddress", "extension": "sdk:inkorg:0203:digg.se", "label": "Inkorgen hos Digg" }, "attentionPerson": [ { "root": "1.2.752.29.6.2.1", "extension": "SE2321000016-nnnnn", "label": "Anna Andersson" } ], "referenceId": [ { "root": "1.2.752.129.2.1.3.1", "extension": "19121212-1212", "label": "Tolvan Tolvansson" } ] }, "senderAttention": { "subOrganization": { "root": "urn:riv:infrastructure:messaging:functionalAddress", "extension": "sdk:utkorg:0203:inera.se", "label": "Utkorgen hos Inera" }, "attentionPerson": [ { "root": "1.2.752.29.6.2.1", "extension": "SE2321000016-nnnnn", "label": "Anna Andersson" } ], "referenceId": [ { "root": "1.2.752.129.2.1.3.1", "extension": "19121212-1212", "label": "Tolvan Tolvansson" } ] }, "sender": "0203:inera.se", "recipient": "0203:digg.se", "event": { "type": "urn:event-type:sdk:message", "title": "ACCEPTED", "detail": ACCEPTED", "instance": "7a366a80-9931-4f37-b224-de4069e1c8bf", "eventIssues": [ { "typeCode": "ACCEPTED", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "WAITING_FOR_RECEIPT", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "ACKNOWLEDGE", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SCHEDULED_FOR_RESEND", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SUBMITTED", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SCHEDULED", "title": "Message scheduled for sending to local Access Point", "detail": "NA", "in": "NA", "dateTime": "" } ] } } } ]}
Meddelandet avvisat
(Urklipp Event)
{ "type": "urn:event-type:sdk:message", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "7a366a80-9931-4f37-b224-de4069e1c8bf", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Message REJECTED ..", "detail": "", "in": "", "dateTime": "" }, { "typeCode": "BV (ResponseCode)", "title": "RegelID-123 (StatusReasonCode)", "detail": "Typkoden måste vara A eller B om... (StatusReason)", "in": "/Nyttolast/Typkod (LineId)", "dateTime": "" }, { "typeCode": "WAITING_FOR_RECEIPT", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "ACKNOWLEDGE", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SCHEDULED_FOR_RESEND", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SUBMITTED", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SCHEDULED", "title": "Message scheduled for sending to local Access Point", "detail": "NA", "in": "NA", "dateTime": "" } ]}
Transportkvittens saknas
(Urklipp Event)
{ "type": "urn:event-type:sdk:message", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "7a366a80-9931-4f37-b224-de4069e1c8bf", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Acknowledge not recieved within timeout x from ...", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SCHEDULED_FOR_RESEND", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SUBMITTED", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SCHEDULED", "title": "Message scheduled for sending to local Access Point", "detail": "NA", "in": "NA", "dateTime": "" } ]}
Transportkvittens kunde ej skickas
(Urklipp Event)
{ "type": "urn:event-type:sdk:message", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "7a366a80-9931-4f37-b224-de4069e1c8bf", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Error in infrastructure. Unable to send acknowwledge", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SCHEDULED_FOR_RESEND", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SUBMITTED", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SCHEDULED", "title": "Message scheduled for sending to local Access Point", "detail": "NA", "in": "NA", "dateTime": "" } ]}
Meddelandekvittens saknas
(Urklipp Event)
{ "type": "urn:event-type:sdk:message", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "7a366a80-9931-4f37-b224-de4069e1c8bf", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "No message receipt recived from...", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "WAITING_FOR_RECEIPT", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "ACKNOWLEDGE", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SCHEDULED_FOR_RESEND", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SUBMITTED", "title": "NA", "detail": "NA", "in": "xyz", "dateTime": "" }, { "typeCode": "SCHEDULED", "title": "Message scheduled for sending to local Access Point", "detail": "NA", "in": "NA", "dateTime": "" } ]}
Meddelandekvittens kunde ej skickas
(Urklipp Event)
{ "type": "urn:event-type:sdk:message", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "7a366a80-9931-4f37-b224-de4069e1c8bf", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Timeout, unable so resend message", "detail": "NA", "in": "xyz" }, { "typeCode": "SCHEDULED_FOR_RESEND", "title": "NA", "detail": "NA", "in": "xyz" }, { "typeCode": "SUBMITTED", "title": "NA", "detail": "NA", "in": "xyz" }, { "typeCode": "SCHEDULED", "title": "Message scheduled for sending to local Access Point", "detail": "NA", "in": "NA" } ]}
Meddelandet kunde ej paketeras på grund av fel
(Urklipp Event)
{ "type": "urn:event-type:sdk:messageExchangeError", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "7a366a80-9931-4f37-b224-de4069e1c8bf", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Ubable to connect to Access point...", "detail": "Error in Certpub...", "in": "xyz" }, { "typeCode": "ERROR", "title": "Ubable to connect to AP...", "detail": "Error in AP communication...", "in": "xyz" }, { "typeCode": "SCHEDULED", "title": "Message scheduled for sending to local Access Point", "detail": "NA", "in": "NA" } ]}
(Urklipp Event)
ERROR
{ "type": "urn:event-type:sdk:messageExchangeError", "title": "MESSAGE_EXCHANGE_ERROR", "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "7a366a80-9931-4f37-b224-de4069e1c8bf", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Ubable to connect to Access point...", "detail": "Error in Certpub...", "in": "xyz" }, { "typeCode": "ERROR", "title": "Ubable to connect to Addressbok/CertPub ...", "detail": "Error in communication...", "in": "xyz" } ]}
BadRequest
Exempel på ett synkront felmeddelande vid API anrop: T.ex. meddelandet följer ej teknisk specifikation.
{ "type": "urn:event-type:sdk:badRequest", "title": "Bad Request", "status": 400, "detail": "MESSAGE_EXCHANGE_ERROR", "instance": "7a366a80-9931-4f37-b224-de4069e1c8bf", "eventIssues": [ { "typeCode": "MESSAGE_EXCHANGE_ERROR", "title": "Input isn't valid with respect to schema", "detail": "Wrong date format...", "in": "xyz", "dateTime": "" } ]}
Mappning Kvittens och Event (Digg Kvittensmeddelande)
Avsnittet beskriver hur kvittensmeddelandet innehållande avvikelser ska representeras av problemobjektet. Diggs kvittensmeddelande innehåller fel som kan uppstå inom transportinfrastrukturen.
Attribut | Beskrivning och giltiga värden | Kvittens mappning | |
---|---|---|---|
1 | type | “A URI reference [RFC3986] that identifies the problem type.“ Max 128 En URI som identifierar typ av fel | CustomizationID |
2 | title | “A short, human-readable summary of the problem type.“ Max: 120 En kort beskrivning av problemet Meddelanden som ej accepteras av mottagaren markeras som “BadRequest“ | - |
3 | status | “The [HTTP status code](https://www.rfc-editor.org/rfc/rfc9110#name-status-codes Länk till annan webbplats. ) generated by the origin server for this occurrence of the problem.“ Statuskod “400“ Koder enligt specifikation. | - |
4 | detail | “A human-readable explanation specific to this occurrence of the problem.” En kort beskrivning av problemet. Max: 128 | ResponseCode |
5 | instance | “A URI reference that identifies the specific occurrence of the problem.“ Id som identifierar/refererar till resursen som falerat. Max: 2048 | |
6 | SDK Addition to RFC | ||
7 | events.typeCode | Specifik error code | LineResponse · ResponseCode |
8 | events.title | Error title | LineResponse · StatusResponseCode |
9 | events.detail | Error details | LineResponse · StatusReason |
10 | OTHAYOTH - Website Under Construction | Reference to error, ex row or xpath reference | LineResponse · LineID |
ta bort
Ditt svar hjälper oss att förbättra sidan
Senast uppdaterad: