LinkList/assets/client-server-interaction.svg

3 lines
26 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="788px" height="721px" viewBox="-0.5 -0.5 788 721" content="&lt;mxfile host=&quot;www.draw.io&quot; modified=&quot;2021-03-15T04:26:56.446Z&quot; agent=&quot;5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36&quot; etag=&quot;cW8hYVdS6is_brwqMzHf&quot; version=&quot;14.4.8&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;nWxgDZutG5X04Ajf33Mw&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="667" y="650" width="120" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" 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: 680px; margin-left: 668px;"><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; ">Links editor page</div></div></div></foreignObject><text x="727" y="684" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Links editor page</text></switch></g><path d="M 197 86 L 297 86 L 317 106 L 317 246 L 217 246 L 197 226 L 197 86 Z" fill="#f5f5f5" stroke="#666666" stroke-miterlimit="10" pointer-events="all"/><path d="M 197 86 L 297 86 L 317 106 L 217 106 Z" fill-opacity="0.05" fill="#000000" stroke="none" pointer-events="all"/><path d="M 197 86 L 217 106 L 217 246 L 197 226 Z" fill-opacity="0.1" fill="#000000" stroke="none" pointer-events="all"/><path d="M 217 246 L 217 106 L 197 86 M 217 106 L 317 106" fill="none" stroke="#666666" 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: 98px; height: 1px; padding-top: 176px; margin-left: 218px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">caffeine</div></div></div></foreignObject><text x="267" y="180" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">caffeine</text></switch></g><rect x="364" y="103" width="240" height="20" fill="none" stroke="none" 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: 238px; height: 1px; padding-top: 113px; margin-left: 365px;"><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; ">Response /srv/www-csc-links/index.html</div></div></div></foreignObject><text x="484" y="117" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Response /srv/www-csc-links/index.html</text></switch></g><path d="M 667 71 L 367 71 Q 357 71 349.47 77.59 L 321.79 101.81" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 317.84 105.26 L 320.8 98.02 L 321.79 101.81 L 325.41 103.29 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="350" y="50" width="260" height="20" fill="none" stroke="none" 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: 258px; height: 1px; padding-top: 60px; margin-left: 351px;"><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; ">GET /</div></div></div></foreignObject><text x="480" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">GET /</text></switch></g><rect x="667" y="56" width="120" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" 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: 86px; margin-left: 668px;"><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; ">Links page</div></div></div></foreignObject><text x="727" y="90" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Links page</text></switch></g><path d="M 318 146 L 359.63 107.76 Q 367 101 377 101 L 660.63 101" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 665.88 101 L 658.88 104.5 L 660.63 101 L 658.88 97.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 678.52 117.02 L 677.19 187 Q 677 197 667 197 L 325.17 197.04" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 319.92 197.04 L 326.92 193.54 L 325.17 197.04 L 326.92 200.54 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 319.64 225.36 L 696 225.01 Q 706 225 706 215 L 706 122.91" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 706 117.66 L 709.5 124.66 L 706 122.91 L 702.5 124.66 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="364" y="176" width="270" height="20" fill="none" stroke="none" 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: 268px; height: 1px; padding-top: 186px; margin-left: 365px;"><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; ">GET /links.json</div></div></div></foreignObject><text x="499" y="190" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">GET /links.json</text></switch></g><rect x="317" y="227" width="390" height="20" fill="none" stroke="none" 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: 388px; height: 1px; padding-top: 237px; margin-left: 318px;"><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; ">Response /srv/www-csc-links/links.json (does not include click count)</div></div></div></foreignObject><text x="512" y="241" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Response /srv/www-csc-links/links.json (does not include click co...</text></switch></g><path d="M 747 116 L 747 376 Q 747 386 737 386 L 323.37 386" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 318.12 386 L 325.12 382.5 L 323.37 386 L 325.12 389.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="210" y="0" width="358" height="20" fill="none" stroke="none" 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: 356px; height: 1px; padding-top: 10px; margin-left: 211px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Consider / to be https://csclub.uwaterloo.ca/links</div></div></div></foreignObject><text x="389" y="15" fill="#000000" font-family="Helvetica" font-size="16px" text-anchor="middle">Consider / to be https://csclub.uwaterloo.ca/...</text></switch></g><rect x="322" y="346" width="420" height="40" fill="none" stroke="none" 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: 418px; height: 1px; padding-top: 366px; margin-left: 323px;"><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; "><u>ONLY when a link is clicked:</u><br />POST /api/click with { "url": &lt;url&gt;, "name": &lt;name&gt; } as payload</div></div></div></foreignObject><text x="532" y="370" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">ONLY when a link is clicked:...</text></switch></g><path d="M 315.44 419.19 L 767 419 Q 777 419 777 409 L 777 122.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 777 117.12 L 780.5 124.12 L 777 122.37 L 773.5 124.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="493" y="400" width="70" height="20" fill="none" stroke="none" 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: 68px; height: 1px; padding-top: 410px; margin-left: 494px;"><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; ">200 OK</div></div></div></foreignObject><text x="528" y="414" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">200 OK</text></switch></g><path d="M 197 366 L 297 366 L 317 386 L 317 610 L 217 610 L 197 590 L 197 366 Z" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="all"/><path d="M 197 366 L 297 366 L 317 386 L 217 386 Z" fill-opacity="0.05" fill="#000000" stroke="none" pointer-events="all"/><path d="M 197 366 L 217 386 L 217 610 L 197 590 Z" fill-opacity="0.1" fill="#000000" stroke="none" pointer-events="all"/><path d="M 217 610 L 217 386 L 197 366 M 217 386 L 317 386" fill="none" stroke="#d6b656" 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: 98px; height: 1px; padding-top: 498px; margin-left: 218px;"><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; ">Backend<br />(python)</div></div></div></foreignObject><text x="267" y="502" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Backend...</text></switch></g><path d="M 667 665 L 47 665 Q 37 665 37 655 L 37 202 Q 37 192 47 192.03 L 188.11 192.38" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 193.36 192.4 L 186.35 195.88 L 188.11 192.38 L 186.37 188.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 197 156 L 17 156 Q 7 156 7 166 L 7 685 Q 7 695 17 695 L 660.63 695" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 665.88 695 L 658.88 698.5 L 660.63 695 L 658.88 691.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="404" y="552" width="206" height="20" fill="none" stroke="none" 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: 204px; height: 1px; padding-top: 562px; margin-left: 405px;"><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; ">GET /editor/links (authenticated)</div></div></div></foreignObject><text x="507" y="566" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">GET /editor/links (authenticated)</text></switch></g><rect x="192" y="700" width="320" height="20" fill="none" stroke="none" 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: 318px; height: 1px; padding-top: 710px; margin-left: 193px;"><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; ">Response /srv/www-csc-links/editor/index.html</div></div></div></foreignObject><text x="352" y="714" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Response /srv/www-csc-links/editor/index.html</text></switch></g><rect x="312" y="604" width="390" height="20" fill="none" stroke="none" 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: 388px; height: 1px; padding-top: 614px; margin-left: 313px;"><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; ">Dynamically generated links with click count</div></div></div></foreignObject><text x="507" y="618" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Dynamically generated links with click count</text></switch></g><path d="M 697 650 L 697 582 Q 697 572 687 572 L 322.89 571.94" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 317.64 571.94 L 324.64 568.44 L 322.89 571.94 L 324.64 575.44 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="271" y="644" width="206" height="20" fill="none" stroke="none" 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: 204px; height: 1px; padding-top: 654px; margin-left: 272px;"><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; ">GET /editor (authenticated)</div></div></div></foreignObject><text x="374" y="658" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">GET /editor (authenticated)</text></switch></g><path d="M 316.76 602.44 L 666 602.01 Q 676 602 675.9 612 L 675.58 644.17" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 675.53 649.42 L 672.1 642.39 L 675.58 644.17 L 679.1 642.46 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 92 459 C 92 450.72 105.43 444 122 444 C 129.96 444 137.59 445.58 143.21 448.39 C 148.84 451.21 152 455.02 152 459 L 152 509 C 152 517.28 138.57 524 122 524 C 105.43 524 92 517.28 92 509 Z" fill="#f8cecc" stroke="#b85450" stroke-miterlimit="10" pointer-events="all"/><path d="M 152 459 C 152 467.28 138.57 474 122 474 C 105.43 474 92 467.28 92 459" fill="none" stroke="#b85450" 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: 58px; height: 1px; padding-top: 497px; margin-left: 93px;"><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; ">sqlite</div></div></div></foreignObject><text x="122" y="500" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">sqlite</text></switch></g><path d="M 158.37 484.15 L 190.15 484.92" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 153.12 484.03 L 160.2 480.7 L 158.37 484.15 L 160.03 487.69 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 195.4 485.05 L 188.32 488.38 L 190.15 484.92 L 188.49 481.38 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 778 650 L 778 472 Q 778 462 768 462 L 323.61 462.13" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 318.36 462.14 L 325.36 458.63 L 323.61 462.13 L 325.36 465.63 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 317.72 491.42 L 747 491.01 Q 757 491 757 501 L 757 643.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 757 648.88 L 753.5 641.88 L 757 643.63 L 760.5 641.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="342" y="440" width="430" height="20" fill="none" stroke="none" 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: 428px; height: 1px; padding-top: 450px; margin-left: 343px;"><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; ">POST /editor/links (authenticated) with updated JSON recvd from /editor/links</div></div></div></foreignObject><text x="557" y="454" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">POST /editor/links (authenticated) with updated JSON recvd from /editor...</text></switch></g><rect x="493" y="490" width="70" height="20" fill="none" stroke="none" 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: 68px; height: 1px; padding-top: 500px; margin-left: 494px;"><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; ">200 OK</div></div></div></foreignObject><text x="528" y="504" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">200 OK</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>