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.

Källa: https://docs.swedenconnect.se/technical-framework/sdg/sdg-oauth2-profile.html Länk till annan webbplats.

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
T.ex. funktionsadress, behörighetsgrupp etc
“*.blue.sdk.inera.se“

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).
“*.blue.sdk.inera.se“

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

DocumentReference.ID Länk till annan webbplats.

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
Hjälpte denna information dig?

Ditt svar hjälper oss att förbättra sidan

Senast uppdaterad: