<!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>HiveLineageResource</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">HiveLineageResource</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>
              <a href="index.html" class="home">Home</a> &gt;
            </li>
            <li>
              <a href="rest.html">REST</a> &gt;
              <ul>
                <li><a href="model.html">Data Model</a></li>
                <li><a href="rest.html">REST</a></li>
              </ul>
            </li>
            <li class="current">
              <a href="resource_HiveLineageResource.html">HiveLineageResource</a>
              <ul>
                <li><a href="resource_AdminResource.html">AdminResource</a></li>
                <li><a href="resource_EntityResource.html">EntityResource</a></li>
                <li><a href="resource_HiveLineageResource.html">HiveLineageResource</a></li>
                <li><a href="resource_MetadataDiscoveryResource.html">MetadataDiscoveryResource</a></li>
                <li><a href="resource_RexsterGraphResource.html">RexsterGraphResource</a></li>
                <li><a href="resource_TypesResource.html">TypesResource</a></li>
              </ul>
            </li>
          </ul>
        </div>
      </div>
    </header>
    <div id="main" class="column first last span-20">
      <h1>HiveLineageResource</h1>

      <p>Jersey Resource for Hive Table Lineage.</p>
      <p>The following resources are applicable:</p>
      <ul>
        <li>
        <a href="#path__lineage_hive_table_-tableName-_inputs_graph.html">/lineage/hive/table/{tableName}/inputs/graph</a>
        </li>
        <li>
        <a href="#path__lineage_hive_table_-tableName-_outputs_graph.html">/lineage/hive/table/{tableName}/outputs/graph</a>
        </li>
        <li>
        <a href="#path__lineage_hive_table_-tableName-_schema.html">/lineage/hive/table/{tableName}/schema</a>
        </li>
      </ul>
        <a name="path__lineage_hive_table_-tableName-_inputs_graph.html"></a>
      <h1>/lineage/hive/table/{tableName}/inputs/graph</h1>
      <a name="GET"></a>
      <h2>GET</h2>
      <p>
            Returns the inputs graph for a given entity.
          </p>
      <h3>Parameters</h3>
      <table>
        <tr>
          <th>name</th>
          <th>description</th>
          <th>type</th>
          <th>default</th>
        </tr>
        <tr>
          <td>tableName</td>
          <td>
            table name
          </td>
          <td>path</td>
          <td></td>
        </tr>
      </table>
      <h3>Response Body</h3>
      <table>
        <tr>
          <td align="right">element:</td>
          <td>(custom)</td>
        </tr>
        <tr>
          <td align="right">media types:</td>
          <td>application/json</td>
        </tr>
      </table>
      <p>(no documentation provided)</p>
        <a name="path__lineage_hive_table_-tableName-_outputs_graph.html"></a>
      <h1>/lineage/hive/table/{tableName}/outputs/graph</h1>
      <a name="GET"></a>
      <h2>GET</h2>
      <p>
            Returns the outputs graph for a given entity.
          </p>
      <h3>Parameters</h3>
      <table>
        <tr>
          <th>name</th>
          <th>description</th>
          <th>type</th>
          <th>default</th>
        </tr>
        <tr>
          <td>tableName</td>
          <td>
            table name
          </td>
          <td>path</td>
          <td></td>
        </tr>
      </table>
      <h3>Response Body</h3>
      <table>
        <tr>
          <td align="right">element:</td>
          <td>(custom)</td>
        </tr>
        <tr>
          <td align="right">media types:</td>
          <td>application/json</td>
        </tr>
      </table>
      <p>(no documentation provided)</p>
        <a name="path__lineage_hive_table_-tableName-_schema.html"></a>
      <h1>/lineage/hive/table/{tableName}/schema</h1>
      <a name="GET"></a>
      <h2>GET</h2>
      <p>
            Return the schema for the given tableName.
          </p>
      <h3>Parameters</h3>
      <table>
        <tr>
          <th>name</th>
          <th>description</th>
          <th>type</th>
          <th>default</th>
        </tr>
        <tr>
          <td>tableName</td>
          <td>
            table name
          </td>
          <td>path</td>
          <td></td>
        </tr>
      </table>
      <h3>Response Body</h3>
      <table>
        <tr>
          <td align="right">element:</td>
          <td>(custom)</td>
        </tr>
        <tr>
          <td align="right">media types:</td>
          <td>application/json</td>
        </tr>
      </table>
      <p>(no documentation provided)</p>

      <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>
