<mxfile host="Electron" modified="2026-03-25T00:00:00.000Z" version="26.0.0">
  <diagram id="sequence" name="Sequence Diagram">
    <mxGraphModel dx="1422" dy="762" grid="1" gridSize="10" guides="1"
                  tooltips="1" connect="1" arrows="1" fold="1"
                  page="1" pageScale="1" pageWidth="1169" pageHeight="827"
                  math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <!-- TITLE -->
        <mxCell id="2" value="Sequence Diagram"
                style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=18;fontStyle=1;"
                vertex="1" parent="1">
          <mxGeometry x="334" y="20" width="500" height="40" as="geometry" />
        </mxCell>

        <!-- ====== ACTOR BOXES (top row) ====== -->
        <!-- Actor A: Client -->
        <mxCell id="actorA" value="Client"
                style="shape=mxgraph.uml.actor;pointerEvents=1;dashed=0;fillColor=#dae8fc;strokeColor=#6c8ebf;sketch=0;aspect=fixed;"
                vertex="1" parent="1">
          <mxGeometry x="110" y="80" width="60" height="80" as="geometry" />
        </mxCell>

        <!-- Actor B: API Server -->
        <mxCell id="actorB" value="&lt;b&gt;API Server&lt;/b&gt;"
                style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=13;"
                vertex="1" parent="1">
          <mxGeometry x="480" y="100" width="160" height="60" as="geometry" />
        </mxCell>

        <!-- Actor C: Database -->
        <mxCell id="actorC" value="&lt;b&gt;Database&lt;/b&gt;"
                style="shape=mxgraph.flowchart.database;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=13;"
                vertex="1" parent="1">
          <mxGeometry x="870" y="90" width="80" height="80" as="geometry" />
        </mxCell>

        <!-- ====== LIFELINES ====== -->
        <!-- Lifeline A -->
        <mxCell id="lifA" value=""
                style="edgeStyle=none;dashed=1;endArrow=none;entryX=0.5;entryY=0;entryDx=0;entryDy=0;"
                edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <Array as="points" />
            <mxPoint x="140" y="160" as="sourcePoint" />
            <mxPoint x="140" y="780" as="targetPoint" />
          </mxGeometry>
        </mxCell>

        <!-- Lifeline B -->
        <mxCell id="lifB" value=""
                style="edgeStyle=none;dashed=1;endArrow=none;"
                edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="560" y="160" as="sourcePoint" />
            <mxPoint x="560" y="780" as="targetPoint" />
          </mxGeometry>
        </mxCell>

        <!-- Lifeline C -->
        <mxCell id="lifC" value=""
                style="edgeStyle=none;dashed=1;endArrow=none;"
                edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="910" y="170" as="sourcePoint" />
            <mxPoint x="910" y="780" as="targetPoint" />
          </mxGeometry>
        </mxCell>

        <!-- ====== ACTIVATION BOXES (thin rectangles on lifelines) ====== -->
        <!-- Activation on A during request flow -->
        <mxCell id="actA1" value=""
                style="fillColor=#dae8fc;strokeColor=#6c8ebf;"
                vertex="1" parent="1">
          <mxGeometry x="130" y="220" width="20" height="200" as="geometry" />
        </mxCell>

        <!-- Activation on B during processing -->
        <mxCell id="actB1" value=""
                style="fillColor=#fff2cc;strokeColor=#d6b656;"
                vertex="1" parent="1">
          <mxGeometry x="550" y="260" width="20" height="120" as="geometry" />
        </mxCell>

        <!-- Activation on C during DB query -->
        <mxCell id="actC1" value=""
                style="fillColor=#d5e8d4;strokeColor=#82b366;"
                vertex="1" parent="1">
          <mxGeometry x="900" y="300" width="20" height="60" as="geometry" />
        </mxCell>

        <!-- ====== MESSAGE ARROWS ====== -->
        <!-- 1. A → B: Request -->
        <mxCell id="msg1" value="1: POST /api/orders"
                style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;endFill=1;"
                edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="150" y="240" as="sourcePoint" />
            <mxPoint x="550" y="240" as="targetPoint" />
          </mxGeometry>
        </mxCell>

        <!-- 2. B → B: Validate input (self-message) -->
        <mxCell id="msg2" value="2: Validate &amp; Authenticate"
                style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;endFill=1;"
                edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="570" y="280" as="sourcePoint" />
            <mxPoint x="570" y="300" as="targetPoint" />
            <Array as="points">
              <mxPoint x="620" y="280" />
              <mxPoint x="620" y="300" />
            </Array>
          </mxGeometry>
        </mxCell>

        <!-- 3. B → C: Query -->
        <mxCell id="msg3" value="3: INSERT orders (...)"
                style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=block;endFill=1;"
                edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="570" y="320" as="sourcePoint" />
            <mxPoint x="900" y="320" as="targetPoint" />
          </mxGeometry>
        </mxCell>

        <!-- 4. C → B: Return result -->
        <mxCell id="msg4" value="4: {id: 42, status: created}"
                style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=open;endFill=0;dashed=1;"
                edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="900" y="360" as="sourcePoint" />
            <mxPoint x="570" y="360" as="targetPoint" />
          </mxGeometry>
        </mxCell>

        <!-- 5. B → A: Response -->
        <mxCell id="msg5" value="5: 201 Created {orderId: 42}"
                style="edgeStyle=orthogonalEdgeStyle;html=1;endArrow=open;endFill=0;dashed=1;"
                edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="550" y="410" as="sourcePoint" />
            <mxPoint x="150" y="410" as="targetPoint" />
          </mxGeometry>
        </mxCell>

        <!-- ====== NOTES ====== -->
        <mxCell id="note1" value="&lt;i&gt;Requires Authorization header&lt;/i&gt;"
                style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;fontSize=11;fillColor=#fffacd;strokeColor=#aaa;"
                vertex="1" parent="1">
          <mxGeometry x="200" y="220" width="200" height="40" as="geometry" />
        </mxCell>

        <!-- connector from note to arrow -->
        <mxCell id="noteEdge1" value=""
                style="edgeStyle=none;dashed=1;endArrow=none;"
                edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="290" y="240" as="sourcePoint" />
            <mxPoint x="350" y="240" as="targetPoint" />
          </mxGeometry>
        </mxCell>

      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
