Hop til hovedindhold

DUPLA (Skattestyrelsen)

DUPLA er Skattestyrelsens dataudstilling. AgentBase bruger den til at hente kontroloplysninger om udlejning — det, danske udlejningsformidlere har indberettet efter skatteindberetningslovens § 43 — samt årsopgørelser og forskudsopgørelser i konkrete sager.

De oplysninger findes ikke i Datafordeleren. Skal et flow bruge dem, er DUPLA kilden.

Der findes ingen platformsadgang

Datafordeleren har en fælles platformsnøgle, som åbne registre kan falde tilbage på. DUPLA har ikke noget tilsvarende. Adgangen bygger på jeres egen aftale med Udviklings- og Forenklingsstyrelsen (UFST) og jeres eget OCES-funktionscertifikat. Uden begge dele kan integrationen ikke bruges.

Forudsætninger​

  • En aftale med UFST om adgang til DUPLA, og aftalens id. AgentBase sender id'et som hjemmel (UFST-Adgangsgrundlag) på hvert eneste kald.
  • Et OCES-funktionscertifikat (.p12- eller .pfx-fil) med kodeord, som er tilmeldt aftalen. Certifikatet er selve legitimationen: det præsenteres i TLS-håndtrykket, og der er ingen API-nøgle at falde tilbage på.
  • IP-allowlisting. UFST skal godkende den IP-adresse, AgentBase kalder fra. Adressen står på integrationskortet i AgentBase.
  • Login- og API-adresserne til det miljø, I skal bruge. Test og produktion har hver sin, og I får dem af UFST.
  • Rollen Administrator i AgentBase — det er den, der må gemme organisationens legitimationsoplysninger.

Trin for trin​

  1. Indgå aftalen med UFST, og notér aftale-id'et

    Aftalen er hjemlen. Det er den, AgentBase henviser til på hvert kald, og den afgør hvilke oplysninger I må hente.

  2. Skaf certifikatet, og få det tilmeldt aftalen

    Bestil — eller find — organisationens OCES-funktionscertifikat, og sørg for, at UFST har tilmeldt netop det certifikat til aftalen. Et gyldigt certifikat, der ikke er tilmeldt, bliver afvist på samme måde som et forkert.

  3. Bed UFST om at godkende AgentBase's IP-adresse

    Åbn Organisation → Integrationer i AgentBase, og find kortet DUPLA (Skattestyrelsen). Kortet viser platformens faste IP-adresse. Send den til UFST, og bed om at få den føjet til aftalen.

  4. Få login- og API-adresserne

    I skal bruge to værtsnavne: login-tjenesten, der udsteder adgangstokenet, og selve DUPLA-tjenesten. Angiv kun værtsnavnet — uden https://, uden skråstreger og uden sti.

    Vær opmærksom på, at test og produktion har hver sit sæt adresser. Bruger I testcertifikatet mod produktionsadressen (eller omvendt), bliver kaldet afvist.

  5. Udfyld integrationen, og test forbindelsen

    Upload certifikatet sammen med dets kodeord, udfyld de to adresser og aftale-id'et, og klik "Test forbindelse". Testen henter et rigtigt adgangstoken fra DUPLA, så et grønt svar betyder, at certifikat, adresse og IP-godkendelse alle er på plads.

    Kodeordet bruges kun til at åbne certifikatfilen og gemmes ikke. Selve certifikatet gemmes krypteret og vises aldrig igen.

  6. Indsæt aftalebeskrivelsen (valgfrit)

    UFST beskriver jeres aftale tjeneste for tjeneste i Aftalemodulet: Service, Obligatoriske parametre, Optionelle parametre og Felter. Indsæt hele den tekst i feltet Aftalebeskrivelse, og gem. Så kan editoren vise, hvilke tjenester, parametre og felter jeres aftale dækker — og hvilke den ikke gør (se Vælg fra kataloget).

    Uden beskrivelsen kan I stadig vælge fra UFST's katalog; editoren kan bare ikke sige, hvad aftalen dækker.

    Beskrivelsen har intet med selve forbindelsen at gøre. Ændrer I den, skal forbindelsen ikke testes igen. Ændrer UFST aftalen, indsætter I bare den nye tekst.

Adgang pr. team​

Som de øvrige integrationer kan DUPLA konfigureres for hele organisationen eller for ét team. Et team med sin egen legitimation kører på den; alle andre teams arver organisationens. Har I flere UFST-aftaler — eller ét certifikat, der kun må bruges af én afdeling — er team-opsætningen stedet.

Fejlsøgning​

"Adgang afvist" / DUPLA afviste certifikatet​

Kontrollér i denne rækkefølge:

  • Er certifikatet tilmeldt aftalen? Det er den hyppigste årsag. Certifikatet kan være fuldt gyldigt og alligevel ukendt for UFST.
  • Er certifikatet udløbet? Se udløbsdatoen på integrationskortet (se nedenfor).
  • Er det det rigtige miljø? Et testcertifikat mod produktionsadressen — eller omvendt — giver samme afvisning som et forkert certifikat.
  • Er kodeordet det rigtige? Et forkert kodeord fanges allerede, når filen uploades: AgentBase kan så ikke åbne den, og siger det med det samme.

"IP ikke godkendt"​

DUPLA kunne kontaktes, men afviste kaldet på grund af afsenderadressen. IP-adressen på integrationskortet er ikke føjet til jeres aftale hos UFST — eller den er føjet til en anden aftale end den, aftale-id'et peger på. Send adressen til UFST igen.

"Kunne ikke kontakte DUPLA"​

Et netværksproblem, ikke et adgangsproblem. Tjek at login-adressen er stavet rigtigt og angivet uden https:// og sti, og prøv igen om lidt.

Ugyldig adresse​

AgentBase afviser en adresse, der ikke er et rent værtsnavn, og en adresse, der peger ind i et internt netværk. Skriv login.dupla.eksempel.dk, ikke https://login.dupla.eksempel.dk/realms/....

Certifikatet udløber​

Et OCES-funktionscertifikat har en udløbsdato, og den dag det udløber, holder integrationen op med at virke. Integrationskortet viser udløbsdatoen for det installerede certifikat — hold øje med den, og forny certifikatet i god tid.

Fornyelse er den samme handling som den første opsætning: upload den nye fil med dens kodeord, og kør "Test forbindelse". Husk, at det nye certifikat også skal tilmeldes aftalen hos UFST.

Byggeklodsen​

Når integrationen er sat op og "Test forbindelse" er grøn, kan I bruge byggeklodsen DUPLA (Skattestyrelsen) i jeres flows.

Den findes i to versioner. Nye flows får version 2. Flows, der allerede bruger version 1, kører videre på den, uændret — de opgraderes ikke af sig selv, og det behøver de ikke (se Fra version 1 til version 2).

Version 2 kan alt det, version 1 kan: hente kontroloplysninger for en person eller en virksomhed, en årsopgørelse eller en forskudsopgørelse på et CPR- eller SE-nummer og et eller flere indkomstår. Derudover kan den kalde en hvilken som helst anden DUPLA-tjeneste — fx Virksomhedspligter — og fortælle, hvilke felter svaret havde.

Hvorfor svaret ikke har faste felter​

DUPLA's kontroloplysningsrapport navngiver sine egne felter inde i selve svaret, og for årsopgørelsen og forskudsopgørelsen bestemmer jeres dataudvekslingsaftale med UFST, hvilke felter der overhovedet returnerer data. To organisationer på det samme endpoint får derfor forskellige felter.

Byggeklodsen kan af den grund ikke have faste felt-outputs. Brug Resultater, og filtrér på gruppe og felt — fx med Udtræk oplysninger — eller skriv under Felter, hvilke felter flowet skal bruge.

Hjemmel​

Hvert kald sender jeres aftale-id i UFST-Adgangsgrundlag-headeren. CPR-nummeret skal komme fra sagsbehandleren i den konkrete sag; det må ikke udledes af et ejendoms- eller virksomhedsopslag.

Felterne​

FeltHvad
TjenesteEn af de fire faste, eller Andet (angiv sti)
NøgleFaste tjenester. CPR-nummeret, eller SE-nummeret på Kontroloplysninger (virksomhed). Et CVR-nummer skrives under Parametre (VirksomhedCVRNummer=…)
IndkomstårFaste tjenester. Fx 2024. Årsopgørelse og Forskudsopgørelse tager flere år adskilt af komma (2024, 2023); kontroloplysningerne ét år pr. opslag
StiAndet. Tjenestens sti efter værtsnavnet, fx Virksomhedspligter. Værten kommer altid fra integrationen
ParametreÉn linje pr. parameter: Navn=værdi — til en tjeneste under Andet, eller ekstra parametre på en fast. En værdi er én værdi, også med komma i; flere værdier = linjen flere gange. Eller ét JSON-objekt
FelterAvanceret. Tomt = alt, aftalen giver. Ellers de felter flowet har brug for: Feltnavn, Gruppe > Felt, kode: 35, 3500100, ABG eller sti: …. Gruppen kan være et hvilket som helst navn over feltet i svaret, også en listes navn
Hvis et ønsket felt manglerAvanceret. Fortsæt (standard) eller Stop kørslen
Hvis DUPLA ikke svarerAvanceret. Stop kørslen (standard) eller Fortsæt og meld fejlen

Under Andet skrives indkomståret under Parametre med tjenestens eget parameternavn. De faste tjenester kalder det KontrolOplysningRapportIndkomstÅr (kontroloplysningerne) og IndkomstÅr (Årsopgørelse og Forskudsopgørelse) — det er dem, Indkomstår udfylder for jer.

Vælg fra kataloget​

Editoren kender UFST's offentlige katalog over DUPLA-tjenester — alle tjenester, deres parametre og felter, også for de tjenester, der ikke har en fast forudindstilling. Kataloget hentes fra Skattestyrelsens dataudvekslingsportal og kræver intet login.

  • Tjeneste: under dropdownen står, hvilken tjeneste og operation noden kalder. Find i kataloget viser alle tjenester efter domæne; vælg en tjeneste og derefter en operation. Har operationen en fast forudindstilling, vælges den, ellers vælges Andet med stien udfyldt.
  • Parametre: tjenestens egne parametre står som rækker. Udfylder Nøgle og Indkomstår allerede alle tjenestens parametre — som på kontroloplysningerne — står der kun én sætning om det, for der er ikke mere at udfylde. Ellers står de dækkede med "← udfyldes af Nøgle", og de øvrige får en værdi direkte i rækken, påkrævede først; valgfrie ligger foldet sammen. En linje, kataloget ikke kender, står for sig under "Ikke i tjenestens katalog".
  • Felter (under Avanceret i byggeklodsens indstillinger): tomt betyder alt, aftalen giver — det er det rigtige for de fleste flows. Vil I kun have bestemte oplysninger, åbner Vælg felter tjenestens felter, som UFST grupperer dem: kontroloplysningerne har 46 grupper med i alt omkring 700 rapporter. Sæt flueben ved en hel gruppe eller rapport, eller åbn den og vælg enkelte felter. En gruppe gemmes som én linje (kode: 35), en rapport som kode: 35, 3500100. Fjerner I et enkelt felt fra en valgt gruppe, skrives gruppens øvrige rapporter i stedet. Er der indsat en aftalebeskrivelse, vises kun aftalens grupper, indtil I slår Kun aftalens felter fra. Søgningen finder grupper, rapporter og felter og åbner vejen til dem.
  • Skriv selv åbner den rå tekst, hvis I vil skrive en linje, kataloget ikke nævner — eller give en parameter flere værdier.

Hvad er tilgængeligt?​

Er der indsat en aftalebeskrivelse, har hver tjeneste, parameter, gruppe og felt en farvet prik:

PrikBetyder
GrønI aftalen — aftalebeskrivelsen nævner det
BlåDelvist i aftalen — en gruppe eller rapport, hvor kun nogle af felterne er med. Tallet siger hvor mange, fx 3 af 178
OrangeIkke i seneste svar — aftalen nævner det, men nodens seneste kørsel fik det ikke. Ofte er der bare ingen data for den person eller virksomhed; ellers er aftalen ændret, siden beskrivelsen blev indsat
RødIkke i aftalen — aftalebeskrivelsen nævner det ikke, så DUPLA leverer det ikke

Uden en aftalebeskrivelse er der ingen prikker — editoren ved så ikke, hvad aftalen dækker, og siger det i stedet for at gætte.

Under Tjeneste står desuden det, der får et kald til at fejle, før I kører det:

  • Aftalen nævner ikke operationen — DUPLA afviser kaldet.
  • Aftalen mangler felter, som tjenesten altid returnerer — fx PligtKode på Virksomhedspligter. DUPLA afviser hele kaldet med 400.5, indtil felterne er med i aftalen. Editoren nævner dem ved navn.
  • En påkrævet parameter mangler under Parametre.
  • Stien findes ikke i kataloget (under Andet).
  • Seneste kørsel — hvordan nodens sidste kørsel endte: hvor mange rækker den fik, eller hvilken fejlkode og besked DUPLA svarede med. Den vises kun for kørsler, I selv har startet, eller hvis I er reviewer eller derover.

Hvilken aftale der gælder, afgøres af flowets team, ligesom når flowet kører. Prikkerne er en hjælp, ikke en spærre: I kan altid vælge eller skrive noget, aftalebeskrivelsen ikke nævner, fx hvis UFST har ændret aftalen, før I har indsat den nye tekst.

Nøgle og Indkomstår er skjult under Andet, men en værdi i dem forsvinder ikke af det. Skifter du til Andet, efter at et af dem er udfyldt eller forbundet, afvises kørslen med besked om det. Vælg så en fast tjeneste igen, tøm feltet (eller fjern forbindelsen), og skift tilbage.

Outputs​

De tre første er de samme som i version 1, på samme plads:

OutputHvad
DataDet komplette svar som JSON. Felter, hvis navn indeholder CPR, og CPR-numre i en tekst står som [udeladt] (se CPR-numre)
ResultaterSvaret fladgjort til rækker med gruppe, felt, værdi, indkomstår og sti. Kontroloplysningernes rækker har desuden type, kvalifikator, kvalifikator_tekst, gruppe_nummer, felt_nummer og koder. En række, hvis værdi er skjult, har udeladt: true
AntalAntallet af rækker
FelterSvar på hvert felt under Felter (se nedenfor)
DækningHvad svaret indeholdt som helhed, og hvad det ikke gjorde

Fra version 1 til version 2​

Et flow på version 1 behøver ikke skifte. Vil I gerne have de nye muligheder, så bed flow-assistenten i editoren om at skifte DUPLA-noden til version 2 — fx "Skift DUPLA-noden til version 2, og behold opslaget". Editoren selv har ingen knap til at skifte version: sletter du noden og trækker en ny ind, mister du forbindelserne.

Når flow-assistenten skifter versionen:

  • Data, Resultater og Antal har samme plads, betydning og type, så forbindelserne derfra bliver. Det samme gør en forbindelse til Indkomstår.
  • Opslag og CPR- eller SE-nummer hedder Tjeneste og Nøgle i version 2. De gamle felter fjernes, og Tjeneste står på sin standard (Kontroloplysninger (person)), indtil den er valgt — tjek den, før flowet kører, ellers henter det et andet opslag:
Opslag (version 1)Tjeneste (version 2)
Kontroloplysninger (udlejning m.m.)Kontroloplysninger (person)
Kontroloplysninger for virksomhedKontroloplysninger (virksomhed)
ÅrsopgørelseÅrsopgørelse
ForskudsopgørelseForskudsopgørelse

Det samme opslag sender det samme kald til DUPLA i begge versioner. Svaret læses lidt anderledes:

  • Data viser felter med CPR i navnet, og CPR-numre i en tekst, som [udeladt]. Version 1 viser dem.
  • Resultater har de rækker, version 1 gav, med de samme gruppe, felt, værdi og indkomstår — og flere: version 2 læser også det, der står ved siden af rapporten (fx svarets type og id, en valutakode ved et beløb), og viser et felt med CPR i navnet som én række med værdien [udeladt]. Filtrerer flowet på gruppe og felt, får det de samme rækker som før, og Antal kan være højere. Undtagelserne:
    • Et felt med CPR i navnet og det, der står under det, er én [udeladt]-række i stedet for sine egne rækker. En tekst med et CPR-nummer i har [udeladt] i stedet for nummeret.
    • Står der et indkomstår længere inde i svaret end på posten, får rækkerne derinde dét år.
    • En værdi under et navn, byggeklodsen ikke kender, bliver en række for sig under sit eget navn, med feltet som gruppe (fx Lejeindtægt > Sum). Version 1 viste værdien som tom. Feltets egen række er der stadig, med værdi: null.
    • Hedder et felt type eller id direkte på posten, kommer svarets egne type og id med, når der filtreres på det.
    • Rækkerne kommer ikke nødvendigvis i samme rækkefølge. Læs dem på gruppe og felt, ikke på deres plads i listen.
  • En fejl stopper kørslen, som i version 1. Version 2 kan desuden fortsætte en løkke forbi en sag, DUPLA afviser (Hvis DUPLA ikke svarer), og skriver DUPLA's egen fejlkode i fejlbeskeden (se Når DUPLA afviser). Et API-kald, der stopper på en fejl i adgangen (certifikat, aftale, IP) eller på et 4xx-svar uden kendt betydning, svarer med status 422 i stedet for 500.

Et felt, svaret ikke havde, er ikke en fejl​

Hvilke felter DUPLA returnerer, bestemmer jeres dataudvekslingsaftale — og den er forskellig fra team til team. Byggeklodsen fejler derfor ikke, fordi et felt mangler. I stedet svarer Felter for hvert ønsket felt:

{
"Arbejdsgiver": { "fundet": true, "antal": 1, "værdier": [100] },
"kode: 35, 3500100, 306": { "fundet": false, "antal": 0, "værdier": [] }
}

og Dækning siger, hvad svaret var som helhed. Den har altid de samme nøgler. Er kaldet fejlet, er form, manglende_felter, afkortet, afkortet_aarsag og form_fingerprint null — intet blev læst, så ingenting kan siges at mangle:

NøgleBetydning
udfaldsvarede, ufuldstændig (et krævet felt manglede) eller fejlet
formrapport, generisk, blandet eller tom
antal_rækkerAntal rækker i Resultater (det samme som Antal)
forventede_felterAntal felter under Felter
manglende_felterDe ønskede felter, svaret ikke havde
afkortettrue, hvis (dele af) svaret ikke blev læst — så er listen ikke komplet
afkortet_aarsagHvorfor, når afkortet er true
fejltypeVed fejlet: input, adgang eller kilde
kodeVed fejlet: DUPLA's egen fejlkode (fx 503.1), når svaret havde en — ellers null
fejlVed fejlet: fejlbeskeden — ellers null
form_fingerprintEn kort kode for, hvilke felter svaret havde (aldrig værdierne)

fundet: false betyder, at svaret ikke indeholdt feltet — ikke hvorfor. Det kan være, at personen ingen oplysninger har, eller at aftalen ikke lader feltet igennem; DUPLA oplyser ikke forskellen. Er form_fingerprint forskellig mellem to kørsler af samme opslag, har svaret en anden form, fx fordi et andet team har en anden aftale.

Et felt, DUPLA har returneret, men som byggeklodsen ikke kender formen på, læses alligevel (som en række af typen ukendt), og et felt med kun navn og nummer er fundet med typen ingen_værdi. Et felt, DUPLA sendte som en tom liste — fx en virksomhed uden registreringer — er fundet: true med antal: 0.

Brug "Stop kørslen", når et nej ville være en beslutning

Hvis flowet tolker fundet: false som "ikke momsregistreret", så sæt Hvis et ønsket felt mangler til Stop kørslen. Så kan et manglende felt ikke ved et uheld læses som et negativt svar.

Når DUPLA afviser​

SituationStopper kørslen?
Det, byggeklodsen selv kan se er forkert (en sti eller et parameternavn med ugyldige tegn, en manglende nøgle eller et manglende år), et 400-svar, og et 404 på en sti, du selv har skrevetAltid
Ingen integration, ufærdig opsætning, afvist certifikat (401) eller IP ved tokenAltid
Et afslag med en DUPLA-kode, der handler om aftalen, certifikatet eller kaldet (fx 403.3, 403.9, 404.1)Altid — det ville gentage sig for hver sag
422 (DUPLA afviste netop denne sag), 403 uden kode, 404 uden kode på en fast tjeneste, for mange kald (429.1), fejl hos DUPLA (500.1, 503.1, 504.1), timeoutKun med Stop kørslen. Med Fortsæt og meld fejlen meldes det i Dækning med fejltype (og kode, når DUPLA sendte en), og kørslen fortsætter

Fortsætter en løkke gennem mange sager, så tæl fejltype: er de alle adgang, er det aftalen eller IP-adressen, ikke sagen.

DUPLA's egne fejlkoder

Et afslag fra DUPLA har ofte en kode som 403.3 (adgang nægtet til tjenesten). AgentBase læser kun koden — aldrig DUPLA's fritekst, som kan gentage det, der blev sendt — og skriver den i fejlbeskeden som (DUPLA-kode 403.3) og i Dækning som kode. Med koden kan et 403 skelnes: aftale, certifikat og IP-godkendelse stopper kørslen ved første sag, også under Fortsæt og meld fejlen. Koderne under 422 betyder noget forskelligt fra tjeneste til tjeneste; slå dem op i tjenestens beskrivelse i UFST's servicekatalog.

Et 404 på en sti, du selv har skrevet, stopper altid

En stavefejl i en sti giver 404 på hvert kald, og et 404 på en egen sti kan ikke betyde "ingen oplysninger om personen" — så det stopper kørslen ved første sag, også under Fortsæt og meld fejlen. Byggeklodsen kan kun se, at en sti har gyldige tegn, ikke at tjenesten findes. På en fast tjeneste betyder et 404 derimod, at DUPLA intet har om netop denne sag, og meldes pr. sag.

Eksempel: Virksomhedspligter​

Tjenestens beskrivelse står i UFST's servicekatalog (dataudveksling.skat.dk/service-katalog/Virksomhedspligter/1), og dens OpenAPI er offentlig. Sådan udfyldes byggeklodsen:

FeltVærdi
TjenesteAndet (angiv sti)
StiVirksomhedspligter
ParametreVirksomhedCVRNummer=12345678 (eller VirksomhedSENummer=…), evt. PligtKode=63, RegistreringForholdGyldigDatoFra=2024-01-01
FelterVirksomhedSENummer, PligtKode, RegistreringForholdGyldigDatoFra, RegistreringForholdGyldigDatoTil

Alle parametre er valgfrie i servicen, men der skal angives CVR- eller SE-nummer. Datoer er ÅÅÅÅ-MM-DD. Gentag en linje for flere værdier.

Svaret er ét objekt: data.attributes.VirksomhedPligtListe indeholder én post pr. SE-nummer, og hver har en liste af registreringer med PligtKode, TekniskRegistreringTidspunkt, RegistreringForholdGyldigDatoFra og (kun hvis pligten er afsluttet) RegistreringForholdGyldigDatoTil. SKTFVdataKlassifikation følger altid med. En virksomhed uden registreringer får en post med en tom liste. I Resultater hører en pligt til sit SE-nummer ved nummeret i sti (VirksomhedPligtListe[0]).

Det er kun RegistreringForholdGyldigDatoTil, der kan mangle; de øvrige felter er obligatoriske i servicen. Er fundet falsk for ét af dem, er svaret ikke, som servicen beskriver.

Testmiljø

UFST angiver to API-adresser for tjenesten: api.skat.dk (produktion) og api.tfe.skat.dk (test, med syntetiske og anonymiserede data). Brug testadressen som API-adresse på integrationen, mens I tester, og brug testcertifikatet og test-aftalen til den. Login-adressen til testmiljøet får I af UFST; den står ikke i servicebeskrivelsen.

CPR-numre​

Et CPR-nummer skal ikke ligge tilbage efter en kørsel. Det sørger fire ting for. De gælder begge versioner af byggeklodsen, undtagen den første, der kun gælder version 2:

  • Svaret (version 2). Felter, hvis navn indeholder CPR, står som [udeladt], og det samme gør ethvert CPR-nummer, der står i en tekstværdi — et navnefelt, en bemærkning, en anden persons nummer. Det gælder i Data, Resultater og Felter. Tal i svaret (beløb, antal) røres ikke, og en tekst på ti cifre, der ikke kan være en dato, heller ikke — medmindre det er et tal, kørslen selv har sendt i Nøgle, Parametre eller Sti.
  • Kørselsoversigten. Det CPR-nummer, kørslen har brugt som nøgle eller parameter, står som [CPR] i alle nodernes input og output, i fejlbeskeder og i loggen. Det gælder også det, der blev gemt, før DUPLA-noden kørte: kørslens eget input og en tidligere nodes output rettes, så snart nummeret er brugt, og senest når kørslen slutter. Det gælder i en løkke, i en webhooks leveringslog og for et mellemresultat, der er gemt til genbrug (cache). Nummeret genkendes, uanset om det er skrevet 2901913067, 290191-3067 eller 290191 3067, og i Nøgle, Parametre og Sti også, når det ikke er en gyldig dato (fx et erstatningspersonnummer). En kørsel, der venter på en godkendelse, er omfattet på samme måde i anden halvdel.
  • Kvalitetskontrollen. Et CPR-nummer, en tester har skrevet som input til en testsag, bliver stående, mens runden testes — sagen skal kunne køres. I det øjeblik rapporten forsegles, erstattes det med [CPR] i testsagen, i de kørsler, der ligger bag dommene, og i selve rapporten. Rapportens hash dækker den maskerede udgave. En forseglet testsag kan derfor ikke køres igen, før nummeret er indtastet på ny; kørsel nægtes med navnet på det felt, der mangler. Det gælder flows, der indeholder en DUPLA-node.
  • Selve flowet — en advarsel, ikke en spærring. Skriver du et tal, der kan være et CPR-nummer, direkte i flowet — i DUPLA-nodens Nøgle, Parametre eller Sti (et tal på ti cifre, også fx et erstatningspersonnummer eller et sagsnummer af samme længde), eller, når organisationen maskerer personnumre, i et hvilket som helst felt, i flowets navn eller i beskrivelsen — så gemmes flowet, og du får en advarsel, der nævner noden og feltet (aldrig nummeret). Det er bevidst, så du kan tjekke et opslag mod en rigtig person, mens du bygger. Men nummeret står så i selve flowet og følger med i versioner, kopier, kvalitetskontrol og eksporter, indtil du sletter det — og i historikken, til den ryddes. Brug derfor et opdigtet testnummer, når du ikke skal tjekke en rigtig person, og slet nummeret, når du er færdig. Der advares kun, når et nummer kommer til, så autogem advarer én gang. Et CPR-nummer kan derimod ikke fastlåses (data pinning) i et flow med en DUPLA-node.

Hvad der ikke er dækket, så ingen læser det som en garanti:

  • Et CPR-nummer skrevet direkte i flowet bliver ikke afvist, kun advaret om (se ovenfor). Har organisationen slået maskering af personnumre fra, advares der kun om DUPLA-byggeklodsens egne felter — ikke om andre nodetyper (en tekst-node, en prompt).
  • Et CPR-nummer i et tal i svaret, eller som en nøgle til et felt med et andet navn end CPR, genkendes ikke som CPR, medmindre det er brugt som nøgle i kørslen.
  • I Chat gemmes samtalen, også et CPR-nummer, brugeren skriver, og det, en app svarer. Chatten er ikke omfattet af maskeringen.
  • Det, en senere node gør med nummeret, er den nodes ansvar. Sendes et CPR-nummer videre til en sprogmodel, ser modeludbyderen det; kørselsoversigten viser kun [CPR].
  • Et input, kørslen aldrig nåede at bruge i DUPLA (fx senere elementer i en løkke, der stoppede ved en fejl), står i kørselsoversigten, som det blev sendt ind.
  • Den, der starter en synkron kørsel, får flowets svar, som det er — også et CPR-nummer, flowet selv returnerer. Det, der gemmes, er maskeret. En asynkron kørsel, hvor svaret hentes bagefter, læser den gemte kopi, så et CPR-nummer, flowet returnerer, står som [CPR] dér.
note

"Test forbindelse" henter kun et token fra login-adressen. Den rører hverken API-adressen eller aftale-id'et. En grøn test betyder altså, at certifikatet er godkendt — ikke at aftalen dækker de opslag, I skal bruge. Det viser sig først, når byggeklodsen kører.

Relaterede sider​