Add information related to the database service

Signed-off-by: Akashdeep Dhar <akashdeep.dhar@gmail.com>
This commit is contained in:
Akashdeep Dhar 2024-03-27 09:31:06 +05:30
parent e9e576fc26
commit 3fafdac29c
6 changed files with 574 additions and 0 deletions

3
docs/_static/w2fm_dber.svg vendored Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 35 KiB

View file

@ -0,0 +1,198 @@
.. _dber:
Database service
================
The following is the entity-relationship model diagram of the database service.
.. image:: ../_static/w2fm_dber.svg
:target: ../_images/w2fm_dber.svg
Entities involved
-----------------
Please note that the keys denoted within square brackets are primary keys while
the keys denoted within parentheses are foreign keys.
USER
^^^^
Purpose
"""""""
The table stores information of all the users enrolled to the service. For the
most parts, the service will make use of Fedora Account System authentication
check for retrieving information. As such, it is required for users to be
enrolled on the Fedora Account System to be able to make use of the service.
While most users will have basic privileges of utilizing the service, some
users will have elevated privileges of maintaining the service.
Resources
"""""""""
The following keys must be populated in order to create an entry to the table.
1. **[UUID]** - Automatically generating unique identifier assigned per user who
have logged into the service for the first time. The data type considered
here is string.
2. **USERNAME** - Username of the user taken from the Fedora Account System
authentication check to defer to that for more info. The data type
considered here is string.
3. **IS_ADMIN** - Toggle for administrative access which can be used to
moderate the users and establish fair usage. The data type considered here
is boolean.
References
""""""""""
As this table does not depend on any other table, it does not have any foreign
keys.
Identifier
""""""""""
The ``UUID`` key is the primary key for the table.
APIKEY
^^^^^^
Purpose
"""""""
The table stores information of all the access tokens associated per entry on
the user table. The access token is required to authenticate the user
requesting event creation from the API service and hence, an irreversible
hashed form of the same would be stored in the database. Users can manage the
purpose of the created access token, set the validity of the same and revoke
its usage in their discretion and these would be recorded.
Resources
"""""""""
The following keys must be populated in order to create an entry to the table.
1. **[UUID]** - Unique identifier generated by fixture assigned per access
token created by the users whenever it is created. The data type considered
here is string.
2. **(USER_UUID)** - A reference to the unique identifier assigned to users to
associate the access tokens with the creator. The data type considered here
is string.
3. **HASH_DIGEST** - Unique identifier generated by fixture assigned per
access token entry whenever requested by the user. The data type considered
here is string.
4. **NAME** - Name for the access token that could be used to store the purpose
or other associated information for those. The data type considered here
is string.
5. **VALID_FROM** - Date from when the created API key is active which is
populated with the creation date by fixture. The data type considered here
is datetime.
6. **VALID_TILL** - Date beyond which the create API key will not be active
which is set when ``IS_VALID`` is enabled. The data type considered here
is datetime.
7. **IS_VALID** - Toggle for changing access token activity which can be used
to protect or invalidate existing API keys. The data type considered here
is boolean.
References
""""""""""
This table depends on the user table and hence, it has one foreign key named
``USER_UUID`` referencing the key ``UUID`` from the user table.
Identifier
""""""""""
The ``UUID`` key is the primary key for the table.
SERVICE
^^^^^^^
Purpose
"""""""
The table stores information of all the service entries associated per entry on
the user table. A POST endpoint with the unique identifier as the route string
would be created as a result which can only be accessed using the access token
associated with the user who created the said service. The purpose of the
service, templatable topic, templatable body, creation date and revocation
status can be managed by the users and are recorded.
Resources
"""""""""
The following keys must be populated in order to create an entry to the table.
1. **[UUID]** - Unique identifier generated by fixture assigned per service
entry created by the users whenever it is created. The data type considered
here is string.
2. **(USER_UUID)** - A reference to the unique identifier assigned to users to
associate the service entry with the creator. The data type considered here
is string.
3. **NAME** - Name for the service entry that could be used to store the
purpose or other associated information for those. The data type considered
here is string.
4. **MESG_HEAD** - Head of the message to be sent on Fedora Messaging bus
with minimal support for string templating. The data type considered here
is string.
5. **MESG_BODY** - Body of the message to be sent on Fedora Messaging bus
with minimal support for string templating. The data type considered here
is string.
6. **IS_VALID** - Toggle for changing service entry activity which can be used
to protect or disable older service entries. The data type considered here
is boolean.
7. **CREATION_DATE** - Date of creation of the service entry which is
populated with the creation date by fixture. The data type considered here
is datetime.
References
""""""""""
This table depends on the user table and hence, it has one foreign key named
``USER_UUID`` referencing the key ``UUID`` from the user table.
Identifier
""""""""""
The ``UUID`` key is the primary key for the table.
MESSAGE
^^^^^^^
Purpose
"""""""
The table stores information of all the message entries associated per entry on
the service table. As the contents of the message can be easily retrieved from
Datanommer, this table will limit itself to storing a digest signature of the
message sent on the Fedora Messaging bus. The entries to this table would be
created only when the messages originating from service events being triggered
are shared on the Fedora Messaging bus successfully.
Resources
"""""""""
The following keys must be populated in order to create an entry to the table.
1. **[UUID]** - Unique identifier generated by fixture assigned per message
entry created whenever an service event occurs. The data type considered
here is string.
2. **(SERVICE_UUID)** - A reference to the unique identifier assigned to
service to associate them with the message. The data type considered here
is string.
3. **DIGEST** - Digest signature of the message posted on the bus or the
identifier received on sending the message. The data type considered here
is string.
4. **CREATION_DATE** - Date of creation of the message entry which is
populated with the creation date by a fixture. The data type considered
here is datetime.
References
""""""""""
This table depends on the service table and hence, it has one foreign key named
``SERVICE_UUID`` referencing the key ``UUID`` from the service table.
Identifier
""""""""""
The ``UUID`` key is the primary key for the table.

View file

@ -0,0 +1,124 @@
<mxfile host="app.diagrams.net" modified="2024-04-03T08:19:29.587Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0" etag="aDYyZJv1FTQovE_fkZ_P" version="24.2.1" type="device">
<diagram id="l01RRKwlXx8QvVu7Ah4C" name="Page-1">
<mxGraphModel dx="1176" dy="1614" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="wZTHfrROIifU4qonSOTC-1" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;USER&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;startSize=20;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="80" y="230" width="160" height="120" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-2" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-1" vertex="1">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-3" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;USERNAME&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-1" vertex="1">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-30" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;IS_ADMIN&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-1" vertex="1">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-4" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;APIKEY&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="-120" y="40" width="160" height="240" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-5" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-6" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;USER_UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-10" value="HASH_DIGEST" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-11" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;VALID_FROM&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="150" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-12" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;VALID_TILL&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="180" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-13" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;IS_VALID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="210" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-19" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;NAME&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="120" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-9" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;labelBackgroundColor=none;strokeColor=#457B9D;fontColor=default;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" source="wZTHfrROIifU4qonSOTC-6" target="wZTHfrROIifU4qonSOTC-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-26" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;M&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-9" vertex="1" connectable="0">
<mxGeometry x="-0.7816" y="-1" relative="1" as="geometry">
<mxPoint x="-4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-27" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-9" vertex="1" connectable="0">
<mxGeometry x="0.7663" relative="1" as="geometry">
<mxPoint x="6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-14" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;SERVICE&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="280" y="40" width="160" height="240" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-15" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-16" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;USER_UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-20" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;NAME&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-21" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;MESG_TOPIC&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="120" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-22" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;MESG_STORY&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="150" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-23" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;IS_VALID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="180" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-25" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;CREATION_DATE&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="210" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-17" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;labelBackgroundColor=none;strokeColor=#457B9D;fontColor=default;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" source="wZTHfrROIifU4qonSOTC-16" target="wZTHfrROIifU4qonSOTC-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-28" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-17" vertex="1" connectable="0">
<mxGeometry x="0.7407" relative="1" as="geometry">
<mxPoint x="-8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-29" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;M&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-17" vertex="1" connectable="0">
<mxGeometry x="-0.7765" y="-1" relative="1" as="geometry">
<mxPoint x="4" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-31" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;MESSAGE&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="80" y="-40" width="160" height="150" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-32" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-31" vertex="1">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-33" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;SERVICE_UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-31" vertex="1">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-37" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;DIGEST&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-31" vertex="1">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-38" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;CREATION_DATE&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-31" vertex="1">
<mxGeometry x="10" y="120" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-40" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#457B9D;fontColor=#1D3557;fillColor=#A8DADC;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" source="wZTHfrROIifU4qonSOTC-33" target="wZTHfrROIifU4qonSOTC-15" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-41" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;M&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;strokeColor=#457B9D;fontColor=#1D3557;fillColor=#A8DADC;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-40" vertex="1" connectable="0">
<mxGeometry x="-0.7792" relative="1" as="geometry">
<mxPoint x="8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-42" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;strokeColor=#457B9D;fontColor=#1D3557;fillColor=#A8DADC;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-40" vertex="1" connectable="0">
<mxGeometry x="0.7763" relative="1" as="geometry">
<mxPoint x="-8" as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -110,3 +110,4 @@ Estimate of work
This work will need at least 2 developers, one with web frontend skill set. The
estimation for this project is 12 weeks.

View file

@ -0,0 +1,124 @@
<mxfile host="app.diagrams.net" modified="2024-03-26T08:13:30.536Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" etag="aFE2sRYAjv42G5zem8MX" version="24.1.0" type="device">
<diagram id="l01RRKwlXx8QvVu7Ah4C" name="Page-1">
<mxGraphModel dx="1669" dy="1569" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="wZTHfrROIifU4qonSOTC-1" value="&lt;font face=&quot;Courier New&quot; style=&quot;font-size: 12px;&quot;&gt;USER&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;startSize=20;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="1">
<mxGeometry x="80" y="230" width="160" height="120" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-2" value="&lt;font face=&quot;Courier New&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-1">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-3" value="&lt;font face=&quot;Courier New&quot;&gt;USERNAME&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-1">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-30" value="&lt;font face=&quot;Courier New&quot;&gt;IS_ADMIN&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-1">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-4" value="&lt;font face=&quot;Courier New&quot;&gt;APIKEY&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="1">
<mxGeometry x="-120" y="40" width="160" height="240" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-5" value="&lt;font face=&quot;Courier New&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-4">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-6" value="&lt;font face=&quot;Courier New&quot;&gt;USER_UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-4">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-10" value="&lt;font face=&quot;Courier New&quot;&gt;CODE&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-4">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-11" value="&lt;font face=&quot;Courier New&quot;&gt;VALID_FROM&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-4">
<mxGeometry x="10" y="150" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-12" value="&lt;font face=&quot;Courier New&quot;&gt;VALID_TILL&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-4">
<mxGeometry x="10" y="180" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-13" value="&lt;font face=&quot;Courier New&quot;&gt;IS_VALID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-4">
<mxGeometry x="10" y="210" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-19" value="&lt;font face=&quot;Courier New&quot;&gt;NAME&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-4">
<mxGeometry x="10" y="120" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-9" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;labelBackgroundColor=none;strokeColor=#457B9D;fontColor=default;" edge="1" parent="1" source="wZTHfrROIifU4qonSOTC-6" target="wZTHfrROIifU4qonSOTC-2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-26" value="&lt;font face=&quot;Courier New&quot;&gt;M&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;" vertex="1" connectable="0" parent="wZTHfrROIifU4qonSOTC-9">
<mxGeometry x="-0.7816" y="-1" relative="1" as="geometry">
<mxPoint x="-4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-27" value="&lt;font face=&quot;Courier New&quot;&gt;1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;" vertex="1" connectable="0" parent="wZTHfrROIifU4qonSOTC-9">
<mxGeometry x="0.7663" relative="1" as="geometry">
<mxPoint x="6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-14" value="&lt;font face=&quot;Courier New&quot;&gt;SERVICE&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="1">
<mxGeometry x="280" y="40" width="160" height="240" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-15" value="&lt;font face=&quot;Courier New&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-14">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-16" value="&lt;font face=&quot;Courier New&quot;&gt;USER_UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-14">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-20" value="&lt;font face=&quot;Courier New&quot;&gt;NAME&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-14">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-21" value="&lt;font face=&quot;Courier New&quot;&gt;MESG_TOPIC&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-14">
<mxGeometry x="10" y="120" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-22" value="&lt;font face=&quot;Courier New&quot;&gt;MESG_STORY&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-14">
<mxGeometry x="10" y="150" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-23" value="&lt;font face=&quot;Courier New&quot;&gt;IS_VALID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-14">
<mxGeometry x="10" y="180" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-25" value="&lt;font face=&quot;Courier New&quot;&gt;CREATION_DATE&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-14">
<mxGeometry x="10" y="210" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-17" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;labelBackgroundColor=none;strokeColor=#457B9D;fontColor=default;" edge="1" parent="1" source="wZTHfrROIifU4qonSOTC-16" target="wZTHfrROIifU4qonSOTC-2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-28" value="&lt;font face=&quot;Courier New&quot;&gt;1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;" vertex="1" connectable="0" parent="wZTHfrROIifU4qonSOTC-17">
<mxGeometry x="0.7407" relative="1" as="geometry">
<mxPoint x="-8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-29" value="&lt;font face=&quot;Courier New&quot;&gt;M&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;" vertex="1" connectable="0" parent="wZTHfrROIifU4qonSOTC-17">
<mxGeometry x="-0.7765" y="-1" relative="1" as="geometry">
<mxPoint x="4" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-31" value="&lt;font face=&quot;Courier New&quot;&gt;MESSAGE&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="1">
<mxGeometry x="80" y="-40" width="160" height="150" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-32" value="&lt;font face=&quot;Courier New&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-31">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-33" value="&lt;font face=&quot;Courier New&quot;&gt;SERVICE_UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-31">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-37" value="&lt;font face=&quot;Courier New&quot;&gt;DIGEST&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-31">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-38" value="&lt;font face=&quot;Courier New&quot;&gt;CREATION_DATE&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;" vertex="1" parent="wZTHfrROIifU4qonSOTC-31">
<mxGeometry x="10" y="120" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-40" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#457B9D;fontColor=#1D3557;fillColor=#A8DADC;" edge="1" parent="1" source="wZTHfrROIifU4qonSOTC-33" target="wZTHfrROIifU4qonSOTC-15">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-41" value="&lt;font face=&quot;Courier New&quot;&gt;M&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;strokeColor=#457B9D;fontColor=#1D3557;fillColor=#A8DADC;" vertex="1" connectable="0" parent="wZTHfrROIifU4qonSOTC-40">
<mxGeometry x="-0.7792" relative="1" as="geometry">
<mxPoint x="8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-42" value="&lt;font face=&quot;Courier New&quot;&gt;1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;strokeColor=#457B9D;fontColor=#1D3557;fillColor=#A8DADC;" vertex="1" connectable="0" parent="wZTHfrROIifU4qonSOTC-40">
<mxGeometry x="0.7763" relative="1" as="geometry">
<mxPoint x="-8" as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View file

@ -0,0 +1,124 @@
<mxfile host="app.diagrams.net" modified="2024-04-01T06:44:19.439Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0" etag="o0jQeyA5-_9nwyENccBk" version="24.2.0" type="device">
<diagram id="l01RRKwlXx8QvVu7Ah4C" name="Page-1">
<mxGraphModel dx="1786" dy="1621" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="wZTHfrROIifU4qonSOTC-1" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;USER&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;startSize=20;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="80" y="230" width="160" height="120" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-2" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-1" vertex="1">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-3" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;USERNAME&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-1" vertex="1">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-30" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;IS_ADMIN&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-1" vertex="1">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-4" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;APIKEY&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="-120" y="40" width="160" height="240" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-5" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-6" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;USER_UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-10" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;CODE&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-11" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;VALID_FROM&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="150" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-12" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;VALID_TILL&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="180" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-13" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;IS_VALID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="210" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-19" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;NAME&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-4" vertex="1">
<mxGeometry x="10" y="120" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-9" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;labelBackgroundColor=none;strokeColor=#457B9D;fontColor=default;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" source="wZTHfrROIifU4qonSOTC-6" target="wZTHfrROIifU4qonSOTC-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-26" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;M&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-9" vertex="1" connectable="0">
<mxGeometry x="-0.7816" y="-1" relative="1" as="geometry">
<mxPoint x="-4" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-27" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-9" vertex="1" connectable="0">
<mxGeometry x="0.7663" relative="1" as="geometry">
<mxPoint x="6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-14" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;SERVICE&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="280" y="40" width="160" height="240" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-15" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-16" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;USER_UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-20" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;NAME&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-21" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;MESG_HEAD&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="120" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-22" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;MESG_BODY&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="150" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-23" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;IS_VALID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="180" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-25" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;CREATION_DATE&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-14" vertex="1">
<mxGeometry x="10" y="210" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-17" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;labelBackgroundColor=none;strokeColor=#457B9D;fontColor=default;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" source="wZTHfrROIifU4qonSOTC-16" target="wZTHfrROIifU4qonSOTC-2" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-28" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-17" vertex="1" connectable="0">
<mxGeometry x="0.7407" relative="1" as="geometry">
<mxPoint x="-8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-29" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;M&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;labelBackgroundColor=none;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-17" vertex="1" connectable="0">
<mxGeometry x="-0.7765" y="-1" relative="1" as="geometry">
<mxPoint x="4" y="1" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-31" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;MESSAGE&lt;/font&gt;" style="swimlane;whiteSpace=wrap;html=1;rounded=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" vertex="1">
<mxGeometry x="80" y="-40" width="160" height="150" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-32" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-31" vertex="1">
<mxGeometry x="10" y="30" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-33" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;SERVICE_UUID&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-31" vertex="1">
<mxGeometry x="10" y="60" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-37" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;DIGEST&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-31" vertex="1">
<mxGeometry x="10" y="90" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-38" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;CREATION_DATE&lt;/font&gt;" style="rounded=1;whiteSpace=wrap;html=1;labelBackgroundColor=none;fillColor=#A8DADC;strokeColor=#457B9D;fontColor=#1D3557;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-31" vertex="1">
<mxGeometry x="10" y="120" width="140" height="20" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-40" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#457B9D;fontColor=#1D3557;fillColor=#A8DADC;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="1" source="wZTHfrROIifU4qonSOTC-33" target="wZTHfrROIifU4qonSOTC-15" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-41" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;M&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;strokeColor=#457B9D;fontColor=#1D3557;fillColor=#A8DADC;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-40" vertex="1" connectable="0">
<mxGeometry x="-0.7792" relative="1" as="geometry">
<mxPoint x="8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="wZTHfrROIifU4qonSOTC-42" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;1&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rounded=1;strokeColor=#457B9D;fontColor=#1D3557;fillColor=#A8DADC;fontFamily=JetBrains Mono;fontSource=https%3A%2F%2Ffonts.googleapis.com%2Fcss%3Ffamily%3DJetBrains%2BMono;fontSize=10;" parent="wZTHfrROIifU4qonSOTC-40" vertex="1" connectable="0">
<mxGeometry x="0.7763" relative="1" as="geometry">
<mxPoint x="-8" as="offset" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>