<!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 Redback 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 Redback 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_LdapGroupMappingService.html">LdapGroupMappingService</a></li>
        <li><a href="resource_LoginService.html">LoginService</a></li>
        <li><a href="resource_PasswordService.html">PasswordService</a></li>
        <li><a href="resource_RoleManagementService.html">RoleManagementService</a></li>
        <li><a href="resource_UserService.html">UserService</a></li>
        <li><a href="resource_UtilServices.html">UtilServices</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, but is also useful for describing the other formats of the data, such as <a href="http://json.org">JSON</a>.
    </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_application.html">application</a></li>
          <li><a href="el_ns0_applicationRole.html">applicationRole</a></li>
          <li><a href="el_ns0_errorMessage.html">errorMessage</a></li>
          <li><a href="el_ns0_ldapGroupMapping.html">ldapGroupMapping</a></li>
          <li><a href="el_ns0_ldapGroupMappingUpdateRequest.html">ldapGroupMappingUpdateRequest</a></li>
          <li><a href="el_ns0_loginRequest.html">loginRequest</a></li>
          <li><a href="el_ns0_operation.html">operation</a></li>
          <li><a href="el_ns0_permission.html">permission</a></li>
          <li><a href="el_ns0_redbackRestError.html">redbackRestError</a></li>
          <li><a href="el_ns0_registrationKey.html">registrationKey</a></li>
          <li><a href="el_ns0_resource.html">resource</a></li>
          <li><a href="el_ns0_role.html">role</a></li>
          <li><a href="el_ns0_roleTemplate.html">roleTemplate</a></li>
          <li><a href="el_ns0_stringList.html">stringList</a></li>
          <li><a href="el_ns0_user.html">user</a></li>
          <li><a href="el_ns0_userRegistrationRequest.html">userRegistrationRequest</a></li>
        </ul>

        <h3>Data Types</h3>
        <ul>
          <li><a href="ns0_application.html">application</a></li>
          <li><a href="ns0_applicationRoles.html">applicationRoles</a></li>
          <li><a href="ns0_errorMessage.html">errorMessage</a></li>
          <li><a href="ns0_ldapGroupMapping.html">ldapGroupMapping</a></li>
          <li><a href="ns0_ldapGroupMappingUpdateRequest.html">ldapGroupMappingUpdateRequest</a></li>
          <li><a href="ns0_loginRequest.html">loginRequest</a></li>
          <li><a href="ns0_operation.html">operation</a></li>
          <li><a href="ns0_permission.html">permission</a></li>
          <li><a href="ns0_redbackRestError.html">redbackRestError</a></li>
          <li><a href="ns0_registrationKey.html">registrationKey</a></li>
          <li><a href="ns0_resource.html">resource</a></li>
          <li><a href="ns0_role.html">role</a></li>
          <li><a href="ns0_roleTemplate.html">roleTemplate</a></li>
          <li><a href="ns0_stringList.html">stringList</a></li>
          <li><a href="ns0_user.html">user</a></li>
          <li><a href="ns0_userRegistrationRequest.html">userRegistrationRequest</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>