����JFIF��x�x����'
Server IP : 78.140.185.180 / Your IP : 216.73.216.45 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/builderbox/www/vendor/rackspace/php-opencloud/doc/_build/html/services/image/ |
Upload File : |
<!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JSON schemas — php-opencloud 1.12.1 documentation</title> <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <link rel="top" title="php-opencloud 1.12.1 documentation" href="../../index.html"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script> </head> <body class="wy-body-for-nav" role="document"> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-nav-search"> <a href="../../index.html" class="fa fa-home"> php-opencloud</a> <div role="search"> <form id ="rtd-search-form" class="wy-form" action="../../search.html" method="get"> <input type="text" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <ul> <li class="toctree-l1"><a class="reference internal" href="../autoscale/index.html">Auto Scale v2</a><ul> <li class="toctree-l2"><a class="reference internal" href="../autoscale/index.html#setup">Setup</a></li> <li class="toctree-l2"><a class="reference internal" href="../autoscale/index.html#operations">Operations</a></li> <li class="toctree-l2"><a class="reference internal" href="../autoscale/index.html#glossary">Glossary</a></li> <li class="toctree-l2"><a class="reference internal" href="../autoscale/index.html#further-links">Further Links</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../compute/index.html">Compute v2</a><ul> <li class="toctree-l2"><a class="reference internal" href="../compute/index.html#setup">Setup</a></li> <li class="toctree-l2"><a class="reference internal" href="../compute/index.html#operations">Operations</a></li> <li class="toctree-l2"><a class="reference internal" href="../compute/index.html#glossary">Glossary</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../database/index.html">Databases v1</a><ul> <li class="toctree-l2"><a class="reference internal" href="../database/index.html#setup">Setup</a></li> <li class="toctree-l2"><a class="reference internal" href="../database/index.html#operations">Operations</a></li> <li class="toctree-l2"><a class="reference internal" href="../database/index.html#glossary">Glossary</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../dns/index.html">DNS v1</a><ul> <li class="toctree-l2"><a class="reference internal" href="../dns/index.html#setup">Setup</a></li> <li class="toctree-l2"><a class="reference internal" href="../dns/index.html#operations">Operations</a></li> <li class="toctree-l2"><a class="reference internal" href="../dns/index.html#glossary">Glossary</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="../identity/index.html">Identity v2</a><ul> <li class="toctree-l2"><a class="reference internal" href="../identity/index.html#setup">Setup</a></li> <li class="toctree-l2"><a class="reference internal" href="../identity/index.html#operations">Operations</a></li> <li class="toctree-l2"><a class="reference internal" href="../identity/index.html#glossary">Glossary</a></li> </ul> </li> </ul> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="../../index.html">php-opencloud</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="breadcrumbs navigation"> <ul class="wy-breadcrumbs"> <li><a href="../../index.html">Docs</a> »</li> <li>JSON schemas</li> <li class="wy-breadcrumbs-aside"> <a href="../../_sources/services/image/Schemas.md.txt" rel="nofollow"> View page source</a> </li> </ul> <hr/> </div> <div role="main"> <div class="section" id="json-schemas"> <h1>JSON schemas<a class="headerlink" href="#json-schemas" title="Permalink to this headline">¶</a></h1> <p>The Cloud Images API supplies json documents describing the JSON-encoded data structures that represent domain objects, so that a client knows exactly what to expect in an API response.</p> <p>A JSON Schema is represented by the <tt class="docutils literal"><span class="pre">OpenCloud\Image\Resource\Schema\Schema</span></tt> class.</p> <div class="section" id="schema-types"> <h2>Schema types<a class="headerlink" href="#schema-types" title="Permalink to this headline">¶</a></h2> <p>There are currently four types of schema: Images schema, Image schema, Members schema, and Member schema.</p> </div> <div class="section" id="example-response-from-the-api"> <h2>Example response from the API<a class="headerlink" href="#example-response-from-the-api" title="Permalink to this headline">¶</a></h2> <p>A sample response from the API, for an Images schema might be:</p> <div class="code json highlight-python"><div class="highlight"><pre><span class="p">{</span> <span class="s">"name"</span><span class="p">:</span> <span class="s">"images"</span><span class="p">,</span> <span class="s">"properties"</span><span class="p">:</span> <span class="p">{</span> <span class="s">"images"</span><span class="p">:</span> <span class="p">{</span> <span class="s">"items"</span><span class="p">:</span> <span class="p">{</span> <span class="s">"type"</span><span class="p">:</span> <span class="s">"array"</span><span class="p">,</span> <span class="s">"name"</span><span class="p">:</span> <span class="s">"image"</span><span class="p">,</span> <span class="s">"properties"</span><span class="p">:</span> <span class="p">{</span> <span class="s">"id"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"name"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"visibility"</span><span class="p">:</span> <span class="p">{</span><span class="s">"enum"</span><span class="p">:</span> <span class="p">[</span><span class="s">"public"</span><span class="p">,</span> <span class="s">"private"</span><span class="p">]},</span> <span class="s">"status"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"protected"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"boolean"</span><span class="p">},</span> <span class="s">"tags"</span><span class="p">:</span> <span class="p">{</span> <span class="s">"type"</span><span class="p">:</span> <span class="s">"array"</span><span class="p">,</span> <span class="s">"items"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">}</span> <span class="p">},</span> <span class="s">"checksum"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"size"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"integer"</span><span class="p">},</span> <span class="s">"created_at"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"updated_at"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"file"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"self"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"schema"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">}</span> <span class="p">},</span> <span class="s">"additionalProperties"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"links"</span><span class="p">:</span> <span class="p">[</span> <span class="p">{</span><span class="s">"href"</span><span class="p">:</span> <span class="s">"{self}"</span><span class="p">,</span> <span class="s">"rel"</span><span class="p">:</span> <span class="s">"self"</span><span class="p">},</span> <span class="p">{</span><span class="s">"href"</span><span class="p">:</span> <span class="s">"{file}"</span><span class="p">,</span> <span class="s">"rel"</span><span class="p">:</span> <span class="s">"enclosure"</span><span class="p">},</span> <span class="p">{</span><span class="s">"href"</span><span class="p">:</span> <span class="s">"{schema}"</span><span class="p">,</span> <span class="s">"rel"</span><span class="p">:</span> <span class="s">"describedby"</span><span class="p">}</span> <span class="p">]</span> <span class="p">}</span> <span class="p">},</span> <span class="s">"schema"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"next"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">},</span> <span class="s">"first"</span><span class="p">:</span> <span class="p">{</span><span class="s">"type"</span><span class="p">:</span> <span class="s">"string"</span><span class="p">}</span> <span class="p">},</span> <span class="s">"links"</span><span class="p">:</span> <span class="p">[</span> <span class="p">{</span><span class="s">"href"</span><span class="p">:</span> <span class="s">"{first}"</span><span class="p">,</span> <span class="s">"rel"</span><span class="p">:</span> <span class="s">"first"</span><span class="p">},</span> <span class="p">{</span><span class="s">"href"</span><span class="p">:</span> <span class="s">"{next}"</span><span class="p">,</span> <span class="s">"rel"</span><span class="p">:</span> <span class="s">"next"</span><span class="p">},</span> <span class="p">{</span><span class="s">"href"</span><span class="p">:</span> <span class="s">"{schema}"</span><span class="p">,</span> <span class="s">"rel"</span><span class="p">:</span> <span class="s">"describedby"</span><span class="p">}</span> <span class="p">]</span> <span class="p">}</span> </pre></div> </div> <p>The top-level schema is called <tt class="docutils literal"><span class="pre">images</span></tt>, and contains an array of links and a properties object. Inside this properties object we see the structure of this top-level <tt class="docutils literal"><span class="pre">images</span></tt> object. So we know that it will take this form:</p> <div class="code json highlight-python"><div class="highlight"><pre><span class="p">{</span> <span class="s">"images"</span><span class="p">:</span> <span class="p">[</span><span class="n">something</span><span class="o">...</span><span class="p">]</span> <span class="p">}</span> </pre></div> </div> <p>Within this object, we can see that it contains an array of anonymous objects, each of which is called <tt class="docutils literal"><span class="pre">image</span></tt> and has its own set of nested properties:</p> <div class="code json highlight-python"><div class="highlight"><pre>{ "images": [ { [object 1...] }, { [object 2...] }, { [object 3...] } ] } </pre></div> </div> <p>The structure of these nested objects are defined as another schema - i.e. a <em>subschema</em>. We know that each object has an ID property (string), a name property (string), a visibility property (can either be <tt class="docutils literal"><span class="pre">private</span></tt> or <tt class="docutils literal"><span class="pre">public</span></tt>), etc.</p> <div class="code json highlight-python"><div class="highlight"><pre>{ "images": [ { "id": "foo", "name": "bar", "visibility": "private", // etc. }, { "id": "foo", "name": "bar", "visibility": "private", // etc. }, { "id": "foo", "name": "bar", "visibility": "private", // etc. } ] } </pre></div> </div> <p>Each nested property of a schema is represented by the <tt class="docutils literal"><span class="pre">OpenCloud\Image\Resource\Schema\Property</span></tt> class.</p> <p>If you would like to find out more about schemas, Guzzle has good documentation about <a class="reference external" href="http://docs.guzzlephp.org/en/latest/webservice-client/guzzle-service-descriptions.html">service descriptions</a>, which is fairly analogous.</p> </div> <div class="section" id="json-patch"> <h2>JSON Patch<a class="headerlink" href="#json-patch" title="Permalink to this headline">¶</a></h2> <p>The Glance API has a unique way of updating certain dynamic resources: they use JSON Patch method, as outlined in <a class="reference external" href="http://tools.ietf.org/html/rfc6902">RFC 6902</a>.</p> <p>Requests need to use the <tt class="docutils literal"><span class="pre">application/openstack-images-v2.1-json-patch</span></tt> content-type.</p> <p>In order for the operation to occur, the request entity body needs to contain a very particular structure:</p> <div class="highlight-python"><div class="highlight"><pre><span class="p">[</span> <span class="p">{</span><span class="s">"op"</span><span class="p">:</span> <span class="s">"replace"</span><span class="p">,</span> <span class="s">"path"</span><span class="p">:</span> <span class="s">"/name"</span><span class="p">,</span> <span class="s">"value"</span><span class="p">:</span> <span class="s">"Fedora 17"</span><span class="p">},</span> <span class="p">{</span><span class="s">"op"</span><span class="p">:</span> <span class="s">"replace"</span><span class="p">,</span> <span class="s">"path"</span><span class="p">:</span> <span class="s">"/tags"</span><span class="p">,</span> <span class="s">"value"</span><span class="p">:</span> <span class="p">[</span><span class="s">"fedora"</span><span class="p">,</span> <span class="s">"beefy"</span><span class="p">]}</span> <span class="p">]</span> </pre></div> </div> <p>The <tt class="docutils literal"><span class="pre">op</span></tt> key refers to the type of Operation (see <tt class="docutils literal"><span class="pre">OpenCloud\Image\Enum\OperationType</span></tt> for a full list).</p> <p>The <tt class="docutils literal"><span class="pre">path</span></tt> key is a JSON pointer to the document property you want to modify or insert. JSON pointers are defined in <a class="reference external" href="http://tools.ietf.org/html/rfc6901">RFC 6901</a>.</p> <p>The <tt class="docutils literal"><span class="pre">value</span></tt> key is the value.</p> <p>Because this is all handled for you behind the scenes, we will not go into exhaustive depth about how this operation is handled. You can browse the source code, consult the various RFCs and the <a class="reference external" href="http://docs.rackspace.com/images/api/v2/ci-devguide/content/patch-method.html">official documentation</a> for additional information.</p> </div> </div> </div> <footer> <hr/> <div role="contentinfo"> <p> © Copyright 2015, Jamie Hannaford, Shaunak Kashyap. </p> </div> <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a> </footer> </div> </div> </section> </div> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT:'../../', VERSION:'1.12.1', COLLAPSE_INDEX:false, FILE_SUFFIX:'.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../../_static/jquery.js"></script> <script type="text/javascript" src="../../_static/underscore.js"></script> <script type="text/javascript" src="../../_static/doctools.js"></script> <script type="text/javascript" src="../../_static/js/theme.js"></script> <script type="text/javascript"> jQuery(function () { SphinxRtdTheme.StickyNav.enable(); }); </script> </body> </html>