<?xml version="1.0"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<enunciate label="lens" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="http://enunciate.codehaus.org/schemas/enunciate-1.25.xsd">
  <namespaces>
    <namespace uri="https://git-wip-us.apache.org/repos/asf/lens.git" id="lens"/>
  </namespaces>
  <services>
    <rest defaultRestSubcontext="/">
      <custom-resource-parameter-annotation qualifiedName="org.glassfish.jersey.media.multipart.FormDataParam"/>
    </rest>
  </services>
  <api-classes>
    <include pattern="org.apache.lens.server.query.*"/>
    <include pattern="org.apache.lens.server.metastore.*"/>
    <include pattern="org.apache.lens.server.quota.*"/>
    <include pattern="org.apache.lens.server.scheduler.*"/>
    <include pattern="org.apache.lens.server.session.*"/>
  </api-classes>
  <modules>
    <docs docsDir="lens-server" title="Lens Server REST API"/>
    <csharp disabled="true"/>
    <c disabled="true"/>
    <obj-c disabled="true"></obj-c>
  </modules>
</enunciate>
