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;app.diagrams.net&quot; modified=&quot;2021-03-15T06:55:50.831Z&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;AD31bLc6_J7HSik7tGUN&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 /api/editor/links (authenticated)</div></div></div></foreignObject><text x="507" y="566" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">GET /api/editor/links (authenticat...</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 508 Q 778 498 768 498 L 323.37 498" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 318.12 498 L 325.12 494.5 L 323.37 498 L 325.12 501.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 317.72 519.23 L 747 519.01 Q 757 519 757 529 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="474" 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: 484px; 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 /api/editor/links (authenticated) with updated JSON recvd from /api/editor/links</div></div></div></foreignObject><text x="557" y="488" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">POST /api/editor/links (authenticated) with updated JSON recvd from /ap...</text></switch></g><rect x="493" y="518" 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: 528px; 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="532" 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>