<?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-rfc2629 version 1.6.2 (Ruby 3.0.3) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpapi-rest-api-mediatypes-01" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.3 -->
  <front>
    <title>REST API Media Types</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-rest-api-mediatypes-01"/>
    <author initials="R." surname="Polli" fullname="Roberto Polli">
      <organization>Digital Transformation Department, Italian Government</organization>
      <address>
        <postal>
          <country>Italy</country>
        </postal>
        <email>robipolli@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="March" day="07"/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTPAPI</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document registers
the following media types used in APIs
on the IANA Media Types registry:
application/yaml,
application/schema+json,
application/schema-instance+json,
application/openapi+json,
and application/openapi+yaml.</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <t><em>RFC EDITOR: please remove this section before publication</em></t>
      <t>Discussion of this draft takes place on the HTTP APIs working group
mailing list (httpapi@ietf.org), which is archived at
<eref target="https://mailarchive.ietf.org/arch/browse/httpapi/">https://mailarchive.ietf.org/arch/browse/httpapi/</eref>.</t>
      <t>The source code and issues list for this draft can be found at
<eref target="https://github.com/ietf-wg-httpapi/mediatypes">https://github.com/ietf-wg-httpapi/mediatypes</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>OpenAPI Specification <xref target="oas"/> version 3 and above
is a consolidated standard for describing
HTTP APIs using the JSON <xref target="JSON"/> and YAML <xref target="YAML"/> data format.</t>
      <t>To increase interoperability when processing API specifications
and leverage content negotiation mechanisms when exchanging
OpenAPI Specification resources
this specification register the following media-types:
<tt>application/yaml</tt>,
<tt>application/schema+json</tt>,
<tt>application/schema-instance+json</tt>,
<tt>application/openapi+json</tt>
and <tt>application/openapi+yaml</tt>.</t>
      <t>Moreover it defines and registers
the <tt>+yaml</tt> structured syntax suffix.</t>
      <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.</t>
        <t>This document uses the Augmented BNF defined in <xref target="RFC5234"/> and updated
by <xref target="RFC7405"/>.</t>
        <t>The terms  "content", "content negotiation", "resource",
and "user agent"
in this document are to be interpreted as in <xref target="SEMANTICS"/>.</t>
      </section>
    </section>
    <section anchor="media-type-registrations">
      <name>Media Type registrations</name>
      <t>This section describes the information required to register
the above media types according to <xref target="MEDIATYPE"/></t>
      <section anchor="application-yaml">
        <name>Media Type application/yaml</name>
        <t>The following information serves as the registration form for the <tt>application/yaml</tt> media type.</t>
        <t>Type name:  application</t>
        <t>Subtype name:  yaml</t>
        <t>Required parameters:  None</t>
        <t>Optional parameters:  None; unrecognized parameters should be ignored</t>
        <t>Encoding considerations:  Same as <xref target="JSON"/></t>
        <t>Security considerations:  see <xref target="security-considerations"/> of this document</t>
        <t>Interoperability considerations:  see <xref target="int-yaml"/> of this document</t>
        <t>Published specification: (this document)</t>
        <t>Applications that use this media type:  HTTP</t>
        <t>Fragment identifier considerations:  Same as for application/json
  <xref target="JSON"/></t>
        <t>Additional information:</t>
        <t>Deprecated alias names for this type:  application/x-yaml, text/yaml, text/x-yaml</t>
        <t>Magic number(s):  n/a</t>
        <t>File extension(s):  yaml, yml</t>
        <t>Macintosh file type code(s):  n/a</t>
        <t>Person and email address to contact for further information:
  See Authors' Addresses section.</t>
        <t>Intended usage:  COMMON</t>
        <t>Restrictions on usage:  None.</t>
        <t>Author:  See Authors' Addresses section.</t>
        <t>Change controller:  n/a</t>
      </section>
      <section anchor="suffix-yaml">
        <name>The +yaml Structured Syntax Suffix</name>
        <t>The suffix
<tt>+yaml</tt> MAY be used with any media type whose representation follows
that established for <tt>application/yaml</tt>.
The media type structured syntax suffix registration form follows.
See <xref target="MEDIATYPE"/> for definitions of each of the registration form headings.</t>
        <t>Name:  YAML Ain't Markup LanguageML (YAML)</t>
        <t>+suffix:  +yaml</t>
        <t>References:  <xref target="YAML"/></t>
        <t>Encoding considerations: see <xref target="application-yaml"/></t>
        <t>Fragment identifier considerations:</t>
        <artwork><![CDATA[
  The syntax and semantics of fragment identifiers specified for
  +yaml SHOULD be as specified for {{application-yaml}}

  The syntax and semantics for fragment identifiers for a specific
  `xxx/yyy+json` SHOULD be processed as follows:

  For cases defined in +yaml, where the fragment identifier resolves
  per the +yaml rules, then process as specified in +yaml.

     For cases defined in +yaml, where the fragment identifier does
     not resolve per the +yaml rules, then process as specified in
     `xxx/yyy+yaml`.

     For cases not defined in +yaml, then process as specified in
     `xxx/yyy+yaml`.
]]></artwork>
        <t>Interoperability considerations:  See <xref target="application-yaml"/></t>
        <t>Security considerations:  See <xref target="application-yaml"/></t>
        <t>Contact:  See Authors' Addresses section.</t>
        <t>Author:  See Authors' Addresses section</t>
        <t>Change controller:  n/a</t>
      </section>
      <section anchor="the-openapi-media-types">
        <name>The OpenAPI Media Types</name>
        <t>The OpenAPI Specification Media Types convey OpenAPI document (OAS) files
as defined in <xref target="oas"/> for version 3.0.0 and above.</t>
        <t>Those files can be serialized in <xref target="JSON"/> or <xref target="YAML"/>.
Since there are multiple OpenAPI Specification versions,
those media-types support the <tt>version</tt> parameter.</t>
        <t>The following examples conveys the desire of a client
to receive an OpenAPI Specification resource preferably in the following
order:</t>
        <ol spacing="normal" type="1"><li>openapi 3.1 in YAML</li>
          <li>openapi 3.0 in YAML</li>
          <li>any openapi version in json</li>
        </ol>
        <sourcecode type="example"><![CDATA[
Accept: application/openapi+yaml;version=3.1,
        application/openapi+yaml;version=3.0;q=0.5,
        application/openapi+json;q=0.3
]]></sourcecode>
        <section anchor="openapi-json">
          <name>Media Type application/openapi+json</name>
          <t>The following information serves as the registration form for the <tt>application/openapi+json</tt> media type.</t>
          <t>Type name:  application</t>
          <t>Subtype name:  openapi+json</t>
          <t>Required parameters:  None</t>
          <t>Optional parameters:  version; unrecognized parameters should be ignored</t>
          <t>Encoding considerations:  Same as <xref target="JSON"/></t>
          <t>Security considerations:  see <xref target="security-considerations"/> of this document</t>
          <t>Interoperability considerations:  None</t>
          <t>Published specification: (this document)</t>
          <t>Applications that use this media type:  HTTP</t>
          <t>Fragment identifier considerations:  Same as for application/json
  <xref target="JSON"/></t>
          <t>Additional information:</t>
          <t>Deprecated alias names for this type:  n/a</t>
          <t>Magic number(s):  n/a</t>
          <t>File extension(s):  json</t>
          <t>Macintosh file type code(s):  n/a</t>
          <t>Person and email address to contact for further information:
  See Authors' Addresses section.</t>
          <t>Intended usage:  COMMON</t>
          <t>Restrictions on usage:  None.</t>
          <t>Author:  See Authors' Addresses section.</t>
          <t>Change controller:  n/a</t>
        </section>
        <section anchor="openapi-yaml">
          <name>Media Type application/openapi+yaml</name>
          <t>The following information serves as the registration form for the <tt>application/openapi+yaml</tt> media type.</t>
          <t>Type name:  application</t>
          <t>Subtype name:  openapi+yaml</t>
          <t>Required parameters:  None</t>
          <t>Optional parameters:  version; unrecognized parameters should be ignored</t>
          <t>Encoding considerations:  Same as <xref target="JSON"/></t>
          <t>Security considerations:  see <xref target="security-considerations"/> of this document</t>
          <t>Interoperability considerations:  see <xref target="application-yaml"/></t>
          <t>Published specification: (this document)</t>
          <t>Applications that use this media type:  HTTP</t>
          <t>Fragment identifier considerations:  Same as for application/json
  <xref target="JSON"/></t>
          <t>Additional information:</t>
          <t>Deprecated alias names for this type:  n/a</t>
          <t>Magic number(s):  n/a</t>
          <t>File extension(s):  yaml, yml</t>
          <t>Macintosh file type code(s):  n/a</t>
          <t>Person and email address to contact for further information:
  See Authors' Addresses section</t>
          <t>Intended usage:  COMMON</t>
          <t>Restrictions on usage:  None.</t>
          <t>Author:  See Authors' Addresses section</t>
          <t>Change controller:  n/a</t>
        </section>
      </section>
      <section anchor="json-schema-media-types">
        <name>JSON Schema Media Types</name>
        <t>JSON Schema is a declarative domain-specific language for validating and
annotating JSON documents (see <xref target="jsonschema"/>).</t>
        <t>This document registers the media types associated with JSON Schema.</t>
        <t>There are many dialects of JSON Schema in wide use today. The JSON Schema
maintainers have released several dialects including draft-04, draft-07, and
draft 2020-12. There are also several third-party JSON Schema dialects in wide
use including the ones defined for use in OpenAPI and MongoDB.</t>
        <t>This specification defines little more than how to identify the dialect while
leaving most of the semantics of the schema up to the dialect to define. Clients
MUST use the following order of precedence for determining the dialect of a
schema.</t>
        <ul spacing="normal">
          <li>The <tt>$schema</tt> keyword (<xref target="schema-keyword"/>)</li>
          <li>The "schema" media type parameter (<xref target="schema-parameter"/>)</li>
          <li>The context of the enclosing document. This applies only when a schema is
embedded within a document. The enclosing document could be another schema in
the case of a bundled schema or it could be another type of document that
includes schemas such as an OpenAPI document.</li>
          <li>If none of the above result in identifying the dialect, client behavior is
undefined.</li>
        </ul>
        <section anchor="schema-keyword">
          <name>The "$schema" Keyword</name>
          <t>The <tt>$schema</tt> keyword is used as a JSON Schema dialect identifier. The value of
this keyword MUST be a URI <xref target="RFC3986"/>. This URI SHOULD identify a meta-schema
that can be used to validate that the schema is syntactically correct according
to the dialect the URI identifies.</t>
          <t>The dialect SHOULD define where the <tt>$schema</tt> keyword is allowed and/or
recognized in a schema, but it is RECOMMENDED that dialects do not allow the
schema to change within the same Schema Resource.</t>
        </section>
        <section anchor="schema-parameter">
          <name>Identifying a Schema via a Media Type Parameter</name>
          <t>Media types MAY allow for a <tt>schema</tt> media type parameter, to support content
negotiation based on schema identifier (see  <xref section="12" sectionFormat="of" target="SEMANTICS"/>).
The <tt>schema</tt> media type parameter MUST be a URI-reference <xref target="RFC3986"/>.</t>
          <t>The <tt>schema</tt> parameter identifies a schema that provides semantic information
about the resource the media type represents. When using the
<tt>application/schema+json</tt> media type, the <tt>schema</tt> parameter identifies the
dialect of the schema the media type represents.</t>
          <t>The <tt>schema</tt> URI is opaque and SHOULD NOT automatically be dereferenced. Since
<tt>schema</tt> doesn't necessarily point to a network location, the "describedby"
relation is used for linking to a downloadable schema.</t>
          <t>The following is an example of content negotiation where a user agent can accept
two different versions of a "pet" resource. Each resource version is identified
by a unique JSON Schema.</t>
          <t>Request:</t>
          <sourcecode type="http-message"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

GET /pet/1234 HTTP/1.1
Host: foo.example
Accept: \
  application/schema-instance+json; schema="/schemas/v2/pet"; q=0.2, \
  application/schema-instance+json; schema="/schemas/v1/pet"; q=0.1
]]></sourcecode>
          <t>Response:</t>
          <sourcecode type="http-message"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

HTTP/1.1 200 Ok
Content-Type: \
  application/schema-instance+json; schema="/schemas/v2/pet"

{
  "petId": "1234",
  "name": "Pluto",
  ...
}
]]></sourcecode>
          <t>In the following example, the user agent is able to accept two possible dialects
of JSON Schema and the server replies with the latest one.</t>
          <t>Request:</t>
          <sourcecode type="http-message"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

GET /schemas/v2/pet HTTP/1.1
Host: foo.example
Accept: application/schema+json; \
            schema="https://json-schema.org/draft/2020-12/schema", \
        application/schema+json; \
            schema="http://json-schema.org/draft-07/schema#"
]]></sourcecode>
          <t>Response:</t>
          <sourcecode type="http-message"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

HTTP/1.1 200 OK
Content-Type: \
  application/schema+json; \
      schema="https://json-schema.org/draft/2020-12/schema"

{
  "$id": "https://json-schema.org/draft/2020-12/schema",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  ...
}
]]></sourcecode>
        </section>
        <section anchor="schema-linking">
          <name>Linking to a Schema</name>
          <t>It is RECOMMENDED that instances described by a schema provide a link to a
downloadable JSON Schema using the link relation <tt>describedby</tt>, as defined by
Linked Data Protocol 1.0, section 8.1 <xref target="W3C.REC-ldp-20150226"/>.</t>
          <t>In HTTP, such links can be attached to any response using the <tt>Link</tt> header
<xref target="LINK"/>.</t>
          <artwork><![CDATA[
Link: <https://example.com/my-hyper-schema#>; rel="describedby"
]]></artwork>
        </section>
        <section anchor="schema-fragment">
          <name>Fragment Identifiers</name>
          <t>Two fragment identifier structures are supported: JSON Pointers and plain-names.</t>
          <t>The use of JSON Pointers as URI fragment identifiers is described in
<xref target="RFC6901"/>. Fragment identifiers that are empty or start with a <tt>/</tt>, MUST be
interpreted as JSON Pointer fragment identifiers.</t>
          <t>Plain-name fragment identifiers reference locally named locations in the
document. The dialect determines how plain-name identifiers map to locations
within the document. All fragment identifiers that do not match the JSON Pointer
syntax MUST be interpreted as plain name fragment identifiers.</t>
        </section>
        <section anchor="schema-json">
          <name>Media Type application/schema+json</name>
          <t>The <tt>application/schema+json</tt> media type represents JSON Schema. This schema can
be an official dialect or a third-party dialect. The following information
serves as the registration form for the <tt>application/schema+json</tt> media type.</t>
          <t><strong>Type name</strong>: application</t>
          <t><strong>Subtype name</strong>: schema+json</t>
          <t><strong>Required parameters</strong>: N/A</t>
          <t><strong>Optional parameters</strong>:</t>
          <ul spacing="normal">
            <li>
              <strong>schema</strong>: A URI identifying the JSON Schema dialect the schema was written
for. If this value conflicts with the value of the <tt>$schema</tt> keyword in the
schema, the <tt>$schema</tt> keyword takes precedence.</li>
          </ul>
          <t><strong>Encoding considerations</strong>: Same as <xref target="JSON"/></t>
          <t><strong>Security considerations</strong>: See the "Security Considerations" section of
<xref target="jsonschema"/></t>
          <t><strong>Interoperability considerations</strong>: See the "General Considerations" section of
<xref target="jsonschema"/></t>
          <t><strong>Published specification</strong>: (this document)</t>
          <t><strong>Applications that use this media type</strong>: JSON Schema is used in a variety of
applications including API servers and clients that validate JSON requests and
responses, IDEs that valid configuration files, databases that store JSON, and
more.</t>
          <t><strong>Fragment identifier considerations</strong>: See <xref target="schema-fragment"/></t>
          <t><strong>Additional information</strong>:</t>
          <ul spacing="normal">
            <li>
              <strong>Deprecated alias names for this type</strong>: N/A</li>
            <li>
              <strong>Magic number(s)</strong>: N/A</li>
            <li>
              <strong>File extension(s)</strong>: json, schema.json</li>
            <li>
              <strong>Macintosh file type code(s)</strong>: N/A</li>
          </ul>
          <t><strong>Person and email address to contact for further information</strong>: See Authors'
Addresses section.</t>
          <t><strong>Intended usage</strong>: COMMON</t>
          <t><strong>Restrictions on usage</strong>: N/A.</t>
          <t><strong>Author</strong>: See Authors' Addresses section.</t>
          <t><strong>Change controller</strong>: N/A</t>
        </section>
        <section anchor="schema-instance-json">
          <name>Media Type application/schema-instance+json</name>
          <t>The <tt>application/schema-instance+json</tt> media type is an extension of the
<xref target="JSON"/> media type that just adds the <tt>schema</tt> media type parameter and
fragment identification. The following information serves as the registration
form for the <tt>application/schema-instance+json</tt> media type.</t>
          <t><strong>Type name</strong>: application</t>
          <t><strong>Subtype name</strong>: schema-instance+json</t>
          <t><strong>Required parameters</strong>: N/A</t>
          <t><strong>Optional parameters</strong>:</t>
          <ul spacing="normal">
            <li>
              <strong>schema</strong>: A URI identifying a JSON Schema that provides semantic information
about this JSON representation.</li>
          </ul>
          <t><strong>Encoding considerations</strong>: Same as <xref target="JSON"/></t>
          <t><strong>Security considerations</strong>: Same as <xref target="JSON"/></t>
          <t><strong>Interoperability considerations</strong>: Same as <xref target="JSON"/></t>
          <t><strong>Published specification</strong>: (this document)</t>
          <t><strong>Applications that use this media type</strong>: JSON Schema is used in a variety of
applications including API servers and clients that validate JSON requests and
responses, IDEs that valid configuration files, databases that store JSON, and
more.</t>
          <t><strong>Fragment identifier considerations</strong>: See <xref target="schema-fragment"/></t>
          <t><strong>Additional information</strong>:</t>
          <ul spacing="normal">
            <li>
              <strong>Deprecated alias names for this type</strong>: N/A</li>
            <li>
              <strong>Magic number(s)</strong>: N/A</li>
            <li>
              <strong>File extension(s)</strong>: json</li>
            <li>
              <strong>Macintosh file type code(s)</strong>: N/A</li>
          </ul>
          <t><strong>Person and email address to contact for further information</strong>: See Authors'
Addresses section.</t>
          <t><strong>Intended usage</strong>: COMMON</t>
          <t><strong>Restrictions on usage</strong>: N/A</t>
          <t><strong>Author</strong>: See Authors' Addresses section.</t>
          <t><strong>Change controller</strong>: N/A</t>
        </section>
      </section>
    </section>
    <section anchor="interoperability-considerations">
      <name>Interoperability Considerations</name>
      <section anchor="int-yaml">
        <name>YAML Media Types</name>
        <section anchor="int-yaml-evolving">
          <name>YAML is an Evolving Language</name>
          <t>YAML is an evolving language and, in time,
some features have been added, and others removed.</t>
          <t>While this document is based on a given YAML version <xref target="YAML"/>,
media types registration does not imply a specific version.
This allows content negotiation of version-independent YAML resources.</t>
          <t>Implementers concerned about features related to a specific YAML version
can specify it in the documents using the <tt>%YAML</tt> directive
(see Section 6.8.1 of <xref target="YAML"/>).</t>
        </section>
        <section anchor="int-yaml-and-json">
          <name>YAML and JSON</name>
          <t>When using flow collection styles (see Section 7.4 of <xref target="YAML"/>)
a YAML document could look like JSON <xref target="JSON"/>,
thus similar interoperability considerations apply.</t>
          <t>When using YAML as a more efficient format
to serialize information intented to be consumed as JSON,
information can be discarded:
this includes comments (see Section 3.2.3.3 of <xref target="YAML"/>)
and alias nodes (see Section 7.1 of <xref target="YAML"/>),
that do not have a JSON counterpart.</t>
          <figure anchor="example-json-discards-information">
            <name>JSON replaces alias nodes with static values.</name>
            <sourcecode type="example"><![CDATA[
# This comment will be lost
# when serializing in JSON.
Title:
  type: string
  maxLength: &text_limit 64

Name:
  type: string
  maxLength: *text_limit  # Replaced by the value 64.
]]></sourcecode>
          </figure>
          <t>Implementers need to ensure that relevant
information will not be lost during the processing.
For example, they might consider acceptable
that alias nodes are replaced by static values.</t>
          <t>In some cases an implementer may want to
define a list of allowed YAML features,
taking into account that the following ones
might have interoperability
issues with JSON:</t>
          <ul spacing="normal">
            <li>non UTF-8 encoding, since YAML supports UTF-16 and UTF-32 in addition to UTF-8;</li>
            <li>mapping keys that are not strings;</li>
            <li>circular references represented using anchor (see <xref target="sec-yaml-exhaustion"/>
and <xref target="example-yaml-cyclic"/>).</li>
            <li>
              <tt>.inf</tt> and <tt>.nan</tt> float values, since JSON does not support them;</li>
            <li>non-JSON types,
including the ones associated to tags like <tt>!!timestamp</tt>
that were deployed in older YAML versions;</li>
            <li>tags in general, and specifically ones that do not map
to JSON types like
custom and local tags such as <tt>!!python/object</tt> and
<tt>!mytag</tt> (see Section 2.4 of <xref target="YAML"/>);</li>
          </ul>
          <figure anchor="example-unsupported-keys">
            <name>Example of mapping keys not supported in JSON</name>
            <sourcecode type="example"><![CDATA[
non-json-keys:
  2020-01-01: a timestamp
  [0, 1]: a sequence
  ? {k: v}
  : a map
non-json-value: 2020-01-01
]]></sourcecode>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Security requirements for both media type and media type suffix
registrations are discussed in Section 4.6 of <xref target="MEDIATYPE"/>.</t>
      <section anchor="sec-yaml">
        <name>YAML Media Types</name>
        <section anchor="sec-yaml-code-execution">
          <name>Arbitrary Code Execution</name>
          <t>Care should be used when using YAML tags,
because their implementation might trigger unexpected code execution.</t>
          <t>Code execution in deserializers should be disabled by default,
and only be enabled explicitly.
In those cases, the implementation should ensure - for example, via specific functions -
that the code execution results in strictly bounded time/memory limits.</t>
          <t>Many implementations provide safe deserializers addressing these issues.</t>
        </section>
        <section anchor="sec-yaml-exhaustion">
          <name>Resource exhaustion</name>
          <t>YAML documents are rooted, connected, directed graphs
and can contain reference cycles,
so they can't be treated as simple trees (see Section 3.2.1 of <xref target="YAML"/>).
An implementation that attempts to do that
can infinite-loop at some point (e.g. when trying to serialize a YAML document in JSON).</t>
          <figure anchor="example-yaml-cyclic">
            <name>A cyclic document</name>
            <sourcecode type="yaml"><![CDATA[
x: &x
  y: *x
]]></sourcecode>
          </figure>
          <t>Even if a document is not cyclic, treating it as a tree could lead to improper behaviors
(such as the "billion laughs" problem).</t>
          <figure anchor="example-yaml-1e9lol">
            <name>A billion laughs document</name>
            <sourcecode type="yaml"><![CDATA[
x1: &a1 ["a", "a"]
x2: &a2 [*a1, *a1]
x3: &a3 [*a2, *a2]
]]></sourcecode>
          </figure>
          <t>This can be addressed using processors limiting the anchor recursion depth
and validating the input before processing it;
even in these cases it is important
to carefully test the implementation you are going to use.
The same considerations apply when serializing a YAML representation graph
in a format that do not support reference cycles (see <xref target="int-yaml-and-json"/>).</t>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This specification defines the following new Internet media types <xref target="MEDIATYPE"/>.</t>
      <t>IANA has updated the "Media Types" registry at <eref target="https://www.iana.org/assignments/media-types">https://www.iana.org/assignments/media-types</eref>
with the registration information provided below.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Media Type</th>
            <th align="left">Section</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">application/yaml</td>
            <td align="left">
              <xref target="application-yaml"/> of ThisRFC</td>
          </tr>
          <tr>
            <td align="left">application/openapi+yaml</td>
            <td align="left">
              <xref target="openapi-yaml"/> of ThisRFC</td>
          </tr>
          <tr>
            <td align="left">application/openapi+json</td>
            <td align="left">
              <xref target="openapi-json"/> of ThisRFC</td>
          </tr>
          <tr>
            <td align="left">application/schema+json</td>
            <td align="left">
              <xref target="schema-json"/> of ThisRFC</td>
          </tr>
          <tr>
            <td align="left">application/schema-instance+json</td>
            <td align="left">
              <xref target="schema-instance-json"/> of ThisRFC</td>
          </tr>
        </tbody>
      </table>
      <t>IANA has updated the "Structured Syntax Suffixes" registry at <eref target="https://www.iana.org/assignments/media-type-structured-suffix">https://www.iana.org/assignments/media-type-structured-suffix</eref>
with the registration information provided below.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Suffix</th>
            <th align="left">Section</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">+yaml</td>
            <td align="left">
              <xref target="suffix-yaml"/> of ThisRFC</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <reference anchor="YAML" target="https://yaml.org/spec/1.2/spec.html">
        <front>
          <title>YAML Ain't Markup Language Version 1.2</title>
          <author initials="" surname="Oren Ben-Kiki">
            <organization/>
          </author>
          <author initials="" surname="Clark Evans">
            <organization/>
          </author>
          <author initials="" surname="Ingy dot Net">
            <organization/>
          </author>
          <date year="2021" month="October" day="01"/>
        </front>
      </reference>
      <reference anchor="oas">
        <front>
          <title>OpenAPI Specification 3.0.0</title>
          <author initials="" surname="Darrel Miller">
            <organization/>
          </author>
          <author initials="" surname="Jeremy Whitlock">
            <organization/>
          </author>
          <author initials="" surname="Marsh Gardiner">
            <organization/>
          </author>
          <author initials="" surname="Mike Ralphson">
            <organization/>
          </author>
          <author initials="" surname="Ron Ratovsky">
            <organization/>
          </author>
          <author initials="" surname="Uri Sarid">
            <organization/>
          </author>
          <date year="2017" month="July" day="26"/>
        </front>
      </reference>
      <reference anchor="jsonschema" target="https://json-schema.org/specification.html">
        <front>
          <title>JSON Schema Core</title>
          <author initials="A." surname="Wright">
            <organization/>
          </author>
          <author initials="H." surname="Andrews">
            <organization/>
          </author>
          <author initials="B." surname="Hutton">
            <organization/>
          </author>
          <author initials="G." surname="Dennis">
            <organization/>
          </author>
          <date year="2020" month="January" day="28"/>
        </front>
      </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">
            <organization/>
          </author>
          <date month="December" year="2017"/>
          <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="STD" value="90"/>
        <seriesInfo name="RFC" value="8259"/>
        <seriesInfo name="DOI" value="10.17487/RFC8259"/>
      </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">
            <organization/>
          </author>
          <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">
            <organization/>
          </author>
          <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="RFC5234">
        <front>
          <title>Augmented BNF for Syntax Specifications: ABNF</title>
          <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker">
            <organization/>
          </author>
          <author fullname="P. Overell" initials="P." surname="Overell">
            <organization/>
          </author>
          <date month="January" year="2008"/>
          <abstract>
            <t>Internet technical specifications often need to define a formal syntax.  Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications.  The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power.  The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges.  This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="68"/>
        <seriesInfo name="RFC" value="5234"/>
        <seriesInfo name="DOI" value="10.17487/RFC5234"/>
      </reference>
      <reference anchor="RFC7405">
        <front>
          <title>Case-Sensitive String Support in ABNF</title>
          <author fullname="P. Kyzivat" initials="P." surname="Kyzivat">
            <organization/>
          </author>
          <date month="December" year="2014"/>
          <abstract>
            <t>This document extends the base definition of ABNF (Augmented Backus-Naur Form) to include a way to specify US-ASCII string literals that are matched in a case-sensitive manner.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7405"/>
        <seriesInfo name="DOI" value="10.17487/RFC7405"/>
      </reference>
      <reference anchor="SEMANTICS">
        <front>
          <title>HTTP Semantics</title>
          <author fullname="Roy T. Fielding">
            <organization>Adobe</organization>
          </author>
          <author fullname="Mark Nottingham">
            <organization>Fastly</organization>
          </author>
          <author fullname="Julian Reschke">
            <organization>greenbytes GmbH</organization>
          </author>
          <date day="12" month="September" year="2021"/>
          <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.

   This document updates RFC 3864 and obsoletes RFC 2818, RFC 7231, RFC
   7232, RFC 7233, RFC 7235, RFC 7538, RFC 7615, RFC 7694, and portions
   of RFC 7230.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
      </reference>
      <reference anchor="MEDIATYPE">
        <front>
          <title>Media Type Specifications and Registration Procedures</title>
          <author fullname="N. Freed" initials="N." surname="Freed">
            <organization/>
          </author>
          <author fullname="J. Klensin" initials="J." surname="Klensin">
            <organization/>
          </author>
          <author fullname="T. Hansen" initials="T." surname="Hansen">
            <organization/>
          </author>
          <date month="January" year="2013"/>
          <abstract>
            <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols.  This memo documents an Internet Best Current Practice.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="13"/>
        <seriesInfo name="RFC" value="6838"/>
        <seriesInfo name="DOI" value="10.17487/RFC6838"/>
      </reference>
      <reference anchor="RFC3986">
        <front>
          <title>Uniform Resource Identifier (URI): Generic Syntax</title>
          <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee">
            <organization/>
          </author>
          <author fullname="R. Fielding" initials="R." surname="Fielding">
            <organization/>
          </author>
          <author fullname="L. Masinter" initials="L." surname="Masinter">
            <organization/>
          </author>
          <date month="January" year="2005"/>
          <abstract>
            <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.  This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet.  The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier.  This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.  [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="66"/>
        <seriesInfo name="RFC" value="3986"/>
        <seriesInfo name="DOI" value="10.17487/RFC3986"/>
      </reference>
      <reference anchor="W3C.REC-ldp-20150226" target="https://www.w3.org/TR/2015/REC-ldp-20150226">
        <front>
          <title>Linked Data Platform 1.0</title>
          <author fullname="Steve Speicher" initials="S." surname="Speicher">
            <organization/>
          </author>
          <author fullname="John Arwe" initials="J." surname="Arwe">
            <organization/>
          </author>
          <author fullname="Ashok Malhotra" initials="A." surname="Malhotra">
            <organization/>
          </author>
          <date day="26" month="February" year="2015"/>
        </front>
        <seriesInfo name="World Wide Web Consortium Recommendation" value="REC-ldp-20150226"/>
      </reference>
      <reference anchor="LINK">
        <front>
          <title>Web Linking</title>
          <author fullname="M. Nottingham" initials="M." surname="Nottingham">
            <organization/>
          </author>
          <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="RFC6901">
        <front>
          <title>JavaScript Object Notation (JSON) Pointer</title>
          <author fullname="P. Bryan" initials="P." role="editor" surname="Bryan">
            <organization/>
          </author>
          <author fullname="K. Zyp" initials="K." surname="Zyp">
            <organization/>
          </author>
          <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham">
            <organization/>
          </author>
          <date month="April" year="2013"/>
          <abstract>
            <t>JSON Pointer defines a string syntax for identifying a specific value within a JavaScript Object Notation (JSON) document.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6901"/>
        <seriesInfo name="DOI" value="10.17487/RFC6901"/>
      </reference>
    </references>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Erik Wilde and David Biesack for being the initial contributors of this specification,
and to Darrel Miller and Rich Salz for their support during the adoption phase.</t>
      <t>In addition to the people above, this document owes a lot to the extensive discussion inside
and outside the HTTPAPI workgroup.
The following contributors have helped improve this specification by
opening pull requests, reporting bugs, asking smart questions,
drafting or reviewing text, and evaluating open issues:</t>
      <t>Eemeli Aro, Tina (tinita) Mueller,
Ben Hutton
and Jason Desrosiers.</t>
    </section>
    <section numbered="false" anchor="faq">
      <name>FAQ</name>
      <dl>
        <dt>Q: Why this document?</dt>
        <dd>
          <t>After all these years, we still lack a proper media-type for YAML.
This has some security implications too
(eg. wrt on identifying parsers or treat downloads)</t>
        </dd>
      </dl>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change Log</name>
      <t>RFC EDITOR PLEASE DELETE THIS SECTION.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
K0dIh3DuQDIJ5JSP6SJl4LL4FMO68FvkQddR9upp7vWLOmXGKFxT28D1bhc3
CKuryxs83Uio16nn7LfmdGqDkI9VO+uLnd9T7Gid8JXJOE36kw5YUxHBxrdq
Ihsb96qKYO1Snty/CBQT0YrEQH+Owzd0whwxv7nAXqqoe0lvuePqTA8fUIif
yvOUt4K2q48ODsP5zDzJpPJSlXC3EF6uGMTS200zbYmULraVlDQyvMwL76/t
eCrUCc/a4DGKV5dzWHK0huzcp6hTi6EsWarsLD29Vd7Bc375yQfBvgIse62t
9QTC/zPKPR4/vhqjVpVphdebig8W+ZIPFNOKoo+DjhfL3ssnrSwIb2zcKv3U
93yvfWmHgY2h8cPvsThLr6uEpsfnIRzVnGJTdV9SMJUZ9oeK4jUigm2nflYm
vcDQtyyqe7VwvWm6o5yt3mea1l/0A21Ue8Nfz1i109v3yO1p7bN7ifVqKewF
/qUNyorp97ESK5b9W/f/Y+n+O1X/ezT/P4mu/yVV/e2u3LbnxJ0A3Pwetqe+
e1C/xSLmgmeI8j68zFMu9dZv7Deze8Y9pGXBEj/aNAsQ1rvsvCYz01U2RzBk
YomNudA+MCiDourpXq0DDax7Exn1vu+mTNv2u3G2Ka3EepJcGungrDPQ0vPa
VWEvQSsYQcKeQ7tkNk8XQaO63yKSujnXguzKLDqZNDe3h68+zA1/+kHgqN8l
Re4DaQh+1a7gjYb4nMTI6dkaGZyJcVmQBpjwUgoJE3my4AJbO5QN38g9/w8s
PKfYBPVBQo/icpOvNT2JkK8h+AVNj6KA9qCBvNDbEJvGvCcQVHPGqJINwYay
qy0XaPFtnfRZ9Dg4R8VyxlL1Os3zC53iAwZ88Bv8+xZtxxVxfzLDO9u3XxFu
Ky62uouoBZ9cB6Ut7m8wHN7iVBFv1ErrpumWo5AwrYUWA5Y2W82a5EdXhZNd
FmuU2GFcEBf3pUZcl8v9Rz7aeNmNdqLdaLeFm6xWmvnoNh5DenVVmJxgMXKG
nj/OYQqE61G7X/mBRP0OHIo70xRwp7kt6Rk3I3hsiOPEG5IU8Lcg0EzA+Voo
s2xCf87i6xcmm5TTvv4tmh++T4lSpX7yWCl+0+bOFRvBCv1Anxj+YACnNZtY
+MnjiHNy7/ryQYrnHe+PYLJtIYvDaAsXZSirbdTRD9zdmXd7jkK2F1DvZkk6
MyNUJ4NTFc4zRSfQJTlKLaoz+oB8h0I9qgovfM1765HCSxhh7WOhZ/i0Rc29
ruqBNK3QNLwU8nNFgJr2/TipygpV3vIgPkyau/D7xVcxFyCVK+/H8uECFPJc
JZ9FxKsg4qr4Qmgv5RjwUtOEELTmZMYquQfz3rJsKveZhLpjCx/fQDeI/vbs
y95TtLGw+0jxG7+SwFC4JKnlOdtPWA/h190ddrec5wHi8CbPaEf3qRwkP4KM
JqgiPGcxaZgUwwoapM452salZZMtTWxDsru+W41MrrNy19OYAhNwyg1cY4Lp
3TvPVTxjuCCvbsjV+p4+j4hHznnaeZTFFCiQjhTfrYKjJtd1HXLO/gSvUsye
CZp6PIONVrfuvGn1fgVtcej4iCdW9Of5Rx/B0BKjzObn3ABEp1+h2Ev2Kc0X
4rvmKTgvNC2MKd6GHk8k8yLmuPalkaTls9t50TlOyXUDMQNCg0PCWz7jPTjH
K9v7piECdL4gVyfbzAc/kI5jpNGq849mC5p43tZ+Oy0r8qyt2IAwFnCwAdSO
/zbN1nYf+UuPD3ryZqurt99i1MLfRgVf69/rdxd9fQn64gmuVG/JhOsHOy4p
pMOmzt5ixoCwgnLgJ1BIVVY/ZbBv8K6RXpNUCxqO3ZvoYlDgsw7IXQqDZKA7
fPFSXv5svfbOQjKS77cIcB7Nj6MnuMnq19ajdQ6kFxbnQO4Vg4SOKnCLkdGH
1wQ7797M7MFHJ9lyT2jhPpdJ6q5seTt1yZKDf7pqQOGFaxZMikbhiVYWnUSy
P5kQg1eZuSbuBQX4Ay71gWijbw0ACaRwvTPQ6hAnTEE7swImPRpXaSmfL+Am
vgGa8uQ5HUaagPiC3BCuf+OlKVbNkqxdgtWd4CxNj6lZWwp0MNU+4LjKXPjQ
U7U2bt/INdax+Eq4AdjwKRpoCJKAzRn500QTNrmwHccotbVBsnUl0cZjs4QQ
FzM5LYR2U9bxznP0XVm6UZghvQM16sKFxmllI5fnJfx/sooZE6zrPFeCflLE
86l87gWuFgdsSRZUkKCBoShtLgaWZn3MdrksTOxKMZZvipFlxwqOWNsV3suW
SSWmpSxRK+OocZRLVyQAIo2PN5JNj7zYuUb4DZMsvT8PTTSJhJHLYuEqwI3P
uewNOz3xyHlu/PrDNblX16SaFuQ0XS9pnz0t1qfeIdAwoXFS6hABUjIOGkoR
QkFLyZSuIIuNfyk+M3Dl/XMTs50htLCZr5szLYUVTqFzzp7MfwqEpXE1mdoO
+IlEY9a+EGnl38bb+k0HXQz0z1t1vYOhHf1mI97uavqHhnYxtIuhHQztvL11
9/Zha3GwbT5Pc3nPJWlqzi669ubfuWx0I5EQb2ydW1BA/1ppnJ6XU2bGoANe
vhcyr8r6W1nNl4uS8pkyjP3MCY54a9IgSRglIxDLm4/knZpxBTvLzSsrdMYi
r1heJrnjJdKE0iXILZKrQqLbnn3sI9TWK/4sZooTW+Lltuy8d1KWpc47TLcj
Re7yfyDfR1s2Z3c0pLcdzcxc1Z9fbL0W0PowADxhHDMlNnSfqhF2DOxUp/4w
G0S07hG4urqKkjiTbg5yqpIJfwbRbgYvu/5O1TW6VgYhDAec4oTBINAJoB97
9/q557Tej+rHMJG//ufHWrHd/fPjrwHhrS/ZrIZw1ctM0MBgC7QN1RCuf4lt
ecPWK20rNrtrQ658rNtQePl+G4Yl+1sbhhX8Nfut2XCpRrO0YbtSs7Tzr0Dl
NaK27pMkP0fyes1nQ3riyP7SovhTmNt9YmUVQ6/7aYvincT4KZDcFoGQz4IP
wNzBZ78EJPIJwkE8vICm3xteZPkVOcITCU+g5mO0eZGZOiySC/1dkrqvKB6Q
8zDSXyTG0loJY0xjR8n6UrTIKe5kUJWwyf61yZbNEC+cdm99SFU+7IvvRp7G
6d98TY9CBW/CgkRNPMrnwjPEz0YSKmGigZM5JofnyK+vdJey0PkVN86neeln
u1rFZR1gCXfC+knMUJX4nee6Dw3r+tvD0VIrdwsFnGiZmnSOkA1+WP2ZzpYd
HSwUVBf7NORK1HWlLuw9XR8PBtWEP03HuR47Q9sXT0r4Yw/c0ygvYNGay8Qw
LMjXSULAICYWvwcnuTigTz4m0T1NKP7Lu/osyWL9sAQx40f6+P/+B6Tpqi9o
vvtgK6eZY8tfJLZFbl1HFDjpy70/wdGTmpAZPe+M49SaDrlwf+rr76aLNhV+
r/pa7425LpymzsdamLigO17h00PI1KVgNO6UhPvaqBjmD7hDETpN2S+BamMX
3r/Fy05YUyrMc0x9aODYF2gxbtVb53QuwiWwHTzqumffPsLVXP3mRT5Zc8Pm
m6z69YvDvdNDfXD44vDsUJ99fXSqTw/38ZHDSP0/iwiglE1bAAA=

-->

</rfc>
