images/docs/Diagrams.svg/RESTy.svg
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!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:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 576 733" width="48pc" height="733pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.5.2 <dc:date>2016-04-12 13:18:31 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="24" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="30" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><filter id="Shadow_2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Courier" font-size="14" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica Neue" font-size="18" panose-1="2 0 10 6 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="553" cap-height="726" ascent="972.0001" descent="-227.005" font-weight="bold" font-stretch="condensed"><font-face-src><font-face-name name="HelveticaNeue-CondensedBlack"/></font-face-src></font-face><font-face font-family="Helvetica Neue" font-size="18" panose-1="2 0 2 6 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="525" cap-height="730" ascent="930.99976" descent="-212.99744" font-weight="200"><font-face-src><font-face-name name="HelveticaNeue-UltraLight"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>RESTy</title><rect fill="white" width="576" height="733"/><g><title>Layer 1</title><g><xl:use xl:href="#id4_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id22_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id10_Graphic" filter="url(#Shadow)"/></g><g id="id4_Graphic"><path d="M 112 127 L 509 127 C 513.97056 127 518 131.02944 518 136 L 518 666 C 518 670.97056 513.97056 675 509 675 L 112 675 C 107.02944 675 103 670.97056 103 666 L 103 136 C 103 131.02944 107.02944 127 112 127 Z" fill="#fff2cc"/><path d="M 112 127 L 509 127 C 513.97056 127 518 131.02944 518 136 L 518 666 C 518 670.97056 513.97056 675 509 675 L 112 675 C 107.02944 675 103 670.97056 103 666 L 103 136 C 103 131.02944 107.02944 127 112 127 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 132 399 L 488.5 399 C 493.47056 399 497.5 403.02944 497.5 408 L 497.5 648.999 C 497.5 653.96956 493.47056 657.999 488.5 657.999 L 132 657.999 C 127.02944 657.999 123 653.96956 123 648.999 L 123 408 C 123 403.02944 127.02944 399 132 399 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(128 404)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="0" y="23" textLength="114.714844">Resources</tspan></text><g id="id22_Graphic"><path d="M 46.0001 175.00031 L 80.99962 135 L 80.99962 153.0005 C 290 155.00015 310.9988 145.00161 367.00016 175.00031 C 423.00038 204.99984 407.99988 267.00013 407.99988 374.9999 L 426.0001 374.9999 L 377.00024 413 L 333.00042 376.00126 L 351.00064 376.00404 C 351.00064 268.00012 357.9991 238.99952 334.99998 216.00003 C 311.99934 192.99914 259.00013 197.00012 82.99994 198.00036 L 82.99994 216.0003 Z" fill="#ccc"/><path d="M 46.0001 175.00031 L 80.99962 135 L 80.99962 153.0005 C 290 155.00015 310.9988 145.00161 367.00016 175.00031 C 423.00038 204.99984 407.99988 267.00013 407.99988 374.9999 L 426.0001 374.9999 L 377.00024 413 L 333.00042 376.00126 L 351.00064 376.00404 C 351.00064 268.00012 357.9991 238.99952 334.99998 216.00003 C 311.99934 192.99914 259.00013 197.00012 82.99994 198.00036 L 82.99994 216.0003 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id10_Graphic"><path d="M 264.5 139 L 476.5 139 C 481.47056 139 485.5 143.02944 485.5 148 L 485.5 634 C 485.5 638.97056 481.47056 643 476.5 643 L 264.5 643 C 259.52944 643 255.5 638.97056 255.5 634 L 255.5 148 C 255.5 143.02944 259.52944 139 264.5 139 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="8,5"/><text transform="translate(260.5 144)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="99.953125" y="23" textLength="120.046875">Declarative</tspan></text></g><text transform="translate(58 51)" fill="black"><tspan font-family="Helvetica" font-size="30" font-weight="500" x=".39501953" y="29" textLength="80.009766">REST</tspan><tspan font-family="Helvetica" font-size="30" font-weight="500" x="78.76416" y="29" textLength="366.84082">y: Declarative Data Storage</tspan></text><g filter="url(#Shadow_2)"><path d="M 144 446 L 236 446 C 240.97056 446 245 450.02944 245 455 L 245 622 C 245 626.97056 240.97056 631 236 631 L 144 631 C 139.02944 631 135 626.97056 135 622 L 135 455 C 135 450.02944 139.02944 446 144 446 Z" fill="#7ec77e"/><path d="M 144 446 L 236 446 C 240.97056 446 245 450.02944 245 455 L 245 622 C 245 626.97056 240.97056 631 236 631 L 144 631 C 139.02944 631 135 626.97056 135 622 L 135 455 C 135 450.02944 139.02944 446 144 446 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(145 451)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="0" y="23" textLength="82.6875">Custom</tspan></text></g><g filter="url(#Shadow_2)"><path d="M 277 446 L 465.125 446 C 470.09556 446 474.125 450.02944 474.125 455 L 474.125 622 C 474.125 626.97056 470.09556 631 465.125 631 L 277 631 C 272.02944 631 268 626.97056 268 622 L 268 455 C 268 450.02944 272.02944 446 277 446 Z" fill="#7ec77e"/><path d="M 277 446 L 465.125 446 C 470.09556 446 474.125 450.02944 474.125 455 L 474.125 622 C 474.125 626.97056 470.09556 631 465.125 631 L 277 631 C 272.02944 631 268 626.97056 268 622 L 268 455 C 268 450.02944 272.02944 446 277 446 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(273 451)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="0" y="23" textLength="114.714844">Repository</tspan></text></g><g filter="url(#Shadow_2)"><path d="M 280.25865 610.00035 L 280.25865 494.00035 C 280.25865 489.0298 284.28809 485.00035 289.25865 485.00035 L 311.48335 485.00035 C 316.45391 485.00035 320.48335 489.0298 320.48335 494.00035 L 320.48335 610.00035 C 320.48335 614.9709 316.45391 619.00035 311.48335 619.00035 L 289.25865 619.00035 C 284.28809 619.00035 280.25865 614.9709 280.25865 610.00035 Z" fill="#ff5c65"/><path d="M 280.25865 610.00035 L 280.25865 494.00035 C 280.25865 489.0298 284.28809 485.00035 289.25865 485.00035 L 311.48335 485.00035 C 316.45391 485.00035 320.48335 489.0298 320.48335 494.00035 L 320.48335 610.00035 C 320.48335 614.9709 316.45391 619.00035 311.48335 619.00035 L 289.25865 619.00035 C 284.28809 619.00035 280.25865 614.9709 280.25865 610.00035 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(285.871 619.00035) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="8.3007812" y="23" textLength="117.39844">MegaStore</tspan></text></g><g filter="url(#Shadow_2)"><path d="M 375.33265 610.00035 L 375.33265 494.00035 C 375.33265 489.0298 379.36209 485.00035 384.33265 485.00035 L 406.55735 485.00035 C 411.52791 485.00035 415.55735 489.0298 415.55735 494.00035 L 415.55735 610.00035 C 415.55735 614.9709 411.52791 619.00035 406.55735 619.00035 L 384.33265 619.00035 C 379.36209 619.00035 375.33265 614.9709 375.33265 610.00035 Z" fill="#ffcacc"/><path d="M 375.33265 610.00035 L 375.33265 494.00035 C 375.33265 489.0298 379.36209 485.00035 384.33265 485.00035 L 406.55735 485.00035 C 411.52791 485.00035 415.55735 489.0298 415.55735 494.00035 L 415.55735 610.00035 C 415.55735 614.9709 411.52791 619.00035 406.55735 619.00035 L 384.33265 619.00035 C 379.36209 619.00035 375.33265 614.9709 375.33265 610.00035 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(380.945 619.00035) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="20.96875" y="23" textLength="49.347656">BigT</tspan><tspan font-family="Helvetica" font-size="24" font-weight="500" x="67.65625" y="23" textLength="45.375">able</tspan></text></g><g filter="url(#Shadow_2)"><path d="M 327.53965 610.00035 L 327.53965 494.00035 C 327.53965 489.0298 331.56909 485.00035 336.53965 485.00035 L 358.76435 485.00035 C 363.73491 485.00035 367.76435 489.0298 367.76435 494.00035 L 367.76435 610.00035 C 367.76435 614.9709 363.73491 619.00035 358.76435 619.00035 L 336.53965 619.00035 C 331.56909 619.00035 327.53965 614.9709 327.53965 610.00035 Z" fill="#ff5c65"/><path d="M 327.53965 610.00035 L 327.53965 494.00035 C 327.53965 489.0298 331.56909 485.00035 336.53965 485.00035 L 358.76435 485.00035 C 363.73491 485.00035 367.76435 489.0298 367.76435 494.00035 L 367.76435 610.00035 C 367.76435 614.9709 363.73491 619.00035 358.76435 619.00035 L 336.53965 619.00035 C 331.56909 619.00035 327.53965 614.9709 327.53965 610.00035 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(333.152 619.00035) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="12.964844" y="23" textLength="108.07031">Buganizer</tspan></text></g><g filter="url(#Shadow_2)"><path d="M 423.12465 610.00035 L 423.12465 494.00035 C 423.12465 489.0298 427.15409 485.00035 432.12465 485.00035 L 454.34935 485.00035 C 459.3199 485.00035 463.34935 489.0298 463.34935 494.00035 L 463.34935 610.00035 C 463.34935 614.9709 459.3199 619.00035 454.34935 619.00035 L 432.12465 619.00035 C 427.15409 619.00035 423.12465 614.9709 423.12465 610.00035 Z" fill="#ffcacc"/><path d="M 423.12465 610.00035 L 423.12465 494.00035 C 423.12465 489.0298 427.15409 485.00035 432.12465 485.00035 L 454.34935 485.00035 C 459.3199 485.00035 463.34935 489.0298 463.34935 494.00035 L 463.34935 610.00035 C 463.34935 614.9709 459.3199 619.00035 454.34935 619.00035 L 432.12465 619.00035 C 427.15409 619.00035 423.12465 614.9709 423.12465 610.00035 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(428.737 619.00035) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="46.978516" y="23" textLength="40.042969">???</tspan></text></g><text transform="translate(423.125 458)" fill="black"><tspan font-family="Courier" font-size="14" font-weight="500" x="0" y="14" textLength="50.408203">(CRUD)</tspan></text><g filter="url(#Shadow_2)"><path d="M 154.75 515.316 L 225.25 515.316 C 230.22056 515.316 234.25 519.34544 234.25 524.316 L 234.25 535.8447 C 234.25 540.81526 230.22056 544.8447 225.25 544.8447 L 154.75 544.8447 C 149.77944 544.8447 145.75 540.81526 145.75 535.8447 L 145.75 524.316 C 145.75 519.34544 149.77944 515.316 154.75 515.316 Z" fill="#ff8b37"/><path d="M 154.75 515.316 L 225.25 515.316 C 230.22056 515.316 234.25 519.34544 234.25 524.316 L 234.25 535.8447 C 234.25 540.81526 230.22056 544.8447 225.25 544.8447 L 154.75 544.8447 C 149.77944 544.8447 145.75 540.81526 145.75 535.8447 L 145.75 524.316 C 145.75 519.34544 149.77944 515.316 154.75 515.316 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(150.75 521.58035)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="24.463867" y="14" textLength="29.572266">Java</tspan></text></g><g filter="url(#Shadow_2)"><path d="M 154.75 552.393 L 225.25 552.393 C 230.22056 552.393 234.25 556.42244 234.25 561.393 L 234.25 572.9217 C 234.25 577.89226 230.22056 581.9217 225.25 581.9217 L 154.75 581.9217 C 149.77944 581.9217 145.75 577.89226 145.75 572.9217 L 145.75 561.393 C 145.75 556.42244 149.77944 552.393 154.75 552.393 Z" fill="#ffe4cd"/><path d="M 154.75 552.393 L 225.25 552.393 C 230.22056 552.393 234.25 556.42244 234.25 561.393 L 234.25 572.9217 C 234.25 577.89226 230.22056 581.9217 225.25 581.9217 L 154.75 581.9217 C 149.77944 581.9217 145.75 577.89226 145.75 572.9217 L 145.75 561.393 C 145.75 556.42244 149.77944 552.393 154.75 552.393 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(150.75 558.65735)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="6.5708008" y="14" textLength="65.3584">JavaScript</tspan></text></g><g filter="url(#Shadow_2)"><path d="M 154.75 589.471 L 225.25 589.471 C 230.22056 589.471 234.25 593.50044 234.25 598.471 L 234.25 609.9997 C 234.25 614.97026 230.22056 618.9997 225.25 618.9997 L 154.75 618.9997 C 149.77944 618.9997 145.75 614.97026 145.75 609.9997 L 145.75 598.471 C 145.75 593.50044 149.77944 589.471 154.75 589.471 Z" fill="#ffe4cd"/><path d="M 154.75 589.471 L 225.25 589.471 C 230.22056 589.471 234.25 593.50044 234.25 598.471 L 234.25 609.9997 C 234.25 614.97026 230.22056 618.9997 225.25 618.9997 L 154.75 618.9997 C 149.77944 618.9997 145.75 614.97026 145.75 609.9997 L 145.75 598.471 C 145.75 593.50044 149.77944 589.471 154.75 589.471 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(150.75 595.73535)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="27.5708" y="14" textLength="23.358398">???</tspan></text></g><text transform="translate(139.5 477.197)" fill="black"><tspan font-family="Courier" font-size="14" font-weight="500" x="0" y="14" textLength="100.816406">(CRUD+verbs)</tspan></text><g filter="url(#Shadow_2)"><path d="M 277 184.656 L 465.125 184.656 C 470.09556 184.656 474.125 188.68544 474.125 193.656 L 474.125 212.7096 C 474.125 217.68016 470.09556 221.7096 465.125 221.7096 L 277 221.7096 C 272.02944 221.7096 268 217.68016 268 212.7096 L 268 193.656 C 268 188.68544 272.02944 184.656 277 184.656 Z" fill="#0088c6"/><path d="M 277 184.656 L 465.125 184.656 C 470.09556 184.656 474.125 188.68544 474.125 193.656 L 474.125 212.7096 C 474.125 217.68016 470.09556 221.7096 465.125 221.7096 L 277 221.7096 C 272.02944 221.7096 268 217.68016 268 212.7096 L 268 193.656 C 268 188.68544 272.02944 184.656 277 184.656 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(273 188.6828)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="48.046875" y="23" textLength="100.03125">Serializer</tspan></text></g><g filter="url(#Shadow_2)"><path d="M 277 230.201 L 465.125 230.201 C 470.09556 230.201 474.125 234.23044 474.125 239.201 L 474.125 258.2546 C 474.125 263.22516 470.09556 267.2546 465.125 267.2546 L 277 267.2546 C 272.02944 267.2546 268 263.22516 268 258.2546 L 268 239.201 C 268 234.23044 272.02944 230.201 277 230.201 Z" fill="#0088c6"/><path d="M 277 230.201 L 465.125 230.201 C 470.09556 230.201 474.125 234.23044 474.125 239.201 L 474.125 258.2546 C 474.125 263.22516 470.09556 267.2546 465.125 267.2546 L 277 267.2546 C 272.02944 267.2546 268 263.22516 268 258.2546 L 268 239.201 C 268 234.23044 272.02944 230.201 277 230.201 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(273 234.2278)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="35.144531" y="23" textLength="48.01172">URL</tspan><tspan font-family="Helvetica" font-size="24" font-weight="500" x="82.277344" y="23" textLength="78.703125"> Router</tspan></text></g><g filter="url(#Shadow_2)"><path d="M 277 321.29 L 465.125 321.29 C 470.09556 321.29 474.125 325.31944 474.125 330.29 L 474.125 349.3436 C 474.125 354.31416 470.09556 358.3436 465.125 358.3436 L 277 358.3436 C 272.02944 358.3436 268 354.31416 268 349.3436 L 268 330.29 C 268 325.31944 272.02944 321.29 277 321.29 Z" fill="#0088c6"/><path d="M 277 321.29 L 465.125 321.29 C 470.09556 321.29 474.125 325.31944 474.125 330.29 L 474.125 349.3436 C 474.125 354.31416 470.09556 358.3436 465.125 358.3436 L 277 358.3436 C 272.02944 358.3436 268 354.31416 268 349.3436 L 268 330.29 C 268 325.31944 272.02944 321.29 277 321.29 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(273 325.3168)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="57.375" y="23" textLength="81.375">Mapper</tspan></text></g><g filter="url(#Shadow_2)"><path d="M 277 275.746 L 465.125 275.746 C 470.09556 275.746 474.125 279.77544 474.125 284.746 L 474.125 303.7996 C 474.125 308.77016 470.09556 312.7996 465.125 312.7996 L 277 312.7996 C 272.02944 312.7996 268 308.77016 268 303.7996 L 268 284.746 C 268 279.77544 272.02944 275.746 277 275.746 Z" fill="#c7e3f3"/><path d="M 277 275.746 L 465.125 275.746 C 470.09556 275.746 474.125 279.77544 474.125 284.746 L 474.125 303.7996 C 474.125 308.77016 470.09556 312.7996 465.125 312.7996 L 277 312.7996 C 272.02944 312.7996 268 308.77016 268 303.7996 L 268 284.746 C 268 279.77544 272.02944 275.746 277 275.746 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(273 279.7728)" fill="black"><tspan font-family="Helvetica" font-size="24" font-weight="500" x="74.71875" y="23" textLength="46.6875">ACL</tspan></text></g><text transform="translate(78.5 155.496)" fill="black"><tspan font-family="Helvetica Neue" font-size="18" font-weight="bold" font-stretch="condensed" x="17.424" y="17" textLength="131.652">HTTP RESTful URL</tspan><tspan font-family="Helvetica Neue" font-size="18" font-weight="bold" font-stretch="condensed" x="3.582" y="38.503998" textLength="38.988">JSON</tspan><tspan font-family="Helvetica Neue" font-size="18" font-weight="200" x="42.57" y="38.503998" textLength="120.348"> / XML / PROTO</tspan></text></g></g></svg>