openapi: 3.0.0 info: title: hConnect Console - API Keys Verifications API description: The hConnect API provides a unified interface for electronic identity verification across multiple eID providers globally. version: 1.0.0 contact: name: hConnect Support url: https://www.hopae.com email: dev@hopae.com servers: - url: https://sandbox.api.hopae.com/connect description: Sandbox Server tags: - name: Verifications description: Identity verification sessions paths: /v1/verifications: post: summary: Create Verification description: Initiates a new identity verification session with the specified eID provider. operationId: createVerification tags: - Verifications requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateVerificationRequest' responses: '201': description: Verification session created successfully. content: application/json: schema: $ref: '#/components/schemas/CreateVerificationResponse' '400': description: Bad Request - Invalid parameters or eID not enabled. '401': description: Unauthorized - Invalid client credentials. /v1/verifications/{verificationId}: get: summary: Get Verification Status description: Retrieves the current status and result of a verification session. operationId: getVerification tags: - Verifications parameters: - name: verificationId in: path required: true schema: type: string description: The unique identifier for the verification session. responses: '200': description: Verification status retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/GetVerificationResponse' '404': description: Verification not found. delete: summary: Cancel Verification description: Cancels and deletes an ongoing verification session. operationId: deleteVerification tags: - Verifications parameters: - name: verificationId in: path required: true schema: type: string description: The unique identifier for the verification session. responses: '204': description: Verification cancelled successfully. '400': description: Bad Request - Verification is already in a terminal state. '404': description: Verification not found. /v1/verifications/{verificationId}/evidence: get: operationId: VerificationController_getVerificationEvidence summary: Get evidence for a verification description: Returns the presentation-ready evidence object captured during verification (object format). If evidence is not available or verification is incomplete, appropriate errors are returned. parameters: - name: verificationId required: true in: path description: Unique verification identifier example: 1234567890abcdef schema: type: string responses: '200': description: Evidence retrieved successfully '400': description: Verification is not completed or has no evidence content: application/json: schema: example: error: code: evidence_not_available message: Evidence is not available for this verification details: status: initiated verificationId: 123... tags: - Verifications security: - basic-auth: [] /v1/verifications/{verificationId}/userinfo: get: operationId: VerificationController_getVerificationUserinfo summary: Get userinfo for a verification description: Returns user information aligned with OIDC /userinfo output. Contains authentication context, user claims, provenance, and missing_claims. parameters: - name: verificationId required: true in: path description: Unique verification identifier example: 1234567890abcdef schema: type: string responses: '200': description: Userinfo retrieved content: application/json: schema: $ref: '#/components/schemas/GetVerificationUserInfoResponseDto' '400': description: Verification is not completed content: application/json: schema: example: error: code: verification_not_completed message: Verification must be completed to fetch userinfo details: status: failed verificationId: 123... tags: - Verifications security: - basic-auth: [] /v1/verifications/dc-request: post: operationId: VerificationController_createDcRequest summary: Create DC request for Digital Credentials flow description: Creates the EID session for a DC flowType verification. This is a deferred session creation - the HopaeConnect session was created during createVerification, and this endpoint creates the EID session (verifier request) when the client is ready to display the QR code. parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DcRequestDto' responses: '200': description: DC request created successfully content: application/json: schema: $ref: '#/components/schemas/DcRequestResponseDto' '400': description: Invalid flow type or verification status '404': description: Verification not found tags: - Verifications security: - basic-auth: [] components: schemas: GetVerificationUserInfoResponseDto: type: object properties: sub: type: string description: Pairwise subject (accountId) acr: type: string description: Authentication Context Class Reference hopae_loa: type: number description: Hopae Level of Assurance amr: type: object description: Authentication Methods Reference missing_claims: description: Missing claim names type: array items: type: string user: description: 'User profile claims. `null` for pure match flows (`verification_model: "match"`).' nullable: true allOf: - $ref: '#/components/schemas/VerificationUserBlockDto' provenance: description: Source provenance allOf: - $ref: '#/components/schemas/VerificationProvenanceDto' provider_id: type: string description: Provider identifier that authenticated the subject. Mirrors the single element in `amr` for forward compatibility. verification_model: type: string enum: - disclosure - match description: 'Always present. Indicates which top-level payload to interpret: `disclosure` (user attributes under `user`) or `match` (comparison envelope under `match`, with `user: null`). Legacy verifications without a stored model default to `disclosure`.' match: description: Match envelope. Present only when `verification_model` is `match`. allOf: - $ref: '#/components/schemas/MatchEnvelopeDto' GetVerificationResponse: type: object properties: verificationId: type: string status: type: string providerId: type: string authorizationCode: type: string description: Appears when status is 'completed'. verifiedAttributes: type: object description: Contains user's verified data upon completion. error: type: object properties: code: type: string message: type: string expiresAt: type: string format: date-time verifiedAt: type: string format: date-time CreateVerificationResponse: type: object properties: verificationId: type: string status: type: string enum: - initiated - pending providerId: type: string flowType: type: string enum: - qr - redirect - push flowDetails: type: object properties: qrData: type: string description: Base64 data for QR code generation. authorizationUrl: type: string format: uri description: URL for browser redirection. expiresAt: type: string format: date-time createdAt: type: string format: date-time VerificationUserBlockDto: type: object properties: {} DcRequestResponseDto: type: object properties: requestBase64: type: string description: Base64 encoded request data dcSessionId: type: string description: DC session ID from EID service required: - requestBase64 - dcSessionId MatchEnvelopeDto: type: object description: Result envelope for match-capable providers. Present only when `verification_model` is `match`. properties: matched: type: boolean description: Aggregate match outcome across all submitted fields. granularity: type: string enum: - aggregate - per_field description: Determines whether `details` is included. `per_field` exposes per-field outcomes; `aggregate` exposes only the overall `matched` flag. submitted_fields: type: array items: type: string description: Field keys the RP supplied in `matchData`. Provider-native names — not normalised. details: type: object additionalProperties: $ref: '#/components/schemas/MatchFieldDetailDto' description: Per-field outcomes, keyed by field name. Present only when `granularity` is `per_field`. May include verifier keys beyond `submitted_fields` (e.g., `face_photo_disparity` from mObywatel) when the upstream provider emits them. required: - matched - granularity - submitted_fields VerificationProvenanceDto: type: object properties: presentation: type: object description: Presentation context _metadata: type: object description: Metadata MatchFieldDetailDto: type: object properties: matched: type: boolean description: Whether this field's submitted value matched the authoritative source. submitted_value: type: string description: Echo of the value the RP submitted via `matchData`. Present in `/userinfo` responses for matchData fields only; never present on passthrough verifier keys (e.g., `face_photo_disparity`). Omitted from id_token claims. similarity: type: number description: Similarity score (0–100). Present only when the upstream verifier returned a similarity score. required: - matched DcRequestDto: type: object properties: verificationId: type: string description: Verification ID userData: description: User data for DC request (docType, protocol, etc.) allOf: - $ref: '#/components/schemas/AuthenticationHint' required: - verificationId CreateVerificationRequest: type: object properties: providerId: type: string description: The identifier for the desired eID provider. example: bankidse redirectUri: type: string format: uri description: URL to redirect to after a redirect-based verification. webhookUrl: type: string format: uri description: URL to receive asynchronous status updates. userData: type: object description: User information required by certain eID providers. example: email: user@example.com required: - providerId AuthenticationHint: type: object properties: personalNumber: type: string description: Swedish personal number (BankID) cprNumber: type: string description: Danish CPR number (MitID) phoneNumber: type: string description: Phone number (UAE Pass) nric: type: string description: Singapore NRIC (Singpass) emiratesId: type: string description: UAE Emirates ID documentNumber: type: string description: Document number (mDL) mobileNumber: type: string description: Alternative mobile number email: type: string description: Email address securitySchemes: basicAuth: type: http scheme: basic description: 'Basic authentication using clientId and clientSecret. For direct API calls, format the Authorization header as `Authorization: Basic `. In the Mintlify playground, enter the clientId and clientSecret in the Basic Auth panel and the header is generated automatically.' workspaceApiKey: type: http scheme: bearer bearerFormat: API Key description: 'Workspace API key authentication. Pass your workspace API key as `Authorization: Bearer sk_workspace_...`.' consoleJwt: type: http scheme: bearer bearerFormat: JWT description: Console JWT authentication. Issued by Clerk after Console login. workspace-api-key: scheme: bearer bearerFormat: JWT type: http app-basic: type: http scheme: basic