<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.nifi</groupId>
        <artifactId>nifi</artifactId>
        <version>1.15.0-SNAPSHOT</version>
    </parent>
    <artifactId>nifi-api</artifactId>
    <packaging>jar</packaging>

    <!--
        This module should have no external dependencies. The following dependency is acceptable ONLY
        due to the fact that it is an optional dependency, and NiFi functions perfectly without it.
        Adding a dependency on nifi-api does not bring in any transitive dependencies.
        The dependency is provided here because Swagger Annotations are used within the Versioned Components
        objects of the NiFi API in order to provide documentation for generating REST API's, generating clients, etc.
        While NiFi does not need these, any application that wants these capabilities can achieve this
        simply by adding their own dependency on Swagger Annotations.
    -->
    <dependencies>
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.16</version>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
    </dependencies>
</project>
