{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition","tabs","tab"]},"redocly_category":"Guides","product":"Identity Management","type":"markdown"},"seo":{"title":"Risk-based login quickstart","description":"Everything about Mosaic Journeys, SDKs, and APIs","siteUrl":"https://developer.transmitsecurity.com/","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"risk-based-login-quickstart","__idx":0},"children":["Risk-based login quickstart"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide walks you through building a simplistic authentication flow that adapts based on real-time risk indicators using ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/user/identity_threat_protection"},"children":["Identity Threat Protection"]}," and journeys."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide explains how to implement ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["risk-based login"]}," using ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/journeys_intro"},"children":["Journeys"]}," and Orchestration SDKs."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-it-works","__idx":1},"children":["How it works"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a user requests to log in to the app, the client invokes the authentication journey (1) and obtains the user credentials (2). After authenticating the user, Mosaic's Identity Threat Protection (3) evaluates the login event and returns a set of discrete risk indicators (4). The risk signals are then evaluated against the rule engine, which maps them to an Allow, Deny, or Custom decision (5). The Risk Level Analysis step branches accordingly, letting you handle each outcome directly in the journey (6)."]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"sequenceDiagram\n    participant User\n    participant App as Client App\n    participant SDK as Orchestration SDK\n    participant Mosaic\n\n    User-->>App: Request login\n    App->>SDK: startJourney()\n    SDK-->>Mosaic: Start authentication journey\n    Mosaic-->>SDK: Login Form step\n    SDK->>App: journeyStepId: LoginForm\n    App-->>User: Display login form\n    User-->>App: Enter credentials\n    App->>SDK: submitClientResponse(\"password\", data)\n    SDK-->>Mosaic: Submit credentials\n    Mosaic-->>Mosaic: Authenticate user (Password Authentication)\n    Mosaic-->>Mosaic: Evaluate risk (Identity Threat Protection)\n    Mosaic-->>Mosaic: Evaluate against rules\n\n    alt Allow (rule matched)\n        Mosaic-->>SDK: Journey complete\n        SDK->>App: Success + token\n    else Deny (rule matched)\n        Mosaic-->>SDK: Journey rejected\n        SDK->>App: Rejection\n    else Custom (no rule matched)\n        Mosaic-->>Mosaic: Evaluate conditions on risk factors\n        Mosaic-->>SDK: Journey complete or rejected\n        SDK->>App: Success or Rejection\n    end\n","diagramHtml":"<svg id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"max-width: 1206px;\" viewBox=\"-50 -10 1206 1468\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><g><rect x=\"864\" y=\"1382\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Mosaic\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"939\" y=\"1414.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"939\" dy=\"0\">Mosaic</tspan></text></g><g><rect x=\"573.5\" y=\"1382\" fill=\"#eaeaea\" stroke=\"#666\" width=\"157\" height=\"65\" name=\"SDK\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"652\" y=\"1414.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"652\" dy=\"0\">Orchestration SDK</tspan></text></g><g><rect x=\"205\" y=\"1382\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"App\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"280\" y=\"1414.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"280\" dy=\"0\">Client App</tspan></text></g><g><rect x=\"0\" y=\"1382\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"User\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"1414.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">User</tspan></text></g><g><line id=\"actor3\" x1=\"939\" y1=\"65\" x2=\"939\" y2=\"1382\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Mosaic\" data-et=\"life-line\" data-id=\"Mosaic\"></line><g id=\"root-3\" data-et=\"participant\" data-type=\"participant\" data-id=\"Mosaic\"><rect x=\"864\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Mosaic\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"939\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"939\" dy=\"0\">Mosaic</tspan></text></g></g><g><line id=\"actor2\" x1=\"652\" y1=\"65\" x2=\"652\" y2=\"1382\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"SDK\" data-et=\"life-line\" data-id=\"SDK\"></line><g id=\"root-2\" data-et=\"participant\" data-type=\"participant\" data-id=\"SDK\"><rect x=\"573.5\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"157\" height=\"65\" name=\"SDK\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"652\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"652\" dy=\"0\">Orchestration SDK</tspan></text></g></g><g><line id=\"actor1\" x1=\"280\" y1=\"65\" x2=\"280\" y2=\"1382\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"App\" data-et=\"life-line\" data-id=\"App\"></line><g id=\"root-1\" data-et=\"participant\" data-type=\"participant\" data-id=\"App\"><rect x=\"205\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"App\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"280\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"280\" dy=\"0\">Client App</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"1382\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"User\" data-et=\"life-line\" data-id=\"User\"></line><g id=\"root-0\" data-et=\"participant\" data-type=\"participant\" data-id=\"User\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"User\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">User</tspan></text></g></g><style>#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .error-icon{fill:#552222;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .error-text{fill:#552222;stroke:#552222;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .edge-thickness-normal{stroke-width:1px;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .edge-thickness-thick{stroke-width:3.5px;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .edge-pattern-solid{stroke-dasharray:0;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .edge-pattern-dashed{stroke-dasharray:3;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .edge-pattern-dotted{stroke-dasharray:2;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .marker{fill:#333333;stroke:#333333;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .marker.cross{stroke:#333333;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c svg{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c p{margin:0;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .actor{stroke:#9370DB;fill:#ECECFF;stroke-width:1;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c rect.actor.outer-path[data-look=\"neo\"]{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c rect.note[data-look=\"neo\"]{stroke:#aaaa33;fill:#fff5ad;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c text.actor&gt;tspan{fill:black;stroke:none;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .actor-line{stroke:#9370DB;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .innerArc{stroke-width:1.5;stroke-dasharray:none;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [id$=\"-arrowhead\"] path{fill:#333;stroke:#333;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .sequenceNumber{fill:white;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [id$=\"-sequencenumber\"]{fill:#333;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [id$=\"-crosshead\"] path{fill:#333;stroke:#333;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .messageText{fill:#333;stroke:none;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .labelBox{stroke:#9370DB;fill:#ECECFF;filter:none;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .labelText,#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .labelText&gt;tspan{fill:black;stroke:none;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .loopText,#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .loopText&gt;tspan{fill:black;stroke:none;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .sectionTitle,#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .sectionTitle&gt;tspan{fill:black;stroke:none;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#9370DB;fill:#9370DB;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .note{stroke:#aaaa33;fill:#fff5ad;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .noteText,#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .noteText&gt;tspan{fill:black;stroke:none;font-weight:normal;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .activation0{fill:#f4f4f4;stroke:#666;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .activation1{fill:#f4f4f4;stroke:#666;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .activation2{fill:#f4f4f4;stroke:#666;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .actorPopupMenu{position:absolute;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .actor-man circle,#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c line{fill:#ECECFF;stroke-width:2px;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c g rect.rect{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));stroke:#9370DB;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c .node .neo-node{stroke:#9370DB;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [data-look=\"neo\"].node rect,#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [data-look=\"neo\"].cluster rect,#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}</style><g></g><defs><symbol id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><defs><marker id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-solidTopArrowHead\" refX=\"7.9\" refY=\"7.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 8 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-solidBottomArrowHead\" refX=\"7.9\" refY=\"0.75\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 0 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-stickTopArrowHead\" refX=\"7.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 7 7\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><defs><marker id=\"diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-stickBottomArrowHead\" refX=\"7.5\" refY=\"0\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 7 L 7 0\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><g data-et=\"control-structure\" data-id=\"i22\"><line x1=\"269\" y1=\"813\" x2=\"1077.5\" y2=\"813\" class=\"loopLine\"></line><line x1=\"1077.5\" y1=\"813\" x2=\"1077.5\" y2=\"1362\" class=\"loopLine\"></line><line x1=\"269\" y1=\"1362\" x2=\"1077.5\" y2=\"1362\" class=\"loopLine\"></line><line x1=\"269\" y1=\"813\" x2=\"269\" y2=\"1362\" class=\"loopLine\"></line><line x1=\"269\" y1=\"973\" x2=\"1077.5\" y2=\"973\" class=\"loopLine\" style=\"stroke-dasharray: 3, 3;\"></line><line x1=\"269\" y1=\"1128\" x2=\"1077.5\" y2=\"1128\" class=\"loopLine\" style=\"stroke-dasharray: 3, 3;\"></line><polygon points=\"269,813 319,813 319,826 310.6,833 269,833\" class=\"labelBox\"></polygon><text x=\"294\" y=\"826\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"labelText\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">alt</text><text x=\"698.25\" y=\"831\" text-anchor=\"middle\" class=\"loopText\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"698.25\">[Allow (rule matched)]</tspan></text><text x=\"673.25\" y=\"991\" text-anchor=\"middle\" class=\"sectionTitle\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">[Deny (rule matched)]</text><text x=\"673.25\" y=\"1146\" text-anchor=\"middle\" class=\"sectionTitle\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">[Custom (no rule matched)]</text></g><text x=\"176\" y=\"80\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Request login</text><line x1=\"76\" y1=\"119\" x2=\"276\" y2=\"119\" class=\"messageLine1\" data-et=\"message\" data-id=\"i0\" data-from=\"User\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"465\" y=\"134\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">startJourney()</text><line x1=\"281\" y1=\"173\" x2=\"648\" y2=\"173\" class=\"messageLine0\" data-et=\"message\" data-id=\"i1\" data-from=\"App\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"fill: none;\"></line><text x=\"794\" y=\"188\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Start authentication journey</text><line x1=\"653\" y1=\"227\" x2=\"935\" y2=\"227\" class=\"messageLine1\" data-et=\"message\" data-id=\"i2\" data-from=\"SDK\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"797\" y=\"242\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Login Form step</text><line x1=\"938\" y1=\"281\" x2=\"656\" y2=\"281\" class=\"messageLine1\" data-et=\"message\" data-id=\"i3\" data-from=\"Mosaic\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"468\" y=\"296\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">journeyStepId: LoginForm</text><line x1=\"651\" y1=\"335\" x2=\"284\" y2=\"335\" class=\"messageLine0\" data-et=\"message\" data-id=\"i4\" data-from=\"SDK\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"fill: none;\"></line><text x=\"179\" y=\"350\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Display login form</text><line x1=\"279\" y1=\"389\" x2=\"79\" y2=\"389\" class=\"messageLine1\" data-et=\"message\" data-id=\"i5\" data-from=\"App\" data-to=\"User\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"176\" y=\"404\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Enter credentials</text><line x1=\"76\" y1=\"443\" x2=\"276\" y2=\"443\" class=\"messageLine1\" data-et=\"message\" data-id=\"i6\" data-from=\"User\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"465\" y=\"458\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">submitClientResponse(\"password\", data)</text><line x1=\"281\" y1=\"497\" x2=\"648\" y2=\"497\" class=\"messageLine0\" data-et=\"message\" data-id=\"i7\" data-from=\"App\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"fill: none;\"></line><text x=\"794\" y=\"512\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Submit credentials</text><line x1=\"653\" y1=\"551\" x2=\"935\" y2=\"551\" class=\"messageLine1\" data-et=\"message\" data-id=\"i8\" data-from=\"SDK\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"940\" y=\"566\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Authenticate user (Password Authentication)</text><path d=\"M 940,605 C 1000,595 1000,635 940,625\" class=\"messageLine1\" data-et=\"message\" data-id=\"i9\" data-from=\"Mosaic\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></path><text x=\"940\" y=\"650\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Evaluate risk (Identity Threat Protection)</text><path d=\"M 940,689 C 1000,679 1000,719 940,709\" class=\"messageLine1\" data-et=\"message\" data-id=\"i10\" data-from=\"Mosaic\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></path><text x=\"940\" y=\"734\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Evaluate against rules</text><path d=\"M 940,773 C 1000,763 1000,803 940,793\" class=\"messageLine1\" data-et=\"message\" data-id=\"i11\" data-from=\"Mosaic\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></path><text x=\"797\" y=\"865\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Journey complete</text><line x1=\"938\" y1=\"904\" x2=\"656\" y2=\"904\" class=\"messageLine1\" data-et=\"message\" data-id=\"i13\" data-from=\"Mosaic\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"468\" y=\"919\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Success + token</text><line x1=\"651\" y1=\"958\" x2=\"284\" y2=\"958\" class=\"messageLine0\" data-et=\"message\" data-id=\"i14\" data-from=\"SDK\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"fill: none;\"></line><text x=\"797\" y=\"1020\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Journey rejected</text><line x1=\"938\" y1=\"1059\" x2=\"656\" y2=\"1059\" class=\"messageLine1\" data-et=\"message\" data-id=\"i16\" data-from=\"Mosaic\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"468\" y=\"1074\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Rejection</text><line x1=\"651\" y1=\"1113\" x2=\"284\" y2=\"1113\" class=\"messageLine0\" data-et=\"message\" data-id=\"i17\" data-from=\"SDK\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"fill: none;\"></line><text x=\"940\" y=\"1175\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Evaluate conditions on risk factors</text><path d=\"M 940,1214 C 1000,1204 1000,1244 940,1234\" class=\"messageLine1\" data-et=\"message\" data-id=\"i19\" data-from=\"Mosaic\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></path><text x=\"797\" y=\"1259\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Journey complete or rejected</text><line x1=\"938\" y1=\"1298\" x2=\"656\" y2=\"1298\" class=\"messageLine1\" data-et=\"message\" data-id=\"i20\" data-from=\"Mosaic\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"468\" y=\"1313\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Success or Rejection</text><line x1=\"651\" y1=\"1352\" x2=\"284\" y2=\"1352\" class=\"messageLine0\" data-et=\"message\" data-id=\"i21\" data-from=\"SDK\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-c2bd6f79fb7800d070332e1d4465b248d0aecbfe2a11fe3239bc01aba3a9787c-arrowhead)\" style=\"fill: none;\"></line></svg>","diagramHtmlDark":"<svg id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"max-width: 1206px;\" viewBox=\"-50 -10 1206 1468\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><g><rect x=\"864\" y=\"1382\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Mosaic\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"939\" y=\"1414.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"939\" dy=\"0\">Mosaic</tspan></text></g><g><rect x=\"573.5\" y=\"1382\" fill=\"#eaeaea\" stroke=\"#666\" width=\"157\" height=\"65\" name=\"SDK\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"652\" y=\"1414.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"652\" dy=\"0\">Orchestration SDK</tspan></text></g><g><rect x=\"205\" y=\"1382\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"App\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"280\" y=\"1414.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"280\" dy=\"0\">Client App</tspan></text></g><g><rect x=\"0\" y=\"1382\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"User\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"1414.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">User</tspan></text></g><g><line id=\"actor3\" x1=\"939\" y1=\"65\" x2=\"939\" y2=\"1382\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"Mosaic\" data-et=\"life-line\" data-id=\"Mosaic\"></line><g id=\"root-3\" data-et=\"participant\" data-type=\"participant\" data-id=\"Mosaic\"><rect x=\"864\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"Mosaic\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"939\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"939\" dy=\"0\">Mosaic</tspan></text></g></g><g><line id=\"actor2\" x1=\"652\" y1=\"65\" x2=\"652\" y2=\"1382\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"SDK\" data-et=\"life-line\" data-id=\"SDK\"></line><g id=\"root-2\" data-et=\"participant\" data-type=\"participant\" data-id=\"SDK\"><rect x=\"573.5\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"157\" height=\"65\" name=\"SDK\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"652\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"652\" dy=\"0\">Orchestration SDK</tspan></text></g></g><g><line id=\"actor1\" x1=\"280\" y1=\"65\" x2=\"280\" y2=\"1382\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"App\" data-et=\"life-line\" data-id=\"App\"></line><g id=\"root-1\" data-et=\"participant\" data-type=\"participant\" data-id=\"App\"><rect x=\"205\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"App\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"280\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"280\" dy=\"0\">Client App</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"1382\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"User\" data-et=\"life-line\" data-id=\"User\"></line><g id=\"root-0\" data-et=\"participant\" data-type=\"participant\" data-id=\"User\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"User\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">User</tspan></text></g></g><style>#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .error-icon{fill:#a44141;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .error-text{fill:#ddd;stroke:#ddd;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .edge-thickness-normal{stroke-width:1px;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .edge-thickness-thick{stroke-width:3.5px;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .edge-pattern-solid{stroke-dasharray:0;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .marker{fill:lightgrey;stroke:lightgrey;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .marker.cross{stroke:lightgrey;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 svg{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 p{margin:0;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .actor{stroke:#ccc;fill:#1f2020;stroke-width:1;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 rect.actor.outer-path[data-look=\"neo\"]{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 rect.note[data-look=\"neo\"]{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 text.actor&gt;tspan{fill:lightgrey;stroke:none;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .actor-line{stroke:#ccc;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:lightgrey;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:lightgrey;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [id$=\"-arrowhead\"] path{fill:lightgrey;stroke:lightgrey;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .sequenceNumber{fill:black;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [id$=\"-sequencenumber\"]{fill:lightgrey;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [id$=\"-crosshead\"] path{fill:lightgrey;stroke:lightgrey;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .messageText{fill:lightgrey;stroke:none;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .labelBox{stroke:#ccc;fill:#1f2020;filter:none;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .labelText,#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .labelText&gt;tspan{fill:lightgrey;stroke:none;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .loopText,#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .loopText&gt;tspan{fill:lightgrey;stroke:none;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .sectionTitle,#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .sectionTitle&gt;tspan{fill:lightgrey;stroke:none;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#ccc;fill:#ccc;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .note{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .noteText,#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .noteText&gt;tspan{fill:rgb(183.8476190475, 181.5523809523, 181.5523809523);stroke:none;font-weight:normal;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .activation0{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .activation1{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .activation2{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .actorPopupMenu{position:absolute;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .actorPopupMenuPanel{position:absolute;fill:#1f2020;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .actor-man circle,#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 line{fill:#1f2020;stroke-width:2px;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 g rect.rect{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));stroke:#ccc;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 .node .neo-node{stroke:#ccc;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [data-look=\"neo\"].node rect,#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [data-look=\"neo\"].cluster rect,#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [data-look=\"neo\"].node polygon{stroke:url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [data-look=\"neo\"].node path{stroke:url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-gradient);stroke-width:1px;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [data-look=\"neo\"].node circle{stroke:url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}</style><g></g><defs><symbol id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><defs><marker id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-solidTopArrowHead\" refX=\"7.9\" refY=\"7.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 8 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-solidBottomArrowHead\" refX=\"7.9\" refY=\"0.75\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 0 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-stickTopArrowHead\" refX=\"7.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 7 7\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><defs><marker id=\"diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-stickBottomArrowHead\" refX=\"7.5\" refY=\"0\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 7 L 7 0\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><g data-et=\"control-structure\" data-id=\"i22\"><line x1=\"269\" y1=\"813\" x2=\"1077.5\" y2=\"813\" class=\"loopLine\"></line><line x1=\"1077.5\" y1=\"813\" x2=\"1077.5\" y2=\"1362\" class=\"loopLine\"></line><line x1=\"269\" y1=\"1362\" x2=\"1077.5\" y2=\"1362\" class=\"loopLine\"></line><line x1=\"269\" y1=\"813\" x2=\"269\" y2=\"1362\" class=\"loopLine\"></line><line x1=\"269\" y1=\"973\" x2=\"1077.5\" y2=\"973\" class=\"loopLine\" style=\"stroke-dasharray: 3, 3;\"></line><line x1=\"269\" y1=\"1128\" x2=\"1077.5\" y2=\"1128\" class=\"loopLine\" style=\"stroke-dasharray: 3, 3;\"></line><polygon points=\"269,813 319,813 319,826 310.6,833 269,833\" class=\"labelBox\"></polygon><text x=\"294\" y=\"826\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"labelText\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">alt</text><text x=\"698.25\" y=\"831\" text-anchor=\"middle\" class=\"loopText\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"698.25\">[Allow (rule matched)]</tspan></text><text x=\"673.25\" y=\"991\" text-anchor=\"middle\" class=\"sectionTitle\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">[Deny (rule matched)]</text><text x=\"673.25\" y=\"1146\" text-anchor=\"middle\" class=\"sectionTitle\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">[Custom (no rule matched)]</text></g><text x=\"176\" y=\"80\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Request login</text><line x1=\"76\" y1=\"119\" x2=\"276\" y2=\"119\" class=\"messageLine1\" data-et=\"message\" data-id=\"i0\" data-from=\"User\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"465\" y=\"134\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">startJourney()</text><line x1=\"281\" y1=\"173\" x2=\"648\" y2=\"173\" class=\"messageLine0\" data-et=\"message\" data-id=\"i1\" data-from=\"App\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"fill: none;\"></line><text x=\"794\" y=\"188\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Start authentication journey</text><line x1=\"653\" y1=\"227\" x2=\"935\" y2=\"227\" class=\"messageLine1\" data-et=\"message\" data-id=\"i2\" data-from=\"SDK\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"797\" y=\"242\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Login Form step</text><line x1=\"938\" y1=\"281\" x2=\"656\" y2=\"281\" class=\"messageLine1\" data-et=\"message\" data-id=\"i3\" data-from=\"Mosaic\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"468\" y=\"296\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">journeyStepId: LoginForm</text><line x1=\"651\" y1=\"335\" x2=\"284\" y2=\"335\" class=\"messageLine0\" data-et=\"message\" data-id=\"i4\" data-from=\"SDK\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"fill: none;\"></line><text x=\"179\" y=\"350\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Display login form</text><line x1=\"279\" y1=\"389\" x2=\"79\" y2=\"389\" class=\"messageLine1\" data-et=\"message\" data-id=\"i5\" data-from=\"App\" data-to=\"User\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"176\" y=\"404\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Enter credentials</text><line x1=\"76\" y1=\"443\" x2=\"276\" y2=\"443\" class=\"messageLine1\" data-et=\"message\" data-id=\"i6\" data-from=\"User\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"465\" y=\"458\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">submitClientResponse(\"password\", data)</text><line x1=\"281\" y1=\"497\" x2=\"648\" y2=\"497\" class=\"messageLine0\" data-et=\"message\" data-id=\"i7\" data-from=\"App\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"fill: none;\"></line><text x=\"794\" y=\"512\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Submit credentials</text><line x1=\"653\" y1=\"551\" x2=\"935\" y2=\"551\" class=\"messageLine1\" data-et=\"message\" data-id=\"i8\" data-from=\"SDK\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"940\" y=\"566\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Authenticate user (Password Authentication)</text><path d=\"M 940,605 C 1000,595 1000,635 940,625\" class=\"messageLine1\" data-et=\"message\" data-id=\"i9\" data-from=\"Mosaic\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></path><text x=\"940\" y=\"650\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Evaluate risk (Identity Threat Protection)</text><path d=\"M 940,689 C 1000,679 1000,719 940,709\" class=\"messageLine1\" data-et=\"message\" data-id=\"i10\" data-from=\"Mosaic\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></path><text x=\"940\" y=\"734\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Evaluate against rules</text><path d=\"M 940,773 C 1000,763 1000,803 940,793\" class=\"messageLine1\" data-et=\"message\" data-id=\"i11\" data-from=\"Mosaic\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></path><text x=\"797\" y=\"865\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Journey complete</text><line x1=\"938\" y1=\"904\" x2=\"656\" y2=\"904\" class=\"messageLine1\" data-et=\"message\" data-id=\"i13\" data-from=\"Mosaic\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"468\" y=\"919\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Success + token</text><line x1=\"651\" y1=\"958\" x2=\"284\" y2=\"958\" class=\"messageLine0\" data-et=\"message\" data-id=\"i14\" data-from=\"SDK\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"fill: none;\"></line><text x=\"797\" y=\"1020\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Journey rejected</text><line x1=\"938\" y1=\"1059\" x2=\"656\" y2=\"1059\" class=\"messageLine1\" data-et=\"message\" data-id=\"i16\" data-from=\"Mosaic\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"468\" y=\"1074\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Rejection</text><line x1=\"651\" y1=\"1113\" x2=\"284\" y2=\"1113\" class=\"messageLine0\" data-et=\"message\" data-id=\"i17\" data-from=\"SDK\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"fill: none;\"></line><text x=\"940\" y=\"1175\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Evaluate conditions on risk factors</text><path d=\"M 940,1214 C 1000,1204 1000,1244 940,1234\" class=\"messageLine1\" data-et=\"message\" data-id=\"i19\" data-from=\"Mosaic\" data-to=\"Mosaic\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></path><text x=\"797\" y=\"1259\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Journey complete or rejected</text><line x1=\"938\" y1=\"1298\" x2=\"656\" y2=\"1298\" class=\"messageLine1\" data-et=\"message\" data-id=\"i20\" data-from=\"Mosaic\" data-to=\"SDK\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"468\" y=\"1313\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Success or Rejection</text><line x1=\"651\" y1=\"1352\" x2=\"284\" y2=\"1352\" class=\"messageLine0\" data-et=\"message\" data-id=\"i21\" data-from=\"SDK\" data-to=\"App\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-40448c739d23921e8f0eaef20eaaba5a576982838119b9360a1872ff926bf647-arrowhead)\" style=\"fill: none;\"></line></svg>"},"children":["sequenceDiagram\n    participant User\n    participant App as Client App\n    participant SDK as Orchestration SDK\n    participant Mosaic\n\n    User-->>App: Request login\n    App->>SDK: startJourney()\n    SDK-->>Mosaic: Start authentication journey\n    Mosaic-->>SDK: Login Form step\n    SDK->>App: journeyStepId: LoginForm\n    App-->>User: Display login form\n    User-->>App: Enter credentials\n    App->>SDK: submitClientResponse(\"password\", data)\n    SDK-->>Mosaic: Submit credentials\n    Mosaic-->>Mosaic: Authenticate user (Password Authentication)\n    Mosaic-->>Mosaic: Evaluate risk (Identity Threat Protection)\n    Mosaic-->>Mosaic: Evaluate against rules\n\n    alt Allow (rule matched)\n        Mosaic-->>SDK: Journey complete\n        SDK->>App: Success + token\n    else Deny (rule matched)\n        Mosaic-->>SDK: Journey rejected\n        SDK->>App: Rejection\n    else Custom (no rule matched)\n        Mosaic-->>Mosaic: Evaluate conditions on risk factors\n        Mosaic-->>SDK: Journey complete or rejected\n        SDK->>App: Success or Rejection\n    end\n"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Important"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Identity Threat Protection returns risk indicators. The rule engine maps risk signals to Allow/Deny decisions. If no rule matches, the flow proceeds to the Custom branch where your journey defines how to act on the returned signals."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"before-you-start","__idx":2},"children":["Before you start"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge-wrapper"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge"},"children":["Admin Portal"]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If this is your first time integrating with Mosaic, create an application with OIDC client in the Admin Portal as described ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/user/create_new_application"},"children":["here"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Ensure that ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Identity Threat Protection"]}," is enabled as the risk engine for your tenant. Identity Threat Protection and Fraud Prevention are mutually exclusive—contact your Customer Success Manager to enable the appropriate engine."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-1-configure-rules","__idx":3},"children":["Step 1: Configure rules"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge-wrapper"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge"},"children":["Admin Portal"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Journey Tools"]}," > ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Rules"]},", define allow and deny rules that determine risk decision logic:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Allow rules"]},": define trusted entities (e.g., known IP ranges, corporate devices) that should bypass risk-based restrictions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Deny rules"]},": block access from specific origins or attributes (e.g., TOR exit nodes, flagged devices)."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For example, you can create a rule that denies logins from specific locations and a rule that denies logins from devices you consider risky, such as devices with enabled VPN and TOR."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the Risk Level Analysis step evaluates an interaction, it checks the detected risk signals against these rules. Rules are evaluated in order (1-100) and only the first rule to match will apply. If a rule matches, the step branches to the corresponding Allow or Deny branch. If no rule matches, the step proceeds to the Custom branch."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For details on how to create and manage rules, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/risk/rules"},"children":["Enforce rules"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rules are optional. If no rules are defined, all interactions proceed to the Custom branch where you can use Condition steps to evaluate risk factors manually."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-2-build-journey","__idx":4},"children":["Step 2: Build journey"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge-wrapper"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge"},"children":["Admin Portal"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Journeys handle the business logic responsible for this flow. In the Admin Portal, go to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["B2C Identity"]}," or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["B2B Identity"]}," based on your setup, and open the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Journeys"]}," section. Create a client SDK journey and store its ID. You'll need to implement some client-side code for this journey later."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can adapt the journey to match your authentication policy and use case by replacing or adding the authentication steps with the methods you prefer to use."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The example journey collects credentials, authenticates the user using their password, evaluates risk, and then branches based on the rule engine decision. It includes the following steps:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/orchestration/journeys/login_form"},"children":["Login form"]},": Enable password authentication as authentication option and ensure schema collects the user's username (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["loginData1.username"]},") and password (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["loginData1.password"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/orchestration/journeys/authenticate_password"},"children":["Password Authentication"]},": Configure the step to use submitted user's credentials for authentication."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/orchestration/journeys/risk_level_analysis"},"children":["Risk Level Analysis"]},": Enable evaluation for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["login"]}," event. The step evaluates risk and branches based on the rule engine outcome:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Allow"]}," (rule-based): A rule matched and allows the interaction—proceeds to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/orchestration/journeys/complete_journey"},"children":["Complete Journey"]}," step."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Deny"]}," (rule-based): A rule matched and denies the interaction—proceeds to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/orchestration/journeys/reject_access"},"children":["Reject Access"]}," step."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Custom"]},": No rule matched—use a ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/orchestration/journeys/condition"},"children":["Condition"]}," step to check for specific risk factors (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["@std.contains(risk_analysis.risk_result.reasons.IP_RISKY_REPUTATION)"]},") and branch accordingly."]}]}]}]},{"$$mdtype":"Tag","name":"figure","attributes":{"style":{"margin":"0"}},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/assets/auth_risk_analysis_journey.42a6352589a0d4e892c23f8854169f967cc5ddb0717a6cbd502a4f6b19c02396.2397ab79.png","target":"_blank"},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/auth_risk_analysis_journey.42a6352589a0d4e892c23f8854169f967cc5ddb0717a6cbd502a4f6b19c02396.2397ab79.png","alt":"Risk-based login journey","style":{"maxWidth":"100%"}},"children":[]}]},{"$$mdtype":"Tag","name":"figcaption","attributes":{"style":{"color":"grey","fontStyle":"italic","fontSize":"14px"}},"children":["Click to open the image in a dedicated tab."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-3-add-sdks","__idx":5},"children":["Step 3: Add SDKs"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge-wrapper"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge"},"children":["client"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To run this flow, your integration needs the Orchestration SDK."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Web","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Install and initialize the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/sdk-ref/platform/introduction"},"children":["Platform Web SDK"]},". Make sure to initialize Orchestration with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["collectRiskData: true"]}," to enable Identity Threat Protection."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"js","header":{"controls":{"copy":{}}},"source":"import { ido, initialize } from '@transmitsecurity/platform-web-sdk';\n\ninitialize({\n  clientId: 'your-client-id',\n  ido: {\n    serverPath: 'https://api.transmitsecurity.io/ido', // Required: Set serverPath based on your region or custom domain\n    collectRiskData: true // Enables Identity Threat Protection\n  }\n});\n","lang":"js"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"iOS","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Install and initialize the Orchestration SDK as described in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/orchestration/getting-started/quick_start_ios"},"children":["iOS quickstart"]},". Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["collectRiskData"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," during initialization:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"swift","header":{"controls":{"copy":{}}},"source":"do {\n    try TSIdo.initialize(clientId: clientId,\n                         options: .init(serverPath: \"[BASE_URL]\",\n                                        locale: \"[LOCALE]\",\n                                        collectRiskData: true))\n} catch {\n    // Handle error\n}\n","lang":"swift"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Android","disable":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Install and initialize the Orchestration SDK as described in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/orchestration/getting-started/quick_start_android"},"children":["Android quickstart"]},". Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["collectRiskData"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," during initialization:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"val collectRiskData = true\nTSIdo.initializeSDK(\n    context,\n    clientID,\n    TSIdoInitOptions(baseUrl, pollingTimeut, resourceUri, locale, collectRiskData)\n)\n","lang":"kotlin"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configure the SDK to work with your region or ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/deployment/custom_domains"},"children":["custom domain"]}," by setting the appropriate ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["serverPath"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["baseUrl"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-4-implement-journey-logic","__idx":6},"children":["Step 4: Implement journey logic"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge-wrapper"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"className":"badge"},"children":["client"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In this step, you implement the client-side code needed to complete a risk-aware authentication journey created in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#step-3-build-risk-aware-journey"},"children":["Step 3"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Implementation tips"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You may implement a switch (or other routing mechanism) that invokes a handler responsible for a specific journey step (returned in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idoServiceResponse.journeyStepId"]}," parameter). Each handler processes data, displays whatever UI is needed, and calls ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["submitClientResponse()"]}," when the interaction is concluded."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The journey loops back to the switch unless Mosaic signals journey completion by setting the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["journeyStepId"]}," property to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Rejection.type"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Success.type"]},". The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idoServiceResponse.token"]}," property contains a JWT token as a proof of journey completion."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In a nutshell, you'll need to implement:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#1-start-the-journey"},"children":["Starting the journey"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#2-handle-login-form"},"children":["Handling the login form"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All steps except the Login Form step in this journey (password authentication, risk evaluation, branching) are handled server-side by Mosaic and do not require any client-side code."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"1-start-the-journey","__idx":7},"children":["1. Start the journey"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Implement a handler that starts the journey by calling ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["startJourney()"]}," with your journey ID."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Web","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"js","header":{"controls":{"copy":{}}},"source":"const idoResponse = await ido.startJourney('YOUR_JOURNEY_ID');\n","lang":"js"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"iOS","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"swift","header":{"controls":{"copy":{}}},"source":"do {\n    try TSIdo.startJourney(journeyId: \"YOUR_JOURNEY_ID\")\n} catch {\n    debugPrint(\"[DEBUG] Failed to start journey: \\(error)\")\n}\n","lang":"swift"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Android","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"TSIdo.startJourney(\n    \"YOUR_JOURNEY_ID\",\n    TSIdoStartJourneyOptions(),\n    callback\n)\n","lang":"kotlin"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"2-handle-login-form","__idx":8},"children":["2. Handle login form"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The only client-facing step in this journey is the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/orchestration/journeys/login_form"},"children":["Login Form"]}," step, which requests the user's username and password. Your client should present a login form and submit the collected credentials back to the journey using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"password\""]}," as the branch ID."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Web","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"js","header":{"controls":{"copy":{}}},"source":"function handleLoginForm(idoResponse) {\n  const form = document.querySelector('#loginForm');\n  const formData = new FormData(form);\n  const data = Object.fromEntries(formData.entries());\n\n  ido.submitClientResponse(\"password\", data);\n}\n","lang":"js"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"iOS","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"swift","header":{"controls":{"copy":{}}},"source":"let data = [\n    \"username\": collectedUsername,\n    \"password\": collectedPassword\n]\ndo {\n    try TSIdo.submitClientResponse(\n        clientResponseOptionId: \"password\",\n        data: data\n    )\n} catch {\n    debugPrint(\"[DEBUG] Failed to submit form data: \\(error)\")\n}\n","lang":"swift"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Android","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"kotlin","header":{"controls":{"copy":{}}},"source":"data class LoginData(val username: String, val password: String)\n\nval responseData = LoginData(collectedUsername, collectedPassword)\nTSIdo.submitClientResponse(\n    \"password\",\n    responseData,\n    callback\n)\n","lang":"kotlin"},"children":[]}]}]}]},"headings":[{"value":"Risk-based login quickstart","id":"risk-based-login-quickstart","depth":1},{"value":"How it works","id":"how-it-works","depth":2},{"value":"Before you start","id":"before-you-start","depth":2},{"value":"Step 1: Configure rules","id":"step-1-configure-rules","depth":2},{"value":"Step 2: Build journey","id":"step-2-build-journey","depth":2},{"value":"Step 3: Add SDKs","id":"step-3-add-sdks","depth":2},{"value":"Step 4: Implement journey logic","id":"step-4-implement-journey-logic","depth":2},{"value":"1. Start the journey","id":"1-start-the-journey","depth":3},{"value":"2. Handle login form","id":"2-handle-login-form","depth":3}],"frontmatter":{"markdown":{"toc":{"depth":2}},"seo":{"title":"Risk-based login quickstart"}},"lastModified":"2026-05-25T14:44:32.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/user/auth_risk_based","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}