From 06291eacba30a61eb8408728ace6716efa557630 Mon Sep 17 00:00:00 2001 From: Nina Kylstad Date: Tue, 17 Sep 2024 22:18:49 +0200 Subject: [PATCH 01/11] Move Summary2 component docs from app to altinn-studio content folder (#1786) --- .../reference}/ux/components/Summary2/_index.en.md | 0 .../reference}/ux/components/Summary2/_index.nb.md | 0 .../ux/components/Summary2/examplesummary.png | Bin .../reference}/ux/components/Summary2/summary2.png | Bin 4 files changed, 0 insertions(+), 0 deletions(-) rename content/{app/development => altinn-studio/reference}/ux/components/Summary2/_index.en.md (100%) rename content/{app/development => altinn-studio/reference}/ux/components/Summary2/_index.nb.md (100%) rename content/{app/development => altinn-studio/reference}/ux/components/Summary2/examplesummary.png (100%) rename content/{app/development => altinn-studio/reference}/ux/components/Summary2/summary2.png (100%) diff --git a/content/app/development/ux/components/Summary2/_index.en.md b/content/altinn-studio/reference/ux/components/Summary2/_index.en.md similarity index 100% rename from content/app/development/ux/components/Summary2/_index.en.md rename to content/altinn-studio/reference/ux/components/Summary2/_index.en.md diff --git a/content/app/development/ux/components/Summary2/_index.nb.md b/content/altinn-studio/reference/ux/components/Summary2/_index.nb.md similarity index 100% rename from content/app/development/ux/components/Summary2/_index.nb.md rename to content/altinn-studio/reference/ux/components/Summary2/_index.nb.md diff --git a/content/app/development/ux/components/Summary2/examplesummary.png b/content/altinn-studio/reference/ux/components/Summary2/examplesummary.png similarity index 100% rename from content/app/development/ux/components/Summary2/examplesummary.png rename to content/altinn-studio/reference/ux/components/Summary2/examplesummary.png diff --git a/content/app/development/ux/components/Summary2/summary2.png b/content/altinn-studio/reference/ux/components/Summary2/summary2.png similarity index 100% rename from content/app/development/ux/components/Summary2/summary2.png rename to content/altinn-studio/reference/ux/components/Summary2/summary2.png From 1b503484c82c0a514f66dd740d7e0b11c067764b Mon Sep 17 00:00:00 2001 From: Andreas Hammerbeck Date: Mon, 23 Sep 2024 08:50:23 +0200 Subject: [PATCH 02/11] fix wrong naming in Broker terminology (#1792) * fix wrong naming in Broker terminology * Fix wrong naming in correspondence * more fixes of wrong terminology * plural in file transfer --------- Co-authored-by: Hammerbeck --- content/broker/_index.en.md | 8 ++++---- content/broker/_index.nb.md | 8 ++++---- content/broker/reference/terminology/_index.en.md | 8 ++++---- content/broker/reference/terminology/_index.nb.md | 8 ++++---- .../correspondence/reference/capabilities/_index.nb.md | 2 +- .../reference/solution-architecture/_index.nb.md | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/content/broker/_index.en.md b/content/broker/_index.en.md index c747458f252..79eb20d90e5 100644 --- a/content/broker/_index.en.md +++ b/content/broker/_index.en.md @@ -13,8 +13,8 @@ weight: 1 ## What you get with Altinn Broker An overview and description of the key functionalities and features of Altinn Broker. -### End-to-end message exchange -Altinn Formidling offers end-to-end message exchange, from creation, sending, receiving to tracking messages. This ensures that all parts of the messaging flow are handled efficiently and securely. +### End-to-end file transfers +Altinn Formidling offers end-to-end file transfers, from creation, sending, receiving to tracking file transfers. This ensures that all parts of the messaging flow are handled efficiently and securely. ### Support for large payloads A unique feature of Altinn Broker is its ability to handle large data volumes (payloads). We aim to support very large payloads in the near future. This is the solution for those who need to transfer large amounts of information efficiently and securely. @@ -23,10 +23,10 @@ A unique feature of Altinn Broker is its ability to handle large data volumes (p Users have access to all functionalities through both a user-friendly interface (GUI) and via APIs. This provides you with the flexibility to integrate Altinn Formidling into your own systems, allowing you to automate your processes. ### Notifications and tracking -The system supports detailed notification and tracking mechanisms. This includes notifications in accordance with the E-Government Regulation, ensuring that you are always updated on the status of your messages. The tracking provides a complete overview of the messaging flow, including delivery status and confirmations. +The system supports detailed notification and tracking mechanisms. This includes notifications in accordance with the E-Government Regulation, ensuring that you are always updated on the status of your transfers. The tracking provides a complete overview of the messaging flow, including delivery status and confirmations. ### High degree of auditability and detailed access control -Altinn Broker offers a high degree of auditability, meaning that all events and processes are logged carefully for verification. The system also supports refined and detailed access control, ensuring that only authorized users can access specific messages or functionalities. +Altinn Broker offers a high degree of auditability, meaning that all events and processes are logged carefully for verification. The system also supports refined and detailed access control, ensuring that only authorized users can access specific transfers or functionalities. ### Support for various file formats The solution is flexible and supports both structured and unstructured files. This customization allows for adaptation to a wide range of use cases and data formats. diff --git a/content/broker/_index.nb.md b/content/broker/_index.nb.md index 0cce08b2b59..8ab52bf3c58 100644 --- a/content/broker/_index.nb.md +++ b/content/broker/_index.nb.md @@ -12,8 +12,8 @@ weight: 1 ## Hva du får med Altinn Formidling Overordnet oversikt og bekrivelse av nøkkelfunksjonalitetene og egenskapene til Altinn Formidling -### Ende-til-ende meldingsutveksling -Altinn Formidling tilbyr ende-til-ende meldingsutveksling, fra opprettelse, sending, mottak til sporing av meldinger. Dette sikrer at alle deler av meldingsflyten håndteres effektivt og sikkert. +### Ende-til-ende filoverføringer +Altinn Formidling tilbyr ende-til-ende filoverføringer, fra opprettelse, sending, mottak til sporing av fileoverføringer. Dette sikrer at alle deler av overføringsflyten håndteres effektivt og sikkert. ### Støtte for store payloads Et særegent trekk ved Altinn Formidling er evne til å håndtere store datamengder (payloads). Vi har ambisjoner om å støtte svært store payloads i nær fremtid. Dette er løsningen for deg som trenger å overføre store mengder informasjon effektivt og sikkert. @@ -22,10 +22,10 @@ Et særegent trekk ved Altinn Formidling er evne til å håndtere store datameng Brukere får tilgang til alle funksjoner både gjennom et brukervennlig grensesnitt (GUI) og via API-er. Dette gir deg fleksibilitet til å integrere Altinn Formidling i egne systemer, slik at du kan automatisere dine prosesser. ### Varsling og sporing -Systemet støtter detaljerte varslings- og sporingsmekanismer. Dette inkluderer varslinger i tråd med eForvaltningsforskriften, som sikrer at du alltid er oppdatert på statusen til deres meldinger. Sporingen gir full oversikt over meldingsflyten, inkludert leveringsstatus og bekreftelser. +Systemet støtter detaljerte varslings- og sporingsmekanismer. Dette inkluderer varslinger i tråd med eForvaltningsforskriften, som sikrer at du alltid er oppdatert på statusen til deres overføringer. Sporingen gir full oversikt over overføringsflyten, inkludert leveringsstatus og bekreftelser. ### Høy grad av notoritet og detaljert tilgangsstyring -Altinn Formidling tilbyr en høy grad av notoritet, noe som betyr at alle hendelser og prosesser loggføres nøye for etterprøvbarhet. Systemet støtter også spisset og detaljert tilgangsstyring, slik at du kan være trygg på at kun autoriserte brukere får tilgang til spesifikke meldinger eller funksjoner. +Altinn Formidling tilbyr en høy grad av notoritet, noe som betyr at alle hendelser og prosesser loggføres nøye for etterprøvbarhet. Systemet støtter også spisset og detaljert tilgangsstyring, slik at du kan være trygg på at kun autoriserte brukere får tilgang til spesifikke filoverføringer eller funksjoner. ### Støtte for ulike filformater Løsningen er fleksibel og støtter både strukturerte og ustrukturerte filer. Dette gjør det mulig å tilpasse løsningen til en rekke forskjellige bruksområder og dataformater. diff --git a/content/broker/reference/terminology/_index.en.md b/content/broker/reference/terminology/_index.en.md index 3dd3866b0aa..906732c87a1 100644 --- a/content/broker/reference/terminology/_index.en.md +++ b/content/broker/reference/terminology/_index.en.md @@ -1,14 +1,14 @@ --- title: Terminology linktitle: Terminology -description: Altinn 3 Terminology +description: Terminology for Altinn 3 Broker tags: [] toc: false weight: 10 --- The following table gives brief descriptions of the main terms used to describe -Altinn 3 Correspondence. Also see https://docs.altinn.studio/technology/terms/ and . +Altinn 3 Broker. Also see https://docs.altinn.studio/technology/terms/ and . | **Term** | **Explanation** | |--------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -70,6 +70,6 @@ A longer list of terms. kept as a comment until further: --> Notes: -* In the context of Altinn Correspondence, the terms _Data Provider_ and _Sender_ may be assumed to mean the same. -* In the context of Altinn Correspondence, the terms _Data Consumer_ and _Recipient_ may be assumed to mean the same. +* In the context of Altinn Broker, the terms _Data Provider_ and _Sender_ may be assumed to mean the same. +* In the context of Altinn Broker, the terms _Data Consumer_ and _Recipient_ may be assumed to mean the same. diff --git a/content/broker/reference/terminology/_index.nb.md b/content/broker/reference/terminology/_index.nb.md index 0fb3fefc338..d748d759990 100644 --- a/content/broker/reference/terminology/_index.nb.md +++ b/content/broker/reference/terminology/_index.nb.md @@ -1,13 +1,13 @@ --- title: Begreper linktitle: Begreper -description: Begrepsapparat for Altinn 3 Melding +description: Begrepsapparat for Altinn 3 Formidling tags: [] toc: false weight: 10 --- -Her følger en tabell som gir korte beskrivelser av hovedbegrepene som brukes for å beskrive Altinn 3 Melding. +Her følger en tabell som gir korte beskrivelser av hovedbegrepene som brukes for å beskrive Altinn 3 Formidling. Se også https://docs.altinn.studio/technology/terms/ og . | **Begrep** | **Forklaring** | @@ -36,7 +36,7 @@ Se også https://docs.altinn.studio/technology/terms/ og diff --git a/content/correspondence/reference/capabilities/_index.nb.md b/content/correspondence/reference/capabilities/_index.nb.md index 0664d705aa9..ca4922b55ea 100644 --- a/content/correspondence/reference/capabilities/_index.nb.md +++ b/content/correspondence/reference/capabilities/_index.nb.md @@ -18,7 +18,7 @@ TBD ## Overordnede brukerbehov -For å se hvilke egenskaper som kreves av Altinn Formidlingsløsningen, starter vi med å vurdere brukernes behov. +For å se hvilke egenskaper som kreves av Altinn Meldingsløsningen, starter vi med å vurdere brukernes behov. Følgende diagram uttrykker de overordnede brukerbehovene for hvert verdistrømsteg. Figur: TBD diff --git a/content/correspondence/reference/solution-architecture/_index.nb.md b/content/correspondence/reference/solution-architecture/_index.nb.md index 5290650f359..eedc3f146be 100644 --- a/content/correspondence/reference/solution-architecture/_index.nb.md +++ b/content/correspondence/reference/solution-architecture/_index.nb.md @@ -9,7 +9,7 @@ weight: 40 ## Overordnet løsningsarkitektur -Følgende figur gir en oversikt over de vikigste byggeklossene i overordnet løsningsarktitektur for Altinn 3 Formidling. +Følgende figur gir en oversikt over de vikigste byggeklossene i overordnet løsningsarktitektur for Altinn 3 Melding. ![Byggeklosser i Altinn 3 Melding - overordnet løsningsarkitektur](altinn3-correspondence-solution-overview-nb.png "Byggeklosser i Altinn 3 Melding - overordnet løsningsarkitektur") From a5d801db7352b560364598ad9b3b678a529eece4 Mon Sep 17 00:00:00 2001 From: Nina Kylstad Date: Mon, 23 Sep 2024 08:59:19 +0200 Subject: [PATCH 03/11] chore(studio): updated intro course docs for adding alternatives (#1793) * chore(studio): updated intro course docs for adding alternatives * use correct image name --- .../app-dev-course/modul6/_index.nb.md | 4 ++-- .../app-dev-course/modul6/bruk_kodeliste.png | Bin 7368 -> 22156 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/altinn-studio/getting-started/app-dev-course/modul6/_index.nb.md b/content/altinn-studio/getting-started/app-dev-course/modul6/_index.nb.md index 9c2b8921289..43aa2f31e94 100644 --- a/content/altinn-studio/getting-started/app-dev-course/modul6/_index.nb.md +++ b/content/altinn-studio/getting-started/app-dev-course/modul6/_index.nb.md @@ -61,7 +61,7 @@ Brukeren skal kunne velge mellom offentlig og privat sektor. Til det er det natu 1. Dra inn en komponent av typen "Radioknapper" øverst på den nye siden. 2. Under "Tekst" i egenskapene til komponenten du har lagt til, legg til ledeteksten "Sektor". Nå bør skjemabyggeren se slik ut: !["Skjemabygger med sektor"](skjemabygger_med_sektor.png) -3. Nederst i tekstseksjonen kan man sette opp alternativer. Bryteren "Bruk kodeliste" er slått på som standard. Slå den av, så du kan legge til alternativene selv. +3. Nederst i tekstseksjonen kan man sette opp alternativer. Fanen "Velg kodeliste" er valgt som utgangspunkt. Velg fanen "Sett opp egne alternativer" for å legge til egne alternativer. 4. Velg "Legg til alternativ". Du vil se at det dukker opp et alternativ under overskriften "Radioknapp 1" med en generert verdi. 5. Klikk på "Radioknapp 1". 6. Bytt ut verdien med `offentlig`. Dette er verdien som vil bli sendt til systemet når brukeren besvarer skjemaet. @@ -104,7 +104,7 @@ Slik bruker du en kodeliste til å lage en liste med avmerkingsbokser: !["Hent endringer"-knapp](hent_endringer.png) Klikk på knappen. Du vil få en bekreftelse på at du har fått siste versjon og prikken forsvinner. 2. Åpne siden der du la til "Bransje" og klikk på "Bransje". -3. Under "Tekst" i egenskapene for "Bransje", sjekk at valget "Bruk kodeliste" er slått på. +3. Under "Tekst" i egenskapene for "Bransje", sjekk at fanen "Velg kodeliste" er valgt. 3. Velg "industri" fra nedtrekkslisten under. !["Bruk kodeliste"-nedtrekssliste](bruk_kodeliste.png) diff --git a/content/altinn-studio/getting-started/app-dev-course/modul6/bruk_kodeliste.png b/content/altinn-studio/getting-started/app-dev-course/modul6/bruk_kodeliste.png index dcacd80d20c869c8540190cd6ce43a289412f8d9..f643597fe5e7776c18ff8fa84a9e890af5ede948 100644 GIT binary patch literal 22156 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⋙+Ek@2+ma9dBCOfrMk6-2dP@Mt`DmIQMCFE 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 Fe*m+~1}6Xj literal 7368 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 Lstz2jVjccp?5Mgf From eafbba2a2d335b456259efab107ac9c46db0b18b Mon Sep 17 00:00:00 2001 From: Erling Hauan <148075168+ErlingHauan@users.noreply.github.com> Date: Mon, 23 Sep 2024 09:09:35 +0200 Subject: [PATCH 04/11] Fix numbering (#1794) --- .../getting-started/app-dev-course/modul6/_index.nb.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/altinn-studio/getting-started/app-dev-course/modul6/_index.nb.md b/content/altinn-studio/getting-started/app-dev-course/modul6/_index.nb.md index 43aa2f31e94..fc4645d80cb 100644 --- a/content/altinn-studio/getting-started/app-dev-course/modul6/_index.nb.md +++ b/content/altinn-studio/getting-started/app-dev-course/modul6/_index.nb.md @@ -105,7 +105,7 @@ Slik bruker du en kodeliste til å lage en liste med avmerkingsbokser: Klikk på knappen. Du vil få en bekreftelse på at du har fått siste versjon og prikken forsvinner. 2. Åpne siden der du la til "Bransje" og klikk på "Bransje". 3. Under "Tekst" i egenskapene for "Bransje", sjekk at fanen "Velg kodeliste" er valgt. -3. Velg "industri" fra nedtrekkslisten under. +4. Velg "industri" fra nedtrekkslisten under. !["Bruk kodeliste"-nedtrekssliste](bruk_kodeliste.png) Nå skal avmerkingsboksene være klare. From a51a7f7b622b720f1ab078117a310901003ce3a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rune=20T=C3=B8mmer=C3=A5s=20Larsen?= Date: Tue, 24 Sep 2024 08:22:02 +0200 Subject: [PATCH 05/11] Updates docs (#1798) --- .../smartcloud.drawio.svg | 97 + .../altinn-platform-authentication-v1.json | 1706 ++++++++++++++++- 2 files changed, 1753 insertions(+), 50 deletions(-) create mode 100644 content/authentication/guides/systemauthentication-for-systemproviders/smartcloud.drawio.svg diff --git a/content/authentication/guides/systemauthentication-for-systemproviders/smartcloud.drawio.svg b/content/authentication/guides/systemauthentication-for-systemproviders/smartcloud.drawio.svg new file mode 100644 index 00000000000..b1fb40b5916 --- /dev/null +++ b/content/authentication/guides/systemauthentication-for-systemproviders/smartcloud.drawio.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + +
+
+
+ SmartCloud +
+
+
+
+ + SmartCloud + +
+
+ + + + +
+
+
+ Altinn Authentisering +
+
+
+
+ + Altinn Auth... + +
+
+ + + + + + + + + + +
+
+
+ API Eier +
+
+
+
+ + API Eier + +
+
+ + + + + +
+
+
+ Altinn Authorisasjon +
+
+
+
+ + Altinn Auth... + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/static/swagger/altinn-platform-authentication-v1.json b/static/swagger/altinn-platform-authentication-v1.json index 70ec99e29fb..b7b426a8cde 100644 --- a/static/swagger/altinn-platform-authentication-v1.json +++ b/static/swagger/altinn-platform-authentication-v1.json @@ -4,16 +4,6 @@ "title": "Altinn Platform Authentication", "version": "v1" }, - "servers": [ - { - "url": "https://platform.tt02.altinn.no/authentication/api/v1", - "description": "TT02" - }, - { - "url": "https://platform.altinn.no/authentication/api/v1", - "description": "Production" - } - ], "paths": { "/authentication": { "get": { @@ -27,9 +17,7 @@ "in": "query", "description": "The url to redirect to if everything validates ok", "schema": { - "type": "string", - "description": "The url to redirect to if everything validates ok", - "nullable": true + "type": "string" } }, { @@ -37,14 +25,36 @@ "in": "query", "description": "Parameter to indicate disabling of reportee selection in Altinn Portal.", "schema": { - "type": "boolean", - "description": "Parameter to indicate disabling of reportee selection in Altinn Portal." - } - } + "type": "boolean" + } + } ], "responses": { - "200": { - "description": "Success" + "302": { + "description": "Found" + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "503": { + "description": "Service Unavailable" } } } @@ -57,7 +67,44 @@ "summary": "Refreshes JwtToken.", "responses": { "200": { - "description": "Success" + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } } } } @@ -74,8 +121,7 @@ "in": "path", "required": true, "schema": { - "type": "string", - "nullable": true + "type": "string" } }, { @@ -88,7 +134,67 @@ ], "responses": { "200": { - "description": "Success" + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "text/plain": { + "schema": { + "type": "string" + } + }, + "application/json": { + "schema": { + "type": "string" + } + }, + "text/json": { + "schema": { + "type": "string" + } + } + } + }, + "429": { + "description": "Too Many Requests" } } } @@ -98,28 +204,29 @@ "tags": [ "Introspection" ], - "summary": "Validate token.", + "summary": "Validates provided token.", "requestBody": { + "description": "Gets or sets the token", "content": { "application/x-www-form-urlencoded": { "schema": { "type": "object", "properties": { - "Token": { + "token": { "type": "string", - "description": "The JWT access token" + "description": "Gets or sets the token" }, - "TokenTypeHint": { + "token_type_hint": { "type": "string", - "description": "The token type hint" + "description": "Gets or sets the token type hint" } } }, "encoding": { - "Token": { + "token": { "style": "form" }, - "TokenTypeHint": { + "token_type_hint": { "style": "form" } } @@ -128,7 +235,7 @@ }, "responses": { "200": { - "description": "Success", + "description": "OK", "content": { "application/json": { "schema": { @@ -140,6 +247,32 @@ } } }, + "/logout": { + "get": { + "tags": [ + "Logout" + ], + "summary": "Logs out user", + "responses": { + "302": { + "description": "Found" + } + } + } + }, + "/frontchannel_logout": { + "get": { + "tags": [ + "Logout" + ], + "summary": "Frontchannel logout for OIDC", + "responses": { + "200": { + "description": "OK" + } + } + } + }, "/openid/.well-known/openid-configuration": { "get": { "tags": [ @@ -148,7 +281,14 @@ "summary": "Returns a discovery document", "responses": { "200": { - "description": "Success" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DiscoveryDocument" + } + } + } } } } @@ -161,29 +301,1495 @@ "summary": "Returns the JSON Web Key Set to use when validating a token.", "responses": { "200": { - "description": "Success" + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JwksDocument" + } + } + } } } } - } - }, - "components": { - "schemas": { - "IntrospectionResponse": { - "type": "object", - "properties": { - "active": { - "type": "boolean", - "description": "Gets or sects the active property indicating if the request token was valid" - }, - "iss": { - "type": "string", - "description": "Gets or sets the issuer of the validated request token.", - "nullable": true + }, + "/systemuser/request/vendor": { + "post": { + "tags": [ + "RequestSystemUser" + ], + "summary": "Creates a new Request based on a SystemId for a SystemUser.", + "requestBody": { + "description": "The request model", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUser" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUser" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUser" + } + } } }, - "additionalProperties": false, - "description": "Introspection response object" + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + } + } + } + } + } + }, + "/systemuser/request/vendor/{requestId}": { + "get": { + "tags": [ + "RequestSystemUser" + ], + "summary": "Retrieves the Status (Response model) for a Request\r\nbased only on the Request.Id GUID", + "parameters": [ + { + "name": "requestId", + "in": "path", + "description": "The UUID for the Request", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + } + } + } + } + } + }, + "/systemuser/request/vendor/byexternalref/{systemId}/{orgNo}/{externalRef}": { + "get": { + "tags": [ + "RequestSystemUser" + ], + "summary": "Retrieves the Status (Response model) for a Request\r\nbased on the SystemId, OrgNo and the ExternalRef \r\n( which is enforced as a unique combination )", + "parameters": [ + { + "name": "systemId", + "in": "path", + "description": "The Id for the chosen Registered System.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "externalRef", + "in": "path", + "description": "The chosen external ref the Vendor sent in to the Create Request", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "orgNo", + "in": "path", + "description": "The organisation number for the customer", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + } + } + } + } + } + }, + "/systemuser/request/{party}/{requestId}": { + "get": { + "tags": [ + "RequestSystemUser" + ], + "summary": "Used by the BFF to authenticate the PartyId to retrieve the chosen Request by guid", + "parameters": [ + { + "name": "party", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "requestId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + } + } + } + } + } + }, + "/systemuser/request/{party}/{requestId}/approve": { + "post": { + "tags": [ + "RequestSystemUser" + ], + "summary": "Approves the systemuser requet and creates a system user", + "parameters": [ + { + "name": "party", + "in": "path", + "description": "the partyId", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "requestId", + "in": "path", + "description": "The UUID of the request to be approved", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateRequestSystemUserResponse" + } + } + } + } + } + } + }, + "/systemregister": { + "get": { + "tags": [ + "SystemRegister" + ], + "summary": "Retrieves the List of all the Registered Systems, except those marked as deleted.", + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RegisterSystemResponse" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RegisterSystemResponse" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RegisterSystemResponse" + } + } + } + } + } + } + } + }, + "/systemregister/system/{systemId}": { + "get": { + "tags": [ + "SystemRegister" + ], + "summary": "Retrieves a Registered System for the systemId.", + "parameters": [ + { + "name": "systemId", + "in": "path", + "description": "The Id of the Registered System", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/RegisterSystemResponse" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/RegisterSystemResponse" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RegisterSystemResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "SystemRegister" + ], + "summary": "Replaces the entire registered system", + "parameters": [ + { + "name": "systemId", + "in": "path", + "description": "The Id of the Registered System", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "The updated system model", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterUpdateResult" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterUpdateResult" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterUpdateResult" + } + } + } + } + } + }, + "delete": { + "tags": [ + "SystemRegister" + ], + "summary": "Set the registered system to be deleted.", + "parameters": [ + { + "name": "systemId", + "in": "path", + "description": "The human readable string id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterUpdateResult" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterUpdateResult" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterUpdateResult" + } + } + } + } + } + } + }, + "/systemregister/system/{systemId}/rights": { + "get": { + "tags": [ + "SystemRegister" + ], + "summary": "Retrieves a list of the predfined default rights for the Product type, if any", + "parameters": [ + { + "name": "systemId", + "in": "path", + "description": "The Id of the Product", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Right" + } + } + }, + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Right" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Right" + } + } + } + } + } + } + }, + "put": { + "tags": [ + "SystemRegister" + ], + "summary": "Updates the rights on a registered system", + "parameters": [ + { + "name": "systemId", + "in": "path", + "description": "The human readable string id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "A list of rights", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Right" + } + } + }, + "text/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Right" + } + } + }, + "application/*+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Right" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterUpdateResult" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterUpdateResult" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterUpdateResult" + } + } + } + } + } + } + }, + "/systemregister/system": { + "post": { + "tags": [ + "SystemRegister" + ], + "summary": "Create a new System", + "requestBody": { + "description": "The descriptor model of a new Registered System", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SystemRegisterRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "uuid" + } + }, + "application/json": { + "schema": { + "type": "string", + "format": "uuid" + } + }, + "text/json": { + "schema": { + "type": "string", + "format": "uuid" + } + } + } + } + } + } + }, + "/systemuser/{party}": { + "get": { + "tags": [ + "SystemUser" + ], + "summary": "Returns the list of SystemUsers this PartyID has registered", + "parameters": [ + { + "name": "party", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "post": { + "tags": [ + "SystemUser" + ], + "summary": "Creates a new SystemUser\r\nThe unique Id for the systemuser is handled by the db.\r\nBut the calling client may send a guid for the request of creating a new system user\r\nto ensure that there is no mismatch if the same partyId creates several new SystemUsers at the same time", + "parameters": [ + { + "name": "party", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemUserRequestDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SystemUserRequestDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SystemUserRequestDto" + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemUser" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/systemuser/{party}/{systemUserId}": { + "get": { + "tags": [ + "SystemUser" + ], + "summary": "Return a single SystemUser by PartyId and SystemUserId", + "parameters": [ + { + "name": "party", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "systemUserId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "delete": { + "tags": [ + "SystemUser" + ], + "summary": "Set the Delete flag on the identified SystemUser", + "parameters": [ + { + "name": "systemUserId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "party", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/systemuser/byExternalId": { + "get": { + "tags": [ + "SystemUser" + ], + "summary": "Used by MaskinPorten, to find if a given systemOrg owns a SystemUser Integration for a Vendor's Product, by an ExternalId", + "parameters": [ + { + "name": "clientId", + "in": "query", + "description": "The unique id maintained by MaskinPorten tying their clients to the Registered Systems the ServiceProivders have created in our db.", + "schema": { + "type": "string" + } + }, + { + "name": "systemProviderOrgNo", + "in": "query", + "description": "The legal number (Orgno) of the Vendor creating the Registered System (Accounting system)", + "schema": { + "type": "string" + } + }, + { + "name": "systemUserOwnerOrgNo", + "in": "query", + "description": "The legal number (Orgno) of the party owning the System User Integration", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/systemuser": { + "put": { + "tags": [ + "SystemUser" + ], + "summary": "Replaces the values for the existing system user with those from the update", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemUserUpdateDto" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SystemUserUpdateDto" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SystemUserUpdateDto" + } + } + } + }, + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AttributePair": { + "required": [ + "id", + "value" + ], + "type": "object", + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "value": { + "minLength": 1, + "type": "string" + } + }, + "additionalProperties": false + }, + "CreateRequestSystemUser": { + "required": [ + "partyOrgNo", + "rights", + "systemId" + ], + "type": "object", + "properties": { + "externalRef": { + "type": "string", + "nullable": true + }, + "systemId": { + "minLength": 1, + "type": "string" + }, + "partyOrgNo": { + "minLength": 1, + "type": "string" + }, + "rights": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Right" + } + }, + "redirectUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateRequestSystemUserResponse": { + "required": [ + "id", + "partyOrgNo", + "rights", + "status", + "systemId" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "externalRef": { + "type": "string", + "nullable": true + }, + "systemId": { + "minLength": 1, + "type": "string" + }, + "partyOrgNo": { + "minLength": 1, + "type": "string" + }, + "rights": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Right" + } + }, + "status": { + "minLength": 1, + "type": "string" + }, + "redirectUrl": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "DiscoveryDocument": { + "type": "object", + "properties": { + "issuer": { + "type": "string", + "description": "URL of the issuer", + "nullable": true + }, + "jwks_uri": { + "type": "string", + "description": "URL of the JSON Web Key Set document.", + "nullable": true + }, + "authorization_endpoint": { + "type": "string", + "description": "URL of the OAuth 2.0 Authorization Endpoint.", + "nullable": true + }, + "token_endpoint": { + "type": "string", + "description": "URL of the OAuth 2.0 Token Endpoint.", + "nullable": true + }, + "userinfo_endpoint": { + "type": "string", + "description": "Url of the UserInfo Endpoint.", + "nullable": true + }, + "end_session_endpoint": { + "type": "string", + "description": "URL of the end session Endpoint.", + "nullable": true + }, + "check_session_iframe": { + "type": "string", + "description": "URL for the session check Endpoint.", + "nullable": true + }, + "revocation_endpoint": { + "type": "string", + "description": "URL for the revocation endpoint.", + "nullable": true + }, + "introspection_endpoint": { + "type": "string", + "description": "URL for the introspection endpoint.", + "nullable": true + }, + "frontchannel_logout_supported": { + "type": "boolean", + "description": "Value indicating whether there is a front channel mechanism for logout.", + "nullable": true + }, + "frontchannel_logout_session_supported": { + "type": "boolean", + "description": "Value indicating wheter there is a front channel mechanism for session logout.", + "nullable": true + }, + "scopes_supported": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of supported scopes.", + "nullable": true + }, + "claims_supported": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of supported claims.", + "nullable": true + }, + "response_types_supported": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of supported response types.", + "nullable": true + }, + "response_modes_supported": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of supported response modes.", + "nullable": true + }, + "grant_types_supported": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of supported grant types.", + "nullable": true + }, + "subject_types_supported": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of supported subject types.", + "nullable": true + }, + "id_token_signing_alg_values_supported": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of supported signing algorithms.", + "nullable": true + }, + "token_endpoint_auth_methods_supported": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of supported authentication methods on the token endpoint.", + "nullable": true + }, + "code_challenge_methods_supported": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of supported code challenge methods.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Represents the well known discovery document described by \"OpenID Connect Discovery 1.0 incorporating errata set 1\"\r\nURL: https://openid.net/specs/openid-connect-discovery-1_0.html (and other specifications)" + }, + "IntrospectionResponse": { + "type": "object", + "properties": { + "active": { + "type": "boolean", + "description": "Gets or sects the active property indicating if the request token was valid" + }, + "iss": { + "type": "string", + "description": "Gets or sets the issuer of the validated request token.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Introspection response object" + }, + "JwkDocument": { + "type": "object", + "properties": { + "kty": { + "type": "string", + "description": "Gets or sets the type of key this is. E.g. RSA", + "nullable": true + }, + "use": { + "type": "string", + "description": "Gets or sets the type of use. E.g. sig", + "nullable": true + }, + "kid": { + "type": "string", + "description": "Gets or sets a unique id for the key.", + "nullable": true + }, + "e": { + "type": "string", + "description": "Gets or sets the RSA exponent value of the key.", + "nullable": true + }, + "n": { + "type": "string", + "description": "Gets or sets the RSA modulus value of the key.", + "nullable": true + }, + "x5c": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Gets or sets a list of base64 encoded certificate where each new item is the parent certificate of the previous in a certificate chain.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Represents a Json Wen Key as described by \"JSON Web Key (JWK) draft-ietf-jose-json-web-key-41\"\r\nURL: https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41" + }, + "JwksDocument": { + "type": "object", + "properties": { + "keys": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JwkDocument" + }, + "description": "Gets or sets the list of keys in the key set.", + "nullable": true + } + }, + "additionalProperties": false, + "description": "Represents a Json Wen Key set as described by \"JSON Web Key (JWK) draft-ietf-jose-json-web-key-41\"\r\nURL: https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41" + }, + "ProblemDetails": { + "type": "object", + "properties": { + "type": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "status": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "detail": { + "type": "string", + "nullable": true + }, + "instance": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": { } + }, + "RegisterSystemResponse": { + "required": [ + "description", + "name", + "systemId", + "systemInternalId", + "systemName", + "systemVendorOrgName", + "systemVendorOrgNumber" + ], + "type": "object", + "properties": { + "systemInternalId": { + "type": "string", + "format": "uuid" + }, + "systemId": { + "minLength": 1, + "type": "string" + }, + "systemVendorOrgNumber": { + "minLength": 1, + "type": "string" + }, + "systemVendorOrgName": { + "minLength": 1, + "type": "string" + }, + "systemName": { + "minLength": 1, + "type": "string" + }, + "name": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "description": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "rights": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Right" + }, + "nullable": true + }, + "softDeleted": { + "type": "boolean" + }, + "isVisible": { + "type": "boolean" + }, + "allowedRedirectUrls": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Right": { + "type": "object", + "properties": { + "action": { + "type": "string", + "nullable": true + }, + "resource": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttributePair" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "SystemRegisterRequest": { + "required": [ + "clientId", + "description", + "id", + "name", + "vendor" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true + }, + "vendor": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "name": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "description": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true + }, + "singleRights": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Right" + }, + "nullable": true + }, + "isDeleted": { + "type": "boolean" + }, + "clientId": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "isVisible": { + "type": "boolean" + }, + "allowedRedirectUrls": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "SystemRegisterUpdateResult": { + "type": "object", + "properties": { + "succeeded": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "SystemUser": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true + }, + "integrationTitle": { + "type": "string", + "nullable": true + }, + "systemId": { + "type": "string", + "nullable": true + }, + "productName": { + "type": "string", + "nullable": true + }, + "systemInternalId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "partyId": { + "type": "string", + "nullable": true + }, + "reporteeOrgNo": { + "type": "string", + "nullable": true + }, + "created": { + "type": "string", + "format": "date-time" + }, + "isDeleted": { + "type": "boolean" + }, + "supplierName": { + "type": "string", + "nullable": true + }, + "supplierOrgno": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "SystemUserRequestDto": { + "type": "object", + "properties": { + "integrationTitle": { + "type": "string", + "nullable": true + }, + "systemId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "SystemUserUpdateDto": { + "type": "object", + "properties": { + "id": { + "type": "string", + "nullable": true + }, + "partyId": { + "type": "string", + "nullable": true + }, + "reporteeOrgNo": { + "type": "string", + "nullable": true + }, + "integrationTitle": { + "type": "string", + "nullable": true + }, + "systemId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false } } } From 6281c7092cea4586f321b9a88e3e953298c3bc30 Mon Sep 17 00:00:00 2001 From: Johannes Haukland <42615991+HauklandJ@users.noreply.github.com> Date: Tue, 24 Sep 2024 09:22:38 +0200 Subject: [PATCH 06/11] Additions to the subform documentation (#1782) * WIP * Typo * cleanup * consolidate nb and en * fix broken link(s) * update custombutton clientactions * rm notice after specifying text, notice now duplicate * consolidate step 11 * translate comments to nb * typo * Add configuration page for subforms, en * rm duplicate text * add nb version * cleanup * update anchor on nb page * Updates subform config page --------- Co-authored-by: Daniel Skovli --- .../reference/subform/_index.en.md | 111 +++++++++++------- .../reference/subform/_index.nb.md | 89 ++++++++------ .../subform/config-options/_index.en.md | 51 ++++++++ .../subform/config-options/_index.nb.md | 52 +++++++- .../ux/components/customButton/_index.en.md | 45 +++++-- .../ux/components/customButton/_index.nb.md | 40 +++++-- 6 files changed, 292 insertions(+), 96 deletions(-) diff --git a/content/altinn-studio/reference/subform/_index.en.md b/content/altinn-studio/reference/subform/_index.en.md index 02a3cad4c7b..470880bc95a 100644 --- a/content/altinn-studio/reference/subform/_index.en.md +++ b/content/altinn-studio/reference/subform/_index.en.md @@ -18,55 +18,76 @@ Subforms are contained in a subform table. Let us go through configuring a subfo 5. In the subform folder, add a `Settings.json` file and a folder called **layouts**. 6. You can add page layouts to the layouts folder as you would for the main form. {{< notice warning >}} - Subforms do not support attachments, and nesting subforms is not allowed. + Subforms do not support attachments, and nesting subforms is not allowed (subform in subform). {{< /notice >}} -7. The **Settings.json** file for the sub form is [configured as normal](../../../app/development/ux/pages/#settings). -8. Add a layout set to `layout-sets.json` with the data type of the data model from step 1. The **type** is **subform**. Choose your subform folder name as the id. +7. The button which closes the subform must be a [CustomButton](../../reference/ux/components/custombutton) with a `closeSubform` action. Optionally you can also trigger validation before exiting. + ```json + { + "id": "subform-exitbutton", + "type": "CustomButton", + "textResourceBindings": { + "title": "The button title" // Defaults to `general.done` if omitted + }, + "actions": [ + { + "type": "ClientAction", + "id": "closeSubform", + // Validation is optional + "validation": { + "page": "all", + "show": ["All"] + } + } + ] + } ``` +8. The **Settings.json** file for the sub form is [configured as normal](../../../app/development/ux/pages/#settings). +9. Add a layout set to `layout-sets.json` with the data type of the data model from step 1. The **type** is **subform**. Choose your subform folder name as the id. + ```json + { + "id": "subform-layout-folder-name", + "dataType": "your-subform-dataType", + "type": "subform" + } + ``` +10. Navigate to the layout for the page in the main form in which you want to add the sub form table. +11. Add `Subform` with the [configuration you want](../../reference/subform/config-options/). Example: + ```json + { + "id": "subform-test", + "type": "Subform", + "textResourceBindings": { + "title": "subform-test.title", + "addButton": "subform-test.add" + }, + "layoutSet": "subform-layout-folder-name", + "showAddButton": true, + "showDeleteButton": true, + "tableColumns": [ { - "id": "desired-subform-name", - "dataType": "your-subform-dataType", - "type": "subform" + "headerContent": "subform-test.name-header", + "cellContent": { + "query": "Name" + } }, - ``` -9. Navigate to the layout for the page in the main form in which you want to add the sub form table. -10. Add `Subform` with the [configuration you want](../../reference/subform/config-options/). Example: - ``` { - "id": "subform-mopeder", - "type": "Subform", - "textResourceBindings": { - "title": "subform-moped.title", - "addButton": "subform-moped.add" - }, - "layoutSet": "moped-subform", - "showAddButton": true, - "showDeleteButton": true, - "tableColumns": [ - { - "headerContent": "subform-moped.regno", - "cellContent": { - "query": "RegNo" - } - }, - { - "headerContent": "subform-moped.merke", - "cellContent": { - "query": "Merke" - } - }, - { - "headerContent": "Ekstra info", - "cellContent": { - "query": "EkstraInfoData", - "default": "moped-extrainfo.value.default" - } - } - ] + "headerContent": "subform-test.age-header", + "cellContent": { + "query": "Age" + } }, + { + "headerContent": "subform-test.extrainfo-header", + "cellContent": { + "query": "ExtraInfo", + "default": "subform-test.extrainfo.default" + } + } + ] + } ``` - {{< panel info >}} - Subforms can have their own summary page and be a part of the main forms summary. - To add a subform into the main forms summary, use the subform id from the main forms layout, and the type "component". - {{< /panel >}} - {{}} + +{{< panel info >}} +Subforms can have their own summary page and be a part of the main forms summary. +To add a subform into the main forms summary, use the subform id from the main forms layout, and the type "component". +{{< /panel >}} diff --git a/content/altinn-studio/reference/subform/_index.nb.md b/content/altinn-studio/reference/subform/_index.nb.md index b2404504a67..a879bebe671 100644 --- a/content/altinn-studio/reference/subform/_index.nb.md +++ b/content/altinn-studio/reference/subform/_index.nb.md @@ -21,49 +21,70 @@ Underskjemaer tilhører en underskjematabell. La oss gå gjennom opprettelse av Underskjema støtter ikke vedlegg, og nøsting av underskjema er ikke tillatt (underskjema i underskjema). {{< /notice >}} 7. **Settings.json** filen for underskjema [konfigureres som normalt](../../../app/development/ux/pages/#innstillinger). -8. Legg til et layout set i `layout-sets.json` med datatypen til datamodellen fra steg 1. Sett **type** til **subform**. Bruk navnet på underskjemamappen som id. +8. Knappen som brukes for å lukke underskjema må være en [CustomButton](../../reference/ux/components/custombutton) med `closeSubform` action. Det er valgfritt å validere underskjema før det lukkes. + ```json + { + "id": "subform-exitbutton", + "type": "CustomButton", + "textResourceBindings": { + "title": "The button title" // Blir `general.done` om utelatt + }, + "actions": [ + { + "type": "ClientAction", + "id": "closeSubform", + // Validering er valgfritt + "validation": { + "page": "all", + "show": ["All"] + } + } + ] + } ``` +9. Legg til et layout set i `layout-sets.json` med datatypen til datamodellen fra steg 1. Sett **type** til **subform**. Bruk navnet på underskjemamappen som id. + ```json { "id": "underskjema-mappe-navn", "dataType": "underskjema-datatype", "type": "subform" }, ``` -9. Naviger til layout for siden i hovedskjemaet der du ønsker å legge inn underskjematabellen. -10. Legg til `Subform` med [ønsket konfigurasjon](../../reference/subform/config-options/). Eksempel: - ``` +10. Naviger til layout for siden i hovedskjemaet der du ønsker å legge inn underskjematabellen. +11. Legg til `Subform` med [ønsket konfigurasjon](../../reference/subform/config-options/). Eksempel: + ```json + { + "id": "subform-test", + "type": "Subform", + "textResourceBindings": { + "title": "subform-test.title", + "addButton": "subform-test.add" + }, + "layoutSet": "subform-layout-folder-name", + "showAddButton": true, + "showDeleteButton": true, + "tableColumns": [ + { + "headerContent": "subform-test.name-header", + "cellContent": { + "query": "Name" + } + }, { - "id": "subform-mopeder", - "type": "Subform", - "textResourceBindings": { - "title": "subform-moped.title", - "addButton": "subform-moped.add" - }, - "layoutSet": "moped-subform", - "showAddButton": true, - "showDeleteButton": true, - "tableColumns": [ - { - "headerContent": "subform-moped.regno", - "cellContent": { - "query": "RegNo" - } - }, - { - "headerContent": "subform-moped.merke", - "cellContent": { - "query": "Merke" - } - }, - { - "headerContent": "Ekstra info", - "cellContent": { - "query": "EkstraInfoData", - "default": "moped-extrainfo.value.default" - } - } - ] + "headerContent": "subform-test.age-header", + "cellContent": { + "query": "Age" + } }, + { + "headerContent": "subform-test.extrainfo-header", + "cellContent": { + "query": "ExtraInfo", + "default": "subform-test.extrainfo.default" + } + } + ] + } ``` {{< panel info >}} Underskjema kan ha sin egen oppsummeringsside og være en del av hovedskjema sin oppsummering. diff --git a/content/altinn-studio/reference/subform/config-options/_index.en.md b/content/altinn-studio/reference/subform/config-options/_index.en.md index 4a01a2b0fcb..db43b08d6c4 100644 --- a/content/altinn-studio/reference/subform/config-options/_index.en.md +++ b/content/altinn-studio/reference/subform/config-options/_index.en.md @@ -8,3 +8,54 @@ weight: 120 {{% notice warning %}} This documentation is a work in progess. Subforms are currently in preview-release. {{% /notice %}} + +## Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| id | string | Yes | Unique ID, same as ID on other components. Must be unique in the layout file, and should be unique across pages. | +| type | string | Yes | Must be 'Subform' | +| layoutSet | string | Yes | The layout set to load for this subform, must be unique IDs within layout-sets.json. | +| [tableColumns](#tablecolumns) | array | Yes | Array of objects containing column definitions for the subform table. Each entry provides a header, cell query and cell default value. | +| showAddButton | bool | No | Allow users to add subforms. Defaults to true. | +| showDeleteButton | bool | No | Allow users to delete subforms. Defaults to true. | +| [textResourceBindings](#textresourcebindings) | object | No | Object describing text resource bindings for the subform component. | + +## textResourceBindings + +The following keys in the `textResourceBindings` object are available for customization: + +- `title` - The title of the subform component. +- `description` - The description text shown underneath the title. +- `addButton` - The text for the add-button. + +## tableColumns + +The `tableColumns` entry contains a list of objects that define the columns of the subform table. + +Each entry must contain a `headerContent` and `cellContent` definition. `cellContent` is in turn also an object, +which must include a `query` parameter alongside an optional `default` parameter. + +{{< notice info >}} +The *query* value is a lookup path for the subform's data model. + +Eg. `propertyName` or `propertyName.nestedProperty` +{{< /notice >}} + +```json +"tableColumns": [ + { + "headerContent": "Name", + "cellContent": { + "query": "name" + } + }, + { + "headerContent": "Age", + "cellContent": { + "query": "age", + "default": "[Unknown age]" + } + }, +] +``` \ No newline at end of file diff --git a/content/altinn-studio/reference/subform/config-options/_index.nb.md b/content/altinn-studio/reference/subform/config-options/_index.nb.md index d702238bfc2..2ac886badb8 100644 --- a/content/altinn-studio/reference/subform/config-options/_index.nb.md +++ b/content/altinn-studio/reference/subform/config-options/_index.nb.md @@ -4,7 +4,57 @@ linktitle: Konfigurasjon description: Muligheter for konfigurering av for underskjemas layout weight: 120 --- - + {{% notice warning %}} Dette dokumentet er under utvikling. Underskjema er kun i preview-release. {{% /notice %}} + +## Parametere + +| Parameter | Type | Påkrevd | Beskrivelse | +| --------------------------------------------------------------- | ------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| id | string | Ja | Unik ID, tilsvarer ID på andre komponenter. Må være unik i layout-filen, og bør være unik på tvers av sider. | +| type | string | Ja | Må settes til 'Subform' | +| layoutSet | string | Ja | Layout set ID for underskjema. Må være unik i layout-sets.json. | +| [tableColumns](#tablecolumns) | array | Ja | En liste med objekter som inneholder kolonnedefinisjoner for underskjema-tabellen. Hver oppføring gir en overskrift, celleforespørsel og standardverdi for cellen. | +| showAddButton | bool | Nei | Vis legg-til knapp? Standardverdi er sann. | +| showDeleteButton | bool | Nei | Vis slett knapp? Standardverdi er sann. | +| [textResourceBindings](#textresourcebindings) | object | Nei | Objekt som beskriver tekstressursbindinger for underskjema-komponenten. | + +## textResourceBindings + +Følgende nøkler i `textResourceBindings`-objektet kan tilpasses: + +- `title` - Tittelen på subform komponenten. +- `description` - En beskrivelse av komponenten som vises under tittelen. +- `addButton` - Innholdet i legg-til knappen. + +## tableColumns + +`tableColumns` er en liste med objekter som definerer kolonnene i underskjema-tabellen. + +Hver oppføring må inneholde en definisjon for `headerContent` og `cellContent`. `cellContent` er også et objekt, som må inkludere et `query`-parameter sammen med valgfri `default`-parameter. + +{{< notice info >}} +*query*-verdien er en oppslagsti for underskjemaets datamodell. + +F.eks. `propertyName` eller `propertyName.nestedProperty` +{{< /notice >}} + +```json +"tableColumns": [ + { + "headerContent": "Navn", + "cellContent": { + "query": "name" + } + }, + { + "headerContent": "Alder", + "cellContent": { + "query": "age", + "default": "[Ukjent alder]" + } + }, +] +``` \ No newline at end of file diff --git a/content/altinn-studio/reference/ux/components/customButton/_index.en.md b/content/altinn-studio/reference/ux/components/customButton/_index.en.md index d5036625fc8..39d8b0681c4 100644 --- a/content/altinn-studio/reference/ux/components/customButton/_index.en.md +++ b/content/altinn-studio/reference/ux/components/customButton/_index.en.md @@ -68,13 +68,40 @@ The object `metadata` will be passed to the function as an argument. This is how } ``` +A client action exists for the purpose of closing a subform. You can add the option to validate before exiting. A standard +use case would be to have two buttons in the subform, e.g. **Exit** and **Done**, where **Exit** would not validate. This +will allow the user to return to the main form without having to fill out the subform. Here is how you would add a button +with this action: + +```json +{ + "id": "close-subform-done", + "type": "CustomButton", + "textResourceBindings": { + "title": "custom-button-title" + }, + "actions": [ + { + "type": "ClientAction", + "id": "closeSubform", + // Validation is optional + "validation": { + "page": "all", + "show": ["All"] + } + } + ] +} +``` + These are the available `ClientActions`: -| Function name | Parameters | Behavior | -| ---------------- | ------------------ | ------------------------------------------------ | -| `nextPage` | - | Will navigate to the next page, if it exists | -| `previousPage` | - | Will navigate to the previous page, if it exists | -| `navigateToPage` | `{ page: string }` | Navigates to the specified page if it exists | +| Function name | Parameters | Behavior | +| ---------------- | ------------------- | ------------------------------------------------ | +| `nextPage` | - | Will navigate to the next page, if it exists | +| `previousPage` | - | Will navigate to the previous page, if it exists | +| `navigateToPage` | `{ page: string }` | Navigates to the specified page if it exists | +| `closeSubform` | optional validation | Closes the subform and returns to the main form | ## ServerActions @@ -167,7 +194,8 @@ and before the next action in the list is executed. You can chain as many action ## Instructions for Adding serverAction to Desired Process Step 1. Adding serverAction to "Task_1" in the process.bpmn file: -Open the process.bpmn file and add serverAction to the desired process step, such as "Task_1": + Open the process.bpmn file and add serverAction to the desired process step, such as "Task_1": + ```xml SequenceFlow_1n56yn5 @@ -183,9 +211,8 @@ Open the process.bpmn file and add serverAction to the desired process step, suc ``` - 2. Adding serverAction id to desired step in the policy.xml file: -Navigate to the policy.xml file to add the serverAction id to the desired step, such as "Task_1": + Navigate to the policy.xml file to add the serverAction id to the desired step, such as "Task_1": ```xml @@ -193,4 +220,4 @@ Navigate to the policy.xml file to add the serverAction id to the desired step, - ``` \ No newline at end of file + ``` diff --git a/content/altinn-studio/reference/ux/components/customButton/_index.nb.md b/content/altinn-studio/reference/ux/components/customButton/_index.nb.md index 30c13af7fc3..799c580373d 100644 --- a/content/altinn-studio/reference/ux/components/customButton/_index.nb.md +++ b/content/altinn-studio/reference/ux/components/customButton/_index.nb.md @@ -2,7 +2,7 @@ title: CustomButton linktitle: CustomButton description: Oversikt over CustomButton-komponenten -tags: [ actions, translate-to-english ] +tags: [actions, translate-to-english] weight: 10 # Do not change, the components will be sorted alphabetically toc: true --- @@ -70,13 +70,39 @@ Objektet `metadata` vil bli sendt til funksjonen som et argument. Slik gjør du } ``` +Det finnes en klienthandling for å lukke et underskjema. Her er det valgfritt å validere underskjemadata før lukking. +Et vanlig oppsett vil ha to knapper, f.eks. **Lukk** og **Ferdig**, der **Lukk** ikke validerer. Det vil gi brukeren +muligheten til å gå ut av et underskjema uten å måtte fylle det ut først. Slik kan du legge til disse knappene: + +```json +{ + "id": "knapp-underskjema-ferdig", + "type": "CustomButton", + "textResourceBindings": { + "title": "custom-button-title" + }, + "actions": [ + { + "type": "ClientAction", + "id": "closeSubform", + // Validering er valgfritt + "validation": { + "page": "all", + "show": ["All"] + } + } + ] +} +``` + Dette er de tilgjengelige `ClientActions`: | Funksjonsnavn | Parametere | Oppførsel | -|------------------|--------------------|-----------------------------------------------------| +| ---------------- | ------------------ | --------------------------------------------------- | | `nextPage` | - | Vil navigere til neste side, hvis den eksisterer | | `previousPage` | - | Vil navigere til forrige side, hvis den eksisterer | | `navigateToPage` | `{ page: string }` | Navigerer til den angitte siden hvis den eksisterer | +| `closeSubform` | valgfri validering | Lukker underskjema og returnerer til hovedskjema | ## ServerActions @@ -134,7 +160,7 @@ Serverhandlinger er kan konfigureres til å gjøre hva du vil. Slik definerer du ### Returnere klienthandlinger -En ServerAction kan også returnere en liste med ClientActions som vil bli utført på klient-siden etter at +En ServerAction kan også returnere en liste med ClientActions som vil bli utført på klient-siden etter at server-siden handlingen er ferdig. Dette er nyttig hvis du vil navigere til en ny side etter at server-siden handlingen er ferdig. Slik gjør du det: @@ -161,13 +187,14 @@ public class FillAction : IUserAction ## Utførelsesrekkefølge: -Handlingene utføres i den rekkefølgen de er definert i actions-egenskapen til CustomButton-komponenten. -Hvis en ServerAction returnerer en liste med ClientActions, vil disse bli utført etter at server-siden +Handlingene utføres i den rekkefølgen de er definert i actions-egenskapen til CustomButton-komponenten. +Hvis en ServerAction returnerer en liste med ClientActions, vil disse bli utført etter at server-siden handlingen er ferdig, og før neste handling i listen utføres. Du kan lenke sammen så mange handlinger du vil. ## Instrukser for å legge til serverAction i ønsket prosesssteg 1. Legge til serverAction i process.bpmn-filen: Åpne process.bpmn-filen for å legge til serverAction i ønsket prosesssteg, for eksempel "Task_1": + ```xml SequenceFlow_1n56yn5 @@ -184,7 +211,7 @@ handlingen er ferdig, og før neste handling i listen utføres. Du kan lenke sam ``` 2. Legge til serverAction id i ønsket steg i policy.xml-filen: -Gå til policy.xml-filen for å legge til serverAction id på ønsket steg, for eksempel "Task_1": + Gå til policy.xml-filen for å legge til serverAction id på ønsket steg, for eksempel "Task_1": ```xml @@ -193,4 +220,3 @@ Gå til policy.xml-filen for å legge til serverAction id på ønsket steg, for ``` - \ No newline at end of file From 9b5d2341f7a7dcc1cae717259c2f29f7548dfd14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Tore=20Gjerde?= Date: Wed, 25 Sep 2024 15:08:33 +0200 Subject: [PATCH 07/11] Document Nets Easy payment method config. (#1801) --- .../payment/backend-manual/configure-secrets.en.md | 12 ++++++++++-- .../payment/backend-manual/configure-secrets.nb.md | 11 +++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/content/altinn-studio/guides/payment/backend-manual/configure-secrets.en.md b/content/altinn-studio/guides/payment/backend-manual/configure-secrets.en.md index 7dbeca2cd3c..cbece165263 100644 --- a/content/altinn-studio/guides/payment/backend-manual/configure-secrets.en.md +++ b/content/altinn-studio/guides/payment/backend-manual/configure-secrets.en.md @@ -7,7 +7,8 @@ hidden: true 1. [Get your secret key from Nets.](https://developer.nexigroup.com/nexi-checkout/en-EU/docs/access-your-integration-keys/). Make sure you use the test key during development. 2. Make your app ready for use of Azure Key Vault as a config provider, if this has not been done before. See [relevant documentation](/altinn-studio/reference/configuration/secrets/). 3. Add your secret key to Key Vault, with the variable name `NetsPaymentSettings--SecretApiKey`. This way it will override `SecretApiKey` in `appsettings.json`. -4. Add `NetsPaymentSettings` to your `appsettings.json`. Remember to set the correct `baseUrl` in production. The field `MerchantHandlesConsumerData` is optional, and controls whether you are going to supply details about the payer, or if that should be filled out in the Nets Easy payment page. +4. Add `NetsPaymentSettings` to your `appsettings.json`. + ```json { "NetsPaymentSettings": { @@ -16,10 +17,17 @@ hidden: true "TermsUrl": "https://www.yourwebsite.com/terms", "ShowOrderSummary": true, "ShowMerchantName": true, - "MerchantHandlesConsumerData": true + "MerchantHandlesConsumerData": true, + "PaymentMethodsConfiguration": [ + { "Name": "Visa", "Enabled": true }, + { "Name": "MasterCard", "Enabled": true } + ] } } ``` + - Remember to set the correct `baseUrl` in production using `appsettings.Production.json`. The example above contains the test api URL. + - The field `MerchantHandlesConsumerData` is optional, and controls whether you are going to supply details about the payer, or if that should be filled out in the Nets Easy payment page. + - PaymentMethodsConfiguration works just like explained in the Nets documentation [here](https://developer.nexigroup.com/nexi-checkout/en-EU/api/payment-v1/#v1-payments-post-body-paymentmethodsconfiguration-name). 5. Local mocking of `SecretApiKey` can be done with the use of [user secrets](https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-8.0&tabs=windows). ``` dotnet user-secrets init diff --git a/content/altinn-studio/guides/payment/backend-manual/configure-secrets.nb.md b/content/altinn-studio/guides/payment/backend-manual/configure-secrets.nb.md index c203629959b..fd7eb05e489 100644 --- a/content/altinn-studio/guides/payment/backend-manual/configure-secrets.nb.md +++ b/content/altinn-studio/guides/payment/backend-manual/configure-secrets.nb.md @@ -7,7 +7,7 @@ hidden: true 1. [Hent din hemmelige nøkkel fra Nets.](https://developer.nexigroup.com/nexi-checkout/en-EU/docs/access-your-integration-keys/). Pass på at du bruker testnøkkelen under utvikling. 2. Gjør appen din klar for bruk av Azure Key Vault som konfigurasjonkilde, om dette ikke allerede er gjort tidligere. Se [relevant dokumentasjon](/nb/altinn-studio/reference/configuration/secrets/). 3. Legg til din hemmelige nøkkel i Key Vault, med variabelnavnet `NetsPaymentSettings--SecretApiKey`. På denne måten vil den overstyre `SecretApiKey` i `appsettings.json`. -4. Legg til `NetsPaymentSettings` i din `appsettings.json`. Husk å sette riktig `baseUrl` i `appsettings.Production.json`. Feltet `MerchantHandlesConsumerData` er frivillig, og styrer hvorvidt du skal sende med detaljer om betaler, eller om det skal fylles ut i Nets Easy sin betalingsside. +4. Legg til `NetsPaymentSettings` i din `appsettings.json`. ```json { "NetsPaymentSettings": @@ -17,10 +17,17 @@ hidden: true "TermsUrl": "https://www.yourwebsite.com/terms", "ShowOrderSummary": true, "ShowMerchantName": true, - "MerchantHandlesConsumerData": true + "MerchantHandlesConsumerData": true, + "PaymentMethodsConfiguration": [ + { "Name": "Visa", "Enabled": true }, + { "Name": "MasterCard", "Enabled": true } + ] } } ``` + - Husk å sette riktig `baseUrl` i `appsettings.Production.json`. Eksempelet ovenfor inneholder URL til test API-et. + - Feltet `MerchantHandlesConsumerData` er frivillig, og styrer hvorvidt du skal sende med detaljer om betaler, eller om det skal fylles ut i Nets Easy sin betalingsside. + - PaymentMethodsConfiguration fungerer likt som beskrevet i Nets sin dokumentasjon [her](https://developer.nexigroup.com/nexi-checkout/en-EU/api/payment-v1/#v1-payments-post-body-paymentmethodsconfiguration-name). 5. Lokal mocking av `SecretApiKey` kan gjøres ved hjelp av [user secrets](https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-8.0&tabs=windows). ``` dotnet user-secrets init From 2d5924ef43a58540cb302c4d2c958beff9395a70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Tore=20Gjerde?= Date: Fri, 27 Sep 2024 13:43:01 +0200 Subject: [PATCH 08/11] Feat/document new metadata fields on data element (#1799) --- .../apps/data-elements/metadata/_index.en.md | 26 +++++++ .../apps/data-elements/metadata/_index.nb.md | 26 +++++++ .../user-defined-metadata/_index.en.md | 68 ++++++++++++++++++ .../user-defined-metadata/_index.nb.md | 69 +++++++++++++++++++ 4 files changed, 189 insertions(+) create mode 100644 content/api/apps/data-elements/metadata/_index.en.md create mode 100644 content/api/apps/data-elements/metadata/_index.nb.md create mode 100644 content/api/apps/data-elements/user-defined-metadata/_index.en.md create mode 100644 content/api/apps/data-elements/user-defined-metadata/_index.nb.md diff --git a/content/api/apps/data-elements/metadata/_index.en.md b/content/api/apps/data-elements/metadata/_index.en.md new file mode 100644 index 00000000000..694a3873325 --- /dev/null +++ b/content/api/apps/data-elements/metadata/_index.en.md @@ -0,0 +1,26 @@ +--- +title: Custom metadata +description: Setting custom metadata on data elements. +toc: true +tags: [api] +weight: 100 +--- + +## Overview + +It's possible to set custom metadata in the form of key-value-pairs on data elements using a property called `Metadata`. +The purpose is to store additional information about the dataelement beyond the payload. + +This field is not editable via the app's API and is intended to be set through custom-developed C# code. +The end user cannot edit this directly; the field is under the control of the application developer. + +```csharp + var newMetadata = new List + { + new() { Key = "MyKey", Value = "MyValue" }, + new() { Key = "AnotherKey", Value = "AnotherValue" } + }; + + dataElement.Metadata = newMetadata; + dataElement = await _dataClient.Update(instance, dataElement); +``` \ No newline at end of file diff --git a/content/api/apps/data-elements/metadata/_index.nb.md b/content/api/apps/data-elements/metadata/_index.nb.md new file mode 100644 index 00000000000..16ec5446147 --- /dev/null +++ b/content/api/apps/data-elements/metadata/_index.nb.md @@ -0,0 +1,26 @@ +--- +title: Metadata +description: App API for å sette ekstra metadata på dateelementer. +toc: true +tags: [api] +weight: 100 +--- + +## Oversikt + +Det er mulig å sette egne metadata i form av nøkkel-verdi-par på dataelementer ved hjelp av et felt kalt `Metadata`. +Hensikten er å kunne ta vare på annen informasjon om dataelementet utover nyttelasten. + +Dette feltet er ikke redigerbart via appens API, og er ment satt via egenutviklet C#-kode. +Sluttbruker kan ikke redigere dette direkte, feltet er i applikasjonsutviklers kontroll. + +```csharp + var newMetadata = new List + { + new() { Key = "MyKey", Value = "MyValue" }, + new() { Key = "AnotherKey", Value = "AnotherValue" } + }; + + dataElement.Metadata = newMetadata; + dataElement = await _dataClient.Update(instance, dataElement); +``` \ No newline at end of file diff --git a/content/api/apps/data-elements/user-defined-metadata/_index.en.md b/content/api/apps/data-elements/user-defined-metadata/_index.en.md new file mode 100644 index 00000000000..17e1226fc3b --- /dev/null +++ b/content/api/apps/data-elements/user-defined-metadata/_index.en.md @@ -0,0 +1,68 @@ +--- +title: User defined metadata +description: App API for adding user defined metadata to data elements. +toc: true +tags: [api] +weight: 100 +--- + +## Overview + +Custom metadata on data elements allows key-value pairs of metadata to be added to a data element via the API. There are dedicated endpoints for setting and retrieving these values. +The data is also available in other endpoints where metadata about data elements is retrieved. + +{{%panel info%}} +**Note:** +This is data that users with write permissions on the data element can freely edit via the API. +If you want to add metadata that cannot be edited via the apps API, you should use [metadata](../metadata) instead. +That field is not exposed via the app's API and can only be set through calls to storage, often via custom-developed C# code. +{{% /panel%}} + +## Retrieve + +Endpoint for downloading the list of custom metadata that has already been added to a data element. + +```http +GET {org}/{appname}/instances/{instanceOwnerPartyId}/{instanceGuid}/data/{dataGuid}/user-defined-metadata +Accept: application/json +``` + +Response: +```json +{ + "userDefinedMetadata": [ + { + "key": "TheKey", + "value": "TheValue" + }, + { + "key": "AnotherKey", + "value": "AnotherValue" + } + ] +} +``` + +## Edit + +Endpoint for editing the metadata. Submitted data will overwrite the entire list and will remove everything that is not included in the latest update. + +```http +PUT {org}/{appname}/instances/{instanceOwnerPartyId}/{instanceGuid}/data/{dataGuid}/user-defined-metadata +Content-Type: application/json + +{ + "userDefinedMetadata": [ + { + "key": "TheKey", + "value": "TheValue" + }, + { + "key": "AnotherKey", + "value": "AnotherValue" + } + ] +} +``` + +The response will contain the list of all key-value pairs that have been added to the data element, in the same format as the submitted data. \ No newline at end of file diff --git a/content/api/apps/data-elements/user-defined-metadata/_index.nb.md b/content/api/apps/data-elements/user-defined-metadata/_index.nb.md new file mode 100644 index 00000000000..47fb6c52db8 --- /dev/null +++ b/content/api/apps/data-elements/user-defined-metadata/_index.nb.md @@ -0,0 +1,69 @@ +--- +title: Brukerdefinerte metadata +description: App API for å legge til brukerstyrte metadata på et dataelement. +toc: true +tags: [api] +weight: 100 +--- + +## Oversikt + +Brukerdefinerte metadata på dataelement gjør det mulig å legge nøkkel-verdi-par med metadata på et dataelement via API-et. +Det er dedikerte endepunkter for å sette og hente ut disse verdiene. +Dataene er også tilgjengelige i andre endepunkter hvor man får ut metadata om dataelementer. + +{{%panel info%}} +**Merk:** +Dette er data som brukere med skriverettigheter på dataelementet kan redigere fritt via API-et. +Dersom man ønsker å legge til metadata som ikke kan redigeres via API-et bør man bruke [metadata](../metadata) i stedet. +Det feltet er ikke eksponert via appens API, og kan kun settes via kall til storage, gjerne via egenutviklet C#-kode. +{{% /panel%}} + +## Hent ut + +Endepunkt for å laste ned listen med brukerdefinerte metadata som allerede er lagt til på et data element. + +```http +GET {org}/{appname}/instances/{instanceOwnerPartyId}/{instanceGuid}/data/{dataGuid}/user-defined-metadata +Accept: application/json +``` + +Svaret: +```json +{ + "userDefinedMetadata": [ + { + "key": "TheKey", + "value": "TheValue" + }, + { + "key": "AnotherKey", + "value": "AnotherValue" + } + ] +} +``` + +## Rediger + +Endepunkt for å redigere metadataene. Innsendte data overskriver hele listen og vil fjerne alt som ikke er med i siste oppdatering. + +```http +PUT {org}/{appname}/instances/{instanceOwnerPartyId}/{instanceGuid}/data/{dataGuid}/user-defined-metadata +Content-Type: application/json + +{ + "userDefinedMetadata": [ + { + "key": "TheKey", + "value": "TheValue" + }, + { + "key": "AnotherKey", + "value": "AnotherValue" + } + ] +} +``` + +Svaret vil inneholde listen over alle nøkkel-verdi-par som er lagt til på data elementet, i samme format som innsendte data. \ No newline at end of file From 8580bce44c496e66041000c1618134671b2630a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rune=20T=C3=B8mmer=C3=A5s=20Larsen?= Date: Tue, 1 Oct 2024 13:43:35 +0200 Subject: [PATCH 09/11] Updates (#1805) --- .../functionalareas.drawio.svg | 465 +++++++++++------- 1 file changed, 296 insertions(+), 169 deletions(-) diff --git a/content/authorization/what-do-you-get/functionalareas.drawio.svg b/content/authorization/what-do-you-get/functionalareas.drawio.svg index 0297a139249..8510d58259a 100644 --- a/content/authorization/what-do-you-get/functionalareas.drawio.svg +++ b/content/authorization/what-do-you-get/functionalareas.drawio.svg @@ -1,4 +1,4 @@ - + @@ -14,7 +14,6 @@ @@ -32,141 +31,92 @@
- Right holders Overview for Organizations + Brukeroversikt for virksomhet
- Right holders Overvi... + Brukeroversikt for v...
- + -
+
- Right holder info Busines + Fullmaktsoversikt +
+ Legg bruker til tilgangspakke
- - Right holder info Bu... + + Fullmaktsoversikt... - + -
+
- Add Right Holder + Brukeroversikt +
+ Legg til bruker
- - Add Right Holder + + Brukeroversikt... -
- - - - -
-
-
- Delegate Access Package -
-
-
-
- - Delegate Access Pack... - -
-
-
- - - - - -
-
-
- Delegate Single Right -
-
-
-
- - Delegate Single... - -
-
-
- + -
+
- Right Holder: Access Packages Overview + Fullmaktsovesikt +
+ Legg bruker til rolle
- - Right Holder: Access... + + Fullmaktsovesikt...
- + -
+
- Delete Single Right delegation -
-
-
- - - Delete Single Ri... - - - -
- - - - - -
-
-
- Delete Access Package Delegation + Brukeroversikt +
+ Slette enkeltdelegering
- - Delete Access Packag... + + Brukeroversikt...
@@ -210,38 +160,42 @@
- + -
+
- Rightholder: Single Rights Overview + Fullmaktsoversikt +
+ Fjern bruker fra rolle
- - Rightholder: Single... + + Fullmaktsoversikt...
- + -
+
- Request Access Package + Tilgangsforespørsel +
+ Be om tilgangspakke
- - Request Access Packa... + + Tilgangsforespørsel... @@ -252,30 +206,15 @@
- Approve Access Package Request + Tilgangsforespørsel +
+ Akseptere tilgangspakke
- Approve Access Packa... - - - - - - - -
-
-
- Request Single Rights -
-
-
-
- - Request Single Rights + Tilgangsforespørsel...
@@ -364,20 +303,20 @@
- + -
+
- Instance Rights Overview + Brukeroversikt instans rettigheter
- - Instance Rights Over... + + Brukeroversikt insta... @@ -630,7 +569,7 @@ - + @@ -947,13 +886,13 @@
- Access Managment + Tilgangsstyring
- Access Managment + Tilgangsstyring
@@ -1025,11 +964,11 @@
- + -
+
Delegate Maskinporte Scope V1 @@ -1037,33 +976,35 @@
- + Delegate Maskinporte... - + -
+
- Delegated MaskinPorten scopes overview + Fullmaktsoversikt +
+ Legg bruker til enkelttjeneste
- - Delegated MaskinPort... + + Fullmaktsoversikt... - + -
+
Delete delegation of Maskinporten scope @@ -1071,16 +1012,16 @@
- + Delete delegation of... - + -
+
Overview Systems rights @@ -1088,16 +1029,16 @@
- + Overview Systems rig... - + -
+
Right holders person @@ -1105,59 +1046,61 @@
- + Right holders person - + -
+
-
- Access Groups Overview +
+ Tilgangsgrupper oversikt
- - Access Groups Ov... + + Tilgangsgrupper over... - + -
+
-
- Create Access Group +
+ Opprett tilgangsgruppe
- - Create Access Gr... + + Opprett tilgangsgrup... - + -
+
-
- Administrate Access Group +
+ Tilgangsgruppe +
+ Legg til/fjern tilgangspakker
- - Administrate Acc... + + Tilgangsgruppe... @@ -1195,11 +1138,11 @@ - + -
+
Client Admin client view @@ -1207,7 +1150,7 @@
- + Client Admin cli... @@ -1429,13 +1372,13 @@
- Access Management Landing Page + Tilgangsstyring - Landingside
- Access Management La... + Tilgangsstyring - La... @@ -1543,20 +1486,20 @@ - + -
+
- Define Access Packages & Access Package Store + Tilgangsgrupper - Administrer brukere
- - Define Access Packag... + + Tilgangsgrupper - Ad... @@ -1612,11 +1555,11 @@ - + -
+
Delegate Maskinporte Scope V1 @@ -1624,16 +1567,16 @@
- + Delegate Maskinporte... - + -
+
Delete delegation of Maskinporten scope V2 @@ -1641,7 +1584,7 @@
- + Delete delegation of... @@ -1834,6 +1777,190 @@ + + + + +
+
+
+ Brukeroversikt -  Delegere rolle +
+
+
+
+ + Brukeroversikt -  De... + +
+
+ + + + +
+
+
+ Brukeroversikt -  Delegere tilgangspakke +
+
+
+
+ + Brukeroversikt -  De... + +
+
+ + + + +
+
+
+ Brukeroversikt -  Delegere enkelttjeneste +
+
+
+
+ + Brukeroversikt -  De... + +
+
+ + + + +
+
+
+ Brukeroversikt +
+ Se fullmakter for bruker +
+
+
+
+ + Brukeroversikt... + +
+
+ + + + +
+
+
+ Brukeroversikt +
+ Se fullmakter for bruker +
+
+
+
+ + Brukeroversikt... + +
+
+
+ + + + +
+
+
+ Fullmaktsoversikt +
+
+
+
+ + Fullmaktsoversikt + +
+
+
+ + + + +
+
+
+ Tilgangsforespørsel +
+ oversikt +
+
+
+
+ + Tilgangsforespørsel... + +
+
+ + + + +
+
+
+ Tilgangsforespørsel +
+ Be om om enkelttilgang +
+
+
+
+ + Tilgangsforespørsel... + +
+
+ + + + +
+
+
+ Tilgangsforespørsel +
+ Akseptere enkelttilgang +
+
+
+
+ + Tilgangsforespørsel... + +
+
+ + + + +
+
+
+ Tilgangsforespørsel +
+ Akseptere enkelttilgang +
+
+
+
+ + Tilgangsforespørsel... + +
+
From 6a2a398ad5032ec1f45c479c016cd020ec6b0be4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rune=20T=C3=B8mmer=C3=A5s=20Larsen?= Date: Wed, 2 Oct 2024 07:58:46 +0200 Subject: [PATCH 10/11] Feature/feautredocokt1 2 (#1806) * updates * updates --- .../functionalareas.drawio.svg | 1197 +++++++++-------- 1 file changed, 609 insertions(+), 588 deletions(-) diff --git a/content/authorization/what-do-you-get/functionalareas.drawio.svg b/content/authorization/what-do-you-get/functionalareas.drawio.svg index 8510d58259a..e9b3120f545 100644 --- a/content/authorization/what-do-you-get/functionalareas.drawio.svg +++ b/content/authorization/what-do-you-get/functionalareas.drawio.svg @@ -1,4 +1,4 @@ - + @@ -17,35 +17,35 @@ - - - - - - - - + + + + + + + + -
+
-
+
Brukeroversikt for virksomhet
- - Brukeroversikt for v... + + Brukeroversikt for vir... - + -
+
Fullmaktsoversikt @@ -55,36 +55,36 @@
- + Fullmaktsoversikt... - + -
+
-
+
Brukeroversikt -
+
Legg til bruker
- + Brukeroversikt... - + -
+
Fullmaktsovesikt @@ -94,77 +94,39 @@
- + Fullmaktsovesikt...
- + -
+
-
+
Brukeroversikt -
- Slette enkeltdelegering +
+ Slette rettighet for enkeltjeneste
- + Brukeroversikt...
- - - - - -
-
-
- Delegate Altinn Role -
-
-
-
- - Delegate Altinn... - -
-
-
- - - - - -
-
-
- Delete Altinn Role -
-
-
-
- - Delete Altinn Ro... - -
-
-
- + -
+
Fullmaktsoversikt @@ -174,17 +136,17 @@
- + Fullmaktsoversikt...
- + -
+
Tilgangsforespørsel @@ -194,16 +156,16 @@
- + Tilgangsforespørsel... - + -
+
Tilgangsforespørsel @@ -213,152 +175,124 @@
- + Tilgangsforespørsel... - + -
-
-
- Approve Single Rights Request -
-
-
-
- - Approve Single Right... - -
-
- - - - -
+
- Request Altinn Role + Tilgangsforespørsel +
+ Bel om Altinn rolle
- - Request Altinn Role + + Tilgangsforespørsel... - + -
+
- Approve Altinn Role Request + Tilgangsforespørsel +
+ Akseptere rolleforespørsel
- - Approve Altinn Role... + + Tilgangsforespørsel... - + -
+
- Delegate Instance Right + Deleger Instanse rettigheter
- - Delegate Instanc... + + Deleger Instanse... - + -
+
- Delete Instance Righs + Brukeroversikt +
+ Slette instans rettigheter
- - Delete Instance... + + Brukeroversikt... - + -
+
-
+
Brukeroversikt instans rettigheter
- - Brukeroversikt insta... + + Brukeroversikt instans... - + -
+
- System user Overview V1 + Systembruker oversikt V1
- - System user Overview... + + Systembruker oversik... - + -
-
-
- System user Overview -
-
-
-
- - System user Overview - -
-
- - - - -
+
System Register @@ -366,17 +300,17 @@
- + System Register - + -
+
Adminstrate System Register API @@ -384,108 +318,108 @@
- + Adminstrate System R...
- + -
+
- Create System User + Brukerstyrt opprettelse av systembruker
- - Create System User + + Brukerstyrt opprette... - + -
+
- Delete System User + Slette systembruker
- - Delete System User + + Slette systembruker
- + -
+
- Vendor Iniated System User Request + Leverandørstyrt opprettelse av systembruker
- - Vendor Iniated Syste... + + Leverandørstyrt oppr...
- + -
+
- Accept System User Request + Akseptere systembruker forespørsel
- - Accept System User R... + + Akseptere systembruk...
- + -
+
- Update System User + Oppdatere systembruker
- - Update System User + + Oppdatere systembruk... - + -
+
Resource Registry @@ -493,50 +427,50 @@
- + Resource Registry - + -
+
- Resource Admin Studio + Ressursadminstrasjon
- - Resource Admin Studio + + Ressursadminstrasjon - + -
+
- Import Resource from Altinn 2 + Importere ressurser fra Altinn 2
- - Import Resource from... + + Importere ressurser... - + -
+
Migrate Delegations from Altinn 2 service @@ -544,16 +478,16 @@
- + Migrate Delegations... - + -
+
Access Lists @@ -561,39 +495,39 @@
- + Access Lists - - - - - - + + + + + + -
+
- Access Lists Admin Studio + Tilgangslister
- - Access Lists Admin S... + + Tilgangslister - + -
+
Party Register @@ -601,136 +535,136 @@
- + Party Register
- + -
+
- ER Register Copy + ER Register kopi
- - ER Register Copy + + ER Register kopi - + -
+
- Folkeregister Copy + Folkeregister kopi
- - Folkeregister Copy + + Folkeregister kopi - + -
+
- Expose Registerdata + Eksonere registerdata til andre komponenter
- - Expose Registerdata + + Eksonere registerdat... - + -
+
- Request Consent + Forespørre samtykke
- - Request Consent + + Forespørre samtykke - + -
+
- Accept Concent + Akseptere samtykke
- - Accept Concent + + Akseptere samtykke - + -
+
- Concent Overview + Samtykke oversikt
- - Concent Overview + + Samtykke oversikt - + -
+
- Concent API + Samtykke API
- - Concent API + + Samtykke API - + -
+
AccessManagment Register Copy @@ -738,33 +672,33 @@
- + AccessManagment Regi... - + -
-
-
- Altinn 2 Register Integration +
+
+
+ Altinn 2 register integrasjon
- - Altinn 2 Register In... + + Altinn 2 register in... - + -
+
ER Integration @@ -772,16 +706,16 @@
- + ER Integration - + -
+
Folkeregister integration @@ -789,16 +723,16 @@
- + Folkeregister integr... - + -
+
Not Started @@ -806,16 +740,16 @@
- + Not Started - + -
+
Design Started @@ -823,16 +757,16 @@
- + Design Started - + -
+
Development Started @@ -840,16 +774,16 @@
- + Development Started - + -
+
Test Started @@ -857,16 +791,16 @@
- + Test Started - + -
+
Test Complete @@ -874,16 +808,16 @@
- + Test Complete - + -
+
Tilgangsstyring @@ -891,101 +825,101 @@
- + Tilgangsstyring - + -
+
- System Users + Systembruker
- - System Users + + Systembruker - + -
+
- Registry + Register
- - Registry + + Register - + -
+
- Concent + Samtykke
- - Concent + + Samtykke - + -
+
- Resource Registry + Ressursregister
- - Resource Registry + + Ressursregister - + -
+
- Delegate Maskinporte Scope V1 + Deleger Maskinporten Scope V1
- - Delegate Maskinporte... + + Deleger Maskinporten... - + -
+
Fullmaktsoversikt @@ -995,33 +929,33 @@
- + Fullmaktsoversikt... - + -
+
- Delete delegation of Maskinporten scope + Slette maskinporten delegeringer V1
- - Delete delegation of... + + Slette maskinporten... - + -
+
Overview Systems rights @@ -1029,33 +963,33 @@
- + Overview Systems rig... - + -
+
- Right holders person + Brukeroversikt person
- - Right holders person + + Brukeroversikt person - + -
+
Tilgangsgrupper oversikt @@ -1063,16 +997,16 @@
- + Tilgangsgrupper over... - + -
+
Opprett tilgangsgruppe @@ -1080,16 +1014,16 @@
- + Opprett tilgangsgrup... - + -
+
Tilgangsgruppe @@ -1099,50 +1033,50 @@
- + Tilgangsgruppe... - + -
+
- Client Admin overview + Klientadmin oversikt
- - Client Admin ove... + + Klientadmin overs... - + -
+
- Client Admin employee view + Klientadmin bruker oversikt
- - Client Admin emp... + + Klientadmin bruke... - + -
+
Client Admin client view @@ -1150,86 +1084,69 @@
- - Client Admin cli... + + Client Admin clie... - + -
+
- Activity Log + Aktivitetslogg
- - Activity Log + + Aktivitetslogg - + -
-
-
- System User Status API +
+
+
+ Systembruker status API leverandør
- - System User Status A... + + Systembruker status...
- - - - -
-
-
- Publish system user events -
-
-
-
- - Publish system user... - -
-
- + -
+
- PDP Integration with access list + PDP integrasjon med tilgangslister
- - PDP Integration with... + + PDP integrasjon med... - + -
+
System User Status API @@ -1237,16 +1154,16 @@
- + System User Status A... - + -
+
PDP @@ -1254,34 +1171,34 @@
- + PDP - + -
+
- PDP Integration with resource registry + PDP integrasjon med ressursregisteret
- - PDP Integration with... + + PDP integrasjon med... - + -
+
Authorization based on Access Package @@ -1289,18 +1206,18 @@
- + Authorization based...
- - + + -
+
Authorization Log @@ -1308,16 +1225,16 @@
- + Authorization Log - + -
+
Authentication Log @@ -1325,16 +1242,16 @@
- + Authentication Log - + -
+
Audit Log @@ -1342,137 +1259,137 @@
- + Audit Log - + -
+
- Functional areas with features for Altinn Authorization teams + Funksjonelle områder Altinn Autorisasjon
- - Functional areas with features for Altinn Authorization teams + + Funksjonelle områder Altinn Autorisasjon - + -
+
-
+
Tilgangsstyring - Landingside
- - Tilgangsstyring - La... + + Tilgangsstyring - Land...
- + -
+
- Click on boxes for details + Klikk på boksene for lenker til issues/dokumentasjon
- - Click on boxes for details + + Klikk på boksene for lenker til issues/dokumentasjon - + -
+
- System user Overview V2 + Systembrukeroversikt V2
- - System user Overview... + + Systembrukeroversikt... - + -
+
- Authorization in Altinn Studio + Autorisasjon i Altinn Studio
- - Authorization in Altinn Studio + + Autorisasjon i Altinn Studio - + -
+
- Define Resource Policy with Roles + Definere ressurspolicy med roller
- - Define Resource Poli... + + Definere ressurspoli... - + -
+
- Define Resource Policy with Access Package + Definere ressurspolicy med tilgangspakker
- - Define Resource Poli... + + Definere ressurspoli... - + -
+
Start Migration of delegations from Altinn 2 to Altinn 3 @@ -1480,17 +1397,17 @@
- + Start Migration of d... - + -
+
Tilgangsgrupper - Administrer brukere @@ -1498,273 +1415,273 @@
- + Tilgangsgrupper - Ad...
- + -
+
- Define App Policy With roles + Definere app policy med tilgangspakker
- - Define App Policy Wi... + + Definere app policy... - + -
+
- Define App Policy with Roles + Definere App policy med roller
- - Define App Policy wi... + + Definere App policy... - + -
+
- Access Package Admin + Tilgangspakke administrasjon
- - Access Package Admin + + Tilgangspakke admini... - + -
+
- Delegate Maskinporte Scope V1 + Deleger Maskinporten Scope V2
- - Delegate Maskinporte... + + Deleger Maskinporten... - + -
+
- Delete delegation of Maskinporten scope V2 + Slette maskinporten scope delegeringer V2
- - Delete delegation of... + + Slette maskinporten... - + -
-
-
- System User List for Vendor API +
+
+
+ Systembruker liste API for leveandør
- - System User List for... + + Systembruker liste A...
- + -
-
-
- System User Request Vendor API +
+
+
+ Forespørsel API for leverandør
- - System User Request... + + Forespørsel API for...
- + -
-
-
- Update required rights API vendor +
+
+
+ Oppdatere rettighetsbehov system API
- - Update required righ... + + Oppdatere rettighets...
- + -
+
- Change Rights on System User + Leverandørstyrt forespørsel om  endringer av rettigheter på systembruker
- - Change Rights on Sys... + + Leverandørstyrt fore...
- + -
+
- Change Rights on System User + Endre rettigheter på systembruker
- - Change Rights on Sys... + + Endre rettigheter på...
- + -
+
- Access Package support system users + Tilgangspakke for systembruker
- - Access Package suppo... + + Tilgangspakke for sy...
- + -
+
- Client Admin for system Users + Klientrettigheter for systembruker
- - Client Admin for sys... + + Klientrettigheter fo...
- + -
+
- System User for own system (without a vendor) + Systembruker for egenutviklet system
- - System User for own... + + Systembruker for ege...
- + -
+
- System User Event publishing + Publisere hendelser om systembrukere
- - System User Event pu... + + Publisere hendelser...
- + -
+
Export API @@ -1772,192 +1689,296 @@
- + Export API - + + + + + +
+
+
+ Brukeroversikt -  Delegere rolle +
+
+
+
+ + Brukeroversikt -  Dele... + +
+
+
+ -
+
-
- Brukeroversikt -  Delegere rolle +
+ Brukeroversikt -  Delegere tilgangspakke
- - Brukeroversikt -  De... + + Brukeroversikt -  Dele... - + -
+
-
- Brukeroversikt -  Delegere tilgangspakke +
+ Brukeroversikt -  Delegere rettighet for enkelttjeneste
- - Brukeroversikt -  De... + + Brukeroversikt -  Dele... - + + + + + +
+
+
+ Fullmaktsoversikt +
+
+
+
+ + Fullmaktsoversikt + +
+
+
+ -
-
-
- Brukeroversikt -  Delegere enkelttjeneste +
+
+
+ Tilgangsforespørsel +
+ oversikt
- - Brukeroversikt -  De... + + Tilgangsforespørsel... - + -
-
-
- Brukeroversikt +
+
+
+ Tilgangsforespørsel
- Se fullmakter for bruker + Be om om enkelttilgang
- - Brukeroversikt... + + Tilgangsforespørsel... - + -
-
-
- Brukeroversikt +
+
+
+ Tilgangsforespørsel
- Se fullmakter for bruker + Akseptere enkelttilgang
- - Brukeroversikt... + + Tilgangsforespørsel... - - + + + + +
+
+
+ Brukeroversikt slette instans rettigheter +
+
+
+
+ + Brukeroversikt slette... + +
+
+
+ -
+
-
- Fullmaktsoversikt +
+ Brukeroversikt -  Slette delegert rolle
- - Fullmaktsoversikt + + Brukeroversikt -  Slet...
- + -
+
+
+
+ Ny funksjonalitet med Altinn 3 +
+
+
+ + + Ny funksjonalitet me... + + + + + + + +
+
+
+ Erstatter eksisterende funksjonalitet i Altinn 2 +
+
+
+
+ + Erstatter eksisteren... + +
+
+ + + + +
-
- Tilgangsforespørsel -
- oversikt +
+ Brukeroversikt person +
+ Delegere roller
- - Tilgangsforespørsel... + + Brukeroversikt person... - + -
+
-
- Tilgangsforespørsel -
- Be om om enkelttilgang +
+ Brukeroversikt person +
+ Slett roller
- - Tilgangsforespørsel... + + Brukeroversikt person... - + -
+
- Tilgangsforespørsel -
- Akseptere enkelttilgang + DLS integrasjon
- - Tilgangsforespørsel... + + DLS integrasjon - + -
+
-
- Tilgangsforespørsel -
- Akseptere enkelttilgang +
+ Klientadmin kunde oversikt
- - Tilgangsforespørsel... + + Klientadmin kunde... + + + + + + + +
+
+
+ Klientadmin kunde oversikt +
+
+
+
+ + Klientadmin kunde...
From a62014b1fe70836987c5804e738b9344b210f8bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rune=20T=C3=B8mmer=C3=A5s=20Larsen?= Date: Wed, 2 Oct 2024 08:10:32 +0200 Subject: [PATCH 11/11] More updates (#1807) --- .../functionalareas.drawio.svg | 133 +++++++++++++----- 1 file changed, 96 insertions(+), 37 deletions(-) diff --git a/content/authorization/what-do-you-get/functionalareas.drawio.svg b/content/authorization/what-do-you-get/functionalareas.drawio.svg index e9b3120f545..761a55dbf23 100644 --- a/content/authorization/what-do-you-get/functionalareas.drawio.svg +++ b/content/authorization/what-do-you-get/functionalareas.drawio.svg @@ -1,4 +1,4 @@ - + @@ -432,7 +432,7 @@
- + @@ -449,7 +449,7 @@ - + @@ -503,7 +503,7 @@ - + @@ -609,7 +609,7 @@ - + @@ -626,7 +626,7 @@ - + @@ -643,7 +643,7 @@ - + @@ -958,13 +958,13 @@
- Overview Systems rights + Oversikt systemrettigheter
- Overview Systems rig... + Oversikt systemretti...
@@ -1051,7 +1051,7 @@
- Klientadmin overs... + Klientadmin over... @@ -1068,32 +1068,15 @@
- Klientadmin bruke... + Klientadmin bruk...
- + -
-
-
- Client Admin client view -
-
-
-
- - Client Admin clie... - -
-
- - - - -
+
Aktivitetslogg @@ -1101,7 +1084,7 @@
- + Aktivitetslogg @@ -1213,7 +1196,7 @@ - + @@ -1230,7 +1213,7 @@ - + @@ -1351,7 +1334,7 @@ - + @@ -1438,7 +1421,7 @@ - + @@ -1961,7 +1944,7 @@
- Klientadmin kunde... + Klientadmin kund... @@ -1978,7 +1961,83 @@
- Klientadmin kunde... + Klientadmin kund... + +
+
+ + + + +
+
+
+ Brukeroversikt person +
+ Delegere tilgangspakker +
+
+
+
+ + Brukeroversikt person... + +
+
+ + + + +
+
+
+ Brukeroversikt person +
+ Slett tilgangspakker +
+
+
+
+ + Brukeroversikt person... + +
+
+ + + + +
+
+
+ Brukeroversikt person +
+ Delegere enkelttilganger +
+
+
+
+ + Brukeroversikt person... + +
+
+ + + + +
+
+
+ Brukeroversikt person +
+ slette enkeltdelegeringer +
+
+
+
+ + Brukeroversikt person...