<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-httpapi-api-catalog-06" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="api-catalog well-known URI">api-catalog: a well-known URI and link relation to help discovery of APIs</title>

    <author initials="K." surname="Smith" fullname="Kevin Smith">
      <organization>Vodafone</organization>
      <address>
        <email>kevin.smith@vodafone.com</email>
        <uri>https://www.vodafone.com</uri>
      </address>
    </author>

    <date />

    <area>IETF</area>
    
    <keyword>internet-draft</keyword>

    <abstract>


<?line 83?>

<t>This document defines the "api-catalog" well-known URI and link 
relation. It is intended to facilitate automated discovery and 
usage of the APIs published by a given organisation or individual. 
A request to the api-catalog resource will return a document 
providing information about, and links to, the publisher's APIs.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-httpapi.github.io/api-catalog/draft-ietf-httpapi-api-catalog.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-httpapi-api-catalog/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Building Blocks for HTTP APIs Working Group mailing list (<eref target="mailto:httpapi@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/httpapi/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/httpapi/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-httpapi/api-catalog"/>.</t>
    </note>


  </front>

  <middle>


<?line 91?>

<section anchor="introduction"><name>Introduction</name>

<t>An organisation or individual may publish Application Programming
Interfaces (APIs) to encourage requests for interaction from external
parties. Such APIs must be discovered before they may be used - i.e., 
the external party needs to know what APIs a given publisher exposes, 
their purpose, any policies for usage, and the endpoint to interact 
with each API. To facilitate automated discovery of this information, 
and automated usage of the APIs, this document proposes:</t>

<t><list style="symbols">
  <t>a well-known URI <xref target="WELL-KNOWN"/>, 'api-catalog', encoded as a URI 
reference to an API catalog document describing a Publisher's API 
endpoints.</t>
  <t>a link relation <xref target="WEB-LINKING"/>, 'api-catalog', of which the target 
resource is the Publisher's API Catalog document.</t>
</list></t>

<section anchor="goals"><name>Goals and non-goals</name>

<t>The primary goal is to facilitate the automated discovery of a 
Publisher's public API endpoints, along with metadata that describes
the purpose and usage of each API, by specifying a well-known URI 
that returns an API catalog document. The API catalog document is 
primarily machine-readable to enable automated discovery and usage of
APIs, and it may also include links to human-readable documentation.</t>

<t>Non-goals: this document does not mandate paths for API endpoints. 
i.e., it does not mandate that my_example_api's endpoint should be
<spanx style="verb">https://www.example.com/.well-known/api-catalog/my_example_api</spanx> , nor
even to be hosted at www.example.com (although it is not forbidden to 
do so).</t>

</section>
<section anchor="notational-conventions"><name>Notational Conventions</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" 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.
These words may also appear in this document in
lower case as plain English words, absent their normative meanings.
<?line -8?></t>

<t>The term "content negotiation" and "status code" are from <xref target="HTTP"/>.
The term "well-known URI" is from <xref target="WELL-KNOWN"/>.
The term "link relation" is from <xref target="WEB-LINKING"/>.</t>

<t>The term "Publisher" refers to an organisation, company or individual 
that publishes one or more APIs for usage by external third parties. 
A fictional Publisher named "example" is used throughout this document. 
The examples use the FQDNs "www.example.com", "developer.example.com",
"apis.example.com", "apis.example.net", "gaming.example.com", 
"iot.example.net",where the use of the .com and .net TLDs and various 
subdomains are simply to illustrate that the "example" Publisher may 
have their API portfolio distributed across various domains for which 
they are the authority. For scenarios where the Publisher "example" 
is not the authority for a given <em>.example.</em> domain then that is made
explicit in the text.</t>

<t>In this document, "API" means the specification resources required 
for an external party (or in the case of 'private' APIs, an internal 
party) to implement software which uses the Publisher's Application 
Programming Interface.</t>

<t>The specification recommends the use of TLS, hence "HTTPS" and 
"https://" are used throughout.</t>

</section>
</section>
<section anchor="usage"><name>Using the 'api-catalog' well-known URI</name>

<t>The api-catalog well-known URI is intended for HTTPS servers that 
publish APIs.</t>

<t><list style="symbols">
  <t>The API Catalog MUST be named "api-catalog" in a well-known location
 as described by <xref target="WELL-KNOWN"/>.</t>
  <t>The location of the API Catalog document is decided by the Publisher: 
the /.well-known/api-catalog URI provides a convenient reference to 
that location.</t>
</list></t>

<t>A Publisher supporting this URI:</t>

<t><list style="symbols">
  <t>SHALL resolve an HTTPS GET request to /.well-known/api-catalog and 
return an API catalog document ( as described in <xref target="api-catalog"/> ).</t>
  <t>SHOULD resolve an HTTPS HEAD request to /.well-known/api-catalog 
with a response including a Link header with the relation(s) defined 
in <xref target="link-relation"/></t>
</list></t>

</section>
<section anchor="link-relation"><name>The api-catalog link relation</name>

<t>This document introduces a new link relation <xref target="WEB-LINKING"/>, 
"api-catalog". This identifies a target resource that represents a 
list of APIs available from the Publisher of the context resource. 
The target resource URI may be ./well-known/api-catalog , or any other 
URI chosen by the Publisher. For example, the Publisher 'example' 
could include the api-catalog link relation in the HTTP header and/or 
content payload when responding to a request to <spanx style="verb">https://www.example.com</spanx> :</t>

<figure><sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Location: /index.html
Link: </my_api_catalog.json>; rel=api-catalog
Content-Length: 356

<!DOCTYPE HTML>
  <html>
    <head>
      <title>Welcome to Example Publisher</title>
    </head>
    <body>
      <p>
       <a href="my_api_catalog.json" rel="api-catalog">
        Example Publisher's APIs
       </a>
      </p>
      <p>(remainder of content)</p>
    </body>
  </html>

]]></sourcecode></figure>

<section anchor="using-additional-link-relations"><name>Using additional link relations</name>

<t><list style="symbols">
  <t>"item" <xref target="RFC6573"/>. When used in an API Catalog document, the 
"item" link relation identifies a target resource that represents an 
API that is a member of the API Catalog.</t>
  <t>Other link relations may be utilised in an API Catalog to convey metadata 
descriptions for API links.</t>
</list></t>

</section>
</section>
<section anchor="api-catalog"><name>The API Catalog document</name>

<t>The API Catalog is a document listing hyperlinks to a Publisher's 
APIs. The Publisher may host this API Catalog document at any URI(s) 
they choose. As illustration, the API Catalog document URI of 
<spanx style="verb">https://www.example.com/my_api_catalog.json</spanx> can be requested 
directly, or via a request to 
<spanx style="verb">https://www.example.com/.well-known/api-catalog</spanx>, which the Publisher
will resolve to <spanx style="verb">https://www.example.com/my_api_catalog</spanx>.</t>

<t>The Publisher MUST publish the API Catalog document in the Linkset 
format <spanx style="verb">application/linkset+json</spanx> (section 4.2 of <xref target="RFC9264"/>). 
In addition, the Publisher MAY make additional formats available via 
content negotiation (section 5.3 of <xref target="HTTP"/>) to their 
/.well-known/api-catalog location. A non-exhaustive list of such 
formats that support the automated discovery, and machine (and 
human) usage of a Publisher's APIs, is listed below.</t>

<t>The API Catalog document MUST include hyperlinks to API endpoints, 
and is RECOMMENDED to include useful metadata, such as usage 
policies, API version information, links to the OpenAPI Specification 
<xref target="OAS"></xref> definitions for each API, etc..  If the Publisher does not 
include these metadata directly in the API Catalog document, they 
SHOULD make that metadata available at the API endpoint URIs they 
have listed (see <xref target="api-catalog-example-linkset-bookmarks"/> for 
an example).</t>

<t>Some suitable API Catalog document formats include:</t>

<t><list style="symbols">
  <t>A linkset in JSON Document format (section 4.2 of <xref target="RFC9264"/>) of 
API endpoints and information to facilitate API usage. The linkset 
SHOULD include a profile parameter (section 5 of <xref target="RFC9264"/>) with 
a Profile URI <xref target="RFC7284"/> value of 'THIS-RFC-URL' to indicate the 
linkset is representing an API Catalog document as defined above. 
Appendix A includes example API Catalog documents based on the 
linkset format.</t>
  <t>An APIs.json document <xref target="APIsjson"></xref>.</t>
  <t>API bookmarks that represent an API entry-point URI, which may be 
followed to discover purpose and usage.</t>
  <t>A RESTDesc semantic description for hypermedia APIs <xref target="RESTdesc"></xref>.</t>
  <t>A Hypertext Application Language document <xref target="HAL"></xref>.</t>
  <t>An extension to the Schema.org WebAPI type <xref target="WebAPIext"></xref>.</t>
</list></t>

<t>If a Publisher already lists their APIs in a format other than 
linkset but wish to utilise the /.well-known/api-catalog URI, then:</t>

<t><list style="symbols">
  <t>They MUST also implement a linkset with, at minimum, hyperlinks to 
API endpoints - see the example of 
<xref target="api-catalog-example-linkset-bookmarks"/> in Appendix A.</t>
  <t>They MAY support content negotiation at the 
/.well-known/api-catalog URI to allow their existing format to be 
returned.</t>
</list></t>

<section anchor="nest"><name>Nesting API Catalog links</name>

<t>An API Catalog may itself contain links to other API Catalogs, by 
using the 'api-catalog' relation type for each link.
An example of this is given in <xref target="api-catalog-example-linkset-nesting"/>.</t>

</section>
</section>
<section anchor="operations"><name>Operational considerations</name>

<section anchor="multiple_domains"><name>Accounting for APIs distributed across multiple domains</name>

<t>A Publisher ("example") may have their APIs hosted across multiple 
domains that they manage: e.g., at <spanx style="verb">www.example.com</spanx>, 
<spanx style="verb">developer.example.com</spanx>, <spanx style="verb">apis.example.com</spanx>, 
<spanx style="verb">apis.example.net</spanx> etc. They may also use a third-party API 
hosting provider which hosts APIs on a distinct domain.</t>

<t>To account for this scenario, it is RECOMMENDED that:</t>

<t><list style="symbols">
  <t>The Publisher also publish the api-catalog well-known URI at each
 of their API domains e.g. 
 <spanx style="verb">https://apis.example.com/.well-known/api-catalog</spanx>, 
 <spanx style="verb">https://developer.example.net/.well-known/api-catalog</spanx> etc.</t>
  <t>An HTTPS GET request to any of these URIs returns the same result,
 namely, the API Catalog document.</t>
  <t>Since the physical location of the API Catalog document is decided
 by the Publisher, and may change, the Publisher choose one of their
instances of /.well-known/api-catalog as a canonical reference to 
the location of the latest API Catalog. The Publisher's other 
instances of ./well-known/api-catalog SHOULD redirect to this 
canonical instance of /.well-known/api-catalog to ensure the latest
API Catalog is returned.</t>
</list></t>

<t>For example, if the Publisher's primary API portal is 
<spanx style="verb">https://apis.example.com</spanx>, then 
<spanx style="verb">https://apis.example.com/.well-known/api-catalog</spanx> SHOULD resolve to 
the location of the Publisher's latest API Catalog document. If the 
Publisher is also the domain authority for <spanx style="verb">www.example.net</spanx>, 
which also hosts a selection of their APIs, then a request to 
<spanx style="verb">https://www.example.net/.well-known/api-catalog</spanx> SHOULD redirect
to <spanx style="verb">https://apis.example.com/.well-known/api-catalog</spanx> .</t>

<t>If the Publisher is not the domain authority for 
<spanx style="verb">www.example.net</spanx> - or any third-party domain that hosts any 
of the Publisher's APIs - then the Publisher MAY include a link in 
its own API Catalog to that third-party domain's API Catalog.
For example, the API Catalog available 
at <spanx style="verb">https://apis.example.com/.well-known/api-catalog</spanx>) may list APIs 
hosted at <spanx style="verb">apis.example.com</spanx> and also link to the API Catalog hosted 
at <spanx style="verb">https://www.example.net/.well-known/api-catalog</spanx> using the 
"api-catalog" link relation:</t>

<figure><sourcecode type="json"><![CDATA[
{
  "linkset": [
    {
      "anchor": "https://www.example.com/.well-known/api-catalog",
      "item": [
        {
          "href": "https://developer.example.com/apis/foo_api"
        },
        {
          "href": "https://developer.example.com/apis/bar_api"
        },
        {
          "href": "https://developer.example.com/apis/cantona_api"
        }
      ],
      "api-catalog": "https://www.example.net/./well-known/api-catalog"
    }
  ]
}
]]></sourcecode></figure>

</section>
<section anchor="internal-use"><name>Internal use of api-catalog for private APIs</name>

<t>A Publisher may wish to use the api-catalog well-known URI on their 
internal network, to signpost authorised users (e.g. company 
employees) towards internal/private APIs not intended for third-party 
use. This scenario may incur additional security considerations, as 
noted in <xref target="security"/>.</t>

</section>
<section anchor="scalability"><name>Scalability guidelines</name>

<t>In cases where a Publisher has a large number of APIs, potentially 
deployed across multiple domains, then two challenges may arise:</t>

<t><list style="symbols">
  <t>Maintaining the catalog entries to ensure they are up to date and 
any errors corrected.</t>
  <t>Restricting the catalog size to help reduce network and 
client-processing overheads.</t>
</list></t>

<t>In both cases a Publisher may benefit from grouping their APIs, 
providing an API Catalog document for each group - and use the main 
API Catalog hosted at /.well-known/api-catalog to provide links to 
these. For example a Publisher may decide to group their APIs 
according to a business category (e.g. 'gaming APIs', 'anti-fraud APIs'
 etc.) or a technology category (e.g. ''IOT', 'networks', 'AI' etc.), 
or any other criterion. This grouping may already be implicit where 
the Publisher has already published their APIs across multiple 
domains, e.g. at <spanx style="verb">gaming.example.com</spanx>, <spanx style="verb">iot.example.net</spanx>, etc.</t>

<t><xref target="nest"/> below shows how the API Catalog at 
/.well-known/api-catalog can use the api-catalog link relation to 
point to other API Catalogs.</t>

<t>The Publisher SHOULD consider caching and compression 
techniques to reduce the network overhead of large API Catalogs.</t>

</section>
<section anchor="maintenance"><name>Monitoring and maintenance</name>

<t>Publishers are RECOMMENDED to follow operational best practice when 
hosting API Catalog(s), including but not limited to:</t>

<t><list style="symbols">
  <t>Health. The Publisher SHOULD monitor availability of the API 
Catalog, and consider alternate means to resolve requests to 
/.well-known/api-catalog during planned downtime of hosts.</t>
  <t>Performance. Although the performance of APIs listed in an API 
Catalog can demand high transactions per second and low-latency 
response, the retrieval of the API Catalog itself to discover those 
APIs is less likely to incur strict  performance demands. That said, 
the Publisher SHOULD monitor the response time to fulfil a request 
for the API Catalog, and determine any necessary improvements (as 
with any other Web resource the Publisher serves). For large API 
Catalogs, the Publisher SHOULD consider the techniques described in 
<xref target="scalability"/>.</t>
  <t>Usage. Since the goal of the api-catalog well-known URI is to 
facilitate discovery of APIs, the Publisher may wish to correlate 
requests to the /.well-known/api-catalog URI with subsequent requests 
to the API URIs listed in the catalog.</t>
  <t>Current data. The Publisher SHOULD include the removal of stale API 
entries from the API Catalog as part of their API release lifecycle. 
The Publisher MAY decide to include metadata regarding legacy API 
versions or deprecated APIs to help users of those APIs discover 
up-to-date alternatives.</t>
  <t>Correct metadata. The Publisher SHOULD include human and/or 
automated checks for syntax errors in the API Catalog. Automated 
checks include format validation (e.g. to ensure valid JSON syntax) 
and linting to enforce business rules - such as removing duplicate 
entries and ensuring descriptions are correctly named with valid 
values. A proofread of the API Catalog as part of the API release 
lifecycle is RECOMMENDED to detect any errors in business grammar 
(for example, an API entry that is described with valid syntax, but 
has been allocated an incorrect or outdated description.)</t>
  <t>Security best practice, as set out in <xref target="security"/></t>
</list></t>

</section>
<section anchor="integration"><name>Integration with existing API management frameworks</name>

<t>A Publisher may already utilise an API management framework to 
produce their API portfolio. These frameworks typically include the 
publication of API endpoint URIs, deprecation and redirection of 
legacy API versions, API usage policies and documentation, etc. 
The api-catalog well-known URI and API Catalog document are intended 
to complement API management frameworks by facilitating the discovery 
of the framework's outputs - API endpoints, usage policies and 
documentation - and are not intended to replace any existing 
API discovery mechanisms the framework has implemented.</t>

<t>Providers of such frameworks may include the production of an API 
Catalog and the publication of the /.well-known/api-catalog URI as a 
final pre-release (or post-release) step in the release management 
workflow. The following steps are recommended:</t>

<t>If the ./well-known/api-catalog URI has not been published previously, 
the framework provider should:</t>

<t><list style="symbols">
  <t>Collate and check the metadata for each API that will be included 
in the API Catalog. This metadata is likely to already exist in the 
framework.</t>
  <t>Determine which metadata to include in the API Catalog, following 
the requirements set out in <xref target="api-catalog"/> and the considerations 
set out in <xref target="operations"/>.</t>
  <t>Map the chosen metadata to the format(s) described in 
<xref target="api-catalog"/>. Where only the hyperlinks to APIs are to be 
included in the API Catalog, then the structure suggested in 
<xref target="api-catalog-example-linkset-bookmarks"/> may be followed. Where 
possible the API Catalog SHOULD include further metadata per the 
guidance in <xref target="api-catalog"/>, in which case the structure suggested 
in <xref target="api-catalog-example-linkset"/> can be utilised and adapted 
(ensuring compliance to <xref target="RFC9264"/>) to reflect the nature of the 
chosen metadata.</t>
  <t>Publish the /.well-known/api-catalog URI following the guidance set 
out in <xref target="usage"/>.</t>
</list></t>

<t>If the ./well-known/api-catalog URI has previously been published,
the framework provider should:</t>

<t><list style="symbols">
  <t>Include a step in the release management lifecycle to refresh the 
API Catalog following any changes in API hyperlinks or published 
metadata. This could include placing triggers on certain metadata 
fields, so that as they are updated in pre-production on the API 
framework, the updates are pushed to a pre-production copy of the API 
Catalog to be pushed live when the release is published by the 
framework.</t>
</list></t>

</section>
</section>
<section anchor="conform-rfc8615"><name>Conformance to RFC8615</name>

<t>The requirements in section 3 of <xref target="WELL-KNOWN"/> for defining 
Well-Known Uniform Resource Identifiers are met as described in the 
following sub-sections.</t>

<section anchor="path-suffix"><name>Path suffix</name>

<t>The api-catalog URI SHALL be appended to the /.well-known/ 
path-prefix for "well-known locations".</t>

</section>
<section anchor="formats-and-associated-media-types"><name>Formats and associated media types</name>

<t>A /.well-known/api-catalog location MUST support the Linkset 
<xref target="RFC9264"/> format of application/linkset+json, and MAY
also support the other formats via content negotiation.</t>

</section>
<section anchor="registration-of-the-api-catalog-well-known-uri"><name>Registration of the api-catalog well-known URI</name>

<t>See <xref target="iana"/> considerations below.</t>

</section>
</section>
<section anchor="iana"><name>IANA Considerations</name>

<section anchor="the-api-catalog-well-known-uri"><name>The api-catalog well-known URI</name>

<t>This specification registers the "api-catalog" well-known URI in the 
Well-Known URI Registry as defined by <xref target="WELL-KNOWN"/>.</t>

<t><list style="symbols">
  <t>URI suffix: api-catalog</t>
  <t>Change Controller: IETF</t>
  <t>Specification document(s):  THIS-RFC</t>
  <t>Status: permanent</t>
</list></t>

</section>
<section anchor="the-api-catalog-link-relation"><name>The api-catalog link relation</name>

<t>This specification registers the "api-catalog" link relation by 
following the procedures per section 2.1.1.1 of <xref target="WEB-LINKING"/></t>

<t><list style="symbols">
  <t>Relation Name:  api-catalog</t>
  <t>Description:  The link target identifies a catalog of the APIs 
published by the owner of the link target domain.</t>
  <t>Reference:  THIS-RFC</t>
</list></t>

</section>
<section anchor="the-api-catalog-profile-uri"><name>The api-catalog Profile URI</name>

<t>This specification registers "THIS-RFC-URL" in the "Profile URIs" 
 registry according to <xref target="RFC7284"/>.</t>

<t><list style="symbols">
  <t>Profile URI: THIS-RFC-URL</t>
  <t>Common Name: API Catalog</t>
  <t>Description: A profile URI to request or signal a linkset 
representing an API Catalog.</t>
  <t>Reference: THIS-RFC</t>
</list></t>

<t>RFC Editor's Note: IANA is kindly requested to replace all instances 
of THIS-RFC and THIS-RFC-URL with the actual RFC number/URL once 
assigned.</t>

</section>
</section>
<section anchor="security"><name>Security Considerations</name>

<t>For all scenarios:</t>

<t><list style="symbols">
  <t>TLS SHOULD be used, i.e. make /.well-known/api-catalog available 
exclusively over HTTPS,  to ensure no tampering of the API Catalog.</t>
  <t>The Publisher SHOULD take into account the Security Considerations 
from <xref target="WELL-KNOWN"/>.</t>
  <t>The Publisher SHOULD perform a security and privacy review of the 
API Catalog prior to deployment, to ensure it does not leak personal, 
business or other sensitive metadata, nor expose any vulnerability 
related to the APIs listed.</t>
  <t>The Publisher SHOULD enforce read-only privileges for external 
requests to .well-known/api-catalog, and for internal systems and 
roles that monitor the .well-known/api-catalog URI. Write privileges 
SHOULD only be granted to roles that perform updates to the API 
Catalog and/or the forwarding rewrite rules for the 
.well-known/api-catalog URI.</t>
  <t>As with any Web offering, it is RECOMMENDED to apply rate-limiting 
measures to help mitigate abuse and prevent Denial-of-Service 
attacks on the API Catalog endpoint.</t>
</list></t>

<t>For the public-facing APIs scenario: security teams SHOULD 
additionally audit the API Catalog to ensure no APIs intended solely
for internal use have been mistakenly included. For example, a 
catalog hosted on <spanx style="verb">https://developer.example.com</spanx> should not expose 
unnecessary metadata about any internal domains 
(e.g. <spanx style="verb">https://internal.example.com</spanx>).</t>

<t>For the internal/private APIs scenario: the Publisher SHOULD take 
steps to ensure that appropriate controls - such as CORS policies and 
access control lists - are in place to ensure only authorised roles 
and systems may access an internal api-catalog well-known URI.</t>

</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="HTTP">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>
<reference anchor="WELL-KNOWN">
  <front>
    <title>Well-Known Uniform Resource Identifiers (URIs)</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
      <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8615"/>
  <seriesInfo name="DOI" value="10.17487/RFC8615"/>
</reference>
<reference anchor="WEB-LINKING">
  <front>
    <title>Web Linking</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="October" year="2017"/>
    <abstract>
      <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
      <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8288"/>
  <seriesInfo name="DOI" value="10.17487/RFC8288"/>
</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>
<reference anchor="RFC6573">
  <front>
    <title>The Item and Collection Link Relations</title>
    <author fullname="M. Amundsen" initials="M." surname="Amundsen"/>
    <date month="April" year="2012"/>
    <abstract>
      <t>RFC 5988 standardized a means of indicating the relationships between resources on the Web. This specification defines a pair of reciprocal link relation types that may be used to express the relationship between a collection and its members. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6573"/>
  <seriesInfo name="DOI" value="10.17487/RFC6573"/>
</reference>
<reference anchor="RFC9264">
  <front>
    <title>Linkset: Media Types and a Link Relation Type for Link Sets</title>
    <author fullname="E. Wilde" initials="E." surname="Wilde"/>
    <author fullname="H. Van de Sompel" initials="H." surname="Van de Sompel"/>
    <date month="July" year="2022"/>
    <abstract>
      <t>This specification defines two formats and associated media types for representing sets of links as standalone documents. One format is based on JSON, and the other is aligned with the format for representing links in the HTTP "Link" header field. This specification also introduces a link relation type to support the discovery of sets of links.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9264"/>
  <seriesInfo name="DOI" value="10.17487/RFC9264"/>
</reference>
<reference anchor="RFC7284">
  <front>
    <title>The Profile URI Registry</title>
    <author fullname="M. Lanthaler" initials="M." surname="Lanthaler"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>This document defines a registry for profile URIs to be used in specifications standardizing profiles.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7284"/>
  <seriesInfo name="DOI" value="10.17487/RFC7284"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="OAS" target="https://spec.openapis.org/oas/latest">
  <front>
    <title>OpenAPI Specification 3.1.0</title>
    <author initials="" surname="Darrel Miller">
      <organization></organization>
    </author>
    <author initials="" surname="Jeremy Whitlock">
      <organization></organization>
    </author>
    <author initials="" surname="Marsh Gardiner">
      <organization></organization>
    </author>
    <author initials="" surname="Mike Ralphson">
      <organization></organization>
    </author>
    <author initials="" surname="Ron Ratovsky">
      <organization></organization>
    </author>
    <author initials="" surname="Uri Sarid">
      <organization></organization>
    </author>
    <date year="2021" month="February" day="15"/>
  </front>
</reference>
<reference anchor="APIsjson" target="http://apisjson.org/format/apisjson_0.16.txt">
  <front>
    <title>APIs.json</title>
    <author initials="" surname="Kin Lane">
      <organization></organization>
    </author>
    <author initials="" surname="Steve Willmott">
      <organization></organization>
    </author>
    <date year="2020" month="September" day="15"/>
  </front>
</reference>
<reference anchor="HAL" target="https://datatracker.ietf.org/doc/html/draft-kelly-json-hal-11">
  <front>
    <title>JSON Hypertext Application Language</title>
    <author initials="" surname="Mike Kelly">
      <organization></organization>
    </author>
    <date year="2020" month="September" day="15"/>
  </front>
</reference>
<reference anchor="RESTdesc" target="http://apisjson.org/format/apisjson_0.16.txt">
  <front>
    <title>RESTdesc</title>
    <author initials="" surname="Ruben Verborgh">
      <organization></organization>
    </author>
    <author initials="" surname="Erik Mannens">
      <organization></organization>
    </author>
    <author initials="" surname="Rick Van de Walle">
      <organization></organization>
    </author>
    <author initials="" surname="Thomas Steiner">
      <organization></organization>
    </author>
    <date year="2023" month="September" day="15"/>
  </front>
</reference>
<reference anchor="WebAPIext" target="https://webapi-discovery.github.io/rfcs/rfc0001.html">
  <front>
    <title>WebAPI type extension</title>
    <author initials="" surname="Mike Ralphson">
      <organization></organization>
    </author>
    <author initials="" surname="Nick Evans">
      <organization></organization>
    </author>
    <date year="2020" month="July" day="08"/>
  </front>
</reference>


<reference anchor="RFC8631">
  <front>
    <title>Link Relation Types for Web Services</title>
    <author fullname="E. Wilde" initials="E." surname="Wilde"/>
    <date month="July" year="2019"/>
    <abstract>
      <t>Many resources provided on the Web are part of sets of resources that are provided in a context that is managed by one particular service provider. Often, these sets of resources are referred to as "Web services" or "Web APIs". This specification defines link relations that represent relationships from Web services or APIs to resources that provide documentation, descriptions, metadata, or status information for these resources. Documentation is primarily intended for human consumers, whereas descriptions are primarily intended for automated consumers. Metadata provides information about a service's context. This specification also defines a link relation to identify status resources that are used to represent information about service status.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8631"/>
  <seriesInfo name="DOI" value="10.17487/RFC8631"/>
</reference>



    </references>


<?line 562?>

<section anchor="api-catalog-example-linkset"><name>Example API Catalog documents</name>

<t>This section is informative and provides and example of an API 
Catalog document using the RECOMMENDED linkset format.</t>

<section anchor="using-linkset-with-rfc8615-relations"><name>Using Linkset with RFC8615 relations</name>

<t>This example uses the linkset format <xref target="RFC9264"/>, and the following 
link
relations defined in <xref target="RFC8631"/>:</t>

<t><list style="symbols">
  <t>"service-desc", used to link to a description of the API that is 
primarily intended for machine consumption.</t>
  <t>"service-doc", used to link to API documentation that is primarily 
intended for human consumption.</t>
  <t>"service-meta", used to link to additional metadata about the API, 
and is primarily intended for machine consumption.</t>
  <t>"status", used to link to the API status (e.g. API "health" 
indication etc.) for machine and/or human consumption.</t>
</list></t>

<t>Client request:</t>

<figure><sourcecode type="http-message"><![CDATA[
GET .well-known/api-catalog HTTP/1.1
Host: example.com
Accept: application/linkset+json
]]></sourcecode></figure>

<t>Server response:</t>

<figure><sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Date: Mon, 01 Jun 2023 00:00:01 GMT
Server: Apache-Coyote/1.1
Content-Type: application/linkset+json;
    profile="THIS-RFC-URL"
]]></sourcecode></figure>

<figure><artwork><![CDATA[
{
  "linkset": [
  {
    "anchor": "https://developer.example.com/apis/foo_api",
    "service-desc": [
      {
        "href": "https://developer.example.com/apis/foo_api/spec",
        "type": "application/yaml"
      }
    ],
    "status": [
      {
        "href": "https://developer.example.com/apis/foo_api/status",
        "type": "application/json"
      }
    ],
    "service-doc": [
      {
        "href": "https://developer.example.com/apis/foo_api/doc",
        "type": "text/html"
      }
    ],
    "service-meta": [
      {
        "href": "https://developer.example.com/apis/foo_api/policies",
        "type": "text/xml"
      }
    ]
  },
  {
    "anchor": "https://developer.example.com/apis/bar_api",
    "service-desc": [
      {
        "href": "https://developer.example.com/apis/bar_api/spec",
        "type": "application/yaml"
      }
    ],
    "status": [
      {
        "href": "https://developer.example.com/apis/bar_api/status",
       "type": "application/json"
      }
    ],
    "service-doc": [
      {
        "href": "https://developer.example.com/apis/bar_api/doc",
        "type": "text/plain"
      }
    ]
  },
  {
    "anchor": "https://apis.example.net/apis/cantona_api",
    "service-desc": [
      {
        "href": "https://apis.example.net/apis/cantona_api/spec",
        "type": "text/n3"
      }
    ],
    "service-doc": [
      {
        "href": "https://apis.example.net/apis/cantona_api/doc",
        "type": "text/html"
      }
    ]
  }
  ]
}
]]></artwork></figure>

</section>
<section anchor="api-catalog-example-linkset-bookmarks"><name>Using Linkset with bookmarks</name>

<t>This example also uses the linkset format <xref target="RFC9264"/>, listing the 
API endpoints in an array of bookmarks. Each link shares the same 
context anchor (the well-known URI of the API Catalog) and "item" 
<xref target="RFC9264"/> link relation (to indicate they are an item in the 
catalog). The intent is that by following a bookmark link, a 
machine-client can discover the purpose and usage policy for each 
API, hence the document targeted by the bookmark link should support 
this.</t>

<t>Client request:</t>

<figure><sourcecode type="http-message"><![CDATA[
GET .well-known/api-catalog HTTP/1.1
Host: example.com
Accept: application/linkset+json
]]></sourcecode></figure>

<t>Server response:</t>

<figure><sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Date: Mon, 01 Jun 2023 00:00:01 GMT
Server: Apache-Coyote/1.1
Content-Type: application/linkset+json;
    profile="THIS-RFC-URL"
]]></sourcecode></figure>

<figure><artwork><![CDATA[
{ "linkset":
 [
   { "anchor": "https://www.example.com/.well-known/api-catalog",
     "item": [
       {"href": "https://developer.example.com/apis/foo_api"},
       {"href": "https://developer.example.com/apis/bar_api"},
       {"href": "https://developer.example.com/apis/cantona_api"}
     ]
   }
 ]
}
]]></artwork></figure>

</section>
<section anchor="api-catalog-example-linkset-nesting"><name>Nesting API Catalog links</name>

<t>In this example, a request to the /.well-known/api-catalog URI 
returns an array of links of relation type 'api-catalog'. This can be 
useful to Publishers with a large number of APIs, who wish to group 
them in smaller catalogs (as described in <xref target="scalability"/>).</t>

<t>Client request:</t>

<figure><sourcecode type="http-message"><![CDATA[
GET .well-known/api-catalog HTTP/1.1
Host: example.com
Accept: application/linkset+json
]]></sourcecode></figure>

<t>Server response:</t>

<figure><sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Date: Mon, 01 Jun 2023 00:00:01 GMT
Server: Apache-Coyote/1.1
Content-Type: application/linkset+json;
    profile="THIS-RFC-URL"
]]></sourcecode></figure>

<figure><artwork><![CDATA[
{
  "linkset": [
    {
      "anchor": "https://www.example.com/.well-known/api-catalog",
      "api-catalog": [
        {
          "href": "https://apis.example.com/iot/api-catalog"
        },
        {
          "href": "https://ecommerce.example.com/api-catalog"
        },
        {
          "href": "https://developer.example.com/gaming/api-catalog"
        }
      ]
    }
  ]
}

]]></artwork></figure>

</section>
</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>Thanks to Jan Algermissen, Phil Archer, Tim Bray, Ben Bucksch, Sanjay 
Dalal, David Dong, Mallory Knodel, Max Maton, Darrel Miller, Mark 
Nottingham,  Roberto Polli, Joey Salazar, Rich Salz, Herbert Van De 
Sompel, Tina Tsou and Erik Wilde for their reviews, suggestions and 
support.</t>

</section>


  </back>

<!-- ##markdown-source:
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
uSAsl+FyK67PpjCrAQaACP4bVWycVHxvAAA=

-->

</rfc>

