Siden beskriver CPR's GraphQL custom-tjeneste til private, der udstilles på Datafordeleren.
Få en introduktion til GraphQL på Datafordeleren, hvis du har brug for en generel og mere teknisk indføring i GraphQL på Datafordeleren.
Læs derudover mere om Anmodning om adgang til beskyttede registerdata.
Læs mere om CPR GraphQL i CPRs dokumentation.
Sideinformation
| Version |
| |
|---|---|---|
| Sikkerhedszone | 5 – Indeholder fortrolige eller følsomme data | |
| Adgangsniveau | Bruger oprettet med MitID Erhverv, og OAuth Shared Secret eller OAuth Certifikat | |
| GraphQL skema | https://graphql.datafordeler.dk/CPR/custom/PrivateSector/<version>/schema? | |
| Endepunkter for CPR | https://graphql.datafordeler.dk/CPR/custom/PrivateSector/<version> | |
| Dato- og tidsformat | Datoformat følger ISO 8601 Date and time format. Alle datoer skrives med andre ord i formatet yyyy-mm-ddTHH:MM:SS.ssssss, hvor tidsangivelsen kan udelades. UTC kan angives enten ved +HH:MM (2019-07-05T07:50:14.687580+01:00) eller ved at benytte Z (2019-07-05T07:50:14.687580Z) | |
| Tjenester og entiteter | Registret har følgende specialudviklede tjeneste, der skal anmodes om adgang til for at få adgang til CPR:
|
Bemærk Hvis du skal have adgang til GraphQL-tjenesten CustomPrivateSectorPerson, skal det være den eneste valgte tjeneste i feltet ”Entiteter og tjenester” i menuen under Anmodning i Datafordeler Administration. Ingen entiteter skal være valgt. Anmodninger bliver afslået, hvis der både er valgt GraphQL custom-tjenester og entiteter i samme anmodning. |
Hvis du ønsker at tilgå CPR-data hos Datafordeleren via GraphQL på vegne af en privat virksomhed, skal du først have adgang til CPR's CustomPrivateSectorPerson-tjeneste.
Adgang søges på samme måde som for andre registre med beskyttede data på Datafordeleren.
Tjenesten vælges i drop-down-menuen ”Vælg entiteter og tjenester”, når CPR-registeret er valgt i ”Register”-menuen i en almindelig ”Dataadgang”-ansøgning.
”Dataadgang”-ansøgninger er beskrevet yderligere under Anmodning om adgang til beskyttede registerdata .
Med godkendt adgang til CustomPrivateSectorPerson-tjenesten har du mulighed for at tilgå entiteten CPRCustom_PrivateSectorPerson via GraphQL. Denne specialudviklede entitet giver mulighed for at tilgå en række af de almindelige entiteter fra CPR-registret og sammenstiller disse, så du ikke selv behøver at tage stilling til, hvordan data hænger sammen.
Bemærk, der er en række begrænsninger på, hvilke data der kan returneres, som følge af CPR-lovgivningen. Tjenesten udstiller for eksempel udelukkende aktuelle data, og der kan ikke hentes data på personer, der har status = ’nedlagt’. Derudover vil adresser, udrejse/indrejse og navn, i tilfælde hvor den pågældende person har navne- og adressebeskyttelse, ikke blive inkluderet i outputtet.
Generelt gælder der de samme regler for udstilling af CPR-data til private anvendere gennem CustomPrivateSectorPerson som for Datafordelerens nuværende REST-tjenester for private. Du kan læse mere om disse regler på siden REST - private (CPR) (udfases Q2-2026) på Det Centrale Personregister (CPR).
For at bruge CustomPrivateSectorPerson-tjenesten skal du give en række input, der unikt identificerer en person. Normalt kan du udelukkende hente data på én person ad gangen. Dog er det muligt at hente flere personer ved brug af PNR-liste-søgning. Tjenesten tager følgende inputparametre:
Du kan identificere en person på en af tre følgende måder:
Bemærk, at alle søgninger for CustomPrivateSectorPerson er case-insensitive, det vil sige at du ikke skal skelne mellem store og små bogstaver.
Udover brug af inputparametre, kalder du CustomPrivateSectorPerson på nøjagtig samme måde som de almindelige GraphQL-tjenester. Hvis du for eksempel ønsker at hente adresseoplysninger for en bestemt person, kan du sende nedenstående GraphQL-query som en POST-request til https://graphql.datafordeler.dk/CPR/custom/PrivateSector/v3:
query {
CPRCustom_PrivateSectorPerson(
input: {
navn: { fornavne: "John", efternavn: "Doe" }
adresse: { postnr: 1550, vejnavn: "Rådhuspladsen", husnr: "1" }
}
) {
statusdato
statusdatousikkerhedsmarkering
status
beskyttelser {
beskyttelsestype
status
virkningfra
}
navn {
adresseringsnavn
efternavn
fornavne
mellemnavn
status
}
vaergemaal {
vaergenavn
adresselinie1
adresselinie2
adresselinie3r
adresselinie4
adresselinie5
vaergemaalstype
virkningfra
virkningfrausikkerhedsmarkering
status
}
udrejseIndrejse {
cprLandIndrejse {
kode
navn
landekode
administrativEnhedType {
typeKode
typeNavn
}
}
cprLandUdrejse {
kode
navn
landekode
administrativEnhedType {
typeKode
typeNavn
}
}
status
udenlandsadresselinie1
udenlandsadresselinie2
udenlandsadresselinie3
udenlandsadresselinie4
udenlandsadresselinie5
virkningfra
virkningfrausikkerhedsmarkering
}
forsvinding {
status
virkningfra
virkningfrausikkerhedsmarkering
}
kontaktadresse {
adresselinie1
adresselinie2
adresselinie3
adresselinie4
adresselinie5
virkningfra
}
adresseoplysninger {
cprAdresse {
bygningsnummer
bynavn
cprkommunekode
cprkommunenavn
cprvejkode
etage
husnummer
postdistrikt
postnummer
sidedoer
vejadresseringsnavn
vejnavn
daradresse
}
conavn
status
virkningfra
virkningfrausikkerhedsmarkering
}
}
} |
Bemærk at overstående eksempel indeholder alle de obligatoriske-felter, som altid skal inkluderes i en query. Alle kald til CustomPrivateSectorPerson-tjenesten uden de obligatoriske felter inkluderet i query’en vil blive afvist og intet data returneret.
CustomPrivateSectorPerson-tjenesten har også mulighed for at lave en query for ”totalCount”. Dette vil returnere antallet af personer, der svarer til dit input. For at query ”totalCount” må du ikke query andre felter. Et eksempel vil være:
query {
CPRCustom_PrivateSectorPerson(
input: {
navn: { fornavne: "John", efternavn: "Doe" }
adresse: { postnr: 1550, vejnavn: "Rådhuspladsen", husnr: "1" }
}
) {
totalCount
}
} |
Total count har de samme begrænsninger som ved hentning af data, idet du kun må finde én person per query. Finder dit input flere personer, vil -1 blive returneret. Dette gælder ikke for personnummer-søgning, hvor det korrekte antal altid vil blive returneret.