Overview
Every verification result carries a top-levelverification_model field that tells you which question the provider answered — and therefore which part of the response to read. It is always present; sessions created before the field existed default to "disclosure".
There are two models:
disclosure— the provider discloses user attributes from an authoritative source. You read who the user is.match— the provider matches values you submitted against the authoritative source and returns a pass/fail outcome. You read whether your values were confirmed.
disclosure model
The default for classic eID providers. The provider returns verified personal attributes.
- Read identity attributes from
user.*(for example,user.name,user.birthdate). provenancedescribes how the identity was verified.- Claims you requested but the provider could not supply appear in
missing_claims.
match model
Used by match-capable providers. Instead of disclosing attributes, the provider compares values you submit (the matchData supplied at session creation) against the source of truth.
- Read the outcome from
match.*—match.matched(aggregate result),match.granularity(per_fieldoraggregate),match.submitted_fields, andmatch.details. - For match flows,
userechoes back only the verified subset of the fields you submitted: per-field providers include fields withmatched: true; aggregate providers include every submitted field when the aggregate outcome istrue, otherwise none. - A match provider may additionally disclose IDP-asserted claims under
user, but only when you request them viarequestedAttributes.
Comparison
Both models return the full
provenance block, so you always have the verification audit trail. For the complete payload schema and the field-by-field match reference, see Return Data.Related
- Return Data — the full UserInfo payload and
matchschema - Create Verification — supply
matchDatafor match flows - Normalized User Data — the OIDC-normalized keys used in
matchData

