<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.2.2) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-miller-api-manifest-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title>API Manifest</title>
    <seriesInfo name="Internet-Draft" value="draft-miller-api-manifest-01"/>
    <author initials="D." surname="Miller" fullname="Darrel Miller">
      <organization>Microsoft</organization>
      <address>
        <email>darrel.miller@microsoft.com</email>
      </address>
    </author>
    <date/>
    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>API</keyword>
    <keyword>Http</keyword>
    <keyword>OpenAPI</keyword>
    <abstract>
      <?line 43?>
<t>This document defines an "api manifest" as a way to declare the dependencies that an application has on HTTP APIs. It contains characteristics of those dependencies including links to API descriptions, specifics of the types of HTTP API requests made by the application and related authorization information.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://darrelmiller.github.io/api-manifest/draft-miller-api-manifest.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-miller-api-manifest/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/darrelmiller/api-manifest"/>.</t>
    </note>
  </front>
  <middle>
    <?line 46?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Applications frequently rely on HTTP APIs to provide functionality to users. Currently, there are limited options for developers to be able to describe those dependencies and options that do exist do not have sufficiently detailed information to enable some of the desired scenarios. By contrast, there does exist declarative, machine readable files, that describe the dependencies that applications have on code libraries and packages. These files have enabled an ecosystem of tooling related to checking, adding, updating and reporting on dependencies. This specification defines a machine processable format to enable a programming language agnostic tooling ecosystem be built around the dependencies applications have on HTTP APIs.</t>
      <t>An API manifest such as described in this document could enable a number of scenarios:</t>
      <ul spacing="normal">
        <li>generate a minimal set of client code that can be used to access the specified resources</li>
        <li>define API subsets for API gateways</li>
        <li>identify the scopes or roles that an application must be granted to be able to access those resources</li>
        <li>use as Signed Statement in Trustworthy and Transparent Digital Supply Chains</li>
        <li>perform dependency checks for updates to APIs in a similar way Dependabot tooling does for package dependencies</li>
        <li>provide security alerts for APIs that have announced discovered vulnerabilities</li>
        <li>describe the capabilities of a skill/plugin for a chat-based system</li>
      </ul>
      <t>It is common for the person who consents to an application to be used, and therefore access data and functionality of HTTP APIs, not be capable of reviewing application source code to understand the details of what an application does. The API manifest can be used to create admin friendly descriptions of application capabilities to simplify the process of application consent.</t>
      <t>There are no guarantees that an API manifest accurately describes that capabilities and dependencies of an application. There remains an element of trust. It is not in itself a security artifact. However, it can play an role in enabling tooling as part of a secure supply chain.</t>
      <t>By creating an API manifest format independent of the application programming language tooling that consumes the API manifest can be created in any programming language. Language specific tooling could be created to generate API manifests by introspecting application code.  Tooling could be created to produce API manifests to support  design first methodologies, or integration centric scenarios.</t>
    </section>
    <section anchor="schema">
      <name>Schema</name>
      <section anchor="api-manifest">
        <name>Api Manifest</name>
        <t>The Api Manifest document contains information about an application that consumes HTTP APIs. The canonical model for an API Manifest document is a JSON object. When serialized as JSON it can be identified by the <tt>application/api-manifest</tt> media type.</t>
        <t>An API manifest document <bcp14>SHOULD</bcp14> contain a <tt>publisher</tt> property that has a value described by the publisher <xref target="publisher"/> and <bcp14>MUST</bcp14> contain a JSON object that contains of zero or more mappings from a string key to Api Dependency <xref target="api-dependency"/> objects.  The API Manifest object <bcp14>MUST</bcp14> contain an <tt>applicationName</tt> string property to uniquely identify the application to users of the API Manifest.</t>
      </section>
      <section anchor="publisher">
        <name>Publisher Object</name>
        <t>The publisher object <bcp14>MUST</bcp14> contain a <tt>name</tt> property that is a JSON string. This string contains a value representing the organization or individual responsible for the application that this api manifest belongs to.  The <tt>contactEmail</tt> property <bcp14>MUST</bcp14> provide an email address to communicate information to the publisher of the application being described.</t>
      </section>
      <section anchor="api-dependency">
        <name>API Dependency Object</name>
        <t>Each API dependency object represents an HTTP API that the target application consumes. The API dependency object <bcp14>MAY</bcp14> contain a <tt>apiDescriptionUrl</tt> that references an API description document such as an <eref target="https://spec.openapis.org/oas/latest.html">OpenAPI</eref> description. The <tt>apiDescriptionVersion</tt> member can contain the version of the API Description used by the application. This member enables tooling to detect if the referenced API desription is updated. The <tt>authorizationRequirements</tt> property contains the requirements for the target application to authorize a call to the HTTP API. The <tt>requests</tt> property contains an array of <tt>requestInfo</tt> objects.</t>
      </section>
      <section anchor="authReqirements">
        <name>Authorization Requirements Object</name>
        <t>The Authorization Requirements object contains information that is required to authorize the application to perform the requests listed in the Api Dependency <tt>requests</tt> property. The <tt>clientId</tt> property is a JSON string value used to identify the application to an OAuth2 authorization server for APIs that use OAuth2 for authorization. The <tt>access</tt> property is a JSON object that has the structure and semantics of the <tt>authorization_details</tt> defined in <xref target="RAR"/> that are required to perform the complete set of requests defined in the Api Dependency <xref target="api-dependency"/>. The Api Manifest does not attempt to correlate which permission is required for a specific request. It is assumed that the application must be granted the complete set of permissions in order to perform its function.</t>
      </section>
      <section anchor="requestInfo">
        <name>Request Info Object</name>
        <t>Each Request Info object contains a <tt>uriTemplate</tt> <xref target="URITEMPLATE"/> and a corresponding HTTP <tt>method</tt>. The values are used to identify an operation defined in the API description referenced in the Api Dependency<xref target="api-dependency"/>. If the API Dependency<xref target="api-dependency"/> contains a <tt>apiDeploymentBaseUrl</tt> then uriTemplate values that resolve to a relative reference <bcp14>MUST</bcp14> be relative to the <tt>apiDeploymentBaseUrl</tt>. The <tt>dataClassification</tt> property is a list of URIs used to indicate privacy classifications of the data being transmitted via the HTTP request.</t>
        <sourcecode type="cddl"><![CDATA[
apiManifest = {
    applicationName: tstr
    ? publisher: publisher
    apiDependencies : {* tstr => apiDependency}
    extensibility
}

; Identification of the application developer / organization
publisher = {
    name: tstr
    contactEmail: tstr
}

;  Declaration of application dependencies on HTTP API
apiDependency = {
    ? apiDescriptionUrl: tstr
    ? apiDescriptionVersion: tstr
    ? apiDeploymentBaseUrl: tstr
    authorizationRequirements: authorizationRequirements
    requests: [+ requestInfo]
    extensibility
}

; Permissions required by client application for the described dependency
authorizationRequirements = {
    ? clientIdentifier: tstr
    ? access: [+accessRequest] | [+tstr]
}

extensibility = (
    ? extensions => {* tstr => any }
)
accessRequest = {
    type : tstr ;
    * tstr => any;
}

; Details of a resource request
requestInfo = {
    method: tstr
    uriTemplate: tstr
    ? dataClassification: [* tstr]
}

]]></sourcecode>
        <t>Example:</t>
        <sourcecode type="json"><![CDATA[
{
    "publisher": {
        "name": "Alice",
        "contactEmail": "alice@example.org"
    },
    "apiDependencies": {
        "example": {
            "apiDescriptionUrl": "https://example.org/openapi.json",
            "apiDescriptionVersion": "1.2",
            "apiDeploymentBaseUrl": "https://example.org/",
            "authorizationRequirements": {
                "clientIdentifier": "some-uuid-here",
                "access": [
                    {
                        "type": "delegated",
                        "actions": [
                                    "resourceA.ReadWrite",
                                    "resourceB.ReadWrite"
                                ]
                    },
                    {
                        "type": "application",
                        "actions": [
                                    "resourceB.Read"
                                ]
                    }
                ]
            },
            "requests": [
                {
                    "method": "GET",
                    "uriTemplate": "/api/resourceA"
                },
                {
                    "method": "GET",
                    "uriTemplate": "/api/resourceB"
                }
            ]
        }
    }
}
]]></sourcecode>
      </section>
      <section anchor="extensibility">
        <name>Extensibility</name>
        <t>The API Manifest object and API Dependency object can be extended with additional properties. The <tt>extensions</tt> member is a map of properties whose values can be any valid JSON member.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document document registers the <tt>application/api-manifest</tt> media type.</t>
      <t>Type name:  application</t>
      <t>Subtype name:  api-manifest</t>
      <t>Required parameters:  n/a</t>
      <t>Optional parameters:  n/a</t>
      <t>Encoding considerations:  Encoding considerations are identical to those specified for the "application/json" media type.  See <xref target="JSON"/>.</t>
      <t>Security considerations:  TBD.</t>
      <t>Interoperability considerations:  TBD.</t>
      <t>Published specification:  This document is the specification for this media type.</t>
      <t>Applications that use this media type:</t>
      <t>Additional information:</t>
      <artwork><![CDATA[
Magic number(s):  n/a

File extension(s):  TBD

Macintosh file type code(s):  n/a
]]></artwork>
      <t>Person &amp; email address to contact for further information:  See Authors' Addresses section.</t>
      <t>Intended usage:  COMMON</t>
      <t>Restrictions on usage:  n/a</t>
      <t>Author:  See Authors' Addresses section.</t>
      <t>Change controller:  Internet Engineering Task Force (mailto:iesg@ietf.org).</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="URITEMPLATE">
        <front>
          <title>URI Template</title>
          <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
          <author fullname="R. Fielding" initials="R." surname="Fielding"/>
          <author fullname="M. Hadley" initials="M." surname="Hadley"/>
          <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
          <author fullname="D. Orchard" initials="D." surname="Orchard"/>
          <date month="March" year="2012"/>
          <abstract>
            <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6570"/>
        <seriesInfo name="DOI" value="10.17487/RFC6570"/>
      </reference>
      <reference anchor="JSON">
        <front>
          <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
          <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
          <date month="March" year="2014"/>
          <abstract>
            <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
            <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7159"/>
        <seriesInfo name="DOI" value="10.17487/RFC7159"/>
      </reference>
      <reference anchor="RAR">
        <front>
          <title>OAuth 2.0 Rich Authorization Requests</title>
          <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
          <author fullname="J. Richer" initials="J." surname="Richer"/>
          <author fullname="B. Campbell" initials="B." surname="Campbell"/>
          <date month="May" year="2023"/>
          <abstract>
            <t>This document specifies a new parameter that is used to carry fine-grained authorization data in OAuth messages.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9396"/>
        <seriesInfo name="DOI" value="10.17487/RFC9396"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 259?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
    <section numbered="false" anchor="appendix">
      <name>Appendix</name>
      <section numbered="false" anchor="example-for-microsoft-graph-api">
        <name>Example for Microsoft Graph API</name>
        <sourcecode type="json"><![CDATA[
{
    "publisher": {
        "name": "Alice",
        "contactEmail": "alice@example.org"
    },
    "apiDependencies": {
        "graph": {
            "apiDescripionUrl": "https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml",
            "apiDeploymentBaseUrl": "https://graph.microsoft.com/v1.0/",
            "authorizationRequirements": {
                "clientIdentifier": "some-uuid-here",
                "access": [
                    {
                        "type": "openid",
                        "claims": {
                            "scp": {
                                "essential": true,
                                "values": [
                                    "User.Read",
                                    "Mail.ReadWrite.All"
                                ]
                            }
                        }
                    },
                    {
                        "type": "openid",
                        "claims": {
                            "roles": {
                                "essential": true,
                                "values": [
                                    "User.Read.All"
                                ]
                            }
                        }
                    }
                ]
            },
            "requests": [
                {
                    "method": "GET",
                    "uriTemplate": "me"
                },
                {
                    "method": "GET",
                    "uriTemplate": "users/{userId}/messages"
                },
                {
                    "method": "GET",
                    "uriTemplate": "users"
                }
            ]
        }
    }
}
]]></sourcecode>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
1DX0+K9g4+d2nf8PY3CQ3N0xAAA=

-->

</rfc>
