<mxfile host="app.diagrams.net" agent="architecture-diagram" version="24.0.0">
  <diagram name="Identity and Authorisation — What Gets Refused" id="21-identity-and-authorisation">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1760" pageHeight="900" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="n.caller" value="&lt;b&gt;Caller&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#f5f5f5;strokeColor=#8c8c8c;fontColor=#333333;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="60" y="80" width="240" height="700" as="geometry" />
        </mxCell>
        <mxCell id="_ico1" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAB40lEQVRoge3Yz6sOURzH8dfjXlfuQkoW6ooiIUk2imRna+kvYCMLUlIsWNhYKFtZKUp3y80/YGOHKD+6RCGJErnyazF3MsbM85z73HnmTDnv+tQ0c2bm8znnzJyZL4lEIpH4n+k1dJ21mMJKfMFjvG7o2iNjChfwFL8q9ARnsTqWwTrGcE7W01XGy/qEo5ob7UWxAjPCjJd1DRPtW/7DOG4bznyuqyKOxPkAgyE6jD24IXtOPmMWV7B9VObX4WtDAb73OfYDZ4xglC41ZD5UJ5s038PLlgPMYUOIuSUBbTbJ3vltMoFDIQ1DArRtPmdvSKOQALFW0kXfdxlO4IV253+uOyEmx2v2b8U0tgTHbZ57w564Ex/E6fWynuE4loeaX4VXHTBe1kNsCwlwuQNm6/RuUIg1+NYBo/30SGk6FV+jB7G0X8IOsBlH6g5Oi9/DIZotmi6OQKwVd6Gsl33e4O8AUf+WFsjGfKMYoPNVhAKT+UYxwIMIRoblTdXO3eI/oCGakxUX/qGHux0wOEg3q8zn7JP9l8Y2Waef2NUvAJzqgNE6XRxknmwqnZ5PG9twUdfVf/5Xsh/3O2D8I46pKbUMqr+MzQc5gB2y1Xqy7xnN8BbPcUtWknzfwj0TiUQikWif37lJeEKjXHZHAAAAAElFTkSuQmCC;" vertex="1" parent="n.caller">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.proxy" value="&lt;b&gt;Proxy&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="340" y="80" width="240" height="700" as="geometry" />
        </mxCell>
        <mxCell id="_ico2" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,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;" vertex="1" parent="n.proxy">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.cache" value="&lt;b&gt;Credential cache&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="620" y="80" width="240" height="700" as="geometry" />
        </mxCell>
        <mxCell id="_ico3" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADIUlEQVRoge3aTWwVVRjG8V9LkW+kwYDY6kLxC5QNJEIMECEGNSa6MCaGHStXrtyqxI0xJLCCDTGBBRuCiSQuTIgxhAUsABP5SAQlCFhlYaB82AqNdfFO06E9U+5M7+29rf0nbyY9M3Pmee85M/Ocd8o0zaVtHOfOwoosuvBEFp2YjTnZMf9kx9/AAK7jGv7ErziHK1VFlEmgE5vwOtbjOXRUvfAIbuI0vscRnMK/9ei4TQg+KH7JwQmKK/hMjGxlVuCHCRSdir/xqZiKpXgFt5osPh9HxH01ihkFbSfwWNmsG8jT6MexkTvaEwcvFU+TVmN1qjGVQKqtFUjqalWxNTMlE7gt7vxWo7fMwV9p/qMzH31YWyaBDuxrAeGD+AtvlRGfZzOON0n4HezG4qri86zCTpxvsOi7+A4fYmFVsV3Yj2UF+7vxAb7At7ikmtG7IVznfnyM1xTYBbyNHakdKTvdjavixjmAPfixoOM8S8RbfEnW76Jc//1Zf/1iHfB79vdYzMF7+AhrcBjv1qBDt9G/1gV8iS1YUEsnFVmObTgkplNewzepE8YagSIGREIXcBG/ZNurYmHSl108da1FmCsWR89msTzbvihGsIjkCFRZUXUYXkqORa9IZpaYDkXze1zUa0mY4tEsGsqU9EKTilQCdakGNICkrlQC19HTWC2VOF3m4LWGbXUrROGifixewtEmC+/D9irih2jDG/ga9yZQ+DV8jieriF6A5xPti/E+9uJn8Uaul+BbYrQ/wTqjyz3tCqoSRVbikjBxu/BbQaJzxdt4ZXbO49l2vmEj1+lBI3dXPCT+EA+Ky/gp2w4mrtGON0WZsUcFMzcgTNRWE/BWzfGyKClezGlJmrmHWYkZeCeL+zgpqmMnDRu5O+MU2yXM3At4FRvwVK0nl/FCM8X8XDeivUckc1lMlV4xVfrE3J4pptVCYermibLlM8KJziuhYRT1MHNDHzY21qGv0kxJLzSpmJIJTJcWGxDTpcVmCP9/lBarfKnvFh+6VwnPMvSl/pGS/dwUpvEszogy43Fh+mpmPP9qMJJ6lxanmRT8B1M0bJ9FjBNdAAAAAElFTkSuQmCC;" vertex="1" parent="n.cache">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.authsrv" value="&lt;b&gt;Authorisation server&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#e1d5e7;strokeColor=#9673a6;fontColor=#3a2b44;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="900" y="80" width="240" height="700" as="geometry" />
        </mxCell>
        <mxCell id="_ico4" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,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;" vertex="1" parent="n.authsrv">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.up" value="&lt;b&gt;Upstream&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1180" y="80" width="240" height="700" as="geometry" />
        </mxCell>
        <mxCell id="_ico5" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACpUlEQVRoge3YTYhNYRzH8Y+3iLzkbZoSdhJZkI1YUWzYWbCxJCU1ZShlpVhQKIoFG28pKxaKDUnyUtTQZJCExZSJEYMMFs+cXMe5955z7jn3jppf/evWfc7/+f6e5/+8nMOIWqsxJeWdhA3YhMUYQG9JfRWqZTiJfvyKxRPsxuyW0VXRHAGsx7/QSfED17ER41rACyYMAVwZAkoDnhTvhRlb2izwWiXSaJRWYvOxDy9yQOWZnW+4jPUaKLFGS+QBdmIGFuGgsAuVXmLTcUS+EnmDA1hQJff4oUG5mnNQ7mNdLfjJeJQx6QDOY61sZ0o7dqErY38/saVa0r0ZEt3BVkzLAF1Ny3EcfSn77sOUpEQ36zz4FkexpADoJI0XFu4lfK/DsjopwdOEhgO4INReWdeOJEUl9iSB6Rc2Rw1H10n0CS/RjcEySKuoF8/wOstDSTMQxaA/x//YIkljahcOs1c1WP6agbQG4mvhIOYWBD0aa6Sr/UIMRFF5KcuzPqYJh93zjP0WZqAyeoSpn5UCPLpPfWmgv8INRPEV57Aqljsa7ax9DDbbQGV0oQOn8Tnjs++wHwtbaSBP3Pb3i87EegbK3BLT6oOwAx0TDq5MaqWBhziFs8KCzqVmG+jHRZzA4yISNtPAGewQFnRhqncXKlLdCoanuQZK0YiBVuu/NzAcDrJqasOeeo0qDXwsjyWT2tCJbcJVIkkfoh+VJXSrRKg0asNh4RW2Q3X4r7iX9Mds4R20rItaZx3wtDfWvbVGYR6uNclAVvA+bMeoWgYirRC+i5ZhYKbwTp0WvH+ofa6PaCtxoyADh2Qf8X2Ymgc8rjJmpJQRb6WRUsHLNNJU8LgaMdJS8LiyGBlW4HHVMjKsweNaKXyW78Zd4atdIdvhiEZUsH4D+zfN9JHFLwAAAAAASUVORK5CYII=;" vertex="1" parent="n.up">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.audit" value="&lt;b&gt;Audit ledger&lt;/b&gt;" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;collapsible=0;recursiveResize=0;outlineConnect=0;size=58;rounded=1;arcSize=8;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=top;spacingTop=9;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="1460" y="80" width="240" height="700" as="geometry" />
        </mxCell>
        <mxCell id="_ico6" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADIUlEQVRoge3aTWwVVRjG8V9LkW+kwYDY6kLxC5QNJEIMECEGNSa6MCaGHStXrtyqxI0xJLCCDTGBBRuCiSQuTIgxhAUsABP5SAQlCFhlYaB82AqNdfFO06E9U+5M7+29rf0nbyY9M3Pmee85M/Ocd8o0zaVtHOfOwoosuvBEFp2YjTnZMf9kx9/AAK7jGv7ErziHK1VFlEmgE5vwOtbjOXRUvfAIbuI0vscRnMK/9ei4TQg+KH7JwQmKK/hMjGxlVuCHCRSdir/xqZiKpXgFt5osPh9HxH01ihkFbSfwWNmsG8jT6MexkTvaEwcvFU+TVmN1qjGVQKqtFUjqalWxNTMlE7gt7vxWo7fMwV9p/qMzH31YWyaBDuxrAeGD+AtvlRGfZzOON0n4HezG4qri86zCTpxvsOi7+A4fYmFVsV3Yj2UF+7vxAb7At7ikmtG7IVznfnyM1xTYBbyNHakdKTvdjavixjmAPfixoOM8S8RbfEnW76Jc//1Zf/1iHfB79vdYzMF7+AhrcBjv1qBDt9G/1gV8iS1YUEsnFVmObTgkplNewzepE8YagSIGREIXcBG/ZNurYmHSl108da1FmCsWR89msTzbvihGsIjkCFRZUXUYXkqORa9IZpaYDkXze1zUa0mY4tEsGsqU9EKTilQCdakGNICkrlQC19HTWC2VOF3m4LWGbXUrROGifixewtEmC+/D9irih2jDG/ga9yZQ+DV8jieriF6A5xPti/E+9uJn8Uaul+BbYrQ/wTqjyz3tCqoSRVbikjBxu/BbQaJzxdt4ZXbO49l2vmEj1+lBI3dXPCT+EA+Ky/gp2w4mrtGON0WZsUcFMzcgTNRWE/BWzfGyKClezGlJmrmHWYkZeCeL+zgpqmMnDRu5O+MU2yXM3At4FRvwVK0nl/FCM8X8XDeivUckc1lMlV4xVfrE3J4pptVCYermibLlM8KJziuhYRT1MHNDHzY21qGv0kxJLzSpmJIJTJcWGxDTpcVmCP9/lBarfKnvFh+6VwnPMvSl/pGS/dwUpvEszogy43Fh+mpmPP9qMJJ6lxanmRT8B1M0bJ9FjBNdAAAAAElFTkSuQmCC;" vertex="1" parent="n.audit">
          <mxGeometry x="9" y="17" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_m7" value="1. Bearer token, POST /v2/payouts" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.1314;exitDx=0;exitDy=0;entryX=0.5;entryY=0.1314;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.caller" target="n.proxy">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m8" value="2. verify signature, iss, aud, exp" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.1886;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2229;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.proxy" target="n.proxy">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="540" y="210" />
              <mxPoint x="540" y="240" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m9" value="3. denylist + grants for jti" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.2629;exitDx=0;exitDy=0;entryX=0.5;entryY=0.2629;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.proxy" target="n.cache">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m10" value="4. miss" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#5a6570;exitX=0.5;exitY=0.3200;exitDx=0;exitDy=0;entryX=0.5;entryY=0.3200;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.cache" target="n.proxy">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m11" value="5. introspect (cache refill)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.3771;exitDx=0;exitDy=0;entryX=0.5;entryY=0.3771;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.proxy" target="n.authsrv">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m12" value="6. scopes: payouts.read" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#5a6570;exitX=0.5;exitY=0.4343;exitDx=0;exitDy=0;entryX=0.5;entryY=0.4343;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.authsrv" target="n.proxy">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m13" value="7. route requires payouts.write" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.4914;exitDx=0;exitDy=0;entryX=0.5;entryY=0.5257;entryDx=0;entryDy=0;align=left;spacingLeft=6;" edge="1" parent="1" source="n.proxy" target="n.proxy">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="540" y="430" />
              <mxPoint x="540" y="450" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_m14" value="8. denied: insufficient_scope" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#d79b00;exitX=0.5;exitY=0.5657;exitDx=0;exitDy=0;entryX=0.5;entryY=0.5657;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.proxy" target="n.audit">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m15" value="9. 403 + required scope named" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;dashed=1;strokeColor=#b85450;fontColor=#b85450;exitX=0.5;exitY=0.6229;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6229;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.proxy" target="n.caller">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m16" value="10. retry with correct token" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.6800;exitDx=0;exitDy=0;entryX=0.5;entryY=0.6800;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.caller" target="n.proxy">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m17" value="11. hit, scopes sufficient" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.7371;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7371;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.proxy" target="n.cache">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m18" value="12. signed identity: tenant, app, scopes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=block;endFill=1;strokeColor=#5a6570;exitX=0.5;exitY=0.7943;exitDx=0;exitDy=0;entryX=0.5;entryY=0.7943;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.proxy" target="n.up">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m19" value="13. 202 Accepted" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#5a6570;exitX=0.5;exitY=0.8514;exitDx=0;exitDy=0;entryX=0.5;entryY=0.8514;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.up" target="n.proxy">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_m20" value="14. allowed, recorded" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;fontFamily=Segoe UI;verticalAlign=bottom;endArrow=open;endFill=0;dashed=1;strokeColor=#d79b00;exitX=0.5;exitY=0.9086;exitDx=0;exitDy=0;entryX=0.5;entryY=0.9086;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.proxy" target="n.audit">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="title" value="Identity and Authorisation — What Gets Refused" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=20;fontStyle=1;fontColor=#16202c;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="20" width="1670" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#c9d3de;" vertex="1" parent="1">
          <mxGeometry x="40" y="50" width="1670" height="10" as="geometry" />
        </mxCell>
        <mxCell id="note" value="The refusal is the point of the page: a 403 that names the scope it wanted is the difference between a support ticket and a fix." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="830" width="1670" height="20" as="geometry" />
        </mxCell>
        <mxCell id="foot-rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#e3e9ef;" vertex="1" parent="1">
          <mxGeometry x="40" y="850" width="1670" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Integration Platform Architecture   ·   date 2026-09" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=9;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="860" width="1670" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
