<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="eli.ai" agent="eli.ai diagram exporter" version="1">
  <diagram id="enterprise-sso-verification-4758b2f7" name="Enterprise SSO — verification">
    <mxGraphModel dx="1600" dy="1200" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1200" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <object id="1" label="Enterprise SSO — verification" schemaVersion="1" diagramId="enterprise-sso-verification-4758b2f7" canonicalAppearanceKey="tsx:src/app/(docs)/docs/capabilities/enterprise-sso/page.tsx:verificationChart#1" sourceSha256="4758b2f78fe33d657a1662e46a0291923aafc738c3cf8981154790d724d43ce4" metadataPayloadSha256="1098468b812f899f620011d094041881a1323fc9dfc7021b4ed59e429806c7fb" generationKey="a2cf605b6a6a070140f490e1aa5a5aad28f062a9c201333d7f991420aa233f58" concepts="[&quot;Enterprise SSO&quot;,&quot;Capabilities&quot;,&quot;Verification&quot;]" keywords="[&quot;SSO settings API&quot;,&quot;create provider + client.com&quot;,&quot;publish _eli-sso.client.com TXT&quot;,&quot;Workspace owner&quot;,&quot;Public DNS&quot;,&quot;PostgreSQL registry&quot;,&quot;normalize domain&quot;,&quot;TXT challenge&quot;,&quot;Verify domain&quot;,&quot;resolve TXT&quot;,&quot;routing active&quot;,&quot;store unverified claim + random token&quot;,&quot;atomically lease claim for 30 days&quot;,&quot;unique lower(domain) for verified claims&quot;,&quot;name/value&quot;,&quot;verified&quot;,&quot;eli-domain-verification=token&quot;]" application="{&quot;name&quot;:&quot;eli-ai&quot;,&quot;version&quot;:&quot;0.1.0&quot;}" packages="{&quot;mermaid&quot;:&quot;11.16.0&quot;,&quot;mermaidCli&quot;:&quot;11.16.0&quot;,&quot;playwright&quot;:&quot;1.62.1&quot;,&quot;playwrightCore&quot;:&quot;1.62.1&quot;,&quot;puppeteer&quot;:&quot;25.6.0&quot;,&quot;puppeteerCore&quot;:&quot;25.6.0&quot;}" environment="{&quot;architecture&quot;:&quot;x64&quot;,&quot;containerImage&quot;:&quot;playwright:v1.62.1-noble@sha256:c091b21d9fae78c76e85cd4356431e9b018402f172a214fc7d7a5e9a7e29d8ac+node:26.3.1-bookworm-slim@sha256:209558c3e5e40e8adff68959d3c2ba7cd73723e716d89196878a0c362fa1e109&quot;,&quot;node&quot;:&quot;v26.3.1&quot;,&quot;platform&quot;:&quot;linux&quot;,&quot;yarn&quot;:&quot;4.17.1&quot;}" renderer="{&quot;browser&quot;:{&quot;executableSha256&quot;:&quot;0b20b130e7edd9dd51873be867761295fe0cfad490c2b9a64f95bd3cfc08fa71&quot;,&quot;name&quot;:&quot;chromium&quot;,&quot;revision&quot;:&quot;1234&quot;,&quot;version&quot;:&quot;151.0.7922.34&quot;},&quot;font&quot;:{&quot;family&quot;:&quot;Eli Diagram Inter Variable&quot;,&quot;fileSha256&quot;:&quot;3100e775e8616cd2611beecfa23a4263d7037586789b43f035236a2e6fbd4c62&quot;,&quot;licenseSha256&quot;:&quot;3b0a5fca3d17942cde889069889dedbbbd075e9b599968c82a95f4d944e9b345&quot;},&quot;mermaidConfigSha256&quot;:&quot;68c10966fe84406ee626034d58bfabd555df9f65f691204b7c46db24038da101&quot;,&quot;themeCssSha256&quot;:&quot;c80287a78d80ad63d27bd5ca348b2ef9a7e2f44da289e436be6484ea28a1b033&quot;}" adapterVersions="{&quot;diagramGenerator&quot;:&quot;2&quot;,&quot;drawioFlowchart&quot;:&quot;1&quot;,&quot;drawioGantt&quot;:&quot;1&quot;,&quot;drawioSequence&quot;:&quot;1&quot;,&quot;drawioState&quot;:&quot;1&quot;}" mermaidType="sequence" generatedAt="2026-08-12T23:38:23.385Z" mermaidSource="sequenceDiagram&#10;  participant O as Workspace owner&#10;  participant A as SSO settings API&#10;  participant D as Public DNS&#10;  participant P as PostgreSQL registry&#10;&#10;  O-&gt;&gt;A: create provider + client.com&#10;  A-&gt;&gt;P: normalize domain; store unverified claim + random token&#10;  A--&gt;&gt;O: TXT name/value challenge&#10;  O-&gt;&gt;D: publish _eli-sso.client.com TXT&#10;  O-&gt;&gt;A: Verify domain&#10;  A-&gt;&gt;D: resolve TXT&#10;  D--&gt;&gt;A: eli-domain-verification=token&#10;  A-&gt;&gt;P: atomically lease claim for 30 days&#10;  P-&gt;&gt;P: unique lower(domain) for verified claims&#10;  alt domain is available&#10;    P--&gt;&gt;O: verified; routing active&#10;  else another workspace owns it&#10;    P--&gt;&gt;O: 409 domain_already_claimed&#10;  end">
          <mxCell parent="0"/>
        </object>
        <object id="c:i13" label="alt [domain is available] / [another workspace owns it]" mermaidId="i13" mermaidShape="frame">
          <mxCell parent="1" vertex="1" style="collapsible=0;container=1;dashed=1;fillColor=none;fontColor=#333333;html=1;recursiveResize=0;rounded=0;strokeColor=#9370DB;whiteSpace=wrap;">
            <mxGeometry x="67.5" y="555" width="862" height="190" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:P" label="PostgreSQL registry" mermaidId="P" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="832.5" y="0" width="172" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:D" label="Public DNS" mermaidId="D" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="632.5" y="0" width="150" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:A" label="SSO settings API" mermaidId="A" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="338.5" y="0" width="150" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="n:O" label="Workspace owner" mermaidId="O" mermaidShape="participant">
          <mxCell parent="1" vertex="1" style="fillColor=#eaeaea;fontColor=#333333;html=1;participant=umlActor;shape=umlLifeline;strokeColor=#666;whiteSpace=wrap;">
            <mxGeometry x="0" y="0" width="157" height="65" as="geometry"/>
          </mxCell>
        </object>
        <object id="e:lifeline:P" label="" mermaidId="lifeline:P" mermaidKind="lifeline">
          <mxCell parent="1" source="n:P" target="n:P" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="918.5" y="65" as="sourcePoint"/>
              <mxPoint x="918.5" y="765" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:D" label="" mermaidId="lifeline:D" mermaidKind="lifeline">
          <mxCell parent="1" source="n:D" target="n:D" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="707.5" y="65" as="sourcePoint"/>
              <mxPoint x="707.5" y="765" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:A" label="" mermaidId="lifeline:A" mermaidKind="lifeline">
          <mxCell parent="1" source="n:A" target="n:A" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="413.5" y="65" as="sourcePoint"/>
              <mxPoint x="413.5" y="765" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:lifeline:O" label="" mermaidId="lifeline:O" mermaidKind="lifeline">
          <mxCell parent="1" source="n:O" target="n:O" edge="1" style="dashed=1;dashPattern=4 4;edgeStyle=none;endArrow=none;endFill=0;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#999;strokeWidth=0.5;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="78.5" y="65" as="sourcePoint"/>
              <mxPoint x="78.5" y="765" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i0" label="create provider + client.com" mermaidId="i0" mermaidKind="message">
          <mxCell parent="1" source="n:O" target="n:A" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="79.5" y="115" as="sourcePoint"/>
              <mxPoint x="409.5" y="115" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i1" label="normalize domain; store unverified claim + random token" mermaidId="i1" mermaidKind="message">
          <mxCell parent="1" source="n:A" target="n:P" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="414.5" y="165" as="sourcePoint"/>
              <mxPoint x="914.5" y="165" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i2" label="TXT name/value challenge" mermaidId="i2" mermaidKind="message">
          <mxCell parent="1" source="n:A" target="n:O" edge="1" style="dashed=1;dashPattern=3  3;edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="412.5" y="215" as="sourcePoint"/>
              <mxPoint x="82.5" y="215" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i3" label="publish _eli-sso.client.com TXT" mermaidId="i3" mermaidKind="message">
          <mxCell parent="1" source="n:O" target="n:D" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="79.5" y="265" as="sourcePoint"/>
              <mxPoint x="703.5" y="265" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i4" label="Verify domain" mermaidId="i4" mermaidKind="message">
          <mxCell parent="1" source="n:O" target="n:A" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="79.5" y="315" as="sourcePoint"/>
              <mxPoint x="409.5" y="315" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i5" label="resolve TXT" mermaidId="i5" mermaidKind="message">
          <mxCell parent="1" source="n:A" target="n:D" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="414.5" y="365" as="sourcePoint"/>
              <mxPoint x="703.5" y="365" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i6" label="eli-domain-verification=token" mermaidId="i6" mermaidKind="message">
          <mxCell parent="1" source="n:D" target="n:A" edge="1" style="dashed=1;dashPattern=3  3;edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="706.5" y="415" as="sourcePoint"/>
              <mxPoint x="417.5" y="415" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i7" label="atomically lease claim for 30 days" mermaidId="i7" mermaidKind="message">
          <mxCell parent="1" source="n:A" target="n:P" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="414.5" y="465" as="sourcePoint"/>
              <mxPoint x="914.5" y="465" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i8" label="unique lower(domain) for verified claims" mermaidId="i8" mermaidKind="message">
          <mxCell parent="1" source="n:P" target="n:P" edge="1" style="edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="919.5" y="515" as="sourcePoint"/>
              <mxPoint x="919.5" y="535" as="targetPoint"/>
              <Array as="points">
                <mxPoint x="979.5" y="505"/>
                <mxPoint x="979.5" y="545"/>
              </Array>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i10" label="verified; routing active" mermaidId="i10" mermaidKind="message">
          <mxCell parent="1" source="n:P" target="n:O" edge="1" style="dashed=1;dashPattern=3  3;edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="917.5" y="640" as="sourcePoint"/>
              <mxPoint x="82.5" y="640" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
        <object id="e:i12" label="409 domain_already_claimed" mermaidId="i12" mermaidKind="message">
          <mxCell parent="1" source="n:P" target="n:O" edge="1" style="dashed=1;dashPattern=3  3;edgeStyle=none;endArrow=block;endFill=1;html=1;jettySize=auto;orthogonalLoop=1;rounded=0;strokeColor=#333333;strokeWidth=2;">
            <mxGeometry relative="1" as="geometry">
              <mxPoint x="917.5" y="735" as="sourcePoint"/>
              <mxPoint x="82.5" y="735" as="targetPoint"/>
            </mxGeometry>
          </mxCell>
        </object>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
