>From f3905b78655312993af30944e665e0acfbe0e465 Mon Sep 17 00:00:00 2001
From: Tomas Sedovic <tsedovic@redhat.com>
Date: Thu, 13 May 2010 19:12:49 +0200
Subject: [PATCH docs 1/2] Replace Flavors by Hardware profiles in API doc.

The API documentation still used Flavors instead of Hardware profiles. This
updates both the text and the relationship diagram.
---
 basic-relationships.svg                            |  690 ++++++++++++++++++++
 .../content/styles/basic-relationships.png         |  Bin 22974 -> 17845 bytes
 docs/api.mdown                                     |  262 ++++----
 framework.svg                                      |   12 +
 4 files changed, 845 insertions(+), 119 deletions(-)
 create mode 100644 basic-relationships.svg
 create mode 100644 framework.svg

diff --git a/basic-relationships.svg b/basic-relationships.svg
new file mode 100644
index 0000000..b12660e
--- /dev/null
+++ b/basic-relationships.svg
@@ -0,0 +1,690 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   viewBox="119 246 350 283"
+   width="350pt"
+   height="283pt"
+   id="svg2990"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="basic-relationships-2.svg"
+   inkscape:export-filename="/home/tsedovic/deltacloud/docs/basic-relationships-2.png"
+   inkscape:export-xdpi="70.86351"
+   inkscape:export-ydpi="70.86351">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1680"
+     inkscape:window-height="1025"
+     id="namedview3118"
+     showgrid="false"
+     showguides="true"
+     inkscape:zoom="1"
+     inkscape:cx="336.85967"
+     inkscape:cy="254.81043"
+     inkscape:window-x="1280"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="id4_Graphic-6" />
+  <metadata
+     id="metadata2992">
+    <dc:date>2009-08-27 14:33Z</dc:date>
+    <!-- Produced by OmniGraffle Professional 5.2.1 -->
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs2994">
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path4287"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mend"
+       style="overflow:visible;">
+      <path
+         id="path4314"
+         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 176.875 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="437.5 : 176.875 : 1"
+       inkscape:persp3d-origin="218.75 : 117.91667 : 1"
+       id="perspective3120" />
+    <filter
+       id="Shadow"
+       filterUnits="userSpaceOnUse">
+      <feGaussianBlur
+         in="SourceAlpha"
+         result="blur"
+         stdDeviation="3.488"
+         id="feGaussianBlur2997" />
+      <feOffset
+         in="blur"
+         result="offset"
+         dx="0"
+         dy="4"
+         id="feOffset2999" />
+      <feFlood
+         flood-color="black"
+         flood-opacity=".75"
+         result="flood"
+         id="feFlood3001" />
+      <feComposite
+         in="flood"
+         in2="offset"
+         operator="in"
+         id="feComposite3003" />
+    </filter>
+    <font-face
+       font-family="Liberation Sans"
+       font-size="12"
+       panose-1="2 11 7 4 2 2 2 2 2 4"
+       units-per-em="1000"
+       underline-position="-314.9414"
+       underline-thickness="104.98047"
+       slope="0"
+       x-height="500"
+       cap-height="666.6667"
+       ascent="905.27344"
+       descent="-211.91406"
+       font-weight="bold"
+       id="font-face3005">
+      <font-face-src
+         id="font-face-src3007">
+        <font-face-name
+           name="LiberationSans-Bold"
+           id="font-face-name3009" />
+      </font-face-src>
+    </font-face>
+    <marker
+       orient="auto"
+       overflow="visible"
+       markerUnits="strokeWidth"
+       id="FilledArrow_Marker"
+       viewBox="-1 -3 7 6"
+       markerWidth="7"
+       markerHeight="6"
+       color="black">
+      <g
+         id="g3012">
+        <path
+           d="M 4.8000002 0 L 0 -1.8000001 L 0 1.8000001 Z"
+           fill="currentColor"
+           stroke="currentColor"
+           stroke-width="1"
+           id="path3014" />
+      </g>
+    </marker>
+    <font-face
+       font-family="Liberation Sans"
+       font-size="12"
+       panose-1="2 11 6 4 2 2 2 2 2 4"
+       units-per-em="1000"
+       underline-position="-179.19922"
+       underline-thickness="73.242188"
+       slope="0"
+       x-height="500"
+       cap-height="666.6667"
+       ascent="905.27344"
+       descent="-211.91406"
+       font-weight="500"
+       id="font-face3016">
+      <font-face-src
+         id="font-face-src3018">
+        <font-face-name
+           name="LiberationSans-Regular"
+           id="font-face-name3020" />
+      </font-face-src>
+    </font-face>
+    <font-face
+       font-family="Helvetica"
+       font-size="12"
+       units-per-em="1000"
+       underline-position="-75.683594"
+       underline-thickness="49.316406"
+       slope="0"
+       x-height="583.33337"
+       cap-height="750"
+       ascent="770.01953"
+       descent="-229.98047"
+       font-weight="500"
+       id="font-face3022">
+      <font-face-src
+         id="font-face-src3024">
+        <font-face-name
+           name="Helvetica"
+           id="font-face-name3026" />
+      </font-face-src>
+    </font-face>
+    <inkscape:perspective
+       id="perspective3133"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <filter
+       color-interpolation-filters="sRGB"
+       id="Shadow-3"
+       filterUnits="userSpaceOnUse">
+      <feGaussianBlur
+         in="SourceAlpha"
+         result="blur"
+         stdDeviation="3.488"
+         id="feGaussianBlur2997-9" />
+      <feOffset
+         in="blur"
+         result="offset"
+         dx="0"
+         dy="4"
+         id="feOffset2999-4" />
+      <feFlood
+         flood-color="black"
+         flood-opacity=".75"
+         result="flood"
+         id="feFlood3001-1" />
+      <feComposite
+         in="flood"
+         in2="offset"
+         operator="in"
+         id="feComposite3003-5" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3142"
+       filterUnits="userSpaceOnUse">
+      <feGaussianBlur
+         in="SourceAlpha"
+         result="blur"
+         stdDeviation="3.488"
+         id="feGaussianBlur3144" />
+      <feOffset
+         in="blur"
+         result="offset"
+         dx="0"
+         dy="4"
+         id="feOffset3146" />
+      <feFlood
+         flood-color="black"
+         flood-opacity=".75"
+         result="flood"
+         id="feFlood3148" />
+      <feComposite
+         in="flood"
+         in2="offset"
+         operator="in"
+         id="feComposite3150" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3152"
+       filterUnits="userSpaceOnUse">
+      <feGaussianBlur
+         in="SourceAlpha"
+         result="blur"
+         stdDeviation="3.488"
+         id="feGaussianBlur3154" />
+      <feOffset
+         in="blur"
+         result="offset"
+         dx="0"
+         dy="4"
+         id="feOffset3156" />
+      <feFlood
+         flood-color="black"
+         flood-opacity=".75"
+         result="flood"
+         id="feFlood3158" />
+      <feComposite
+         in="flood"
+         in2="offset"
+         operator="in"
+         id="feComposite3160" />
+    </filter>
+    <filter
+       color-interpolation-filters="sRGB"
+       id="filter3162"
+       filterUnits="userSpaceOnUse">
+      <feGaussianBlur
+         in="SourceAlpha"
+         result="blur"
+         stdDeviation="3.488"
+         id="feGaussianBlur3164" />
+      <feOffset
+         in="blur"
+         result="offset"
+         dx="0"
+         dy="4"
+         id="feOffset3166" />
+      <feFlood
+         flood-color="black"
+         flood-opacity=".75"
+         result="flood"
+         id="feFlood3168" />
+      <feComposite
+         in="flood"
+         in2="offset"
+         operator="in"
+         id="feComposite3170" />
+    </filter>
+    <marker
+       style="color:#000000;overflow:visible"
+       orient="auto"
+       overflow="visible"
+       markerUnits="strokeWidth"
+       id="FilledArrow_Marker-4"
+       viewBox="-1 -3 7 6"
+       markerWidth="7"
+       markerHeight="6">
+      <g
+         id="g3012-1">
+        <path
+           style="fill:currentColor;stroke:currentColor;stroke-width:1"
+           d="M 4.8000002,0 0,-1.8000001 0,1.8000001 z"
+           id="path3014-5" />
+      </g>
+    </marker>
+    <marker
+       style="color:#000000;overflow:visible"
+       orient="auto"
+       overflow="visible"
+       markerUnits="strokeWidth"
+       id="marker3175"
+       viewBox="-1 -3 7 6"
+       markerWidth="7"
+       markerHeight="6">
+      <g
+         id="g3177">
+        <path
+           style="fill:currentColor;stroke:currentColor;stroke-width:1"
+           d="M 4.8000002,0 0,-1.8000001 0,1.8000001 z"
+           id="path3179" />
+      </g>
+    </marker>
+    <marker
+       style="color:#000000;overflow:visible"
+       orient="auto"
+       overflow="visible"
+       markerUnits="strokeWidth"
+       id="marker3181"
+       viewBox="-1 -3 7 6"
+       markerWidth="7"
+       markerHeight="6">
+      <g
+         id="g3183">
+        <path
+           style="fill:currentColor;stroke:currentColor;stroke-width:1"
+           d="M 4.8000002,0 0,-1.8000001 0,1.8000001 z"
+           id="path3185" />
+      </g>
+    </marker>
+    <marker
+       style="color:#000000;overflow:visible"
+       orient="auto"
+       overflow="visible"
+       markerUnits="strokeWidth"
+       id="marker3187"
+       viewBox="-1 -3 7 6"
+       markerWidth="7"
+       markerHeight="6">
+      <g
+         id="g3189">
+        <path
+           style="fill:currentColor;stroke:currentColor;stroke-width:1"
+           d="M 4.8000002,0 0,-1.8000001 0,1.8000001 z"
+           id="path3191" />
+      </g>
+    </marker>
+    <inkscape:perspective
+       id="perspective5874"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     inkscape:groupmode="layer"
+     id="layer1"
+     inkscape:label="background"
+     style="display:inline">
+    <g
+       style="fill:none;stroke:none"
+       transform="translate(0.198672,3.62)"
+       id="g3028-5">
+      <title
+         id="title3030-4">Canvas 1</title>
+      <g
+         id="g3032-9">
+        <title
+           id="title3034-8">Layer 1</title>
+        <g
+           id="g3036-3">
+          <use
+             height="1052.3622"
+             width="744.09448"
+             y="0"
+             x="0"
+             style="filter:url(#Shadow-3)"
+             xlink:href="#id3_Graphic-2"
+             id="use3038-8" />
+          <use
+             height="1052.3622"
+             width="744.09448"
+             y="0"
+             x="0"
+             style="filter:url(#Shadow-3)"
+             xlink:href="#id4_Graphic-6"
+             id="use3040-5" />
+          <use
+             height="1052.3622"
+             width="744.09448"
+             y="0"
+             x="0"
+             style="filter:url(#Shadow-3)"
+             xlink:href="#id5_Graphic-4"
+             id="use3042-2" />
+          <use
+             height="1052.3622"
+             width="744.09448"
+             y="0"
+             x="0"
+             style="filter:url(#Shadow-3)"
+             xlink:href="#id6_Graphic-2"
+             id="use3044-2" />
+        </g>
+        <g
+           id="id3_Graphic-2">
+          <path
+             style="fill:#ffffff"
+             d="m 358.14001,481.88 94,0 c 2.76142,0 5,2.2386 5,5 l 0,22 c 0,2.76142 -2.23858,5 -5,5 l -94,0 c -2.76141,0 -5,-2.23858 -5,-5 0,0 0,0 0,0 l 0,-22 c 0,-2.7614 2.23859,-5 5,-5 z"
+             id="path3047-7" />
+          <path
+             style="stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round"
+             d="m 358.14001,481.88 94,0 c 2.76142,0 5,2.2386 5,5 l 0,22 c 0,2.76142 -2.23858,5 -5,5 l -94,0 c -2.76141,0 -5,-2.23858 -5,-5 0,0 0,0 0,0 l 0,-22 c 0,-2.7614 2.23859,-5 5,-5 z"
+             id="path3049-0" />
+          <text
+             style="fill:#000000"
+             transform="translate(358.14001,490.88)"
+             id="text3051-3">
+            <tspan
+               style="font-size:12px;font-weight:bold;font-family:Liberation Sans"
+               font-size="12"
+               font-weight="bold"
+               x="28.991211"
+               y="11"
+               textLength="36.017578"
+               id="tspan3053-4">Realm</tspan>
+          </text>
+        </g>
+        <g
+           id="id4_Graphic-6">
+          <path
+             style="fill:#ffffff"
+             d="m 135.61999,253.88 94.00001,0 c 2.76142,0 5,2.23859 5,5 l 0,22 c 0,2.76142 -2.23858,5 -5,5 l -94.00001,0 c -2.76142,0 -5,-2.23858 -5,-5 0,0 0,0 0,0 l 0,-22 c 0,-2.76141 2.23858,-5 5,-5 z"
+             id="path3056-3" />
+          <path
+             style="stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round"
+             d="m 135.61999,253.88 94.00001,0 c 2.76142,0 5,2.23859 5,5 l 0,22 c 0,2.76142 -2.23858,5 -5,5 l -94.00001,0 c -2.76142,0 -5,-2.23858 -5,-5 0,0 0,0 0,0 l 0,-22 c 0,-2.76141 2.23858,-5 5,-5 z"
+             id="path3058-6" />
+          <text
+             style="fill:#000000"
+             id="text3060-3"
+             x="106.20434"
+             y="263.44571">
+            <tspan
+               style="font-size:12px;font-weight:bold;font-family:Liberation Sans"
+               font-size="12"
+               font-weight="bold"
+               x="135.19852"
+               y="274.44571"
+               textLength="36.011719"
+               id="tspan3062-3">Hardware profile</tspan>
+          </text>
+        </g>
+        <g
+           id="id5_Graphic-4">
+          <path
+             style="fill:#ffffff"
+             d="m 135.61999,367.88 94.00001,0 c 2.76142,0 5,2.2386 5,5 l 0,22 c 0,2.76142 -2.23858,5 -5,5 l -94.00001,0 c -2.76142,0 -5,-2.23858 -5,-5 0,0 0,0 0,0 l 0,-22 c 0,-2.7614 2.23858,-5 5,-5 z"
+             id="path3065-4" />
+          <path
+             style="stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round"
+             d="m 135.61999,367.88 94.00001,0 c 2.76142,0 5,2.2386 5,5 l 0,22 c 0,2.76142 -2.23858,5 -5,5 l -94.00001,0 c -2.76142,0 -5,-2.23858 -5,-5 0,0 0,0 0,0 l 0,-22 c 0,-2.7614 2.23858,-5 5,-5 z"
+             id="path3067-3" />
+          <text
+             style="fill:#000000"
+             transform="translate(135.61999,376.88)"
+             id="text3069-9">
+            <tspan
+               style="font-size:12px;font-weight:bold;font-family:Liberation Sans"
+               font-size="12"
+               font-weight="bold"
+               x="29.65918"
+               y="11"
+               textLength="34.68164"
+               id="tspan3071-7">Image</tspan>
+          </text>
+        </g>
+        <g
+           id="id6_Graphic-2">
+          <path
+             style="fill:#ffffff"
+             d="m 358.14001,367.88 94,0 c 2.76142,0 5,2.2386 5,5 l 0,22 c 0,2.76142 -2.23858,5 -5,5 l -94,0 c -2.76141,0 -5,-2.23858 -5,-5 0,0 0,0 0,0 l 0,-22 c 0,-2.7614 2.23859,-5 5,-5 z"
+             id="path3074-5" />
+          <path
+             style="stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round"
+             d="m 358.14001,367.88 94,0 c 2.76142,0 5,2.2386 5,5 l 0,22 c 0,2.76142 -2.23858,5 -5,5 l -94,0 c -2.76141,0 -5,-2.23858 -5,-5 0,0 0,0 0,0 l 0,-22 c 0,-2.7614 2.23859,-5 5,-5 z"
+             id="path3076-8" />
+          <text
+             style="fill:#000000"
+             transform="translate(358.14001,376.88)"
+             id="text3078-9">
+            <tspan
+               style="font-size:12px;font-weight:bold;font-family:Liberation Sans"
+               font-size="12"
+               font-weight="bold"
+               x="22.657227"
+               y="11"
+               textLength="48.685547"
+               id="tspan3080-0">Instance</tspan>
+          </text>
+        </g>
+        <rect
+           style="fill:#ffffff"
+           x="136.12"
+           y="336.186"
+           width="93"
+           height="14"
+           id="rect3084-4" />
+        <rect
+           style="fill:#ffffff"
+           x="277.31"
+           y="369.88"
+           width="43"
+           height="28"
+           id="rect3092-7" />
+        <rect
+           style="fill:#ffffff"
+           x="372.64001"
+           y="427.88"
+           width="65"
+           height="14"
+           id="rect3102-8" />
+        <rect
+           style="fill:#ffffff"
+           x="279.5"
+           y="313.25201"
+           width="37"
+           height="28"
+           id="rect3110-8" />
+      </g>
+    </g>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="white blocks"
+     style="display:inline">
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1.94254744;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-end:url(#Arrow2Mend)"
+       d="m 182.59481,370.88999 0,-78.59661"
+       id="path3459" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1.9748981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 373.39122,370.87381 0,-39.2659 -159.43514,0 0,-40.50589"
+       id="path3461" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1.9751426;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 352.61684,387.39581 -115.81325,0"
+       id="path3463" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1.96007204;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 405.1759,403.48656 0,79.39514"
+       id="path3465" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke-width:2.5;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect5915"
+       width="37.308876"
+       height="32.221294"
+       x="280.53043"
+       y="316.16986" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke-width:2.5;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect5917"
+       width="41.548519"
+       height="30.101477"
+       x="278.41064"
+       y="372.55713" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke-width:2.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect5919"
+       width="65.714493"
+       height="14.838755"
+       x="374.65057"
+       y="431.48816" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke-width:2.50000000000000000;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect5921"
+       width="96.239929"
+       height="14.838756"
+       x="138.50237"
+       y="339.91183" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="texts"
+     style="display:inline">
+    <text
+       y="339.79266"
+       x="141.10721"
+       style="font-size:12px;fill:#000000;stroke:none;display:inline"
+       id="text3086-7-5">
+      <tspan
+         style="font-size:12px;font-weight:500;font-family:Liberation Sans"
+         font-size="12"
+         font-weight="500"
+         x="141.25467"
+         y="350.79266"
+         textLength="82.70508"
+         id="tspan3088-6-9">compatible with</tspan>
+    </text>
+    <text
+       y="373.48666"
+       x="282.29724"
+       style="font-size:12px;fill:#000000;stroke:none;display:inline"
+       id="text3094-1-7">
+      <tspan
+         style="font-size:12px;font-weight:500;font-family:Helvetica"
+         font-size="12"
+         font-weight="500"
+         x="282.44958"
+         y="384.48666"
+         textLength="32.695312"
+         id="tspan3096-3-9">based</tspan>
+      <tspan
+         style="font-size:12px;font-weight:500;font-family:Helvetica"
+         font-size="12"
+         font-weight="500"
+         x="285.44958"
+         y="398.48666"
+         textLength="26.695312"
+         id="tspan3098-3-9">upon</tspan>
+    </text>
+    <text
+       y="431.48666"
+       x="377.62726"
+       style="font-size:12px;fill:#000000;stroke:none;display:inline"
+       id="text3104-5-0">
+      <tspan
+         style="font-size:12px;font-weight:500;font-family:Helvetica"
+         font-size="12"
+         font-weight="500"
+         x="377.77277"
+         y="442.48666"
+         textLength="54.708984"
+         id="tspan3106-1-5">belongs in</tspan>
+    </text>
+    <text
+       y="316.85867"
+       x="284.48724"
+       style="font-size:12px;fill:#000000;stroke:none;display:inline"
+       id="text3112-7-2">
+      <tspan
+         style="font-size:12px;font-weight:500;font-family:Helvetica"
+         font-size="12"
+         font-weight="500"
+         x="286.31537"
+         y="327.85867"
+         textLength="23.34375"
+         id="tspan3114-6-1">runs</tspan>
+      <tspan
+         style="font-size:12px;font-weight:500;font-family:Helvetica"
+         font-size="12"
+         font-weight="500"
+         x="284.63959"
+         y="341.85867"
+         textLength="26.695312"
+         id="tspan3116-3-0">upon</tspan>
+    </text>
+  </g>
+</svg>
diff --git a/deltacloud.org/content/styles/basic-relationships.png b/deltacloud.org/content/styles/basic-relationships.png
index 92bbfe0bf8300140e044dda974633605ec92d27d..a1be2f07e42ea48fce529b87db55e290a989dc62 100644
GIT binary patch
diff --git a/docs/api.mdown b/docs/api.mdown
index 17cb6c0..4dc897b 100644
--- a/docs/api.mdown
+++ b/docs/api.mdown
@@ -2,63 +2,54 @@
 
 # Deltacloud API
 
-The Deltacloud API is built as a service-based REST API. 
-You do not directly link a Deltacloud library into your
-program to use it. Instead, a client speaks the Deltacloud 
-API over HTTP to a server which implements the REST interface.
-
-Of course, at this point in time, no cloud provider
-natively speaks the Deltacloud API. To accomodate
-the native APIs used by the various cloud providers,
-the Deltacloud project also provides a _framework_
-and a set of _drivers_ that work with the framework.
-
-By running a framework & driver combination on some
-host, your application can use the Deltacloud API,
-and the driver is responsible for translating these
-calls into each provider's own API.
+The Deltacloud API is built as a service-based REST API. You do not
+directly link a Deltacloud library into your program to use it.
+Instead, a client speaks the Deltacloud API over HTTP to a server
+which implements the REST interface.
+
+Since cloud providers use their own APIs instead of the Deltacloud
+API, we provide a translation layer that makes it possible to use
+Deltacloud with these providers.
 
 ## REST
 
-The Deltacloud API is a RESTful API, using HATEOAS
-architectural style. The API requires no client-side
-URL construction.  Access is based entirely off a 
-single entry-point resource.  This allows other implementors
-to structure their URL space however they like.
+The Deltacloud API is a [RESTful API][1], using HATEOAS architectural
+style. The API requires no client-side URL construction. Access is
+based entirely off a single entry-point resource. This allows other
+implementors to structure their URL space however they like.
+
+[1]: http://en.wikipedia.org/wiki/Representational_State_Transfer
 
-Additionally, the Deltacloud API uses _content negotiation_
-to determine the format of the returned representation. As
-of the current revision, the only required representation is
-XML.  Clients wishing to receive XML representations must
-specify the HTTP `Accept` header as `text/xml`.
+Additionally, the Deltacloud API uses _content negotiation_ to
+determine the format of the returned representation. As of the current
+revision, the only required representation is XML. Clients wishing to
+receive XML representations must specify the HTTP `Accept` header as
+`application/xml`.
 
 ## Authentication
 
-The Deltacloud API uses HTTP authentication methods for
-authenticating a given client.  There is no explicit
-_login_ action required.  If authentication is required,
-an HTTP status of 401 will be returned to challenge
-for credentials.
+The Deltacloud API uses HTTP authentication methods for authenticating
+a given client. There is no explicit _login_ action required. If
+authentication is required, an HTTP status of 401 will be returned to
+challenge for credentials.
 
 ## Primary Entry Point
 
-Any Deltacloud implementor _must_ provide exactly
-one well-known URL as an entry-point. For example,
-`http://fancycloudprovider.com/api`.
+Any Deltacloud implementor _must_ provide exactly one well-known URL
+as an entry-point. For example, `http://fancycloudprovider.com/api`.
 
-The result of this entry-point is a set of entry-points
-into other collections, such as _images_, _instances_,
-_flavors_ and _realms_, among others.
+The result of this entry-point is a set of entry-points into other
+collections, such as _images_, _instances_, _hardware profiles_ and
+_realms_, among others.
 
-Each collection is defined by a `<link>` tag with an
-`href` attribute which includes the fully-qualified URL
-to the collection (which _may_ exist on different servers)
-and a `rel` attribute to denote which collection is being
-specified.
+Each collection is defined by a `<link>` tag with an `href` attribute
+which includes the fully-qualified URL to the collection (which _may_
+exist on different servers) and a `rel` attribute to denote which
+collection is being specified.
 
     <api driver='ec2' version='1.0'>
-      <link href='http://fancycloudprovider.com/api/flavors' rel='flavors' />
-      <link href='http://fancycloudprovider.com/api/instance-states' rel='instance_states' />
+      <link href='http://fancycloudprovider.com/api/hardware_profiles' rel='hardware_profiles' />
+      <link href='http://fancycloudprovider.com/api/instance_states' rel='instance_states' />
       <link href='http://fancycloudprovider.com/api/realms' rel='realms' />
       <link href='http://fancycloudprovider.com/api/images' rel='images' />
       <link href='http://fancycloudprovider.com/api/instances' rel='instances' />
@@ -67,56 +58,86 @@ specified.
 ## Resources
 
 From the primary entry-point, a client may follow the URL provided for
-a collection to retrieve the resources within that collection.  The collection
-representation will include the full representations of the items within it,
-along with links to retrieve each item individually.
+a collection to retrieve the resources within that collection. The
+collection representation will include the full representations of the
+items within it, along with links to retrieve each item individually.
 
 ![Basic relationships][basic-relationships]
 
-### Flavors
+### Hardware Profiles
 
-Within a cloud provider a _flavor_ represents a configuration of resources upon
-which a machine may be deployed. A flavor defines aspects such as local disk storage,
-available RAM, and architecture.  A future revision of the Deltacloud API will
-include more aspects, including number and speed of CPUs available.  Each provider
-is free to define as many (or as few) flavors as desired.
+Within a cloud provider a _hardware profile_ represents a
+configuration of resources upon which a machine may be deployed. A
+hardware profile defines aspects such as local disk storage, available
+RAM, and architecture. A future revision of the Deltacloud API will
+include more aspects, including number and speed of CPUs available.
+Each provider is free to define as many (or as few) hardware profiles
+as desired.
 
-    <flavors>
-      <flavor href="http://fancycloudprovider.com/api/flavors/m1-small">
+    <hardware-profiles>
+      <hardware-profile href='http://fancycloudprovider.com/api/hardware_profiles/m1-small'>
         <id>m1-small</id>
-        <architecture>i386</architecture>
-        <memory>1.7</memory>
-        <storage>160</storage>
-      </flavor>
-      <flavor href="http://fancycloudprovider.com/api/flavors/m1-large">
-        <id>m1-large</id>
-        <architecture>x86_64</architecture>
-        <memory>7.5</memory>
-        <storage>850</storage>
-      </flavor>
-    </flavors>
-
-Each `<flavor>` block shall contain an `href` attribute providing a URL to manipulate a
-specific flavor, along with elements for each attribute of a flavor. 
-
-- **`id`**            A unique identifier for the flavor
-- **`architecture`**  The architecture
-  - i386
-  - x86_64
-- **`memory`**        The amount of RAM, in gigabytes.
-- **`storage`**       The amount of local disk storage, in gigabytes.
-
-At this time, flavor resources are immutable and read-only.  In a future revision
-they may be mutable.
+        <property kind='fixed' name='storage' unit='GB' value='160' />
+        <property kind='fixed' name='architecture' unit='label' value='i386' />
+        <property kind='fixed' name='cpu' unit='count' value='1' />
+        <property kind='fixed' name='memory' unit='MB' value='1740.8' />
+      </hardware-profile>
+
+Each `<hardware-profile>` block shall contain an `href` attribute providing a
+URL to manipulate a specific profile, along with property elements for each
+attribute of the hardware.
+
+- **`id`**            is a unique identifier for the profile
+- **`property`**      describes each of the hardware aspects
+
+Properties have the following attributes:
+
+- **`name`**          the type of the property: *e.g.* `memory` or `storage`
+- **`unit`**          the units in which the value is specified: `MB`, `GB`, `count` or `label`
+- **`value`**         the actual value of the property. It depends on the specified unit: `1024`, `2` on `x86_64`
+- **`kind`**          describes the values to chose from.
+  - **`fixed`**         only the value specified in the property is available
+  - **`enum`**          a list of available values is provided
+  - **`range`**         available values are described by a numeric range
+
+When the `kind` is either an `enum` or a `range`, there must be two additional elements specified. One
+that specifies the allowed values and the second with a way of picking a value.
+
+In the non-fixed case, the `value` property attribute specifies the default value.
+
+      <hardware-profile href='http://fancycloudprovider.com/api/hardware_profiles/m1-xlarge'>
+        <id>m1-xlarge</id>
+        <property kind='enum' name='storage' unit='GB' value='1024'>
+          <param href='http://fancycloudprovider.com/api/instances' method='post' name='hwp_storage' operation='create' />
+          <enum>
+            <entry value='1024' />
+            <entry value='2048' />
+            <entry value='4096' />
+          </enum>
+        </property>
+        <property kind='fixed' name='architecture' unit='label' value='x86_64' />
+        <property kind='fixed' name='cpu' unit='count' value='4' />
+        <property kind='range' name='memory' unit='MB' value='12288'>
+          <param href='http://fancycloudprovider.com/api/instances' method='post' name='hwp_memory' operation='create' />
+          <range first='12288' last='32768' />
+        </property>
+      </hardware-profile>
+    </hardware-profiles>
+
+
+At this time, hardware profile resources are immutable and read-only. In a
+future revision they may be mutable.
 
 ### Realms
 
-Within a cloud provider a _realm_ represents a boundary containing resources. The
-exact definition of a realm is left to the cloud provider.  In some cases, a realm 
-may represent different datacenters, different continents, or different pools of
-resources within a single datacenter. A cloud provider may insist that resources
-must all exist within a single realm in order to cooperate.  For instance, storage
-volumes may only be allowed to be mounted to instances within the same realm.  
+Within a cloud provider a _realm_ represents a boundary containing
+resources. The exact definition of a realm is left to the cloud
+provider. In some cases, a realm may represent different datacenters,
+different continents, or different pools of resources within a single
+datacenter. A cloud provider may insist that resources must all exist
+within a single realm in order to cooperate. For instance, storage
+volumes may only be allowed to be mounted to instances within the same
+realm.
 
     <realms>
       <realm href="http://fancycloudprovider.com/api/realms/us">
@@ -133,8 +154,9 @@ volumes may only be allowed to be mounted to instances within the same realm.
       </realm>
     </realms>
 
-Each `<realm>` block shall contain an `href` attribute providing a URL to manipulate a
-specific realm, along with elements for each attribute of a realm.
+Each `<realm>` block shall contain an `href` attribute providing a URL
+to manipulate a specific realm, along with elements for each attribute
+of a realm.
 
 - **`id`**          A unique identifier for the realm
 - **`name`**        A short label
@@ -156,31 +178,31 @@ the current user.
       <image href="http://fancycloudprovider.com/api/images/img1">
         <id>img1</id>
         <owner_id>fedoraproject</owner_id>
-        <name></name>
+        <name>Fedora 10</name>
         <description>Fedora 10</description>
         <architecture>x86_64</architecture>
       </image>
       <image href="http://fancycloudprovider.com/api/images/img2">
         <id>img2</id>
         <owner_id>fedoraproject</owner_id>
-        <name></name>
+        <name>Fedora 10</name>
         <description>Fedora 10</description>
         <architecture>i386</architecture>
       </image>
       <image href="http://fancycloudprovider.com/api/images/img3">
         <id>img3</id>
         <owner_id>ted</owner_id>
-        <name></name>
+        <name>JBoss</name>
         <description>JBoss</description>
         <architecture>i386</architecture>
       </image>
     </images>
 
-Each `<image>` block _shall_ contain an `href` attribute providing
-a URL to manipulate a specific image, along with elements for each 
-attribute of an image.  Each element, including those for optional 
-attributes must be present.  Optional attributes may be specified
-as a element with empty content.
+Each `<image>` block _shall_ contain an `href` attribute providing a
+URL to manipulate a specific image, along with elements for each
+attribute of an image. Each element, including those for optional
+attributes must be present. Optional attributes may be specified as a
+element with empty content.
 
 These attributes include
 
@@ -198,8 +220,9 @@ they will be mutable.
 
 ### Instances
 
-An _instance_ is a concrete machine realized from an _image_.  The images
-collection may be obtained by following the link from the primary entry-point.
+An _instance_ is a concrete machine realized from an _image_. The
+images collection may be obtained by following the link from the
+primary entry-point.
 
     <instances>
       <instance href="http://fancycloudprovider.com/api/instances/inst1">
@@ -207,9 +230,9 @@ collection may be obtained by following the link from the primary entry-point.
         <owner_id>larry</owner_id>
         <name>Production JBoss Instance</name>
         <image href="http://fancycloudprovider.com/api/images/img3"/>
-        <flavor href="http://fancycloudprovider.com/api/flavors/m1-small"/>
+        <hardware-profile href="http://fancycloudprovider.com/api/hardware_profiles/m1-small"/>
         <realm href="http://fancycloudprovider.com/api/realms/us"/>
-    
+
         <state>RUNNING</state>
         <actions>
           <link rel="reboot" href="http://fancycloudprovider.com/api/instances/inst1/reboot"/>
@@ -218,17 +241,18 @@ collection may be obtained by following the link from the primary entry-point.
         <public-addresses>
           <address>inst1.larry.fancycloudprovider.com</address>
         </public-addresses>
-    
+
         <private-addresses>
           <address>inst1.larry.internal</address>
         </private-addresses>
       </instance>
     </instances>
 
-Each `<instance>` block shall contain an href attribute providing a URL to manipulate a 
-specific instance, along with elements for each attribute of an instance. Each element, 
-including those for optional attributes must be present. Optional attributes may be 
-specified as a element with empty content.
+Each `<instance>` block shall contain an href attribute providing a
+URL to manipulate a specific instance, along with elements for each
+attribute of an instance. Each element, including those for optional
+attributes must be present. Optional attributes may be specified as a
+element with empty content.
 
 Simple attributes include
 
@@ -236,7 +260,7 @@ Simple attributes include
 - **`owner_id`**     An opaque identifier which indicates the owner of an instance
 - **`name`**         An _optional_ short label describing the instance
 - **`image`**        Provides a link to the platonic image from which the instance is based
-- **`flavor`**       Provides a link to flavor of virtual hardware in use by the instance 
+- **`hardware-profile`**       Provides a link to the hardware profile in use by the instance
 - **`realm`**        Provides a link to the realm where the instance is deployed
 - **`state`**        Indicator of the instance's current state
   - `PENDING`
@@ -249,9 +273,9 @@ Multiple-valued attributes include
 - **`private-addresses`**  Private network IP addresses or names for the instance
 
 In addition to the abovementioned attributes, each `<instance>` may contain an
-`<actions>` block specifying valid actions for the instance, along with the URL 
+`<actions>` block specifying valid actions for the instance, along with the URL
 which may be used to perform the action.  Each action is specified by a `<link>`
-with an `href` attribute providing the URL, and a `rel` attribute providing 
+with an `href` attribute providing the URL, and a `rel` attribute providing
 a key to determine what the action will do.
 
 Representative actions include
@@ -260,15 +284,15 @@ Representative actions include
 - `start`
 - `stop`
 
-Not all actions may be valid at all times for all instances.  To invoke an 
-action, a client must perform an HTTP `POST` to the URL indicated.
+Not all actions may be valid at all times for all instances. To invoke
+an action, a client must perform an HTTP `POST` to the URL indicated.
 
 #### Creating a new Instance
 
-Per usual REST architectural style, new instances are created by issuing
-an HTTP `POST` to the instances collection as defined through the 
-primary entry-point URL. Data should be sent in `application/x-www-form-urlencoded`
-format.
+Per usual REST architectural style, new instances are created by
+issuing an HTTP `POST` to the instances collection as defined through
+the primary entry-point URL. Data should be sent in
+`application/x-www-form-urlencoded` format.
 
 To create a new instance, only one parameter is required
 
@@ -277,13 +301,13 @@ To create a new instance, only one parameter is required
 Optional parameters may also be provided
 
 - **`realm_id`**   The realm in which to launch the instance
-- **`flavor_id`**  The machine flavor upon which to launch the instance
+- **`hwp_name`**  The hardware profile upon which to launch the instance
 - **`name`**       A short label to identify the instance
 
-If `realm_id` or `flavor_id` are not specified, the provider _must_ select 
-reasonable defaults.  The architecture of the selected flavor _must_ match the 
-architecture of the specified image.
+If `realm_id` or `hwp_name` are not specified, the provider _must_
+select reasonable defaults. The architecture of the selected harware profile
+_must_ match the architecture of the specified image.
 
-After `POST`ing the data, the server _shall_ return a representation of
-the newly-created instance's XML, including a URL to retrieve the instance
-in the future.
+After `POST`ing the data, the server _shall_ return a representation
+of the newly-created instance's XML, including a URL to retrieve the
+instance in the future.
diff --git a/framework.svg b/framework.svg
new file mode 100644
index 0000000..f9135d3
--- /dev/null
+++ b/framework.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!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="17 215 648 128" width="54pc" height="128pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2009-08-19 15:13Z</dc:date><!-- Produced by OmniGraffle Professional 4.2.3 --></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="3.488"/><feOffset in="blur" result="offset" dx="0" dy="4"/><feFlood flood-color="black" flood-opacity=".75" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="541.6667" cap-height="750" ascent="770.01953" descent="-229.98047" font-weight="bold"><!--NSCTFontDescriptor &lt;0x174adb80&gt; = {
+    NSFontNameAttribute = "Helvetica-Bold";
+    NSFontSizeAttribute = 12;
+}--><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="541.6667" cap-height="750" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="bold"><!--NSCTFontDescriptor &lt;0x17c1f550&gt; = {
+    NSFontNameAttribute = "Helvetica-BoldOblique";
+    NSFontSizeAttribute = 12;
+}--><font-face-src><font-face-name name="Helvetica-BoldOblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="583.33337" cap-height="750" ascent="770.01953" descent="-229.98047" font-weight="500"><!--NSCTFontDescriptor &lt;0x174ab700&gt; = {
+    NSFontNameAttribute = Helvetica;
+    NSFontSizeAttribute = 12;
+}--><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><g><use xl:href="#id3_Graphic" filter="url(#Shadow)"/><use xl:href="#id1_Graphic" filter="url(#Shadow)"/><use xl:href="#id4_Graphic" filter="url(#Shadow)"/></g><g id="id3_Graphic"><path d="M 169.117 231 L 458.117 231 C 460.87842 231 463.117 233.23857 463.117 236 L 463.117 314 C 463.117 316.76141 460.87842 319 458.117 319 L 169.117 319 C 166.35558 319 164.117 316.76141 164.117 314 C 164.117 314 164.117 314 164.117 314 L 164.117 236 C 164.117 233.23857 166.35558 231 169.117 231 Z" fill="white"/><path d="M 169.117 231 L 458.117 231 C 460.87842 231 463.117 233.23857 463.117 236 L 463.117 314 C 463.117 316.76141 460.87842 319 458.117 319 L 169.117 319 C 166.35558 319 164.117 316.76141 164.117 314 C 164.117 314 164.117 314 164.117 314 L 164.117 236 C 164.117 233.23857 166.35558 231 169.117 231 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(169.117 300.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="124.69336">deltacloud-framework</tspan></text></g><g id="id1_Graphic"><rect x="425" y="247.134" width="143" height="31" fill="white"/><rect x="425" y="247.134" width="143" height="31" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(430 255.634)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="6.4970703" y="11" textLength="101.34961">deltacloud-driver-</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="bold" x="107.84668" y="11" textLength="18.65625">foo</tspan></text></g><g id="id4_Graphic"><path d="M 121.75 244.634 L 237.25 244.634 C 250.912 244.634 262 252.698 262 262.634 C 262 272.57 250.912 280.634 237.25 280.634 L 121.75 280.634 C 108.088 280.634 97 272.57 97 262.634 C 97 252.698 108.088 244.634 121.75 244.634" fill="white"/><path d="M 121.75 244.634 L 237.25 244.634 C 250.912 244.634 262 252.698 262 262.634 C 262 272.57 250.912 280.634 237.25 280.634 L 121.75 280.634 C 108.088 280.634 97 272.57 97 262.634 C 97 252.698 108.088 244.634 121.75 244.634" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(118.5 255.634)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="5.4091797" y="11" textLength="32.003906">REST</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="37.202148" y="11" textLength="3.3339844"> </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="39.879883" y="11" textLength="76.710938">API responder</tspan></text></g><path d="M 262.04324 259.15726 C 287.02634 258.10495 325.50836 254.19305 337 256 C 348.49164 257.80695 316.41803 268.36041 331 270 C 344.1124 271.47437 384.0481 268.05374 414.62372 266.34082" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="28" y1="262.634" x2="86.600006" y2="262.634" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="39.5" y="248.634" width="43" height="28" fill="white"/><text transform="translate(44.5 248.634)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49804688" y="11" textLength="32.003906">REST</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="6.8291016" y="25" textLength="19.341797">API</tspan></text><line x1="568.5" y1="262.634" x2="632.99597" y2="262.634" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="578.63" y="248.634" width="43" height="28" fill="white"/><text transform="translate(583.63 248.634)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".4892578" y="11" textLength="32.021484">native</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="6.8291016" y="25" textLength="19.341797">API</tspan></text><rect x="302.05588" y="274.2247" width="63" height="14" fill="white"/><text transform="translate(307.05588 274.2247)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".15917969" y="11" textLength="52.68164">driver SPI</tspan></text></g></g></svg>
-- 
1.6.6.1

