<!doctype html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7 ]> <html class="no-js ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]>    <html class="no-js ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]>    <html class="no-js ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
  <meta charset="utf-8">

  <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
       Remove this if you use the .htaccess -->
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

  <title>Apache Archiva UI REST API</title>

  <!-- Mobile viewport optimized: j.mp/bplateviewport -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- CSS: implied media="all" -->
  <link rel="stylesheet" href="css/style.css?v=2">
  <link rel="stylesheet" href="css/prettify.css">

  <!-- All JavaScript at the bottom, except for Modernizr which enables HTML5 elements & feature detects -->
  <script src="js/libs/modernizr-1.7.min.js"></script>

</head>

<body class="home">

  <div class="container">
    <header>
      <div id="header" class="column first last span-20">
        <div id="site-name" class="column span-18 append-1 prepend-1 first last"><a href="index.html">Apache Archiva UI REST API</a></div>
        <div id="primary" class="column span-18 append-1 prepend-1 first last">
          <ul class="navigation">
            <li id="nav-rest"><a href="rest.html">REST</a></li>
            <li id="nav-data"><a href="model.html">Data Model</a></li>
          </ul>
        </div>
        <div>
          <ul class="xbreadcrumbs" id="breadcrumbs">
            <li class="current">
              <a href="index.html" class="home">Home</a>
            </li>
          </ul>
        </div>
      </div>
    </header>
    <div id="main" class="column first last span-20">

      <h1>REST Resources</h1>
      <p>
        This API supports a <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">Representational State Transfer (REST)</a>
        model for accessing a set of resources through a fixed set of operations. The following resources are accessible through the RESTful model:
      </p>
      <ul>
        <li><a href="resource_DataValidatorService.html">DataValidatorService</a></li>
        <li><a href="resource_FileUploadService.html">FileUploadService</a></li>
        <li><a href="resource_JavascriptLogger.html">JavascriptLogger</a></li>
        <li><a href="resource_RuntimeInfoService.html">RuntimeInfoService</a></li>
      </ul>
      <p>
        There is also a <a href="application.wadl">WADL document</a> describing the REST API.
      </p>

    <h1>Data Model</h1>

    <p>
      All endpoints act on a common set of data. The data can be represented with difference media (i.e. "MIME") types, depending on the endpoint
      that consumes and/or produces the data. The data can described by <a href="http://www.w3.org/XML/Schema">XML Schema</a>, which definitively
      describes the XML representation of the data.
    </p>

    <p>
      This document will describe the data using terms based on <a href="http://www.w3.org/XML/Schema">XML Schema</a>.
      Data can be grouped by namespace, with a schema document describing the <i>elements</i> and <i>types</i> of the namespace.
      Generally speaking, <i>types</i> define the structure of the data and <i>elements</i> are <i>instances</i> of a type. For example,
      <i>elements</i> are usually produced by (or consumed by) a REST endpoint, and the structure of each element is described by
      its <i>type</i>.
    </p>


      <h2>Namespace "ns0"</h2>
      <table>
        <tr>
          <td align="right">Namespace URI:</td>
          <td>(default namespace)</td>
        </tr>
        <tr>
          <td align="right">XSD:</td>
          <td><a href="ns0.xsd">ns0.xsd</a></td>
        </tr>
      </table>

        <h3>Data Elements</h3>

        <ul>
          <li><a href="el_ns0_applicationRuntimeInfo.html">applicationRuntimeInfo</a></li>
          <li><a href="el_ns0_fileMetadata.html">fileMetadata</a></li>
          <li><a href="el_ns0_javascriptLog.html">javascriptLog</a></li>
        </ul>

        <h3>Data Types</h3>
        <ul>
          <li><a href="ns0_applicationRuntimeInfo.html">applicationRuntimeInfo</a></li>
          <li><a href="ns0_cookieInformation.html">cookieInformation</a></li>
          <li><a href="ns0_fileMetadata.html">fileMetadata</a></li>
          <li><a href="ns0_javascriptLog.html">javascriptLog</a></li>
        </ul>

      <div class="clear" />
    </div>
    <footer>
      <div id="footer">
        Generated by <a href="http://enunciate.codehaus.org">Enunciate</a>.
      </div>
    </footer>
  </div> <!--! end of #container -->

  <!-- JavaScript at the bottom for fast page loading -->

  <!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary -->
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
  <script>window.jQuery || document.write("<script src='js/libs/jquery-1.5.1.min.js'>\x3C/script>")</script>

  <!--manage the navigation menu-->
  <script src="js/libs/xbreadcrumbs.js"></script>
  <script>
    $(function() {
      $('#breadcrumbs').xBreadcrumbs();
    });
  </script>


  <!-- prettify code blocks. see http://code.google.com/p/google-code-prettify/ -->
  <script src="js/libs/prettify/prettify.js"></script>
  <script>
    $(function() {
      prettyPrint();
    });
  </script>

  <!--[if lt IE 7 ]>
    <script src="js/libs/dd_belatedpng.js"></script>
    <script>DD_belatedPNG.fix("img, .png_bg"); // Fix any <img> or .png_bg bg-images. Also, please read goo.gl/mZiyb </script>
  <![endif]-->

</body>
</html>