{"openapi":"3.1.0","info":{"title":"Verifiserer API","description":"API for verifisering av credentials (Verifiable Credentials) via OpenID4VP. Krever Basic Auth.","version":"v2"},"servers":[{"url":"https://lommebok.test.digipost.no/verifiserer","description":"Generated server url"}],"tags":[{"name":"Verifisering","description":"Opprett og hent status for verifisering av credentials (v2)"}],"paths":{"/internal/verification/{verificationId}/authorization-request":{"post":{"tags":["authorization-request-controller"],"operationId":"createAuthorizationRequest","parameters":[{"name":"verificationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAuthorizationRequestDTO"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v2/verification":{"post":{"tags":["Verifisering"],"summary":"Opprett verifisering","description":"Oppretter en ny verifiseringsforespørsel. Leverer forespørselen via valgt leveringsmetode. Lommebok-eieren blir bedt om å presentere etterspurte credentials via OpenID4VP.","operationId":"createVerification","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVerification"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVerificationResponse"}}}}}}},"/api/v2/verification/{verificationId}/authorization-request":{"post":{"tags":["Verifisering"],"operationId":"createAuthorizationRequest_1","parameters":[{"name":"verificationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizationRequestResponse"}}}}}}},"/ping":{"get":{"tags":["Helsesjekk"],"summary":"Ping","description":"Svarer alltid med 200 gitt at applikasjonen er oppe og kjører.","operationId":"internalPing","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ping"}}}}}}},"/internal/verification/{verificationId}/status":{"get":{"tags":["verification-status-controller"],"operationId":"getVerificationStatus","parameters":[{"name":"verificationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"digipostSenderId","in":"query","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v2/verification/{verificationId}":{"get":{"tags":["Verifisering"],"summary":"Hent verifiseringsstatus","description":"Henter status og eventuelt resultat for en verifisering. Poll dette endepunktet for å følge med på om beviset er presentert fra lommeboken. Mulige statuser: PENDING, ACTIVE, PRESENTED, FAILED.","operationId":"getVerification","parameters":[{"name":"verificationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"responseCode","in":"query","description":"response_code fra redirect_uri etter delingen. Påkrevd for å få resultatet når kunden har redirect_uri.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerificationResponse"}}}}}}},"/api/ping":{"get":{"tags":["Helsesjekk"],"summary":"Ping","description":"Svarer alltid med 200 gitt at applikasjonen er oppe og kjører.","operationId":"externalPing","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ping"}}}}}}}},"components":{"schemas":{"CreateAuthorizationRequestDTO":{"type":"object","properties":{"digipostSenderId":{"type":"integer","format":"int64"}},"required":["digipostSenderId"]},"CreateVerification":{"type":"object","properties":{"verificationId":{"type":"string","format":"uuid","example":"your-verification-uuid"},"credentialQuery":{"$ref":"#/components/schemas/CredentialQuery"},"delivery":{"$ref":"#/components/schemas/Delivery"}},"required":["credentialQuery","delivery","verificationId"]},"CredentialQuery":{"type":"object","properties":{"credentials":{"type":"array","items":{"$ref":"#/components/schemas/DcqlCredential"},"minItems":1}},"required":["credentials"]},"DcqlClaimQuery":{"type":"object","properties":{"path":{"type":"array","example":["name"],"items":{"type":"string"},"minItems":1}},"required":["path"]},"DcqlCredential":{"type":"object","properties":{"id":{"type":"string","example":"my-credential","minLength":1},"format":{"type":"string","example":"dc+sd-jwt","minLength":1},"meta":{"$ref":"#/components/schemas/DcqlCredentialMeta"},"claims":{"type":"array","items":{"$ref":"#/components/schemas/DcqlClaimQuery"}}},"required":["format","id"]},"DcqlCredentialMeta":{"type":"object","properties":{"vct_values":{"type":"array","example":["https://example.com/my-credential-type"],"items":{"type":"string"}}},"required":["vct_values"]},"Delivery":{"type":"object","properties":{"method":{"type":"string","enum":["digipost","direct"]},"recipientId":{"type":"string","example":"personnummer-eller-orgnummer"},"presentationNoticeTitle":{"type":"string","example":"Bekreft din utdanning"},"presentationNoticeBody":{"type":"string","example":"Vi trenger å verifisere din utdanning i forbindelse med søknaden din."}},"required":["method"]},"CreateVerificationResponse":{"type":"object","properties":{"verificationId":{"type":"string","format":"uuid","example":"your-verification-uuid"}}},"AuthorizationRequestResponse":{"type":"object","properties":{"authorizationRequestUri":{"type":"string","example":"openid4vp://?request_uri=https..."}}},"Ping":{"type":"object","properties":{"ping":{"type":"string"}}},"PresentationCheck":{"type":"object","properties":{"outcome":{"type":"string","enum":["PASS","FAIL","NOT_CHECKED"],"example":"PASS"},"detail":{"type":"string","example":"Beviset utløp 2026-01-01"}}},"PresentationChecks":{"type":"object","description":"Uavhengige verifiseringssjekker. Hver sjekk er PASS, FAIL eller NOT_CHECKED.","properties":{"issuerSignature":{"$ref":"#/components/schemas/PresentationCheck","description":"Er utsteders signatur over beviset kryptografisk gyldig?"},"issuerTrust":{"$ref":"#/components/schemas/PresentationCheck","description":"Kjeder signeringsnøkkelen til en klarert rot?"},"revocation":{"$ref":"#/components/schemas/PresentationCheck","description":"Er beviset tilbakekalt ifølge statuslisten?"},"expiry":{"$ref":"#/components/schemas/PresentationCheck","description":"Er beviset innenfor gyldighetsperioden?"},"holderBinding":{"$ref":"#/components/schemas/PresentationCheck","description":"Er presentasjonen kryptografisk bundet til innehaveren?"},"matchesRequest":{"$ref":"#/components/schemas/PresentationCheck","description":"Oppfyller beviset DCQL-spørringen det svarer på?"}}},"PresentedCredential":{"type":"object","description":"Ett presentert bevis med utleverte claims og sjekkliste.","properties":{"queryId":{"type":"string","description":"id-en fra DCQL-spørringen som dette beviset svarer på.","example":"some_identity_credential"},"format":{"type":"string","example":"dc+sd-jwt"},"credentialType":{"type":"string","example":"https://credentials.example.com/identity_credential"},"outcome":{"type":"string","description":"Oppsummering av sjekklisten for nettopp dette beviset. Sier ikke om beviset skal godtas — den vurderingen gjør kunden ut fra sjekkene.","enum":["PENDING","SUCCESSFUL","UNSUCCESSFUL","ERROR"],"example":"SUCCESSFUL"},"claims":{"type":"object","additionalProperties":{},"description":"Claim-verdiene lommeboken utleverte."},"checks":{"$ref":"#/components/schemas/PresentationChecks"}}},"VerificationReport":{"type":"object","description":"Resultatet av verifiseringen av presentasjonen: én oppføring per presentert bevis.","properties":{"credentials":{"type":"array","items":{"$ref":"#/components/schemas/PresentedCredential"}}}},"VerificationResponse":{"type":"object","properties":{"status":{"type":"string","enum":["PENDING","ACTIVE","PRESENTED","FAILED"],"example":"PRESENTED"},"presentation":{"type":"string","example":"<jwt>"},"verification":{"$ref":"#/components/schemas/VerificationReport","description":"EKSPERIMENTELL: Resultatet av verifiseringen. Formatet er ikke en del av den stabile API-kontrakten og kan endres uten versjonshopp. Til stede først når en presentasjon er mottatt og verifisert, og kun for kunder feltet er slått på for."}}}}}}