1
0
Fork 0
mirror of synced 2024-05-20 12:42:39 +12:00

Updated auth diagram

This commit is contained in:
Eldad Fux 2021-01-16 12:33:01 +02:00
parent e9b15d5863
commit 82742d8656
2 changed files with 607 additions and 92 deletions

View file

@ -357,7 +357,7 @@ services:
volumes:
- appwrite-mariadb:/var/lib/mysql:rw
ports:
- "9502:3306"
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=${_APP_DB_SCHEMA}
@ -408,6 +408,19 @@ services:
networks:
- appwrite
# Dev Tools Start ------------------------------------------------------------------------------------------
#
# The Appwrite Team uses the following tools to help debug, monitor and diagnose the Appwrite stack 🪛
#
# Here is a description of the different tools and why are we using them:
#
# MailCatcher - An SMTP server. Catches all system emails and displays them in a nice UI.
# RequestCatcher - An HTTP server. Catches all system https calls and displays them using a simple HTTP API. Used to debug & tests webhooks and HTTP tasks
# RedisCommander - A nice UI for exploring Redis data
# Resque - A nice UI for exploring Reddis pub/sub, view the different queues workloads, pending and failed tasks
# Chronograf - A nice UI for exploring InfluxDB data
# Webgrind - A nice UI for exploring and debugging code-level stuff
maildev: # used mainly for dev tests
image: djfarrelly/maildev
container_name: appwrite-maildev
@ -424,6 +437,14 @@ services:
networks:
- appwrite
adminer:
image: adminer
restart: always
ports:
- 9505:8080
networks:
- appwrite
# redis-commander:
# image: rediscommander/redis-commander:latest
# restart: unless-stopped
@ -472,6 +493,8 @@ services:
# - './debug:/tmp'
# ports:
# - '3001:80'
# Dev Tools End ------------------------------------------------------------------------------------------
networks:
gateway:

View file

@ -1,13 +1,13 @@
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="881px" height="201px" viewBox="-0.5 -0.5 881 201" content="&lt;mxfile host=&quot;46edc30a-8792-4dc6-a925-c31db221fc88&quot; modified=&quot;2021-01-16T07:45:02.731Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 11_0_0) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.52.1 Chrome/83.0.4103.122 Electron/9.3.5 Safari/537.36&quot; etag=&quot;tsiv5QKTvswngER_sizO&quot; version=&quot;13.10.0&quot; type=&quot;embed&quot;&gt;&lt;diagram id=&quot;WOshqXSVd2VkRfcggtcB&quot; name=&quot;Page-1&quot;&gt;5Vjfc5pAEP5rfO3wO/hojE2nbabO2Jk0j6ds4OrBMsch0r++BxwCUlMnSbEOvsh+u3sc3+7nck7Mebi/5yQOHtADNjE0bz8x7yaGoZu6I78KJK8Qx9YrwOfUU0ENsKK/QIGaQlPqQdIJFIhM0LgLbjCKYCM6GOEcs27YM7LuXWPiQw9YbQjro4/UE4FCDU1rHJ+A+oE49qzJZutzTCN1wwgjqDwhqddRoUlAPMxakLmYmHOOKKqrcD8HVvBaU1blfTzhPeyZQyTOSTDUNkRePzZ4kgVlIhcB+hgRtmjQ2/LJoFhAk1YT8xUxlqAuwZ8gRK5KSlKBEgpEyJQX9lT8KNI/2Mp6annu9mrl0siVUe2z2NzJJ1VQginfqCjzQKlsU8AQBM9lCAdGBN11lyKqX/xD3CF1iVTexNBUb9uuqp7qbKO26yUE4T4IldWwLy9a22igsiZ/ro9ZLbwjLFW7XUGSUIwkOEfcUugVsFueLKACVjEpGcmkUrulSATHLcyRIS+zTcO0LFsm3z5Txlq47GnXMwscI9HCtfIjcUbWwGQ3eMBrd9n3del2wAXsXy5ev1I148YR47XUso4yKyxoidLSThe3U5YXamBdi0YkmTxvJRXmU9vXpJXW27Rlq9/kstffR27nVsTuqWIRElpEFEsY2pIkSSZbcRTasKyuNg46GEIbzrVo43U9fjPM/ND+2fy46Snl2yyVXSE1wnEnX7D4KDTiaBfUiNurwQOE65Ew35vc7oDMT3vMz+J4FLRPL0l7fYL7/6fCsG9Men2Mbb0yue8xYWack7wVEBeTIzk9gFznqDuco1Pi3wZWN15eVDt47ZSqiWkJ9fPj91EI1b3kZNKv5vg/sFDNvlCnbxTq2TXpH/lnS2l/gXwUgpg6lxSE1SP/PoVEjIJ5QxvunUGazZ+c1cRo/kU2F78B&lt;/diagram&gt;&lt;/mxfile&gt;">
<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1081px" height="571px" viewBox="-0.5 -0.5 1081 571" content="&lt;mxfile host=&quot;452ed2f0-2570-47da-af81-6dc9d9d310bc&quot; modified=&quot;2021-01-16T10:32:32.542Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 11_0_0) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.52.1 Chrome/83.0.4103.122 Electron/9.3.5 Safari/537.36&quot; etag=&quot;xixw6ht4-WCcIuTHPPx4&quot; version=&quot;13.10.0&quot; type=&quot;embed&quot;&gt;&lt;diagram id=&quot;WOshqXSVd2VkRfcggtcB&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g>
<path d="M 380 120 L 380 153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 380 158.88 L 376.5 151.88 L 380 153.63 L 383.5 151.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="320" y="80" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<path d="M 620 120 L 620 153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 620 158.88 L 616.5 151.88 L 620 153.63 L 623.5 151.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="560" y="80" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 100px; margin-left: 321px;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 100px; margin-left: 561px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Session Cookie
@ -15,126 +15,180 @@
</div>
</div>
</foreignObject>
<text x="380" y="104" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
<text x="620" y="104" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Session Cookie
</text>
</switch>
</g>
<path d="M 300 40 L 300 60 L 380 60 L 380 73.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 380 78.88 L 376.5 71.88 L 380 73.63 L 383.5 71.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="240" y="0" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<path d="M 540 40 L 540 60 L 620 60 L 620 73.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 620 78.88 L 616.5 71.88 L 620 73.63 L 623.5 71.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="480" y="0" width="120" height="40" fill="#d80073" stroke="#a50040" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 20px; margin-left: 241px;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 20px; margin-left: 481px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Email / Password
</div>
</div>
</div>
</foreignObject>
<text x="300" y="24" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
<text x="540" y="24" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
Email / Password
</text>
</switch>
</g>
<path d="M 460 40 L 460 60 L 380 60 L 380 73.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 380 78.88 L 376.5 71.88 L 380 73.63 L 383.5 71.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="400" y="0" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<path d="M 700 40 L 700 60 L 620 60 L 620 73.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 620 78.88 L 616.5 71.88 L 620 73.63 L 623.5 71.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="640" y="0" width="120" height="40" fill="#d80073" stroke="#a50040" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 20px; margin-left: 401px;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 20px; margin-left: 641px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
OAuth Provider
</div>
</div>
</div>
</foreignObject>
<text x="460" y="24" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
<text x="700" y="24" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
OAuth Provider
</text>
</switch>
</g>
<path d="M 620 200 L 620 273.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 620 278.88 L 616.5 271.88 L 620 273.63 L 623.5 271.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 235px; margin-left: 618px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">
Granted with
</div>
</div>
</div>
</foreignObject>
<text x="618" y="238" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">
Granted with
</text>
</switch>
</g>
<rect x="560" y="160" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 561px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Member
</div>
</div>
</div>
</foreignObject>
<text x="620" y="184" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Member
</text>
</switch>
</g>
<path d="M 1020 200 L 1020 273.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 1020 278.88 L 1016.5 271.88 L 1020 273.63 L 1023.5 271.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 232px; margin-left: 1022px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">
Granted with
</div>
</div>
</div>
</foreignObject>
<text x="1022" y="235" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">
Granted with
</text>
</switch>
</g>
<rect x="960" y="160" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 961px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
App
</div>
</div>
</div>
</foreignObject>
<text x="1020" y="184" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
App
</text>
</switch>
</g>
<path d="M 860 40 L 900 40 L 900 140 L 620 140 L 620 153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 620 158.88 L 616.5 151.88 L 620 153.63 L 623.5 151.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="800" y="0" width="120" height="40" fill="#d80073" stroke="#a50040" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 20px; margin-left: 801px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
JWT
</div>
</div>
</div>
</foreignObject>
<text x="860" y="24" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
JWT
</text>
</switch>
</g>
<path d="M 1020 40 L 1020 153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 1020 158.88 L 1016.5 151.88 L 1020 153.63 L 1023.5 151.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="960" y="0" width="120" height="40" fill="#d80073" stroke="#a50040" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 20px; margin-left: 961px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
AP Key
</div>
</div>
</div>
</foreignObject>
<text x="1020" y="24" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
AP Key
</text>
</switch>
</g>
<path d="M 380 200 L 380 273.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 380 278.88 L 376.5 271.88 L 380 273.63 L 383.5 271.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 240px; margin-left: 380px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; background-color: #ffffff; white-space: nowrap; ">
Granted with
</div>
</div>
</div>
</foreignObject>
<text x="380" y="243" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">
Granted with
</text>
</switch>
</g>
<rect x="320" y="160" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 321px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Member
</div>
</div>
</div>
</foreignObject>
<text x="380" y="184" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Member
</text>
</switch>
</g>
<rect x="720" y="160" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 721px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
App
</div>
</div>
</div>
</foreignObject>
<text x="780" y="184" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
App
</text>
</switch>
</g>
<path d="M 660 40 L 660 140 L 380 140 L 380 153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 380 158.88 L 376.5 151.88 L 380 153.63 L 383.5 151.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="600" y="0" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 20px; margin-left: 601px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
JWT
</div>
</div>
</div>
</foreignObject>
<text x="660" y="24" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
JWT
</text>
</switch>
</g>
<path d="M 820 40 L 820 100 L 780 100 L 780 153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 780 158.88 L 776.5 151.88 L 780 153.63 L 783.5 151.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="760" y="0" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 20px; margin-left: 761px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
AP Key
</div>
</div>
</div>
</foreignObject>
<text x="820" y="24" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
AP Key
</text>
</switch>
</g>
<rect x="0" y="160" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 180px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Guest
@ -142,11 +196,449 @@
</div>
</div>
</foreignObject>
<text x="60" y="184" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
<text x="380" y="184" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Guest
</text>
</switch>
</g>
<path d="M 410 320 L 410 400 L 740 400 L 740 473.63" fill="none" stroke="#2d7600" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 740 478.88 L 736.5 471.88 L 740 473.63 L 743.5 471.88 Z" fill="#2d7600" stroke="#2d7600" stroke-miterlimit="10" pointer-events="all"/>
<rect x="320" y="280" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 300px; margin-left: 321px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Public Scopes
</div>
</div>
</div>
</foreignObject>
<text x="380" y="304" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Public Scopes
</text>
</switch>
</g>
<path d="M 650 320 L 650 400 L 740 400 L 740 473.63" fill="none" stroke="#2d7600" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 740 478.88 L 736.5 471.88 L 740 473.63 L 743.5 471.88 Z" fill="#2d7600" stroke="#2d7600" stroke-miterlimit="10" pointer-events="all"/>
<rect x="560" y="280" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 300px; margin-left: 561px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Member Scopes
</div>
</div>
</div>
</foreignObject>
<text x="620" y="304" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Member Scopes
</text>
</switch>
</g>
<path d="M 1050 320 L 1050 550 L 806.37 550" fill="none" stroke="#2d7600" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 801.12 550 L 808.12 546.5 L 806.37 550 L 808.12 553.5 Z" fill="#2d7600" stroke="#2d7600" stroke-miterlimit="10" pointer-events="all"/>
<rect x="960" y="280" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 300px; margin-left: 961px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Custom Scopes
<br/>
<font style="font-size: 10px">
(Defined on key creation)
</font>
</div>
</div>
</div>
</foreignObject>
<text x="1020" y="304" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Custom Scopes...
</text>
</switch>
</g>
<rect x="440" y="480" width="120" height="40" fill="#0050ef" stroke="#001dbc" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 500px; margin-left: 441px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Scope Validation
</div>
</div>
</div>
</foreignObject>
<text x="500" y="504" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
Scope Validation
</text>
</switch>
</g>
<path d="M 620 320 L 620 380 L 500 380 L 500 473.63" fill="none" stroke="#001dbc" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 500 478.88 L 496.5 471.88 L 500 473.63 L 503.5 471.88 Z" fill="#001dbc" stroke="#001dbc" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 1020 320 L 1020 380 L 500 380 L 500 553.63" fill="none" stroke="#001dbc" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 500 558.88 L 496.5 551.88 L 500 553.63 L 503.5 551.88 Z" fill="#001dbc" stroke="#001dbc" stroke-miterlimit="10" pointer-events="all"/>
<path d="M 380 320 L 380 380 L 500 380 L 500 473.63" fill="none" stroke="#001dbc" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 500 478.88 L 496.5 471.88 L 500 473.63 L 503.5 471.88 Z" fill="#001dbc" stroke="#001dbc" stroke-miterlimit="10" pointer-events="all"/>
<rect x="680" y="530" width="120" height="40" fill="#60a917" stroke="#2d7600" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 550px; margin-left: 681px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Database
<br/>
<font style="font-size: 9px">
Each doc has permission
</font>
</div>
</div>
</div>
</foreignObject>
<text x="740" y="554" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
Database...
</text>
</switch>
</g>
<rect x="680" y="480" width="120" height="40" fill="#60a917" stroke="#2d7600" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 500px; margin-left: 681px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Roles Validation
</div>
</div>
</div>
</foreignObject>
<text x="740" y="504" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
Roles Validation
</text>
</switch>
</g>
<path d="M 60 80 L 60 113.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 60 118.88 L 56.5 111.88 L 60 113.63 L 63.5 111.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="0" y="40" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 60px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
Roles
</div>
</div>
</div>
</foreignObject>
<text x="60" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">
Roles
</text>
</switch>
</g>
<path d="M 60 160 L 60 180 L 60 150 L 60 163.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 60 168.88 L 56.5 161.88 L 60 163.63 L 63.5 161.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="0" y="120" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 140px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Wildcard
<br/>
</div>
</div>
</div>
</foreignObject>
<text x="60" y="144" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Wildcard...
</text>
</switch>
</g>
<path d="M 60 210 L 60 230 L 60 200 L 60 213.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 60 218.88 L 56.5 211.88 L 60 213.63 L 63.5 211.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="0" y="170" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 190px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Guset
<br/>
role:guest
</div>
</div>
</div>
</foreignObject>
<text x="60" y="194" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Guset...
</text>
</switch>
</g>
<path d="M 60 260 L 60 263.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 60 268.88 L 56.5 261.88 L 60 263.63 L 63.5 261.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="0" y="220" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 240px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Member
<br/>
role:member
</div>
</div>
</div>
</foreignObject>
<text x="60" y="244" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Member...
</text>
</switch>
</g>
<path d="M 60 310 L 60 313.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 60 318.88 L 56.5 311.88 L 60 313.63 L 63.5 311.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="0" y="270" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 290px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
App
<br/>
role:app
</div>
</div>
</div>
</foreignObject>
<text x="60" y="294" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
App...
</text>
</switch>
</g>
<rect x="0" y="320" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 340px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
User ID
<br/>
user:[ID]
</div>
</div>
</div>
</foreignObject>
<text x="60" y="344" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
User ID...
</text>
</switch>
</g>
<path d="M 60 410 L 60 430 L 60 400 L 60 413.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 60 418.88 L 56.5 411.88 L 60 413.63 L 63.5 411.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="0" y="370" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 390px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Team ID
<br/>
team:[ID]
</div>
</div>
</div>
</foreignObject>
<text x="60" y="394" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Team ID...
</text>
</switch>
</g>
<path d="M 60 460 L 60 480 L 60 450 L 60 463.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 60 468.88 L 56.5 461.88 L 60 463.63 L 63.5 461.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="0" y="420" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 440px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Team ID + Role
<br/>
team:[ID]/[ROLE]
</div>
</div>
</div>
</foreignObject>
<text x="60" y="444" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Team ID + Role...
</text>
</switch>
</g>
<rect x="0" y="470" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 490px; margin-left: 1px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Member ID
<br/>
member:[ID]
</div>
</div>
</div>
</foreignObject>
<text x="60" y="494" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
Member ID...
</text>
</switch>
</g>
<rect x="440" y="530" width="120" height="40" fill="#0050ef" stroke="#001dbc" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 550px; margin-left: 441px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
Endpoints
<br/>
<font style="font-size: 9px">
Each endpoint has 1 scope
</font>
</div>
</div>
</div>
</foreignObject>
<text x="500" y="554" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">
Endpoints...
</text>
</switch>
</g>
<path d="M 200 80 L 200 113.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 200 118.88 L 196.5 111.88 L 200 113.63 L 203.5 111.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="140" y="40" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 60px; margin-left: 141px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; word-wrap: normal; ">
Scopes
</div>
</div>
</div>
</foreignObject>
<text x="200" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">
Scopes
</text>
</switch>
</g>
<path d="M 200 160 L 200 180 L 200 150 L 200 163.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 200 168.88 L 196.5 161.88 L 200 163.63 L 203.5 161.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="140" y="120" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 140px; margin-left: 141px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
public
</div>
</div>
</div>
</foreignObject>
<text x="200" y="144" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
public
</text>
</switch>
</g>
<path d="M 200 210 L 200 230 L 200 200 L 200 213.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 200 218.88 L 196.5 211.88 L 200 213.63 L 203.5 211.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="140" y="170" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 190px; margin-left: 141px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
account
</div>
</div>
</div>
</foreignObject>
<text x="200" y="194" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
account
</text>
</switch>
</g>
<path d="M 200 260 L 200 280 L 200 250 L 200 263.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/>
<path d="M 200 268.88 L 196.5 261.88 L 200 263.63 L 203.5 261.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/>
<rect x="140" y="220" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 240px; margin-left: 141px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
files.read
</div>
</div>
</div>
</foreignObject>
<text x="200" y="244" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
files.read
</text>
</switch>
</g>
<rect x="140" y="270" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 290px; margin-left: 141px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
files.write
</div>
</div>
</div>
</foreignObject>
<text x="200" y="294" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
files.write
</text>
</switch>
</g>
<rect x="140" y="320" width="120" height="40" fill="#bac8d3" stroke="#23445d" pointer-events="all"/>
<g transform="translate(-0.5 -0.5)">
<switch>
<foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 340px; margin-left: 141px;">
<div style="box-sizing: border-box; font-size: 0; text-align: center; ">
<div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">
<b>
...
</b>
</div>
</div>
</div>
</foreignObject>
<text x="200" y="344" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">
...
</text>
</switch>
</g>
</g>
<switch>
<g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 52 KiB