{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/guides/sidebars.yaml","api-docs-docs/openapi/verification-v1.yaml":"api-docs-docs/openapi/verification-v1.yaml","api-docs-docs/openapi/verification-cases-v1.yaml":"api-docs-docs/openapi/verification-cases-v1.yaml"},"props":{"metadata":{"markdoc":{"tagList":["openapi-code-sample","json-schema","admonition"]},"type":"markdown"},"seo":{"title":"Verification Flow"},"dynamicMarkdocComponents":["openapi"],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"verification-flow","__idx":0},"children":["Verification Flow"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide explains the full lifecycle of an identity verification session — from creation to result retrieval."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":1},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A service-user access token requested with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deepcredentials.verify"]}," scope (and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deepcredentials.verification-cases"]}," to author cases). See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/authentication"},"children":["Authentication"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Something to verify against — one of two:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["credential definition"]},": one of your organization's own, an official one such as the Beta-ID, or any other organization's whose id you were given (a definition id is not a secret: it is the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vct"]}," of every credential of its type). ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /b2b/v1/credential-definitions"]}," lists your own and the official ones; a definition another organization lists in the catalogue (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["is_listed"]},") shows in the portal's pickers, and any definition reads by id with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /b2b/v1/credential-definitions/{credentialDefinitionId}"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["verification case"]},": a rule authored in the portal or by your integration, possibly accepting several credential types and constraining values. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /b2b/v1/verification-cases"]}," lists your own; any organization's case is read and launched by its id. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/verification/cases"},"children":["Verification Cases"]},"."]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"session-lifecycle","__idx":2},"children":["Session lifecycle"]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"stateDiagram-v2\n    [*] --> pending: POST /verification-sessions or /verification-cases/{id}/sessions\n    pending --> success: User presents valid credentials\n    pending --> failed: Presentation rejected or invalid\n    pending --> expired: Session TTL exceeded\n    success --> [*]\n    failed --> [*]\n    expired --> [*]\n","diagramHtml":"<svg id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"statediagram\" style=\"max-width: 618.765625px;\" viewBox=\"0 0 618.765625 394\" role=\"graphics-document document\" aria-roledescription=\"stateDiagram\"><style>\n    #diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df foreignObject {\n      overflow: visible;\n    }\n  </style><style>#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .error-icon{fill:#552222;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .error-text{fill:#552222;stroke:#552222;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edge-thickness-normal{stroke-width:1px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edge-thickness-thick{stroke-width:3.5px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edge-pattern-solid{stroke-dasharray:0;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edge-pattern-dashed{stroke-dasharray:3;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edge-pattern-dotted{stroke-dasharray:2;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .marker{fill:#333333;stroke:#333333;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .marker.cross{stroke:#333333;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df p{margin:0;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df defs [id$=\"-barbEnd\"]{fill:#333333;stroke:#333333;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df g.stateGroup text{fill:#9370DB;stroke:none;font-size:10px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df g.stateGroup text{fill:#333;stroke:none;font-size:10px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df g.stateGroup .state-title{font-weight:bolder;fill:#131300;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df g.stateGroup rect{fill:#ECECFF;stroke:#9370DB;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df g.stateGroup line{stroke:#333333;stroke-width:1;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .transition{stroke:#333333;stroke-width:1;fill:none;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .stateGroup .composit{fill:white;border-bottom:1px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .state-note{stroke:#aaaa33;fill:#fff5ad;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .state-note text{fill:black;stroke:none;font-size:10px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edgeLabel .label rect{fill:#ECECFF;opacity:0.5;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .edgeLabel .label text{fill:#333;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .label div .edgeLabel{color:#333;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .stateLabel text{fill:#131300;font-size:10px;font-weight:bold;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .node circle.state-start{fill:#333333;stroke:#333333;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .node .fork-join{fill:#333333;stroke:#333333;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .node circle.state-end{fill:#9370DB;stroke:white;stroke-width:1.5;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .end-state-inner{fill:white;stroke-width:1.5;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .node rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .node polygon{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [id$=\"-barbEnd\"]{fill:#333333;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-cluster rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .cluster-label,#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .nodeLabel{color:#131300;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-cluster rect.outer{rx:5px;ry:5px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-state .divider{stroke:#9370DB;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-state .title-state{rx:5px;ry:5px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-cluster.statediagram-cluster .inner{fill:white;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-cluster.statediagram-cluster-alt .inner{fill:#f0f0f0;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-cluster .inner{rx:0;ry:0;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-state rect.basic{rx:5px;ry:5px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#f0f0f0;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .note-edge{stroke-dasharray:5;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-note text{fill:black;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram-note .nodeLabel{color:black;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagram .edgeLabel{color:red;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [id$=\"-dependencyStart\"],#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [id$=\"-dependencyEnd\"]{fill:#333333;stroke:#333333;stroke-width:1;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .statediagramTitleText{text-anchor:middle;font-size:18px;fill:#333;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].statediagram-cluster rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].statediagram-cluster rect.outer{rx:5px;ry:5px;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df .node .neo-node{stroke:#9370DB;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].node rect,#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].cluster rect,#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g><defs><marker id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df_stateDiagram-barbEnd\" refX=\"19\" refY=\"7\" markerWidth=\"20\" markerHeight=\"14\" markerUnits=\"userSpaceOnUse\" orient=\"auto\"><path d=\"M 19,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M328,22L328,32.167C328,42.333,328,62.667,328,83C328,103.333,328,123.667,328,133.833L328,144\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-edge0\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge0\" data-points=\"W3sieCI6MzI4LCJ5IjoyMn0seyJ4IjozMjgsInkiOjgzfSx7IngiOjMyOCwieSI6MTQ0fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df_stateDiagram-barbEnd)\"></path><path d=\"M291.523,175.44L260.936,185.034C230.349,194.627,169.174,213.813,138.587,231.573C108,249.333,108,265.667,108,273.833L108,282\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-edge1\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge1\" data-points=\"W3sieCI6MjkxLjUyMzQzNzUsInkiOjE3NS40NDAzNzY0MjA0NTQ1Nn0seyJ4IjoxMDgsInkiOjIzM30seyJ4IjoxMDgsInkiOjI4Mn1d\" data-look=\"classic\" marker-end=\"url(#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df_stateDiagram-barbEnd)\"></path><path d=\"M328,184L328,192.167C328,200.333,328,216.667,328,233C328,249.333,328,265.667,328,273.833L328,282\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-edge2\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge2\" data-points=\"W3sieCI6MzI4LCJ5IjoxODR9LHsieCI6MzI4LCJ5IjoyMzN9LHsieCI6MzI4LCJ5IjoyODJ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df_stateDiagram-barbEnd)\"></path><path d=\"M364.477,176.498L391.961,185.915C419.445,195.332,474.414,214.166,501.898,231.75C529.383,249.333,529.383,265.667,529.383,273.833L529.383,282\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-edge3\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge3\" data-points=\"W3sieCI6MzY0LjQ3NjU2MjUsInkiOjE3Ni40OTgwMDIwOTQ4OTA4fSx7IngiOjUyOS4zODI4MTI1LCJ5IjoyMzN9LHsieCI6NTI5LjM4MjgxMjUsInkiOjI4Mn1d\" data-look=\"classic\" marker-end=\"url(#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df_stateDiagram-barbEnd)\"></path><path d=\"M108,322L108,326.167C108,330.333,108,338.667,143.511,347.999C179.022,357.33,250.044,367.661,285.555,372.826L321.066,377.991\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-edge4\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge4\" data-points=\"W3sieCI6MTA4LCJ5IjozMjJ9LHsieCI6MTA4LCJ5IjozNDd9LHsieCI6MzIxLjA2NjMxNzUwNjk3ODA3LCJ5IjozNzcuOTkxNDY0MzY0NjUxMzR9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df_stateDiagram-barbEnd)\"></path><path d=\"M328,322L328,326.167C328,330.333,328,338.667,328,346.999C328,355.331,328,363.662,328,367.828L328,371.993\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-edge5\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge5\" data-points=\"W3sieCI6MzI4LCJ5IjozMjJ9LHsieCI6MzI4LCJ5IjozNDd9LHsieCI6MzI4LCJ5IjozNzEuOTkzMzUzMzY2ODUxOH1d\" data-look=\"classic\" marker-end=\"url(#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df_stateDiagram-barbEnd)\"></path><path d=\"M529.383,322L529.383,326.167C529.383,330.333,529.383,338.667,496.972,347.983C464.562,357.3,399.741,367.6,367.33,372.75L334.92,377.9\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-edge6\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge6\" data-points=\"W3sieCI6NTI5LjM4MjgxMjUsInkiOjMyMn0seyJ4Ijo1MjkuMzgyODEyNSwieSI6MzQ3fSx7IngiOjMzNC45MTk4Mjk2NDUwMzgyNSwieSI6Mzc3LjkwMDQyOTc1NDE5NjV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df_stateDiagram-barbEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\" transform=\"translate(328, 83)\"><g class=\"label\" data-id=\"edge0\" transform=\"translate(-100, -36)\"><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"edgeLabel\"><p>POST /verification-sessions or /verification-cases/{id}/sessions</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(108, 233)\"><g class=\"label\" data-id=\"edge1\" transform=\"translate(-100, -24)\"><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"edgeLabel\"><p>User presents valid credentials</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(328, 233)\"><g class=\"label\" data-id=\"edge2\" transform=\"translate(-100, -24)\"><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"edgeLabel\"><p>Presentation rejected or invalid</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(529.3828125, 233)\"><g class=\"label\" data-id=\"edge3\" transform=\"translate(-81.3828125, -12)\"><foreignObject width=\"162.765625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Session TTL exceeded</p></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"edge4\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"edge5\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"edge6\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-state-root_start-0\" data-look=\"classic\" transform=\"translate(328, 15)\"><circle class=\"state-start\" r=\"7\" width=\"14\" height=\"14\"></circle></g><g class=\"node  statediagram-state\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-state-pending-3\" data-look=\"classic\" transform=\"translate(328, 164)\"><rect class=\"basic label-container\" style=\"\" rx=\"5\" ry=\"5\" x=\"-36.4765625\" y=\"-20\" width=\"72.953125\" height=\"40\"></rect><g class=\"label\" style=\"\" transform=\"translate(-28.4765625, -12)\"><rect></rect><foreignObject width=\"56.953125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel markdown-node-label\"><p>pending</p></span></div></foreignObject></g></g><g class=\"node  statediagram-state\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-state-success-4\" data-look=\"classic\" transform=\"translate(108, 302)\"><rect class=\"basic label-container\" style=\"\" rx=\"5\" ry=\"5\" x=\"-36.8984375\" y=\"-20\" width=\"73.796875\" height=\"40\"></rect><g class=\"label\" style=\"\" transform=\"translate(-28.8984375, -12)\"><rect></rect><foreignObject width=\"57.796875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel markdown-node-label\"><p>success</p></span></div></foreignObject></g></g><g class=\"node  statediagram-state\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-state-failed-5\" data-look=\"classic\" transform=\"translate(328, 302)\"><rect class=\"basic label-container\" style=\"\" rx=\"5\" ry=\"5\" x=\"-27.125\" y=\"-20\" width=\"54.25\" height=\"40\"></rect><g class=\"label\" style=\"\" transform=\"translate(-19.125, -12)\"><rect></rect><foreignObject width=\"38.25\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel markdown-node-label\"><p>failed</p></span></div></foreignObject></g></g><g class=\"node  statediagram-state\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-state-expired-6\" data-look=\"classic\" transform=\"translate(529.3828125, 302)\"><rect class=\"basic label-container\" style=\"\" rx=\"5\" ry=\"5\" x=\"-34.2421875\" y=\"-20\" width=\"68.484375\" height=\"40\"></rect><g class=\"label\" style=\"\" transform=\"translate(-26.2421875, -12)\"><rect></rect><foreignObject width=\"52.484375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel markdown-node-label\"><p>expired</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-state-root_end-6\" data-look=\"classic\" transform=\"translate(328, 379)\"><g class=\"outer-path\"><path d=\"M7 0 C7 0.40517908122283747, 6.964012880168563 0.816513743121899, 6.893654271085456 1.2155372436685123 C6.823295662002349 1.6145607442151257, 6.716427752933756 2.013397210557766, 6.5778483455013586 2.394141003279681 C6.439268938068961 2.7748847960015954, 6.26476736710249 3.149104622578984, 6.062177826491071 3.4999999999999996 C5.859588285879653 3.8508953774210153, 5.622755194947063 4.189128084166967, 5.362311101832846 4.499513267805774 C5.10186700871863 4.809898451444582, 4.809898451444583 5.10186700871863, 4.499513267805775 5.362311101832846 C4.189128084166968 5.622755194947063, 3.8508953774210166 5.859588285879652, 3.500000000000001 6.06217782649107 C3.149104622578985 6.264767367102489, 2.7748847960015963 6.439268938068961, 2.3941410032796817 6.5778483455013586 C2.013397210557767 6.716427752933756, 1.6145607442151264 6.823295662002349, 1.2155372436685128 6.893654271085456 C0.8165137431218992 6.964012880168563, 0.4051790812228379 7, 4.286263797015736e-16 7 C-0.405179081222837 7, -0.8165137431218985 6.964012880168563, -1.2155372436685121 6.893654271085456 C-1.6145607442151257 6.823295662002349, -2.0133972105577667 6.716427752933756, -2.394141003279681 6.5778483455013586 C-2.774884796001595 6.439268938068961, -3.149104622578983 6.26476736710249, -3.4999999999999982 6.062177826491071 C-3.8508953774210135 5.859588285879653, -4.189128084166966 5.6227551949470636, -4.499513267805773 5.362311101832848 C-4.809898451444581 5.101867008718632, -5.101867008718628 4.809898451444586, -5.3623111018328435 4.499513267805779 C-5.622755194947059 4.189128084166971, -5.859588285879649 3.8508953774210206, -6.062177826491068 3.5000000000000053 C-6.264767367102486 3.14910462257899, -6.439268938068958 2.774884796001602, -6.577848345501356 2.394141003279688 C-6.716427752933754 2.0133972105577738, -6.823295662002347 1.614560744215134, -6.893654271085454 1.215537243668521 C-6.9640128801685615 0.816513743121908, -6.999999999999999 0.4051790812228472, -7 1.0183126166254463e-14 C-7.000000000000001 -0.40517908122282686, -6.964012880168565 -0.8165137431218878, -6.893654271085459 -1.215537243668501 C-6.823295662002352 -1.6145607442151142, -6.716427752933759 -2.0133972105577542, -6.577848345501363 -2.394141003279669 C-6.439268938068967 -2.7748847960015834, -6.264767367102496 -3.149104622578972, -6.062177826491078 -3.4999999999999876 C-5.859588285879661 -3.8508953774210033, -5.6227551949470715 -4.1891280841669545, -5.362311101832856 -4.499513267805763 C-5.10186700871864 -4.809898451444571, -4.809898451444594 -5.10186700871862, -4.499513267805787 -5.362311101832836 C-4.189128084166979 -5.622755194947053, -3.850895377421028 -5.859588285879643, -3.5000000000000133 -6.062177826491062 C-3.1491046225789985 -6.264767367102482, -2.774884796001611 -6.439268938068954, -2.3941410032796973 -6.577848345501353 C-2.0133972105577835 -6.716427752933752, -1.6145607442151435 -6.823295662002345, -1.2155372436685306 -6.893654271085453 C-0.8165137431219176 -6.9640128801685615, -0.40517908122285695 -6.999999999999999, -1.9937625952807352e-14 -7 C0.4051790812228171 -7.000000000000001, 0.8165137431218781 -6.964012880168565, 1.2155372436684913 -6.89365427108546 C1.6145607442151044 -6.823295662002354, 2.013397210557745 -6.716427752933763, 2.3941410032796595 -6.5778483455013665 C2.774884796001574 -6.43926893806897, 3.149104622578963 -6.2647673671025, 3.499999999999979 -6.062177826491083 C3.8508953774209953 -5.859588285879665, 4.189128084166947 -5.622755194947077, 4.499513267805756 -5.362311101832862 C4.809898451444564 -5.1018670087186475, 5.101867008718613 -4.809898451444602, 5.362311101832829 -4.499513267805796 C5.622755194947046 -4.189128084166989, 5.859588285879637 -3.8508953774210393, 6.062177826491056 -3.500000000000025 C6.2647673671024755 -3.1491046225790105, 6.439268938068949 -2.774884796001623, 6.577848345501348 -2.3941410032797092 C6.716427752933747 -2.0133972105577955, 6.823295662002342 -1.6145607442151562, 6.893654271085451 -1.2155372436685434 C6.96401288016856 -0.8165137431219307, 6.982275711847575 -0.2025895406114567, 7 -3.2800750208310675e-14 C7.017724288152425 0.2025895406113911, 7.017724288152424 -0.2025895406114242, 7 0\" stroke=\"none\" stroke-width=\"0\" fill=\"#ECECFF\" style=\"\"></path><path d=\"M7 0 C7 0.40517908122283747, 6.964012880168563 0.816513743121899, 6.893654271085456 1.2155372436685123 C6.823295662002349 1.6145607442151257, 6.716427752933756 2.013397210557766, 6.5778483455013586 2.394141003279681 C6.439268938068961 2.7748847960015954, 6.26476736710249 3.149104622578984, 6.062177826491071 3.4999999999999996 C5.859588285879653 3.8508953774210153, 5.622755194947063 4.189128084166967, 5.362311101832846 4.499513267805774 C5.10186700871863 4.809898451444582, 4.809898451444583 5.10186700871863, 4.499513267805775 5.362311101832846 C4.189128084166968 5.622755194947063, 3.8508953774210166 5.859588285879652, 3.500000000000001 6.06217782649107 C3.149104622578985 6.264767367102489, 2.7748847960015963 6.439268938068961, 2.3941410032796817 6.5778483455013586 C2.013397210557767 6.716427752933756, 1.6145607442151264 6.823295662002349, 1.2155372436685128 6.893654271085456 C0.8165137431218992 6.964012880168563, 0.4051790812228379 7, 4.286263797015736e-16 7 C-0.405179081222837 7, -0.8165137431218985 6.964012880168563, -1.2155372436685121 6.893654271085456 C-1.6145607442151257 6.823295662002349, -2.0133972105577667 6.716427752933756, -2.394141003279681 6.5778483455013586 C-2.774884796001595 6.439268938068961, -3.149104622578983 6.26476736710249, -3.4999999999999982 6.062177826491071 C-3.8508953774210135 5.859588285879653, -4.189128084166966 5.6227551949470636, -4.499513267805773 5.362311101832848 C-4.809898451444581 5.101867008718632, -5.101867008718628 4.809898451444586, -5.3623111018328435 4.499513267805779 C-5.622755194947059 4.189128084166971, -5.859588285879649 3.8508953774210206, -6.062177826491068 3.5000000000000053 C-6.264767367102486 3.14910462257899, -6.439268938068958 2.774884796001602, -6.577848345501356 2.394141003279688 C-6.716427752933754 2.0133972105577738, -6.823295662002347 1.614560744215134, -6.893654271085454 1.215537243668521 C-6.9640128801685615 0.816513743121908, -6.999999999999999 0.4051790812228472, -7 1.0183126166254463e-14 C-7.000000000000001 -0.40517908122282686, -6.964012880168565 -0.8165137431218878, -6.893654271085459 -1.215537243668501 C-6.823295662002352 -1.6145607442151142, -6.716427752933759 -2.0133972105577542, -6.577848345501363 -2.394141003279669 C-6.439268938068967 -2.7748847960015834, -6.264767367102496 -3.149104622578972, -6.062177826491078 -3.4999999999999876 C-5.859588285879661 -3.8508953774210033, -5.6227551949470715 -4.1891280841669545, -5.362311101832856 -4.499513267805763 C-5.10186700871864 -4.809898451444571, -4.809898451444594 -5.10186700871862, -4.499513267805787 -5.362311101832836 C-4.189128084166979 -5.622755194947053, -3.850895377421028 -5.859588285879643, -3.5000000000000133 -6.062177826491062 C-3.1491046225789985 -6.264767367102482, -2.774884796001611 -6.439268938068954, -2.3941410032796973 -6.577848345501353 C-2.0133972105577835 -6.716427752933752, -1.6145607442151435 -6.823295662002345, -1.2155372436685306 -6.893654271085453 C-0.8165137431219176 -6.9640128801685615, -0.40517908122285695 -6.999999999999999, -1.9937625952807352e-14 -7 C0.4051790812228171 -7.000000000000001, 0.8165137431218781 -6.964012880168565, 1.2155372436684913 -6.89365427108546 C1.6145607442151044 -6.823295662002354, 2.013397210557745 -6.716427752933763, 2.3941410032796595 -6.5778483455013665 C2.774884796001574 -6.43926893806897, 3.149104622578963 -6.2647673671025, 3.499999999999979 -6.062177826491083 C3.8508953774209953 -5.859588285879665, 4.189128084166947 -5.622755194947077, 4.499513267805756 -5.362311101832862 C4.809898451444564 -5.1018670087186475, 5.101867008718613 -4.809898451444602, 5.362311101832829 -4.499513267805796 C5.622755194947046 -4.189128084166989, 5.859588285879637 -3.8508953774210393, 6.062177826491056 -3.500000000000025 C6.2647673671024755 -3.1491046225790105, 6.439268938068949 -2.774884796001623, 6.577848345501348 -2.3941410032797092 C6.716427752933747 -2.0133972105577955, 6.823295662002342 -1.6145607442151562, 6.893654271085451 -1.2155372436685434 C6.96401288016856 -0.8165137431219307, 6.982275711847575 -0.2025895406114567, 7 -3.2800750208310675e-14 C7.017724288152425 0.2025895406113911, 7.017724288152424 -0.2025895406114242, 7 0\" stroke=\"#333333\" stroke-width=\"2\" fill=\"none\" stroke-dasharray=\"0 0\" style=\"\"></path><g><path d=\"M2.5 0 C2.5 0.14470681472244193, 2.487147457203058 0.29161205111496386, 2.46201938253052 0.4341204441673258 C2.436891307857982 0.5766288372196877, 2.3987241974763416 0.7190704323420595, 2.3492315519647713 0.8550503583141718 C2.299738906453201 0.991030284286284, 2.2374169168223177 1.124680222349637, 2.165063509461097 1.2499999999999998 C2.092710102099876 1.3753197776503625, 2.0081268553382365 1.496117172916774, 1.915111107797445 1.6069690242163481 C1.8220953602566536 1.7178208755159223, 1.7178208755159226 1.8220953602566536, 1.6069690242163484 1.915111107797445 C1.4961171729167742 2.0081268553382365, 1.375319777650363 2.0927101020998755, 1.2500000000000002 2.1650635094610964 C1.1246802223496375 2.2374169168223172, 0.9910302842862845 2.2997389064532, 0.8550503583141721 2.349231551964771 C0.7190704323420597 2.3987241974763416, 0.576628837219688 2.436891307857982, 0.43412044416732604 2.46201938253052 C0.291612051114964 2.487147457203058, 0.14470681472244212 2.5, 1.5308084989341916e-16 2.5 C-0.1447068147224418 2.5, -0.2916120511149638 2.487147457203058, -0.43412044416732576 2.46201938253052 C-0.5766288372196877 2.436891307857982, -0.7190704323420595 2.3987241974763416, -0.8550503583141718 2.3492315519647713 C-0.991030284286284 2.299738906453201, -1.124680222349637 2.2374169168223177, -1.2499999999999996 2.165063509461097 C-1.375319777650362 2.092710102099876, -1.4961171729167733 2.008126855338237, -1.6069690242163475 1.9151111077974459 C-1.7178208755159217 1.8220953602566548, -1.822095360256653 1.7178208755159234, -1.9151111077974443 1.6069690242163495 C-2.0081268553382357 1.4961171729167755, -2.0927101020998746 1.3753197776503645, -2.1650635094610955 1.250000000000002 C-2.2374169168223164 1.1246802223496395, -2.2997389064531992 0.9910302842862865, -2.34923155196477 0.8550503583141743 C-2.3987241974763407 0.7190704323420621, -2.436891307857981 0.5766288372196907, -2.4620193825305194 0.434120444167329 C-2.487147457203058 0.29161205111496724, -2.5 0.14470681472244545, -2.5 3.636830773662308e-15 C-2.5 -0.14470681472243818, -2.4871474572030587 -0.2916120511149599, -2.4620193825305208 -0.4341204441673218 C-2.436891307857983 -0.5766288372196837, -2.398724197476343 -0.7190704323420553, -2.3492315519647726 -0.8550503583141675 C-2.2997389064532023 -0.9910302842862798, -2.23741691682232 -1.1246802223496328, -2.165063509461099 -1.2499999999999956 C-2.092710102099878 -1.3753197776503583, -2.00812685533824 -1.4961171729167695, -1.9151111077974488 -1.606969024216344 C-1.8220953602566576 -1.7178208755159183, -1.7178208755159263 -1.82209536025665, -1.6069690242163523 -1.9151111077974416 C-1.4961171729167784 -2.0081268553382334, -1.3753197776503672 -2.0927101020998724, -1.2500000000000047 -2.1650635094610937 C-1.1246802223496422 -2.237416916822315, -0.9910302842862897 -2.299738906453198, -0.8550503583141776 -2.3492315519647686 C-0.7190704323420656 -2.3987241974763394, -0.5766288372196942 -2.4368913078579806, -0.43412044416733236 -2.462019382530519 C-0.29161205111497057 -2.4871474572030574, -0.1447068147224489 -2.4999999999999996, -7.120580697431198e-15 -2.5 C0.14470681472243463 -2.5000000000000004, 0.29161205111495647 -2.487147457203059, 0.4341204441673183 -2.4620193825305217 C0.5766288372196802 -2.436891307857984, 0.7190704323420518 -2.3987241974763442, 0.8550503583141642 -2.349231551964774 C0.9910302842862766 -2.2997389064532037, 1.1246802223496295 -2.2374169168223212, 1.2499999999999925 -2.165063509461101 C1.3753197776503554 -2.0927101020998804, 1.4961171729167668 -2.008126855338242, 1.6069690242163412 -1.915111107797451 C1.7178208755159157 -1.82209536025666, 1.8220953602566472 -1.7178208755159294, 1.915111107797439 -1.6069690242163557 C2.0081268553382308 -1.496117172916782, 2.09271010209987 -1.3753197776503712, 2.1650635094610915 -1.2500000000000089 C2.237416916822313 -1.1246802223496466, 2.299738906453196 -0.9910302842862939, 2.3492315519647673 -0.855050358314182 C2.3987241974763385 -0.71907043234207, 2.4368913078579792 -0.5766288372196986, 2.462019382530518 -0.4341204441673369 C2.487147457203057 -0.29161205111497523, 2.4936698970884197 -0.07235340736123454, 2.5 -1.1714553645825241e-14 C2.5063301029115803 0.07235340736121111, 2.50633010291158 -0.07235340736122292, 2.5 0\" stroke=\"none\" stroke-width=\"0\" fill=\"#9370DB\" style=\"\"></path><path d=\"M2.5 0 C2.5 0.14470681472244193, 2.487147457203058 0.29161205111496386, 2.46201938253052 0.4341204441673258 C2.436891307857982 0.5766288372196877, 2.3987241974763416 0.7190704323420595, 2.3492315519647713 0.8550503583141718 C2.299738906453201 0.991030284286284, 2.2374169168223177 1.124680222349637, 2.165063509461097 1.2499999999999998 C2.092710102099876 1.3753197776503625, 2.0081268553382365 1.496117172916774, 1.915111107797445 1.6069690242163481 C1.8220953602566536 1.7178208755159223, 1.7178208755159226 1.8220953602566536, 1.6069690242163484 1.915111107797445 C1.4961171729167742 2.0081268553382365, 1.375319777650363 2.0927101020998755, 1.2500000000000002 2.1650635094610964 C1.1246802223496375 2.2374169168223172, 0.9910302842862845 2.2997389064532, 0.8550503583141721 2.349231551964771 C0.7190704323420597 2.3987241974763416, 0.576628837219688 2.436891307857982, 0.43412044416732604 2.46201938253052 C0.291612051114964 2.487147457203058, 0.14470681472244212 2.5, 1.5308084989341916e-16 2.5 C-0.1447068147224418 2.5, -0.2916120511149638 2.487147457203058, -0.43412044416732576 2.46201938253052 C-0.5766288372196877 2.436891307857982, -0.7190704323420595 2.3987241974763416, -0.8550503583141718 2.3492315519647713 C-0.991030284286284 2.299738906453201, -1.124680222349637 2.2374169168223177, -1.2499999999999996 2.165063509461097 C-1.375319777650362 2.092710102099876, -1.4961171729167733 2.008126855338237, -1.6069690242163475 1.9151111077974459 C-1.7178208755159217 1.8220953602566548, -1.822095360256653 1.7178208755159234, -1.9151111077974443 1.6069690242163495 C-2.0081268553382357 1.4961171729167755, -2.0927101020998746 1.3753197776503645, -2.1650635094610955 1.250000000000002 C-2.2374169168223164 1.1246802223496395, -2.2997389064531992 0.9910302842862865, -2.34923155196477 0.8550503583141743 C-2.3987241974763407 0.7190704323420621, -2.436891307857981 0.5766288372196907, -2.4620193825305194 0.434120444167329 C-2.487147457203058 0.29161205111496724, -2.5 0.14470681472244545, -2.5 3.636830773662308e-15 C-2.5 -0.14470681472243818, -2.4871474572030587 -0.2916120511149599, -2.4620193825305208 -0.4341204441673218 C-2.436891307857983 -0.5766288372196837, -2.398724197476343 -0.7190704323420553, -2.3492315519647726 -0.8550503583141675 C-2.2997389064532023 -0.9910302842862798, -2.23741691682232 -1.1246802223496328, -2.165063509461099 -1.2499999999999956 C-2.092710102099878 -1.3753197776503583, -2.00812685533824 -1.4961171729167695, -1.9151111077974488 -1.606969024216344 C-1.8220953602566576 -1.7178208755159183, -1.7178208755159263 -1.82209536025665, -1.6069690242163523 -1.9151111077974416 C-1.4961171729167784 -2.0081268553382334, -1.3753197776503672 -2.0927101020998724, -1.2500000000000047 -2.1650635094610937 C-1.1246802223496422 -2.237416916822315, -0.9910302842862897 -2.299738906453198, -0.8550503583141776 -2.3492315519647686 C-0.7190704323420656 -2.3987241974763394, -0.5766288372196942 -2.4368913078579806, -0.43412044416733236 -2.462019382530519 C-0.29161205111497057 -2.4871474572030574, -0.1447068147224489 -2.4999999999999996, -7.120580697431198e-15 -2.5 C0.14470681472243463 -2.5000000000000004, 0.29161205111495647 -2.487147457203059, 0.4341204441673183 -2.4620193825305217 C0.5766288372196802 -2.436891307857984, 0.7190704323420518 -2.3987241974763442, 0.8550503583141642 -2.349231551964774 C0.9910302842862766 -2.2997389064532037, 1.1246802223496295 -2.2374169168223212, 1.2499999999999925 -2.165063509461101 C1.3753197776503554 -2.0927101020998804, 1.4961171729167668 -2.008126855338242, 1.6069690242163412 -1.915111107797451 C1.7178208755159157 -1.82209536025666, 1.8220953602566472 -1.7178208755159294, 1.915111107797439 -1.6069690242163557 C2.0081268553382308 -1.496117172916782, 2.09271010209987 -1.3753197776503712, 2.1650635094610915 -1.2500000000000089 C2.237416916822313 -1.1246802223496466, 2.299738906453196 -0.9910302842862939, 2.3492315519647673 -0.855050358314182 C2.3987241974763385 -0.71907043234207, 2.4368913078579792 -0.5766288372196986, 2.462019382530518 -0.4341204441673369 C2.487147457203057 -0.29161205111497523, 2.4936698970884197 -0.07235340736123454, 2.5 -1.1714553645825241e-14 C2.5063301029115803 0.07235340736121111, 2.50633010291158 -0.07235340736122292, 2.5 0\" stroke=\"#9370DB\" stroke-width=\"2\" fill=\"none\" stroke-dasharray=\"0 0\" style=\"\"></path></g></g></g></g></g></g><defs><filter id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs><defs><filter id=\"diagram-f50e38306d765d49474b8d99bb3fffda7a06371250a7064304aa574ca01a80df-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs></svg>","diagramHtmlDark":"<svg id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"statediagram\" style=\"max-width: 618.765625px;\" viewBox=\"0 0 618.765625 394\" role=\"graphics-document document\" aria-roledescription=\"stateDiagram\"><style>\n    #diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 foreignObject {\n      overflow: visible;\n    }\n  </style><style>#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .error-icon{fill:#a44141;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .error-text{fill:#ddd;stroke:#ddd;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edge-thickness-normal{stroke-width:1px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edge-thickness-thick{stroke-width:3.5px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edge-pattern-solid{stroke-dasharray:0;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .marker{fill:lightgrey;stroke:lightgrey;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .marker.cross{stroke:lightgrey;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 p{margin:0;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 defs [id$=\"-barbEnd\"]{fill:lightgrey;stroke:lightgrey;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 g.stateGroup text{fill:#ccc;stroke:none;font-size:10px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 g.stateGroup text{fill:#ccc;stroke:none;font-size:10px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 g.stateGroup .state-title{font-weight:bolder;fill:#e0dfdf;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 g.stateGroup rect{fill:#1f2020;stroke:#ccc;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 g.stateGroup line{stroke:lightgrey;stroke-width:1;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .transition{stroke:lightgrey;stroke-width:1;fill:none;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .stateGroup .composit{fill:#333;border-bottom:1px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .state-note{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .state-note text{fill:rgb(183.8476190475, 181.5523809523, 181.5523809523);stroke:none;font-size:10px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .stateLabel .box{stroke:none;stroke-width:0;fill:#1f2020;opacity:0.5;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edgeLabel .label rect{fill:#1f2020;opacity:0.5;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .edgeLabel .label text{fill:#ccc;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .label div .edgeLabel{color:#ccc;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .stateLabel text{fill:#e0dfdf;font-size:10px;font-weight:bold;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .node circle.state-start{fill:#f4f4f4;stroke:#f4f4f4;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .node .fork-join{fill:#f4f4f4;stroke:#f4f4f4;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .node circle.state-end{fill:#cccccc;stroke:#333;stroke-width:1.5;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .end-state-inner{fill:#333;stroke-width:1.5;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .node rect{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .node polygon{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [id$=\"-barbEnd\"]{fill:lightgrey;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-cluster rect{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .cluster-label,#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .nodeLabel{color:#e0dfdf;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-cluster rect.outer{rx:5px;ry:5px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-state .divider{stroke:#ccc;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-state .title-state{rx:5px;ry:5px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-cluster.statediagram-cluster .inner{fill:#333;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#555;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-cluster .inner{rx:0;ry:0;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-state rect.basic{rx:5px;ry:5px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#555;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .note-edge{stroke-dasharray:5;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-note rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:hsl(180, 0%, 18.3529411765%);stroke-width:1px;rx:0;ry:0;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-note rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:hsl(180, 0%, 18.3529411765%);stroke-width:1px;rx:0;ry:0;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-note text{fill:rgb(183.8476190475, 181.5523809523, 181.5523809523);}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram-note .nodeLabel{color:rgb(183.8476190475, 181.5523809523, 181.5523809523);}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagram .edgeLabel{color:red;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [id$=\"-dependencyStart\"],#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [id$=\"-dependencyEnd\"]{fill:lightgrey;stroke:lightgrey;stroke-width:1;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .statediagramTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].statediagram-cluster rect{fill:#1f2020;stroke:url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-gradient);stroke-width:1;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].statediagram-cluster rect.outer{rx:5px;ry:5px;filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 .node .neo-node{stroke:#ccc;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].node rect,#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].cluster rect,#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].node polygon{stroke:url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].node path{stroke:url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-gradient);stroke-width:1px;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].node circle{stroke:url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g><defs><marker id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891_stateDiagram-barbEnd\" refX=\"19\" refY=\"7\" markerWidth=\"20\" markerHeight=\"14\" markerUnits=\"userSpaceOnUse\" orient=\"auto\"><path d=\"M 19,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M328,22L328,32.167C328,42.333,328,62.667,328,83C328,103.333,328,123.667,328,133.833L328,144\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-edge0\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge0\" data-points=\"W3sieCI6MzI4LCJ5IjoyMn0seyJ4IjozMjgsInkiOjgzfSx7IngiOjMyOCwieSI6MTQ0fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891_stateDiagram-barbEnd)\"></path><path d=\"M291.523,175.44L260.936,185.034C230.349,194.627,169.174,213.813,138.587,231.573C108,249.333,108,265.667,108,273.833L108,282\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-edge1\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge1\" data-points=\"W3sieCI6MjkxLjUyMzQzNzUsInkiOjE3NS40NDAzNzY0MjA0NTQ1Nn0seyJ4IjoxMDgsInkiOjIzM30seyJ4IjoxMDgsInkiOjI4Mn1d\" data-look=\"classic\" marker-end=\"url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891_stateDiagram-barbEnd)\"></path><path d=\"M328,184L328,192.167C328,200.333,328,216.667,328,233C328,249.333,328,265.667,328,273.833L328,282\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-edge2\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge2\" data-points=\"W3sieCI6MzI4LCJ5IjoxODR9LHsieCI6MzI4LCJ5IjoyMzN9LHsieCI6MzI4LCJ5IjoyODJ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891_stateDiagram-barbEnd)\"></path><path d=\"M364.477,176.498L391.961,185.915C419.445,195.332,474.414,214.166,501.898,231.75C529.383,249.333,529.383,265.667,529.383,273.833L529.383,282\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-edge3\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge3\" data-points=\"W3sieCI6MzY0LjQ3NjU2MjUsInkiOjE3Ni40OTgwMDIwOTQ4OTA4fSx7IngiOjUyOS4zODI4MTI1LCJ5IjoyMzN9LHsieCI6NTI5LjM4MjgxMjUsInkiOjI4Mn1d\" data-look=\"classic\" marker-end=\"url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891_stateDiagram-barbEnd)\"></path><path d=\"M108,322L108,326.167C108,330.333,108,338.667,143.511,347.999C179.022,357.33,250.044,367.661,285.555,372.826L321.066,377.991\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-edge4\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge4\" data-points=\"W3sieCI6MTA4LCJ5IjozMjJ9LHsieCI6MTA4LCJ5IjozNDd9LHsieCI6MzIxLjA2NjMxNzUwNjk3ODA3LCJ5IjozNzcuOTkxNDY0MzY0NjUxMzR9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891_stateDiagram-barbEnd)\"></path><path d=\"M328,322L328,326.167C328,330.333,328,338.667,328,346.999C328,355.331,328,363.662,328,367.828L328,371.993\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-edge5\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge5\" data-points=\"W3sieCI6MzI4LCJ5IjozMjJ9LHsieCI6MzI4LCJ5IjozNDd9LHsieCI6MzI4LCJ5IjozNzEuOTkzMzUzMzY2ODUxOH1d\" data-look=\"classic\" marker-end=\"url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891_stateDiagram-barbEnd)\"></path><path d=\"M529.383,322L529.383,326.167C529.383,330.333,529.383,338.667,496.972,347.983C464.562,357.3,399.741,367.6,367.33,372.75L334.92,377.9\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-edge6\" class=\"edge-thickness-normal edge-pattern-solid transition\" style=\"fill:none;;;fill:none\" data-edge=\"true\" data-et=\"edge\" data-id=\"edge6\" data-points=\"W3sieCI6NTI5LjM4MjgxMjUsInkiOjMyMn0seyJ4Ijo1MjkuMzgyODEyNSwieSI6MzQ3fSx7IngiOjMzNC45MTk4Mjk2NDUwMzgyNSwieSI6Mzc3LjkwMDQyOTc1NDE5NjV9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891_stateDiagram-barbEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\" transform=\"translate(328, 83)\"><g class=\"label\" data-id=\"edge0\" transform=\"translate(-100, -36)\"><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"edgeLabel\"><p>POST /verification-sessions or /verification-cases/{id}/sessions</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(108, 233)\"><g class=\"label\" data-id=\"edge1\" transform=\"translate(-100, -24)\"><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"edgeLabel\"><p>User presents valid credentials</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(328, 233)\"><g class=\"label\" data-id=\"edge2\" transform=\"translate(-100, -24)\"><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"edgeLabel\"><p>Presentation rejected or invalid</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(529.3828125, 233)\"><g class=\"label\" data-id=\"edge3\" transform=\"translate(-81.3828125, -12)\"><foreignObject width=\"162.765625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Session TTL exceeded</p></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"edge4\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"edge5\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"edge6\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-state-root_start-0\" data-look=\"classic\" transform=\"translate(328, 15)\"><circle class=\"state-start\" r=\"7\" width=\"14\" height=\"14\"></circle></g><g class=\"node  statediagram-state\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-state-pending-3\" data-look=\"classic\" transform=\"translate(328, 164)\"><rect class=\"basic label-container\" style=\"\" rx=\"5\" ry=\"5\" x=\"-36.4765625\" y=\"-20\" width=\"72.953125\" height=\"40\"></rect><g class=\"label\" style=\"\" transform=\"translate(-28.4765625, -12)\"><rect></rect><foreignObject width=\"56.953125\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel markdown-node-label\"><p>pending</p></span></div></foreignObject></g></g><g class=\"node  statediagram-state\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-state-success-4\" data-look=\"classic\" transform=\"translate(108, 302)\"><rect class=\"basic label-container\" style=\"\" rx=\"5\" ry=\"5\" x=\"-36.8984375\" y=\"-20\" width=\"73.796875\" height=\"40\"></rect><g class=\"label\" style=\"\" transform=\"translate(-28.8984375, -12)\"><rect></rect><foreignObject width=\"57.796875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel markdown-node-label\"><p>success</p></span></div></foreignObject></g></g><g class=\"node  statediagram-state\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-state-failed-5\" data-look=\"classic\" transform=\"translate(328, 302)\"><rect class=\"basic label-container\" style=\"\" rx=\"5\" ry=\"5\" x=\"-27.125\" y=\"-20\" width=\"54.25\" height=\"40\"></rect><g class=\"label\" style=\"\" transform=\"translate(-19.125, -12)\"><rect></rect><foreignObject width=\"38.25\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel markdown-node-label\"><p>failed</p></span></div></foreignObject></g></g><g class=\"node  statediagram-state\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-state-expired-6\" data-look=\"classic\" transform=\"translate(529.3828125, 302)\"><rect class=\"basic label-container\" style=\"\" rx=\"5\" ry=\"5\" x=\"-34.2421875\" y=\"-20\" width=\"68.484375\" height=\"40\"></rect><g class=\"label\" style=\"\" transform=\"translate(-26.2421875, -12)\"><rect></rect><foreignObject width=\"52.484375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel markdown-node-label\"><p>expired</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-state-root_end-6\" data-look=\"classic\" transform=\"translate(328, 379)\"><g class=\"outer-path\"><path d=\"M7 0 C7 0.40517908122283747, 6.964012880168563 0.816513743121899, 6.893654271085456 1.2155372436685123 C6.823295662002349 1.6145607442151257, 6.716427752933756 2.013397210557766, 6.5778483455013586 2.394141003279681 C6.439268938068961 2.7748847960015954, 6.26476736710249 3.149104622578984, 6.062177826491071 3.4999999999999996 C5.859588285879653 3.8508953774210153, 5.622755194947063 4.189128084166967, 5.362311101832846 4.499513267805774 C5.10186700871863 4.809898451444582, 4.809898451444583 5.10186700871863, 4.499513267805775 5.362311101832846 C4.189128084166968 5.622755194947063, 3.8508953774210166 5.859588285879652, 3.500000000000001 6.06217782649107 C3.149104622578985 6.264767367102489, 2.7748847960015963 6.439268938068961, 2.3941410032796817 6.5778483455013586 C2.013397210557767 6.716427752933756, 1.6145607442151264 6.823295662002349, 1.2155372436685128 6.893654271085456 C0.8165137431218992 6.964012880168563, 0.4051790812228379 7, 4.286263797015736e-16 7 C-0.405179081222837 7, -0.8165137431218985 6.964012880168563, -1.2155372436685121 6.893654271085456 C-1.6145607442151257 6.823295662002349, -2.0133972105577667 6.716427752933756, -2.394141003279681 6.5778483455013586 C-2.774884796001595 6.439268938068961, -3.149104622578983 6.26476736710249, -3.4999999999999982 6.062177826491071 C-3.8508953774210135 5.859588285879653, -4.189128084166966 5.6227551949470636, -4.499513267805773 5.362311101832848 C-4.809898451444581 5.101867008718632, -5.101867008718628 4.809898451444586, -5.3623111018328435 4.499513267805779 C-5.622755194947059 4.189128084166971, -5.859588285879649 3.8508953774210206, -6.062177826491068 3.5000000000000053 C-6.264767367102486 3.14910462257899, -6.439268938068958 2.774884796001602, -6.577848345501356 2.394141003279688 C-6.716427752933754 2.0133972105577738, -6.823295662002347 1.614560744215134, -6.893654271085454 1.215537243668521 C-6.9640128801685615 0.816513743121908, -6.999999999999999 0.4051790812228472, -7 1.0183126166254463e-14 C-7.000000000000001 -0.40517908122282686, -6.964012880168565 -0.8165137431218878, -6.893654271085459 -1.215537243668501 C-6.823295662002352 -1.6145607442151142, -6.716427752933759 -2.0133972105577542, -6.577848345501363 -2.394141003279669 C-6.439268938068967 -2.7748847960015834, -6.264767367102496 -3.149104622578972, -6.062177826491078 -3.4999999999999876 C-5.859588285879661 -3.8508953774210033, -5.6227551949470715 -4.1891280841669545, -5.362311101832856 -4.499513267805763 C-5.10186700871864 -4.809898451444571, -4.809898451444594 -5.10186700871862, -4.499513267805787 -5.362311101832836 C-4.189128084166979 -5.622755194947053, -3.850895377421028 -5.859588285879643, -3.5000000000000133 -6.062177826491062 C-3.1491046225789985 -6.264767367102482, -2.774884796001611 -6.439268938068954, -2.3941410032796973 -6.577848345501353 C-2.0133972105577835 -6.716427752933752, -1.6145607442151435 -6.823295662002345, -1.2155372436685306 -6.893654271085453 C-0.8165137431219176 -6.9640128801685615, -0.40517908122285695 -6.999999999999999, -1.9937625952807352e-14 -7 C0.4051790812228171 -7.000000000000001, 0.8165137431218781 -6.964012880168565, 1.2155372436684913 -6.89365427108546 C1.6145607442151044 -6.823295662002354, 2.013397210557745 -6.716427752933763, 2.3941410032796595 -6.5778483455013665 C2.774884796001574 -6.43926893806897, 3.149104622578963 -6.2647673671025, 3.499999999999979 -6.062177826491083 C3.8508953774209953 -5.859588285879665, 4.189128084166947 -5.622755194947077, 4.499513267805756 -5.362311101832862 C4.809898451444564 -5.1018670087186475, 5.101867008718613 -4.809898451444602, 5.362311101832829 -4.499513267805796 C5.622755194947046 -4.189128084166989, 5.859588285879637 -3.8508953774210393, 6.062177826491056 -3.500000000000025 C6.2647673671024755 -3.1491046225790105, 6.439268938068949 -2.774884796001623, 6.577848345501348 -2.3941410032797092 C6.716427752933747 -2.0133972105577955, 6.823295662002342 -1.6145607442151562, 6.893654271085451 -1.2155372436685434 C6.96401288016856 -0.8165137431219307, 6.982275711847575 -0.2025895406114567, 7 -3.2800750208310675e-14 C7.017724288152425 0.2025895406113911, 7.017724288152424 -0.2025895406114242, 7 0\" stroke=\"none\" stroke-width=\"0\" fill=\"#1f2020\" style=\"\"></path><path d=\"M7 0 C7 0.40517908122283747, 6.964012880168563 0.816513743121899, 6.893654271085456 1.2155372436685123 C6.823295662002349 1.6145607442151257, 6.716427752933756 2.013397210557766, 6.5778483455013586 2.394141003279681 C6.439268938068961 2.7748847960015954, 6.26476736710249 3.149104622578984, 6.062177826491071 3.4999999999999996 C5.859588285879653 3.8508953774210153, 5.622755194947063 4.189128084166967, 5.362311101832846 4.499513267805774 C5.10186700871863 4.809898451444582, 4.809898451444583 5.10186700871863, 4.499513267805775 5.362311101832846 C4.189128084166968 5.622755194947063, 3.8508953774210166 5.859588285879652, 3.500000000000001 6.06217782649107 C3.149104622578985 6.264767367102489, 2.7748847960015963 6.439268938068961, 2.3941410032796817 6.5778483455013586 C2.013397210557767 6.716427752933756, 1.6145607442151264 6.823295662002349, 1.2155372436685128 6.893654271085456 C0.8165137431218992 6.964012880168563, 0.4051790812228379 7, 4.286263797015736e-16 7 C-0.405179081222837 7, -0.8165137431218985 6.964012880168563, -1.2155372436685121 6.893654271085456 C-1.6145607442151257 6.823295662002349, -2.0133972105577667 6.716427752933756, -2.394141003279681 6.5778483455013586 C-2.774884796001595 6.439268938068961, -3.149104622578983 6.26476736710249, -3.4999999999999982 6.062177826491071 C-3.8508953774210135 5.859588285879653, -4.189128084166966 5.6227551949470636, -4.499513267805773 5.362311101832848 C-4.809898451444581 5.101867008718632, -5.101867008718628 4.809898451444586, -5.3623111018328435 4.499513267805779 C-5.622755194947059 4.189128084166971, -5.859588285879649 3.8508953774210206, -6.062177826491068 3.5000000000000053 C-6.264767367102486 3.14910462257899, -6.439268938068958 2.774884796001602, -6.577848345501356 2.394141003279688 C-6.716427752933754 2.0133972105577738, -6.823295662002347 1.614560744215134, -6.893654271085454 1.215537243668521 C-6.9640128801685615 0.816513743121908, -6.999999999999999 0.4051790812228472, -7 1.0183126166254463e-14 C-7.000000000000001 -0.40517908122282686, -6.964012880168565 -0.8165137431218878, -6.893654271085459 -1.215537243668501 C-6.823295662002352 -1.6145607442151142, -6.716427752933759 -2.0133972105577542, -6.577848345501363 -2.394141003279669 C-6.439268938068967 -2.7748847960015834, -6.264767367102496 -3.149104622578972, -6.062177826491078 -3.4999999999999876 C-5.859588285879661 -3.8508953774210033, -5.6227551949470715 -4.1891280841669545, -5.362311101832856 -4.499513267805763 C-5.10186700871864 -4.809898451444571, -4.809898451444594 -5.10186700871862, -4.499513267805787 -5.362311101832836 C-4.189128084166979 -5.622755194947053, -3.850895377421028 -5.859588285879643, -3.5000000000000133 -6.062177826491062 C-3.1491046225789985 -6.264767367102482, -2.774884796001611 -6.439268938068954, -2.3941410032796973 -6.577848345501353 C-2.0133972105577835 -6.716427752933752, -1.6145607442151435 -6.823295662002345, -1.2155372436685306 -6.893654271085453 C-0.8165137431219176 -6.9640128801685615, -0.40517908122285695 -6.999999999999999, -1.9937625952807352e-14 -7 C0.4051790812228171 -7.000000000000001, 0.8165137431218781 -6.964012880168565, 1.2155372436684913 -6.89365427108546 C1.6145607442151044 -6.823295662002354, 2.013397210557745 -6.716427752933763, 2.3941410032796595 -6.5778483455013665 C2.774884796001574 -6.43926893806897, 3.149104622578963 -6.2647673671025, 3.499999999999979 -6.062177826491083 C3.8508953774209953 -5.859588285879665, 4.189128084166947 -5.622755194947077, 4.499513267805756 -5.362311101832862 C4.809898451444564 -5.1018670087186475, 5.101867008718613 -4.809898451444602, 5.362311101832829 -4.499513267805796 C5.622755194947046 -4.189128084166989, 5.859588285879637 -3.8508953774210393, 6.062177826491056 -3.500000000000025 C6.2647673671024755 -3.1491046225790105, 6.439268938068949 -2.774884796001623, 6.577848345501348 -2.3941410032797092 C6.716427752933747 -2.0133972105577955, 6.823295662002342 -1.6145607442151562, 6.893654271085451 -1.2155372436685434 C6.96401288016856 -0.8165137431219307, 6.982275711847575 -0.2025895406114567, 7 -3.2800750208310675e-14 C7.017724288152425 0.2025895406113911, 7.017724288152424 -0.2025895406114242, 7 0\" stroke=\"lightgrey\" stroke-width=\"2\" fill=\"none\" stroke-dasharray=\"0 0\" style=\"\"></path><g><path d=\"M2.5 0 C2.5 0.14470681472244193, 2.487147457203058 0.29161205111496386, 2.46201938253052 0.4341204441673258 C2.436891307857982 0.5766288372196877, 2.3987241974763416 0.7190704323420595, 2.3492315519647713 0.8550503583141718 C2.299738906453201 0.991030284286284, 2.2374169168223177 1.124680222349637, 2.165063509461097 1.2499999999999998 C2.092710102099876 1.3753197776503625, 2.0081268553382365 1.496117172916774, 1.915111107797445 1.6069690242163481 C1.8220953602566536 1.7178208755159223, 1.7178208755159226 1.8220953602566536, 1.6069690242163484 1.915111107797445 C1.4961171729167742 2.0081268553382365, 1.375319777650363 2.0927101020998755, 1.2500000000000002 2.1650635094610964 C1.1246802223496375 2.2374169168223172, 0.9910302842862845 2.2997389064532, 0.8550503583141721 2.349231551964771 C0.7190704323420597 2.3987241974763416, 0.576628837219688 2.436891307857982, 0.43412044416732604 2.46201938253052 C0.291612051114964 2.487147457203058, 0.14470681472244212 2.5, 1.5308084989341916e-16 2.5 C-0.1447068147224418 2.5, -0.2916120511149638 2.487147457203058, -0.43412044416732576 2.46201938253052 C-0.5766288372196877 2.436891307857982, -0.7190704323420595 2.3987241974763416, -0.8550503583141718 2.3492315519647713 C-0.991030284286284 2.299738906453201, -1.124680222349637 2.2374169168223177, -1.2499999999999996 2.165063509461097 C-1.375319777650362 2.092710102099876, -1.4961171729167733 2.008126855338237, -1.6069690242163475 1.9151111077974459 C-1.7178208755159217 1.8220953602566548, -1.822095360256653 1.7178208755159234, -1.9151111077974443 1.6069690242163495 C-2.0081268553382357 1.4961171729167755, -2.0927101020998746 1.3753197776503645, -2.1650635094610955 1.250000000000002 C-2.2374169168223164 1.1246802223496395, -2.2997389064531992 0.9910302842862865, -2.34923155196477 0.8550503583141743 C-2.3987241974763407 0.7190704323420621, -2.436891307857981 0.5766288372196907, -2.4620193825305194 0.434120444167329 C-2.487147457203058 0.29161205111496724, -2.5 0.14470681472244545, -2.5 3.636830773662308e-15 C-2.5 -0.14470681472243818, -2.4871474572030587 -0.2916120511149599, -2.4620193825305208 -0.4341204441673218 C-2.436891307857983 -0.5766288372196837, -2.398724197476343 -0.7190704323420553, -2.3492315519647726 -0.8550503583141675 C-2.2997389064532023 -0.9910302842862798, -2.23741691682232 -1.1246802223496328, -2.165063509461099 -1.2499999999999956 C-2.092710102099878 -1.3753197776503583, -2.00812685533824 -1.4961171729167695, -1.9151111077974488 -1.606969024216344 C-1.8220953602566576 -1.7178208755159183, -1.7178208755159263 -1.82209536025665, -1.6069690242163523 -1.9151111077974416 C-1.4961171729167784 -2.0081268553382334, -1.3753197776503672 -2.0927101020998724, -1.2500000000000047 -2.1650635094610937 C-1.1246802223496422 -2.237416916822315, -0.9910302842862897 -2.299738906453198, -0.8550503583141776 -2.3492315519647686 C-0.7190704323420656 -2.3987241974763394, -0.5766288372196942 -2.4368913078579806, -0.43412044416733236 -2.462019382530519 C-0.29161205111497057 -2.4871474572030574, -0.1447068147224489 -2.4999999999999996, -7.120580697431198e-15 -2.5 C0.14470681472243463 -2.5000000000000004, 0.29161205111495647 -2.487147457203059, 0.4341204441673183 -2.4620193825305217 C0.5766288372196802 -2.436891307857984, 0.7190704323420518 -2.3987241974763442, 0.8550503583141642 -2.349231551964774 C0.9910302842862766 -2.2997389064532037, 1.1246802223496295 -2.2374169168223212, 1.2499999999999925 -2.165063509461101 C1.3753197776503554 -2.0927101020998804, 1.4961171729167668 -2.008126855338242, 1.6069690242163412 -1.915111107797451 C1.7178208755159157 -1.82209536025666, 1.8220953602566472 -1.7178208755159294, 1.915111107797439 -1.6069690242163557 C2.0081268553382308 -1.496117172916782, 2.09271010209987 -1.3753197776503712, 2.1650635094610915 -1.2500000000000089 C2.237416916822313 -1.1246802223496466, 2.299738906453196 -0.9910302842862939, 2.3492315519647673 -0.855050358314182 C2.3987241974763385 -0.71907043234207, 2.4368913078579792 -0.5766288372196986, 2.462019382530518 -0.4341204441673369 C2.487147457203057 -0.29161205111497523, 2.4936698970884197 -0.07235340736123454, 2.5 -1.1714553645825241e-14 C2.5063301029115803 0.07235340736121111, 2.50633010291158 -0.07235340736122292, 2.5 0\" stroke=\"none\" stroke-width=\"0\" fill=\"#ccc\" style=\"\"></path><path d=\"M2.5 0 C2.5 0.14470681472244193, 2.487147457203058 0.29161205111496386, 2.46201938253052 0.4341204441673258 C2.436891307857982 0.5766288372196877, 2.3987241974763416 0.7190704323420595, 2.3492315519647713 0.8550503583141718 C2.299738906453201 0.991030284286284, 2.2374169168223177 1.124680222349637, 2.165063509461097 1.2499999999999998 C2.092710102099876 1.3753197776503625, 2.0081268553382365 1.496117172916774, 1.915111107797445 1.6069690242163481 C1.8220953602566536 1.7178208755159223, 1.7178208755159226 1.8220953602566536, 1.6069690242163484 1.915111107797445 C1.4961171729167742 2.0081268553382365, 1.375319777650363 2.0927101020998755, 1.2500000000000002 2.1650635094610964 C1.1246802223496375 2.2374169168223172, 0.9910302842862845 2.2997389064532, 0.8550503583141721 2.349231551964771 C0.7190704323420597 2.3987241974763416, 0.576628837219688 2.436891307857982, 0.43412044416732604 2.46201938253052 C0.291612051114964 2.487147457203058, 0.14470681472244212 2.5, 1.5308084989341916e-16 2.5 C-0.1447068147224418 2.5, -0.2916120511149638 2.487147457203058, -0.43412044416732576 2.46201938253052 C-0.5766288372196877 2.436891307857982, -0.7190704323420595 2.3987241974763416, -0.8550503583141718 2.3492315519647713 C-0.991030284286284 2.299738906453201, -1.124680222349637 2.2374169168223177, -1.2499999999999996 2.165063509461097 C-1.375319777650362 2.092710102099876, -1.4961171729167733 2.008126855338237, -1.6069690242163475 1.9151111077974459 C-1.7178208755159217 1.8220953602566548, -1.822095360256653 1.7178208755159234, -1.9151111077974443 1.6069690242163495 C-2.0081268553382357 1.4961171729167755, -2.0927101020998746 1.3753197776503645, -2.1650635094610955 1.250000000000002 C-2.2374169168223164 1.1246802223496395, -2.2997389064531992 0.9910302842862865, -2.34923155196477 0.8550503583141743 C-2.3987241974763407 0.7190704323420621, -2.436891307857981 0.5766288372196907, -2.4620193825305194 0.434120444167329 C-2.487147457203058 0.29161205111496724, -2.5 0.14470681472244545, -2.5 3.636830773662308e-15 C-2.5 -0.14470681472243818, -2.4871474572030587 -0.2916120511149599, -2.4620193825305208 -0.4341204441673218 C-2.436891307857983 -0.5766288372196837, -2.398724197476343 -0.7190704323420553, -2.3492315519647726 -0.8550503583141675 C-2.2997389064532023 -0.9910302842862798, -2.23741691682232 -1.1246802223496328, -2.165063509461099 -1.2499999999999956 C-2.092710102099878 -1.3753197776503583, -2.00812685533824 -1.4961171729167695, -1.9151111077974488 -1.606969024216344 C-1.8220953602566576 -1.7178208755159183, -1.7178208755159263 -1.82209536025665, -1.6069690242163523 -1.9151111077974416 C-1.4961171729167784 -2.0081268553382334, -1.3753197776503672 -2.0927101020998724, -1.2500000000000047 -2.1650635094610937 C-1.1246802223496422 -2.237416916822315, -0.9910302842862897 -2.299738906453198, -0.8550503583141776 -2.3492315519647686 C-0.7190704323420656 -2.3987241974763394, -0.5766288372196942 -2.4368913078579806, -0.43412044416733236 -2.462019382530519 C-0.29161205111497057 -2.4871474572030574, -0.1447068147224489 -2.4999999999999996, -7.120580697431198e-15 -2.5 C0.14470681472243463 -2.5000000000000004, 0.29161205111495647 -2.487147457203059, 0.4341204441673183 -2.4620193825305217 C0.5766288372196802 -2.436891307857984, 0.7190704323420518 -2.3987241974763442, 0.8550503583141642 -2.349231551964774 C0.9910302842862766 -2.2997389064532037, 1.1246802223496295 -2.2374169168223212, 1.2499999999999925 -2.165063509461101 C1.3753197776503554 -2.0927101020998804, 1.4961171729167668 -2.008126855338242, 1.6069690242163412 -1.915111107797451 C1.7178208755159157 -1.82209536025666, 1.8220953602566472 -1.7178208755159294, 1.915111107797439 -1.6069690242163557 C2.0081268553382308 -1.496117172916782, 2.09271010209987 -1.3753197776503712, 2.1650635094610915 -1.2500000000000089 C2.237416916822313 -1.1246802223496466, 2.299738906453196 -0.9910302842862939, 2.3492315519647673 -0.855050358314182 C2.3987241974763385 -0.71907043234207, 2.4368913078579792 -0.5766288372196986, 2.462019382530518 -0.4341204441673369 C2.487147457203057 -0.29161205111497523, 2.4936698970884197 -0.07235340736123454, 2.5 -1.1714553645825241e-14 C2.5063301029115803 0.07235340736121111, 2.50633010291158 -0.07235340736122292, 2.5 0\" stroke=\"#ccc\" stroke-width=\"2\" fill=\"none\" stroke-dasharray=\"0 0\" style=\"\"></path></g></g></g></g></g></g><defs><filter id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><defs><filter id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><linearGradient id=\"diagram-13d3265eb8b5321fd85ae48427d649bda76891280450d1cfd58e0698eaaa2891-gradient\" gradientUnits=\"objectBoundingBox\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"><stop offset=\"0%\" stop-color=\"#cccccc\" stop-opacity=\"1\"></stop><stop offset=\"100%\" stop-color=\"hsl(180, 0%, 18.3529411765%)\" stop-opacity=\"1\"></stop></linearGradient></svg>"},"children":["stateDiagram-v2\n    [*] --> pending: POST /verification-sessions or /verification-cases/{id}/sessions\n    pending --> success: User presents valid credentials\n    pending --> failed: Presentation rejected or invalid\n    pending --> expired: Session TTL exceeded\n    success --> [*]\n    failed --> [*]\n    expired --> [*]\n"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"statuses","__idx":3},"children":["Statuses"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status    "]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Session created, waiting for user to scan QR and present credentials."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Credentials verified successfully. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attributes"]}," contains the disclosed values. Check ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_status"]}," too — a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["suspended"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["revoked"]}," credential still reports ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]}," here."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Verification failed. Check ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_code"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_description"]}," for details."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expired"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Session exceeded its TTL without completion."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"which-one-a-credential-definition-or-a-case","__idx":4},"children":["Which one: a credential definition or a case"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The rule is short:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Verify a credential definition"]}," when one credential type is enough and any value the holder presents is fine. You pick the claims per session; the disclosed values come back under the claim keys."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use a verification case"]}," when the check accepts ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["more than one credential type"]},", or when a value must ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["meet a constraint"]}," (an allowed set, a bound, an age). A case is the only place either is expressed: a definition session takes no constraints and one definition."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A case also gives you attribute ids that stay the same whichever credential was presented, a holder-facing title and purpose, versions, and one rule that several integrations or organizations run alike — useful, but not what decides."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Whose it is does not decide either. Any organization's credential definition or verification case is used by its id: if it is not yours, ask its owner for the id (it is not a secret — a definition id is the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vct"]}," of every credential of its type, a case id is in every QR code the case produces). What you cannot do with someone else's is issue from the definition or change the case."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-1-create-a-session","__idx":5},"children":["Step 1: Create a session"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There are two ways to start a session, each with its own endpoint: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["verify a credential definition"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /b2b/v1/verification-sessions"]},") or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["launch a verification case"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /b2b/v1/verification-cases/{caseId}/sessions"]},"). Either way the session is the same resource: polled with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /b2b/v1/verification-sessions/{sessionId}"]}," and reported by the same webhook. What it ran is named on the session, under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_definition"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["case"]},", never both. Neither path takes an issuer list: a session trusts the issuers pinned on its credential definitions in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Environment"]},", reported in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accepted_issuer_dids"]},". Both take an optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirect_uri"]},", which brings a holder on their phone back to you after they answer; see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/verification/same-device"},"children":["Same-Device Return"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"verify-a-credential-definition","__idx":6},"children":["Verify a credential definition"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ask the holder for one credential of a given definition. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["claims"]}," picks the claims to request; omit it (or send it empty) to ask for every claim of the definition."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/openapi/verification-v1"},"children":["Open in API reference →"]}]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"api-docs-docs/openapi/verification-v1.yaml","operationId":"POST:b2b.Verify","parameters":{},"requestBody":{"credential_definition_id":"YOUR_CREDENTIAL_DEFINITION_ID","claims":["family_name","given_name","birth_date"],"reference_id":"order-12345","purpose":"Age verification for purchase"},"environments":{"https://api.dev.deepcredentials.swiss":{"BearerAuth":"YOUR_ACCESS_TOKEN"}},"environment":"https://api.dev.deepcredentials.swiss","codeSamplesResolved":[{"lang":"shell","title":"curl","source":"curl -i -X POST \\\n  https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions \\\n  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-Environment: beta' \\\n  -H 'X-Org-Id: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \\\n  -d '{\n    \"credential_definition_id\": \"YOUR_CREDENTIAL_DEFINITION_ID\",\n    \"claims\": [\n      \"family_name\",\n      \"given_name\",\n      \"birth_date\"\n    ],\n    \"reference_id\": \"order-12345\",\n    \"purpose\": \"Age verification for purchase\"\n  }'"},{"lang":"javascript","title":"JavaScript","source":"const resp = await fetch(\n  `https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions`,\n  {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json',\n      'X-Org-Id': '497f6eca-6276-4993-bfeb-53cbbbba6f08',\n      'X-Environment': 'beta',\n      Authorization: 'Bearer <YOUR_JWT_HERE>'\n    },\n    body: JSON.stringify({\n      credential_definition_id: 'YOUR_CREDENTIAL_DEFINITION_ID',\n      claims: [\n        'family_name',\n        'given_name',\n        'birth_date'\n      ],\n      reference_id: 'order-12345',\n      purpose: 'Age verification for purchase'\n    })\n  }\n);\n\nconst data = await resp.json();\nconsole.log(data);"},{"lang":"javascript","title":"Node.js","source":"import fetch from 'node-fetch';\n\nasync function run() {\n  const resp = await fetch(\n    `https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions`,\n    {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        'X-Org-Id': '497f6eca-6276-4993-bfeb-53cbbbba6f08',\n        'X-Environment': 'beta',\n        Authorization: 'Bearer <YOUR_JWT_HERE>'\n      },\n      body: JSON.stringify({\n        credential_definition_id: 'YOUR_CREDENTIAL_DEFINITION_ID',\n        claims: [\n          'family_name',\n          'given_name',\n          'birth_date'\n        ],\n        reference_id: 'order-12345',\n        purpose: 'Age verification for purchase'\n      })\n    }\n  );\n\n  const data = await resp.json();\n  console.log(data);\n}\n\nrun();"},{"lang":"python","title":"Python","source":"import requests\n\nurl = \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions\"\n\npayload = {\n  \"credential_definition_id\": \"YOUR_CREDENTIAL_DEFINITION_ID\",\n  \"claims\": [\n    \"family_name\",\n    \"given_name\",\n    \"birth_date\"\n  ],\n  \"reference_id\": \"order-12345\",\n  \"purpose\": \"Age verification for purchase\"\n}\n\nheaders = {\n  \"Content-Type\": \"application/json\",\n  \"X-Org-Id\": \"497f6eca-6276-4993-bfeb-53cbbbba6f08\",\n  \"X-Environment\": \"beta\",\n  \"Authorization\": \"Bearer <YOUR_JWT_HERE>\"\n}\n\nresponse = requests.post(url, json=payload, headers=headers)\n\ndata = response.json()\nprint(data)"},{"lang":"java","title":"Java","source":"import java.net.*;\nimport java.net.http.*;\nimport java.util.*;\n\npublic class App {\n  public static void main(String[] args) throws Exception {\n    var httpClient = HttpClient.newBuilder().build();\n\n    var payload = String.join(\"\\n\"\n      , \"{\"\n      , \" \\\"credential_definition_id\\\": \\\"YOUR_CREDENTIAL_DEFINITION_ID\\\",\"\n      , \" \\\"claims\\\": [\"\n      , \"  \\\"family_name\\\",\"\n      , \"  \\\"given_name\\\",\"\n      , \"  \\\"birth_date\\\"\"\n      , \" ],\"\n      , \" \\\"reference_id\\\": \\\"order-12345\\\",\"\n      , \" \\\"purpose\\\": \\\"Age verification for purchase\\\"\"\n      , \"}\"\n    );\n\n    var host = \"https://api.dev.deepcredentials.swiss\";\n    var pathname = \"/b2b/v1/verification-sessions\";\n    var request = HttpRequest.newBuilder()\n      .POST(HttpRequest.BodyPublishers.ofString(payload))\n      .uri(URI.create(host + pathname ))\n      .header(\"Content-Type\", \"application/json\")\n      .header(\"X-Org-Id\", \"497f6eca-6276-4993-bfeb-53cbbbba6f08\")\n      .header(\"X-Environment\", \"beta\")\n      .header(\"Authorization\", \"Bearer <YOUR_JWT_HERE>\")\n      .build();\n\n    var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());\n\n    System.out.println(response.body());\n  }\n}"},{"lang":"csharp","title":"C#","source":"using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing System.Text;\nusing System.Text.Json;\n\npublic class Program\n{\n  public static async Task Main()\n  {\n    System.Net.Http.HttpClient client = new()\n    {\n      DefaultRequestHeaders =\n      {\n        {\"X-Org-Id\", \"497f6eca-6276-4993-bfeb-53cbbbba6f08\"},\n        {\"X-Environment\", \"beta\"},\n        {\"Authorization\", \"Bearer <YOUR_JWT_HERE>\"},\n      }\n    };\n\n    string json = JsonSerializer.Serialize(new\n    {\n      credential_definition_id = \"YOUR_CREDENTIAL_DEFINITION_ID\",\n      claims = new[] {\n        \"family_name\",\n        \"given_name\",\n        \"birth_date\"\n      },\n      reference_id = \"order-12345\",\n      purpose = \"Age verification for purchase\"\n    });\n\n    using StringContent postData = new(json, Encoding.UTF8, \"application/json\");\n    using HttpResponseMessage request = await client.PostAsync(\"https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions\", postData);\n    string response = await request.Content.ReadAsStringAsync();\n\n    Console.WriteLine(response);\n  }\n}"},{"lang":"php","title":"PHP","source":"/**\n * Requires libcurl\n */\n\n$curl = curl_init();\n\n$payload = array(\n  \"credential_definition_id\" => \"YOUR_CREDENTIAL_DEFINITION_ID\",\n  \"claims\" => array(\n    \"family_name\",\n    \"given_name\",\n    \"birth_date\"\n  ),\n  \"reference_id\" => \"order-12345\",\n  \"purpose\" => \"Age verification for purchase\"\n);\n\ncurl_setopt_array($curl, [\n  CURLOPT_HTTPHEADER => [\n    \"Authorization: Bearer <YOUR_JWT_HERE>\",\n    \"Content-Type: application/json\",\n    \"X-Environment: beta\",\n    \"X-Org-Id: 497f6eca-6276-4993-bfeb-53cbbbba6f08\"\n  ],\n  CURLOPT_POSTFIELDS => json_encode($payload),\n  CURLOPT_URL => \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions\",\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_CUSTOMREQUEST => \"POST\",\n]);\n\n$response = curl_exec($curl);\n$error = curl_error($curl);\n\ncurl_close($curl);\n\nif ($error) {\n  echo \"cURL Error #:\" . $error;\n} else {\n  echo $response;\n}"},{"lang":"go","title":"Go","source":"package main\n\nimport (\n  \"fmt\"\n  \"bytes\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n  reqUrl := \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions\"\n  var data = []byte(`{\n    \"credential_definition_id\": \"YOUR_CREDENTIAL_DEFINITION_ID\",\n    \"claims\": [\n      \"family_name\",\n      \"given_name\",\n      \"birth_date\"\n    ],\n    \"reference_id\": \"order-12345\",\n    \"purpose\": \"Age verification for purchase\"\n  }`)\n  req, err := http.NewRequest(\"POST\", reqUrl, bytes.NewBuffer(data))\n  if err != nil {\n    panic(err)\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"X-Org-Id\", \"497f6eca-6276-4993-bfeb-53cbbbba6f08\")\n  req.Header.Add(\"X-Environment\", \"beta\")\n  req.Header.Add(\"Authorization\", \"Bearer <YOUR_JWT_HERE>\")\n  res, err := http.DefaultClient.Do(req)\n  if err != nil {\n    panic(err)\n  }\n  defer res.Body.Close()\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    panic(err)\n  }\n\n  fmt.Println(res)\n  fmt.Println(string(body))\n}"},{"lang":"ruby","title":"Ruby","source":"require 'json'\nrequire 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nurl = URI('https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest['Content-Type'] = 'application/json'\nrequest['X-Org-Id'] = '497f6eca-6276-4993-bfeb-53cbbbba6f08'\nrequest['X-Environment'] = 'beta'\nrequest['Authorization'] = 'Bearer <YOUR_JWT_HERE>'\nrequest.body = {\n  credential_definition_id: 'YOUR_CREDENTIAL_DEFINITION_ID',\n  claims: [\n    'family_name',\n    'given_name',\n    'birth_date'\n  ],\n  reference_id: 'order-12345',\n  purpose: 'Age verification for purchase'\n}.to_json\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"r","title":"R","source":"library(httr)\n\nbody = '{\n   \"credential_definition_id\": \"YOUR_CREDENTIAL_DEFINITION_ID\",\n   \"claims\": [\n    \"family_name\",\n    \"given_name\",\n    \"birth_date\"\n   ],\n   \"reference_id\": \"order-12345\",\n   \"purpose\": \"Age verification for purchase\"\n}'\n\nurl = \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions\"\n\ndata_req <- POST(\n  url,\n  add_headers(\"Content-Type\" = \"application/json\", \"X-Org-Id\" = \"497f6eca-6276-4993-bfeb-53cbbbba6f08\", \"X-Environment\" = \"beta\", \"Authorization\" = \"Bearer <YOUR_JWT_HERE>\"),\n  body = body,\n  encode = \"json\",\n  verbose()\n)\n\ncontent(data_req)"},{"lang":"json","title":"Payload application/json","source":"{\n  \"claims\": [\n    \"string\"\n  ],\n  \"credential_definition_id\": \"631a1b36-dbe6-4899-b427-3167b0844238\",\n  \"purpose\": \"string\",\n  \"redirect_uri\": \"string\",\n  \"reference_id\": \"string\"\n}"}]},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The session names the definition under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_definition"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["name"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["has_logo"]},"). On ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attributes"]}," is keyed by the claim keys of the definition, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["presented_credential_definition_id"]}," is the definition's id."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"launch-a-verification-case","__idx":7},"children":["Launch a verification case"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Launch a case by its id, your own or any other organization's. The case is the contract: the session asks for every attribute of the case, with its constraints, exactly as authored; there is no per-session narrowing. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["purpose"]}," is optional and replaces the case's purpose for this run; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["case_version"]}," pins the contract version your integration was built against: the current one runs, an older one runs while the case lists it in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["launchable_versions"]},", anything else is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["409 case_version_mismatch"]}," (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/verification/cases#versions"},"children":["Versions"]},"). The case must run in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Environment"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 case_not_available"]}," otherwise). The session names the case under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["case"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["version"]}," it ran, the case's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["title"]},"). On ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attributes"]}," is keyed by the case's attribute ids, whichever accepted credential the holder presented, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["presented_credential_definition_id"]}," says which of the case's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_definition_ids"]}," it was; a value that fails a constraint closes the session as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attribute_value_rejected"]}," and nothing disclosed is stored. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/verification/cases"},"children":["Verification Cases"]}," for what a case is and how to author one."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/openapi/verification-cases-v1"},"children":["Open in API reference →"]}]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"api-docs-docs/openapi/verification-cases-v1.yaml","operationId":"POST:b2b.LaunchVerificationCase","parameters":{"path":{"caseId":"YOUR_CASE_ID"}},"requestBody":{"case_version":2,"reference_id":"order-12345","purpose":"Age verification for purchase"},"environments":{"https://api.dev.deepcredentials.swiss":{"BearerAuth":"YOUR_ACCESS_TOKEN"}},"environment":"https://api.dev.deepcredentials.swiss","codeSamplesResolved":[{"lang":"shell","title":"curl","source":"curl -i -X POST \\\n  https://api.dev.deepcredentials.swiss/b2b/v1/verification-cases/YOUR_CASE_ID/sessions \\\n  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-Environment: beta' \\\n  -H 'X-Org-Id: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \\\n  -d '{\n    \"case_version\": 2,\n    \"reference_id\": \"order-12345\",\n    \"purpose\": \"Age verification for purchase\"\n  }'"},{"lang":"javascript","title":"JavaScript","source":"const caseId = 'YOUR_CASE_ID';\nconst resp = await fetch(\n  `https://api.dev.deepcredentials.swiss/b2b/v1/verification-cases/${caseId}/sessions`,\n  {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json',\n      'X-Org-Id': '497f6eca-6276-4993-bfeb-53cbbbba6f08',\n      'X-Environment': 'beta',\n      Authorization: 'Bearer <YOUR_JWT_HERE>'\n    },\n    body: JSON.stringify({\n      case_version: 2,\n      reference_id: 'order-12345',\n      purpose: 'Age verification for purchase'\n    })\n  }\n);\n\nconst data = await resp.json();\nconsole.log(data);"},{"lang":"javascript","title":"Node.js","source":"import fetch from 'node-fetch';\n\nasync function run() {\n  const caseId = 'YOUR_CASE_ID';\n  const resp = await fetch(\n    `https://api.dev.deepcredentials.swiss/b2b/v1/verification-cases/${caseId}/sessions`,\n    {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        'X-Org-Id': '497f6eca-6276-4993-bfeb-53cbbbba6f08',\n        'X-Environment': 'beta',\n        Authorization: 'Bearer <YOUR_JWT_HERE>'\n      },\n      body: JSON.stringify({\n        case_version: 2,\n        reference_id: 'order-12345',\n        purpose: 'Age verification for purchase'\n      })\n    }\n  );\n\n  const data = await resp.json();\n  console.log(data);\n}\n\nrun();"},{"lang":"python","title":"Python","source":"import requests\n\ncase_id = \"YOUR_CASE_ID\"\nurl = \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-cases/\" + case_id + \"/sessions\"\n\npayload = {\n  \"case_version\": 2,\n  \"reference_id\": \"order-12345\",\n  \"purpose\": \"Age verification for purchase\"\n}\n\nheaders = {\n  \"Content-Type\": \"application/json\",\n  \"X-Org-Id\": \"497f6eca-6276-4993-bfeb-53cbbbba6f08\",\n  \"X-Environment\": \"beta\",\n  \"Authorization\": \"Bearer <YOUR_JWT_HERE>\"\n}\n\nresponse = requests.post(url, json=payload, headers=headers)\n\ndata = response.json()\nprint(data)"},{"lang":"java","title":"Java","source":"import java.net.*;\nimport java.net.http.*;\nimport java.util.*;\n\npublic class App {\n  public static void main(String[] args) throws Exception {\n    var httpClient = HttpClient.newBuilder().build();\n\n    var payload = String.join(\"\\n\"\n      , \"{\"\n      , \" \\\"case_version\\\": 2,\"\n      , \" \\\"reference_id\\\": \\\"order-12345\\\",\"\n      , \" \\\"purpose\\\": \\\"Age verification for purchase\\\"\"\n      , \"}\"\n    );\n\n    var host = \"https://api.dev.deepcredentials.swiss\";\n    var caseId = \"YOUR_CASE_ID\";\n    var pathname = \"/b2b/v1/verification-cases/%7BcaseId%7D/sessions\";\n    var request = HttpRequest.newBuilder()\n      .POST(HttpRequest.BodyPublishers.ofString(payload))\n      .uri(URI.create(host + pathname ))\n      .header(\"Content-Type\", \"application/json\")\n      .header(\"X-Org-Id\", \"497f6eca-6276-4993-bfeb-53cbbbba6f08\")\n      .header(\"X-Environment\", \"beta\")\n      .header(\"Authorization\", \"Bearer <YOUR_JWT_HERE>\")\n      .build();\n\n    var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());\n\n    System.out.println(response.body());\n  }\n}"},{"lang":"csharp","title":"C#","source":"using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing System.Text;\nusing System.Text.Json;\n\npublic class Program\n{\n  public static async Task Main()\n  {\n    System.Net.Http.HttpClient client = new()\n    {\n      DefaultRequestHeaders =\n      {\n        {\"X-Org-Id\", \"497f6eca-6276-4993-bfeb-53cbbbba6f08\"},\n        {\"X-Environment\", \"beta\"},\n        {\"Authorization\", \"Bearer <YOUR_JWT_HERE>\"},\n      }\n    };\n\n    string json = JsonSerializer.Serialize(new\n    {\n      case_version = \"2\",\n      reference_id = \"order-12345\",\n      purpose = \"Age verification for purchase\"\n    });\n\n    using StringContent postData = new(json, Encoding.UTF8, \"application/json\");\n      var CaseId = \"YOUR_CASE_ID\";\n    using HttpResponseMessage request = await client.PostAsync(\"https://api.dev.deepcredentials.swiss/b2b/v1/verification-cases/\" + CaseId + \"/sessions\", postData);\n    string response = await request.Content.ReadAsStringAsync();\n\n    Console.WriteLine(response);\n  }\n}"},{"lang":"php","title":"PHP","source":"/**\n * Requires libcurl\n */\n\nconst caseId = \"YOUR_CASE_ID\";\n$curl = curl_init();\n\n$payload = array(\n  \"case_version\" => 2,\n  \"reference_id\" => \"order-12345\",\n  \"purpose\" => \"Age verification for purchase\"\n);\n\ncurl_setopt_array($curl, [\n  CURLOPT_HTTPHEADER => [\n    \"Authorization: Bearer <YOUR_JWT_HERE>\",\n    \"Content-Type: application/json\",\n    \"X-Environment: beta\",\n    \"X-Org-Id: 497f6eca-6276-4993-bfeb-53cbbbba6f08\"\n  ],\n  CURLOPT_POSTFIELDS => json_encode($payload),\n  CURLOPT_URL => \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-cases/\" . caseId . \"/sessions\",\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_CUSTOMREQUEST => \"POST\",\n]);\n\n$response = curl_exec($curl);\n$error = curl_error($curl);\n\ncurl_close($curl);\n\nif ($error) {\n  echo \"cURL Error #:\" . $error;\n} else {\n  echo $response;\n}"},{"lang":"go","title":"Go","source":"package main\n\nimport (\n  \"fmt\"\n  \"bytes\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n  caseId := \"YOUR_CASE_ID\";\n  reqUrl := \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-cases/\" + caseId + \"/sessions\"\n  var data = []byte(`{\n    \"case_version\": 2,\n    \"reference_id\": \"order-12345\",\n    \"purpose\": \"Age verification for purchase\"\n  }`)\n  req, err := http.NewRequest(\"POST\", reqUrl, bytes.NewBuffer(data))\n  if err != nil {\n    panic(err)\n  }\n  req.Header.Add(\"Content-Type\", \"application/json\")\n  req.Header.Add(\"X-Org-Id\", \"497f6eca-6276-4993-bfeb-53cbbbba6f08\")\n  req.Header.Add(\"X-Environment\", \"beta\")\n  req.Header.Add(\"Authorization\", \"Bearer <YOUR_JWT_HERE>\")\n  res, err := http.DefaultClient.Do(req)\n  if err != nil {\n    panic(err)\n  }\n  defer res.Body.Close()\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    panic(err)\n  }\n\n  fmt.Println(res)\n  fmt.Println(string(body))\n}"},{"lang":"ruby","title":"Ruby","source":"require 'json'\nrequire 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\ncase_id = 'YOUR_CASE_ID'\nurl = URI('https://api.dev.deepcredentials.swiss/b2b/v1/verification-cases/' + case_id + '/sessions')\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest['Content-Type'] = 'application/json'\nrequest['X-Org-Id'] = '497f6eca-6276-4993-bfeb-53cbbbba6f08'\nrequest['X-Environment'] = 'beta'\nrequest['Authorization'] = 'Bearer <YOUR_JWT_HERE>'\nrequest.body = {\n  case_version: 2,\n  reference_id: 'order-12345',\n  purpose: 'Age verification for purchase'\n}.to_json\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"r","title":"R","source":"library(httr)\n\nbody = '{\n   \"case_version\": 2,\n   \"reference_id\": \"order-12345\",\n   \"purpose\": \"Age verification for purchase\"\n}'\n\ncase_id = \"YOUR_CASE_ID\"\n\n# create you own operator\n\"%&%\" <- function(x, y)paste0(x,y)\n\nurl = \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-cases/\" %&% case_id %&% \"/sessions\"\n\ndata_req <- POST(\n  url,\n  add_headers(\"Content-Type\" = \"application/json\", \"X-Org-Id\" = \"497f6eca-6276-4993-bfeb-53cbbbba6f08\", \"X-Environment\" = \"beta\", \"Authorization\" = \"Bearer <YOUR_JWT_HERE>\"),\n  body = body,\n  encode = \"json\",\n  verbose()\n)\n\ncontent(data_req)"},{"lang":"json","title":"Payload application/json","source":"{\n  \"case_version\": 1,\n  \"reference_id\": \"door-7B-2026-09-29-0815\",\n  \"purpose\": \"Access to the server room\"\n}"}]},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response","__idx":8},"children":["Response"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both endpoints answer with the launch: the session id, the QR code, the deeplink, the status and the expiry."]},{"$$mdtype":"Tag","name":"JsonSchema","attributes":{"schema":{"$ref":"../../openapi/verification-v1.yaml#/paths/~1b2b~1v1~1verification-sessions/post/responses/200/content/application~1json/schema"},"options":{"requiredPropsFirst":true},"schemaResolved":{"openapi":"3.1.0","components":{"schemas":{"__root":{"$ref":"#/components/schemas/schema"},"verification.SessionStatus":{"type":"string","enum":["pending","success","failed","expired"],"description":"Lifecycle state of a verification session."},"schema":{"properties":{"deeplink":{"description":"Wallet app link, e.g. openid4vp://?client_id=...&request_uri=...","type":"string"},"expires_at":{"format":"date-time","description":"Session TTL deadline (RFC3339).","type":"string"},"qr_content_base64":{"description":"Base64-encoded PNG; QR payload is the same URI as deeplink.","type":"string"},"session_id":{"type":"string","format":"uuid","description":"UUID v4 identifier.","example":"550e8400-e29b-41d4-a716-446655440000"},"status":{"$ref":"#/components/schemas/verification.SessionStatus"}},"required":["session_id","qr_content_base64","deeplink","status","expires_at"],"type":"object"}}}},"schemaResolvedErrors":[]},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-2-present-the-qr-code","__idx":9},"children":["Step 2: Present the QR code"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You have two options to present the verification request to the user:"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"qr-code-desktop--in-person","__idx":10},"children":["QR code (desktop / in-person)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["qr_content_base64"]}," field is a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["standard Base64-encoded PNG image"]},". Display it directly:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"html","header":{"controls":{"copy":{}}},"source":"<img src=\"data:image/png;base64,iVBORw0KGgo...\" alt=\"Scan to verify your identity\" />\n","lang":"html"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Or decode it to a file:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"import base64\n\npng_bytes = base64.b64decode(qr_content_base64)\nwith open(\"qr.png\", \"wb\") as f:\n    f.write(png_bytes)\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"deeplink-mobile","__idx":11},"children":["Deeplink (mobile)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deeplink"]}," field contains a URI that opens the wallet app directly (its scheme, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["openid4vp"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["swiyu-verify"]},", depends on the deployment):"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"swiyu-verify://?client_id=...&request_uri=...\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this when the user is on a mobile device — redirect them to the deeplink instead of showing a QR code. To have the wallet bring them back to you once they have answered, create the session with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirect_uri"]},": see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/verification/same-device"},"children":["Same-Device Return"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-3-retrieve-the-result","__idx":12},"children":["Step 3: Retrieve the result"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"option-a-polling","__idx":13},"children":["Option A: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/openapi/verification-v1"},"children":["Polling"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Poll ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /b2b/v1/verification-sessions/{sessionId}"]}," until the status is no longer ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]},":"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/openapi/verification-v1"},"children":["Open in API reference →"]}]},{"$$mdtype":"Tag","name":"OpenApiCodeSample","attributes":{"descriptionFile":"api-docs-docs/openapi/verification-v1.yaml","operationId":"GET:b2b.GetVerificationSession","parameters":{"path":{"sessionId":"770e8400-e29b-41d4-a716-446655440000"}},"environments":{"https://api.dev.deepcredentials.swiss":{"BearerAuth":"YOUR_ACCESS_TOKEN"}},"environment":"https://api.dev.deepcredentials.swiss","codeSamplesResolved":[{"lang":"shell","title":"curl","source":"curl -i -X GET \\\n  'https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions/770e8400-e29b-41d4-a716-446655440000?response_code=string' \\\n  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  -H 'X-Environment: beta' \\\n  -H 'X-Org-Id: 497f6eca-6276-4993-bfeb-53cbbbba6f08'"},{"lang":"javascript","title":"JavaScript","source":"const query = new URLSearchParams({response_code: 'string'}).toString();\n\nconst sessionId = '770e8400-e29b-41d4-a716-446655440000';\nconst resp = await fetch(\n  `https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions/${sessionId}?${query}`,\n  {\n    method: 'GET',\n    headers: {\n      'X-Org-Id': '497f6eca-6276-4993-bfeb-53cbbbba6f08',\n      'X-Environment': 'beta',\n      Authorization: 'Bearer <YOUR_JWT_HERE>'\n    }\n  }\n);\n\nconst data = await resp.text();\nconsole.log(data);"},{"lang":"javascript","title":"Node.js","source":"import fetch from 'node-fetch';\n\nasync function run() {\n  const query = new URLSearchParams({response_code: 'string'}).toString();\n\n  const sessionId = '770e8400-e29b-41d4-a716-446655440000';\n  const resp = await fetch(\n    `https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions/${sessionId}?${query}`,\n    {\n      method: 'GET',\n      headers: {\n        'X-Org-Id': '497f6eca-6276-4993-bfeb-53cbbbba6f08',\n        'X-Environment': 'beta',\n        Authorization: 'Bearer <YOUR_JWT_HERE>'\n      }\n    }\n  );\n\n  const data = await resp.text();\n  console.log(data);\n}\n\nrun();"},{"lang":"python","title":"Python","source":"import requests\n\nsession_id = \"770e8400-e29b-41d4-a716-446655440000\"\nurl = \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions/\" + session_id\n\nquery = {\n  \"response_code\": \"string\"\n}\n\nheaders = {\n  \"X-Org-Id\": \"497f6eca-6276-4993-bfeb-53cbbbba6f08\",\n  \"X-Environment\": \"beta\",\n  \"Authorization\": \"Bearer <YOUR_JWT_HERE>\"\n}\n\nresponse = requests.get(url, headers=headers, params=query)\n\ndata = response.json()\nprint(data)"},{"lang":"java","title":"Java","source":"import java.net.*;\nimport java.net.http.*;\nimport java.util.*;\nimport java.nio.charset.StandardCharsets;\nimport java.util.stream.Collectors;\n\npublic class App {\n  public static void main(String[] args) throws Exception {\n    var httpClient = HttpClient.newBuilder().build();\n\n    HashMap<String, String> params = new HashMap<>();\n    params.put(\"response_code\", \"string\");\n\n    var query = params.keySet().stream()\n      .map(key -> key + \"=\" + URLEncoder.encode(params.get(key), StandardCharsets.UTF_8))\n      .collect(Collectors.joining(\"&\"));\n\n    var host = \"https://api.dev.deepcredentials.swiss\";\n    var sessionId = \"770e8400-e29b-41d4-a716-446655440000\";\n    var pathname = \"/b2b/v1/verification-sessions/%7BsessionId%7D\";\n    var request = HttpRequest.newBuilder()\n      .GET()\n      .uri(URI.create(host + pathname + '?' + query))\n      .header(\"X-Org-Id\", \"497f6eca-6276-4993-bfeb-53cbbbba6f08\")\n      .header(\"X-Environment\", \"beta\")\n      .header(\"Authorization\", \"Bearer <YOUR_JWT_HERE>\")\n      .build();\n\n    var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());\n\n    System.out.println(response.body());\n  }\n}"},{"lang":"csharp","title":"C#","source":"using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\npublic class Program\n{\n  public static async Task Main()\n  {\n    System.Net.Http.HttpClient client = new()\n    {\n      DefaultRequestHeaders =\n      {\n        {\"X-Org-Id\", \"497f6eca-6276-4993-bfeb-53cbbbba6f08\"},\n        {\"X-Environment\", \"beta\"},\n        {\"Authorization\", \"Bearer <YOUR_JWT_HERE>\"},\n      }\n    };\n\n      var SessionId = \"770e8400-e29b-41d4-a716-446655440000\";\n    using HttpResponseMessage request = await client.GetAsync(\"https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions/\" + SessionId + \"?response_code=string\");\n    string response = await request.Content.ReadAsStringAsync();\n\n    Console.WriteLine(response);\n  }\n}"},{"lang":"php","title":"PHP","source":"/**\n * Requires libcurl\n */\n\nconst sessionId = \"770e8400-e29b-41d4-a716-446655440000\";\n$query = array(\n  \"response_code\" => \"string\"\n);\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n  CURLOPT_HTTPHEADER => [\n    \"Authorization: Bearer <YOUR_JWT_HERE>\",\n    \"X-Environment: beta\",\n    \"X-Org-Id: 497f6eca-6276-4993-bfeb-53cbbbba6f08\"\n  ],\n  CURLOPT_URL => \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions/\" . sessionId . \"?\" . http_build_query($query),\n  CURLOPT_RETURNTRANSFER => true,\n  CURLOPT_CUSTOMREQUEST => \"GET\",\n]);\n\n$response = curl_exec($curl);\n$error = curl_error($curl);\n\ncurl_close($curl);\n\nif ($error) {\n  echo \"cURL Error #:\" . $error;\n} else {\n  echo $response;\n}"},{"lang":"go","title":"Go","source":"package main\n\nimport (\n  \"fmt\"\n  \"net/http\"\n  \"io/ioutil\"\n)\n\nfunc main() {\n  sessionId := \"770e8400-e29b-41d4-a716-446655440000\";\n  reqUrl := \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions/\" + sessionId\n  req, err := http.NewRequest(\"GET\", reqUrl, nil)\n\n  query := req.URL.Query()\n  query.Add(\"response_code\", \"string\")\n  req.URL.RawQuery = query.Encode()\n\n  if err != nil {\n    panic(err)\n  }\n  req.Header.Add(\"X-Org-Id\", \"497f6eca-6276-4993-bfeb-53cbbbba6f08\")\n  req.Header.Add(\"X-Environment\", \"beta\")\n  req.Header.Add(\"Authorization\", \"Bearer <YOUR_JWT_HERE>\")\n  res, err := http.DefaultClient.Do(req)\n  if err != nil {\n    panic(err)\n  }\n  defer res.Body.Close()\n  body, err := ioutil.ReadAll(res.Body)\n  if err != nil {\n    panic(err)\n  }\n\n  fmt.Println(res)\n  fmt.Println(string(body))\n}"},{"lang":"ruby","title":"Ruby","source":"require 'uri'\nrequire 'net/http'\nrequire 'openssl'\n\nsession_id = '770e8400-e29b-41d4-a716-446655440000'\nurl = URI('https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions/' + session_id)\nparams = {response_code: 'string'}\nurl.query = URI.encode_www_form(params)\n\nhttp = Net::HTTP.new(url.host, url.port)\nhttp.use_ssl = true\n\nrequest = Net::HTTP::Get.new(url)\nrequest['X-Org-Id'] = '497f6eca-6276-4993-bfeb-53cbbbba6f08'\nrequest['X-Environment'] = 'beta'\nrequest['Authorization'] = 'Bearer <YOUR_JWT_HERE>'\n\nresponse = http.request(request)\nputs response.read_body\n"},{"lang":"r","title":"R","source":"library(httr)\n\nsession_id = \"770e8400-e29b-41d4-a716-446655440000\"\n\n# create you own operator\n\"%&%\" <- function(x, y)paste0(x,y)\n\nurl = \"https://api.dev.deepcredentials.swiss/b2b/v1/verification-sessions/\" %&% session_id %&% \"?response_code=string\"\n\ndata_req <- GET(\n  url,\n  add_headers(\"X-Org-Id\" = \"497f6eca-6276-4993-bfeb-53cbbbba6f08\", \"X-Environment\" = \"beta\", \"Authorization\" = \"Bearer <YOUR_JWT_HERE>\"),\n  verbose()\n)\n\ncontent(data_req)"}]},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-1","__idx":14},"children":["Response"]},{"$$mdtype":"Tag","name":"JsonSchema","attributes":{"schema":{"$ref":"../../openapi/verification-v1.yaml#/components/schemas/b2b.b2bSessionResponse"},"options":{"requiredPropsFirst":true},"schemaResolved":{"openapi":"3.1.0","components":{"schemas":{"__root":{"$ref":"#/components/schemas/b2b.b2bSessionResponse"},"claimtypes.ClaimDisplay":{"properties":{"locale":{"description":"Language of the text: \"de\", \"fr\", \"it\" or \"en\".","type":"string"},"name":{"description":"The text in this language.","type":"string"}},"required":["name","locale"],"description":"ClaimDisplay is one localized text (a label or a description) for a claim or an enum option.","type":"object"},"b2b.sessionCaseRef":{"properties":{"id":{"type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000","description":"Case id: read it at GET /b2b/v1/verification-cases/{caseId}. UUID v4 identifier."},"title":{"items":{"$ref":"#/components/schemas/claimtypes.ClaimDisplay"},"description":"The case's localised headline for the verification screen, if it has one.","type":"array"},"version":{"format":"int64","description":"The case's contract version this session ran. Absent on a session launched before cases carried versions.","type":"integer"}},"required":["id"],"description":"The verification case a session was launched from.","type":"object"},"b2b.sessionCredentialDefinitionRef":{"properties":{"has_logo":{"description":"Whether the credential definition currently has an uploaded logo.","type":"boolean"},"id":{"type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000","description":"Credential definition UUID. UUID v4 identifier."},"name":{"description":"Human-readable credential definition name.","type":"string"}},"required":["id","name","has_logo"],"description":"The credential definition a verification session was launched from.","type":"object"},"b2b.b2bIssuerTrust":{"properties":{"compliant_actor":{"description":"trust_protocol_2 only: the issuer is not on the non-compliance list.","type":"boolean"},"governed_use_case":{"description":"trust_protocol_2 only: the credential type is one only authorized issuers may issue.","type":"boolean"},"governed_use_case_authorization":{"description":"trust_protocol_2 only: the issuer is authorized to issue it.","type":"boolean"},"identity":{"description":"trust_protocol_2 only: the registry holds a valid identity trust statement for the issuer.","type":"boolean"},"method":{"description":"\"trusted_authority\" or \"trust_protocol_2\".","type":"string"}},"required":["method","identity","compliant_actor","governed_use_case","governed_use_case_authorization"],"description":"b2bIssuerTrust says on what basis a presented credential's issuer was accepted.","type":"object"},"b2b.b2bAttributeConstraints":{"properties":{"max":{"oneOf":[{"type":"number"},{"type":"string"}],"description":"Inclusive upper bound, in the same forms as `min`. `today-18y` as `max` of a birth date means at least 18 years old."},"min":{"oneOf":[{"type":"number"},{"type":"string"}],"description":"Inclusive lower bound: a number, or for a date an ISO date (`2000-01-01`) or a date relative to the day of verification (`today`, `today-18y`, `today+30d`, `today-6m`)."},"values":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"boolean"}]},"description":"Allowed values: strings for string and enum attributes, booleans for a boolean attribute."}},"required":[],"description":"What a presented value of an attribute must satisfy. Which fields apply depends on the attribute's value type, and a field the type does not take is refused with 400 invalid\\_argument:\n\n  - string: values, the allowed non-empty strings.\n  - enum: values, keys from the bound claims' options; a key that is not an option of every bound claim is refused.\n  - boolean: values, \\[true] or \\[false].\n  - integer, number: min and/or max, numbers, inclusive.\n  - date: min and/or max, inclusive, each an ISO date (2000-01-01) or a date relative to the day of verification (today, today-18y, today+30d, today-6m); max today-18y on a birth date means at least 18 years old. min above max is refused.\n  - image/jpeg: none; an image can be asked for, not constrained.","type":"object"},"b2b.b2bSessionAttribute":{"properties":{"bindings":{"additionalProperties":{"type":"string"},"description":"The claim this attribute read in each accepted credential, keyed by credential definition id.","type":"object"},"constraints":{"allOf":[{"$ref":"#/components/schemas/b2b.b2bAttributeConstraints"}],"description":"What the verifier checked a presented value against, if anything."},"id":{"description":"The attribute's id: the key of its value in the session's `attributes`.","type":"string"},"label":{"description":"Display name of the attribute, for your staff. Absent: the bound claim's label is shown.","type":"string"},"sensitive":{"description":"True when a bound claim is marked sensitive in its credential definition.","type":"boolean"},"value_type":{"description":"Value type of the attribute (\"string\", \"integer\", \"number\", \"boolean\", \"date\", \"enum\", \"image/jpeg\").","type":"string"}},"required":["id","value_type","sensitive"],"description":"One attribute a verification session asked for, as launched.","type":"object"},"verification.SessionStatus":{"type":"string","enum":["pending","success","failed","expired"],"description":"Lifecycle state of a verification session."},"b2b.b2bSessionResponse":{"properties":{"accepted_issuer_dids":{"items":{"type":"string"},"description":"The issuer DIDs this session trusted: those pinned on its credential definitions in its environment, every accepted credential's together. A credential from any other issuer is refused.","type":"array"},"attributes":{"description":"On success: the disclosed values keyed by attribute id — the case's attribute ids, the same keys whichever accepted credential the holder presented, or the claim keys on a credential-definition session. Absent for sessions of cases launched before attributes existed.","type":"object"},"attributes_withheld":{"description":"True when the session has disclosed values that this read leaves out: a session created with \\`redirect\\_uri\\` returns \\`attributes\\` only to GET /b2b/v1/verification-sessions/{sessionId} with the \\`response\\_code\\` the wallet's redirect carried, and never in the list.","type":"boolean"},"case":{"allOf":[{"$ref":"#/components/schemas/b2b.sessionCaseRef"}],"description":"The verification case this session ran, only on a session launched from a case (POST /b2b/v1/verification-cases/{caseId}/sessions). Exactly one of \\`case\\` and \\`credential\\_definition\\` is present."},"completed_at":{"format":"date-time","description":"Set when the session leaves pending (success, failed, or expired).","type":"string"},"created_at":{"format":"date-time","description":"When the session was created (RFC3339).","type":"string"},"credential_definition":{"allOf":[{"$ref":"#/components/schemas/b2b.sessionCredentialDefinitionRef"}],"description":"The credential definition this session verifies, only on a session created from one (POST /b2b/v1/verification-sessions). Exactly one of \\`case\\` and \\`credential\\_definition\\` is present."},"credential_status":{"description":"On success: the token-status-list state of the credential the holder presented — \"valid\", \"suspended\" (shown as \"Locked\" in the portal), or \"revoked\". Resolved when the holder presented and never recomputed.\n\nA \"suspended\" or \"revoked\" value still accompanies a successful verification with its disclosed claims: the wallet can present such a credential and the holder can consent to sharing it, so the verifier is given the state and applies its own policy. Branch on this in addition to \\`status\\` if a locked credential should not be accepted.","type":"string"},"deeplink":{"description":"Only when status is pending: wallet deep link (e.g. openid4vp://...).","type":"string"},"environment":{"description":"Swiyu environment: \"beta\" or \"production\" (matches the credential binding).","type":"string"},"error_code":{"description":"Machine-readable failure reason when status is failed or expired: one of the session error codes listed in the Verification Flow guide (\"Session error\\_code values\"), each with whether launching a new session can succeed. A wallet's own error is mapped onto that vocabulary (presentation\\_declined, request\\_rejected\\_by\\_wallet, wallet\\_error); the raw OAuth code is never exposed.","type":"string"},"error_description":{"description":"Human-readable error detail when status is failed or expired, written by the platform for the code. On attribute\\_value\\_rejected it is one fixed sentence that names neither the attribute nor the value: which rule failed is what the case gates on.","type":"string"},"expires_at":{"format":"date-time","description":"When a pending session expires if not completed (RFC3339).","type":"string"},"issuer_trust":{"allOf":[{"$ref":"#/components/schemas/b2b.b2bIssuerTrust"}],"description":"On success: on what basis the presented credential's issuer was accepted. \\`method\\` is \"trusted\\_authority\" when the issuer is one of \\`accepted\\_issuer\\_dids\\`, or \"trust\\_protocol\\_2\" when the session pins none (Sandbox only) and the swiyu trust registry vouches for the issuer; the other fields are that registry's trust marks."},"presented_credential_definition_id":{"type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000","description":"On success: the credential definition of the credential the holder actually presented, one of the case's \\`credential\\_definition\\_ids\\`. On a credential-definition session it is \\`credential\\_definition.id\\`."},"purpose":{"description":"Purpose string from the create request, if any.","type":"string"},"qr_content_base64":{"description":"Only when status is pending: Base64 PNG QR code for the wallet.","type":"string"},"redirect_uri":{"description":"The same-device redirect the session was created with, if any.","type":"string"},"reference_id":{"description":"Your reference_id from the create request, if any.","type":"string"},"requested_attributes":{"items":{"$ref":"#/components/schemas/b2b.b2bSessionAttribute"},"description":"The attributes this session asked for, as launched: the case's, or the definition's claims on a direct session. Bindings are keyed by credential definition id, as on the case.","type":"array"},"session_id":{"type":"string","format":"uuid","example":"550e8400-e29b-41d4-a716-446655440000","description":"Session id (matches the value returned at creation time). UUID v4 identifier."},"status":{"allOf":[{"$ref":"#/components/schemas/verification.SessionStatus"}],"description":"Current lifecycle state of the session."}},"required":["session_id","status","expires_at","environment","created_at"],"description":"The current status and outcome of a verification session.","type":"object"}}}},"schemaResolvedErrors":[]},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A session reads the same whichever way it was launched. What it ran is under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["case"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["version"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["title"]},") on a session launched from a case, or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_definition"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["name"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["has_logo"]},") on a session created for a definition: exactly one of the two is present. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /b2b/v1/verification-sessions?case_id=…"]}," lists the sessions your organization launched from one case, your own or another organization's."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["While ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]},", the response carries ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["qr_content_base64"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deeplink"]}," next to what the session asked for, and no disclosed data. On ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attributes"]}," holds the disclosed values keyed by attribute id — on a case session the case's attribute ids, the same keys whichever accepted credential the holder presented; on a credential-definition session the claim keys — and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["presented_credential_definition_id"]}," names the credential definition of the credential the holder actually presented (one of the case's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_definition_ids"]},"; on a credential-definition session, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_definition.id"]},"); ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["qr_content_base64"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deeplink"]}," are omitted. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requested_attributes"]}," echoes what the session asked for, each with its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["value_type"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sensitive"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["constraints"]},", and its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bindings"]}," keyed by credential definition id exactly as on the case (on a credential-definition session, the one definition's id). A session reads the same whichever organization's case it ran (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/verification/cases#whose-case"},"children":["Whose case"]},")."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A value that fails one of an attribute's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["constraints"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["values"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["min"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["max"]},") fails the session with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_code: \"attribute_value_rejected\""]}," and the fixed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_description"]}," described in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/verification/cases#what-the-verifier-learns"},"children":["Verification Cases"]},". The constraint is enforced by the verifier after the wallet's response, so treat it as authoritative and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attributes"]}," as already checked."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A session created with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirect_uri"]}," returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attributes"]}," only to a read that passes the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["response_code"]}," the wallet's redirect carried; without it, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attributes"]}," is left out and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attributes_withheld"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", and the list never carries them. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/verification/same-device#step-3-read-the-result-with-the-code"},"children":["Same-Device Return"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_status"]}," reports the token-status-list state of the credential the holder actually presented. Values: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["valid"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["suspended"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["revoked"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"A locked or revoked credential still verifies successfully"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["suspended"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["revoked"]}," arrive with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status: \"success\""]}," and the full ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attributes"]},". This is not a bug: a wallet can present a locked or revoked credential and the holder can consent to sharing it, so the presentation genuinely verified — the issuer has simply since withdrawn the credential's validity."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Checking ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status == \"success\""]}," alone will accept a withdrawn credential."]}," If your integration must not accept one, branch on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_status"]}," in addition to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]},"."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When status is no longer ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["qr_content_base64"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deeplink"]}," are omitted from the response — the wallet flow is complete."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Polling recommendations:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Poll every 2–3 seconds."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Stop when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expired"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Respect the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_at"]}," timestamp — stop polling after expiration."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"option-b-webhooks","__idx":15},"children":["Option B: Webhooks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For production integrations, opt in to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/openapi/webhook-events-v1"},"children":["Verification Completed"]}," webhook event. Its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," field is a slim terminal hint containing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session_id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]},", and, on successful status resolution, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_status"]},". Follow it with authenticated ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /b2b/v1/verification-sessions/{sessionId}"]}," to reconcile the authoritative session and read disclosed fields. The callback is not a copy of the GET response."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/webhooks"},"children":["Webhooks guide"]}," for setup, signature verification, and secret rotation."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"error-handling","__idx":16},"children":["Error handling"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["On failure:"]}," the same response object is returned with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status: failed"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_code"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_description"]}," populated. See the full schema above. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_code"]}," is always one of the values below, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_description"]}," is written by the platform for that code: what the holder's wallet said is never passed through."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"session-error_code-values","__idx":17},"children":["Session ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_code"]}," values"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The wallet reports the holder's side of the exchange with the OpenID4VP error codes, and the platform folds them into this vocabulary before the session is stored: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["access_denied"]}," becomes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["presentation_declined"]},", a refusal of the request itself becomes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request_rejected_by_wallet"]},", and anything else ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["wallet_error"]},". Branch on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_code"]},"; the third column says whether launching a new session for the same holder can succeed, all else being equal."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"error_code"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_code"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Can a new session succeed?"},"children":["Can a new session succeed?"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["presentation_declined"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The holder closed the request without presenting a credential: they declined, or had nothing matching to present. The swiyu wallet does not distinguish the two, by design."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes — ask the holder again."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session_expired"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The session passed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_at"]}," while still ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status: expired"]},")."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_not_accepted"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The holder presented a credential type the session does not accept."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Not with that credential; yes if the holder holds one the case accepts."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["issuer_not_trusted"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The credential was issued by a DID the session does not trust: not one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accepted_issuer_dids"]},", or, on a Sandbox session that pins none, not an issuer the swiyu trust registry vouches for (see ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["issuer_trust"]},")."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No, until the issuers pinned on the credential definition change, or the holder obtains a credential from a trusted issuer."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["issuer_trust_unavailable"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The session pins no issuer, and the swiyu trust registry could not be asked about this one."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maybe later, once the trust registry answers."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attribute_value_rejected"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A disclosed value did not satisfy one of the case's constraints. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_description"]}," is one fixed sentence that names neither the attribute nor the value."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No, for this holder: the case's rule is what failed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["verification_failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The credential's signature, holder binding or nonce did not verify."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No, with this credential."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status_check_failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The credential's token-status-list entry could not be fetched or its signature could not be verified. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_status"]}," is absent."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maybe later — see the note below; the cause is on the issuer's side."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["did_resolution_failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The issuer's DID could not be resolved."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maybe later, once the DID registry answers."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["key_extraction_failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The issuer's DID document does not carry the key the credential is signed with."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maybe later, once the issuer's DID document lists the key again."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_vp_token"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The wallet's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vp_token"]}," could not be parsed, or names a credential query the presented credential does not answer."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maybe — a wallet fault; report it if it recurs."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["response_read_failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The wallet's response could not be decrypted or parsed, or the wallet sent the presentation unencrypted."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maybe — a wallet fault; report it if it recurs."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request_rejected_by_wallet"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The wallet did not accept the verification request (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_description"]}," names its code, e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_request"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vp_formats_not_supported"]},")."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No: nothing the holder or your integration can change; report it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["wallet_error"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The wallet reported an error the platform has no closer reading for (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_description"]}," names its code, e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["server_error"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["temporarily_unavailable"]},")."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maybe later."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invalid_request_object"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The platform's own stored request object was unusable. Internal."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes — a new session builds a new request; report it if it recurs."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["claims_parse_failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The verified claims could not be decoded. Internal."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maybe; report it if it recurs."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["On a status-check failure:"]}," if the credential's token-status-list entry can't be fetched or its signature can't be verified, the session fails with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error_code: status_check_failed"]}," rather than being reported with an unknown or stale state. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential_status"]}," is absent on such a session."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Status-check failures can originate from issuer infrastructure"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status_check_failed"]}," rejection may result from problems with the issuer's status-list infrastructure, not from a cryptographically invalid credential. For example, the issuer rotates its signing key and republishes the status list under the new key — credentials issued before the rotation reference the old key and can no longer have their list verified — or the issuer issues credentials with no status reference at all. In both cases, a valid credential is rejected and your session returns no claims. This is especially relevant when verifying credentials from issuers you do not operate."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["On expiration:"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sessions that remain ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}," past their ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expires_at"]}," transition to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expired"]}," automatically."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/error-handling"},"children":["Error Handling"]}," for a complete list of error codes."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":18},"children":["Next steps"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/verification/same-device"},"children":["Same-Device Return"]}," — Bring a holder on their phone back to you, and bind the result to their browser."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/webhooks"},"children":["Webhooks"]}," — Receive verification results in real time."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/guides/error-handling"},"children":["Error Handling"]}," — Handle all possible error scenarios."]}]}]},"headings":[{"value":"Verification Flow","id":"verification-flow","depth":1},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Session lifecycle","id":"session-lifecycle","depth":2},{"value":"Statuses","id":"statuses","depth":3},{"value":"Which one: a credential definition or a case","id":"which-one-a-credential-definition-or-a-case","depth":2},{"value":"Step 1: Create a session","id":"step-1-create-a-session","depth":2},{"value":"Verify a credential definition","id":"verify-a-credential-definition","depth":3},{"value":"Launch a verification case","id":"launch-a-verification-case","depth":3},{"value":"Response","id":"response","depth":3},{"value":"Step 2: Present the QR code","id":"step-2-present-the-qr-code","depth":2},{"value":"QR code (desktop / in-person)","id":"qr-code-desktop--in-person","depth":3},{"value":"Deeplink (mobile)","id":"deeplink-mobile","depth":3},{"value":"Step 3: Retrieve the result","id":"step-3-retrieve-the-result","depth":2},{"value":"Option A: Polling","id":"option-a-polling","depth":3},{"value":"Response","id":"response-1","depth":3},{"value":"Option B: Webhooks","id":"option-b-webhooks","depth":3},{"value":"Error handling","id":"error-handling","depth":2},{"value":"Session error_code values","id":"session-error_code-values","depth":3},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"seo":{"title":"Verification Flow"}},"lastModified":"2026-10-21T09:09:47.194Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/guides/verification/flow","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}