<?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.17 (Ruby 3.1.2) -->
<?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-yaml-mediatypes-04" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <front>
    <title>YAML Media Type</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-yaml-mediatypes-04"/>
    <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>
    <author initials="E." surname="Wilde" fullname="Erik Wilde">
      <organization>Axway</organization>
      <address>
        <postal>
          <country>Switzerland</country>
        </postal>
        <email>erik.wilde@dret.net</email>
      </address>
    </author>
    <author initials="E." surname="Aro" fullname="Eemeli Aro">
      <organization>Mozilla</organization>
      <address>
        <postal>
          <country>Finland</country>
        </postal>
        <email>eemeli@gmail.com</email>
      </address>
    </author>
    <date year="2022" month="November" day="23"/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTPAPI</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This document registers
the application/yaml media type
and the +yaml structured syntax suffix
on the IANA Media Types registry.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-httpapi-yaml-mediatypes/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTPAPI 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/"/>.
        Working Group information can be found at <eref target="https://datatracker.ietf.org/wg/httpapi/about/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-httpapi/mediatypes/labels/yaml"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>YAML <xref target="YAML"/> is a data serialization format
that is capable of conveying one or multiple
documents in a single presentation stream
(e.g. a file or a network resource).
It is widely used on the Internet,
including in the API sector (e.g. see <xref target="OAS"/>),
but the relevant media type and structured syntax suffix previously had not been registered by IANA.</t>
      <t>To increase interoperability when exchanging YAML streams,
and leverage content negotiation mechanisms when exchanging
YAML resources,
this specification
registers the <tt>application/yaml</tt> media type
and the <tt>+yaml</tt> structured syntax suffix.</t>
      <t>Moreover, it provides security considerations
and interoperability considerations related to <xref target="YAML"/>,
including its relation with <xref target="JSON"/>.</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>
        <t>The terms "fragment" and "fragment identifier"
in this document are to be interpreted as in <xref target="URI"/>.</t>
        <t>The terms "presentation", "stream", "YAML document", "representation graph", "tag",
"node", "alias node", "anchor" and "anchor name"
in this document are to be interpreted as in <xref target="YAML"/>.</t>
      </section>
      <section anchor="application-yaml-fragment">
        <name>Fragment identification</name>
        <t>A fragment identifies a node in a stream.</t>
        <t>A fragment identifier starting with "*"
is to be interpreted as a YAML alias node <xref target="fragment-alias-node"/>.</t>
        <t>For single-document YAML streams,
a fragment identifier that is empty
or that starts with "/"
is to be interpreted as a JSON Pointer <xref target="JSON-POINTER"/>
and is evaluated on the YAML representation graph,
walking through alias nodes;
in particular, the empty fragment identifier
references the root node.
This syntax can only reference the YAML nodes that are
on a path that is made up of nodes interoperable with
the JSON data model (see <xref target="int-yaml-and-json"/>).</t>
        <t>A fragment identifier is not guaranteed to reference an existing node.
Therefore, applications SHOULD define how an unresolved alias node
ought to be handled.</t>
        <section anchor="fragment-alias-node">
          <name>Fragment identification via alias nodes</name>
          <t>This section describes how to use
alias nodes (see Section 3.2.2.2 and 7.1 of <xref target="YAML"/>)
as fragment identifiers to designate nodes.</t>
          <t>A YAML alias node can be represented in a URI fragment identifier
by encoding it into bytes using UTF-8 <xref target="UTF-8"/>,
while percent-encoding those characters not allowed by the fragment rule
in <xref section="3.5" sectionFormat="of" target="URI"/>.</t>
          <t>If multiple nodes would match a fragment identifier,
the first such match is selected.</t>
          <t>Users concerned with interoperability of fragment identifiers:</t>
          <ul spacing="normal">
            <li>SHOULD limit alias nodes to a set of characters
that do not require encoding
to be expressed as URI fragment identifiers:
this is generally possible since
anchor names are a serialization detail;</li>
            <li>SHOULD NOT use alias nodes that match multiple nodes.</li>
          </ul>
          <t>In the example resource below, the URL <tt>file.yaml#*foo</tt>
references the first alias node <tt>*foo</tt> pointing to the node with value <tt>scalar</tt>
and not the one in the second document;
whereas
the URL <tt>file.yaml#*document_2</tt> references the root node
of the second document <tt>{ one: [a, sequence]}</tt>.</t>
          <figure>
            <name>A YAML stream containing two YAML documents.</name>
            <sourcecode type="example"><![CDATA[
 %YAML 1.2
 ---
 one: &foo scalar
 two: &bar
   - some
   - sequence
   - items
 ...
 %YAML 1.2
 ---
 &document_2
 one: &foo [a, sequence]
]]></sourcecode>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="media-type-and-structured-syntax-suffix-registrations">
      <name>Media Type and Structured Syntax Suffix registrations</name>
      <t>This section describes the information required to register
the above media type according to <xref target="MEDIATYPE"/></t>
      <section anchor="application-yaml">
        <name>Media Type application/yaml</name>
        <t>The media type for YAML text is <tt>application/yaml</tt>;
the following information serves as the registration form for this media type.</t>
        <dl>
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>yaml</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
        </dl>
        <!-- RFC 6838:
   "N/A", written exactly that way, can be used in any field if desired
   to emphasize the fact that it does not apply or that the question was
   not omitted by accident.  Do not use 'none' or other words that could
   be mistaken for a response.
  -->

<dl>
          <dt>Optional parameters:</dt>
          <dd>
            <t>N/A; unrecognized parameters should be ignored</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>binary</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>see <xref target="security-considerations"/> of this document</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>see <xref target="interoperability-considerations"/> of this document</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t><xref target="YAML"/></t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>Applications that need a human-friendly, cross language, Unicode
based data serialization language designed around the common native
data types of dynamic programming languages.</t>
          </dd>
        </dl>
        <!-- HTTP is not an application. Cited first para of abstract of YAML -->
<!-- 1.2 specification. -->

<dl>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>See <xref target="application-yaml-fragment"/></t>
          </dd>
        </dl>
        <t>Additional information:</t>
        <ul spacing="normal">
          <li>Deprecated alias names for this type:  application/x-yaml, text/yaml, text/x-yaml</li>
          <li>Magic number(s)  N/A</li>
          <li>File extension(s): "yaml" (preferred), "yml". See <xref target="int-yaml-filename-extension"/>.</li>
          <li>Macintosh file type code(s):  N/A</li>
          <li>Windows Clipboard Name: YAML</li>
        </ul>
        <dl>
          <dt>Person and email address to contact for further information:</dt>
          <dd>
            <t>See Authors' Addresses section.</t>
          </dd>
          <dt>Intended usage:</dt>
          <dd>
            <t>COMMON</t>
          </dd>
          <dt>Restrictions on usage:</dt>
          <dd>
            <t>None.</t>
          </dd>
          <dt>Author:</dt>
          <dd>
            <t>See Authors' Addresses section.</t>
          </dd>
        </dl>
        <!-- The media type template needs to stand on its own.
-->

<dl>
          <dt>Change controller:</dt>
          <dd>
            <t>IESG</t>
          </dd>
        </dl>
        <!-- There needs to be a change controller.  -->

</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>
        <dl>
          <dt>Name:</dt>
          <dd>
            <t>YAML Ain't Markup Language (YAML)</t>
          </dd>
          <dt>+suffix:</dt>
          <dd>
            <t>+yaml</t>
          </dd>
          <dt>References:</dt>
          <dd>
            <t><xref target="YAML"/></t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>see <xref target="application-yaml"/></t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>Differently from <tt>application/yaml</tt>,
there is no fragment identification syntax defined
for +yaml.
</t>
            <t>A specific <tt>xxx/yyy+yaml</tt> media type
needs to define the syntax and semantics for fragment identifiers
because the ones in <xref target="application-yaml"/>
do not apply unless explicitly expressed.</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>See <xref target="application-yaml"/></t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>See <xref target="application-yaml"/></t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>httpapi@ietf.org or art@ietf.org</t>
          </dd>
          <dt>Author:</dt>
          <dd>
            <t>See Authors' Addresses section</t>
          </dd>
        </dl>
        <!-- The template needs to stand on its own.
-->

<dl>
          <dt>Change controller:</dt>
          <dd>
            <t>IESG</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="interoperability-considerations">
      <name>Interoperability Considerations</name>
      <section anchor="int-yaml-evolving">
        <name>YAML is an Evolving Language</name>
        <t>YAML is an evolving language and, over time,
some features have been added and others removed.</t>
        <t>While this document is based on a given YAML version <xref target="YAML"/>,
the media type 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 YAML documents using the <tt>%YAML</tt> directive
(see Section 6.8.1 of <xref target="YAML"/>).</t>
      </section>
      <section anchor="int-yaml-streams">
        <name>YAML streams</name>
        <t>A YAML stream can contain zero or more YAML documents.</t>
        <t>When receiving a multi-document stream,
an application that only expects one-document streams,
ought to signal an error instead of ignoring the extra documents.</t>
        <t>Current implementations consider different documents in a stream independent,
similarly to JSON Text Sequences (see <xref target="RFC7464"/>);
elements such as anchors are not guaranteed to be referenceable
across different documents.</t>
      </section>
      <section anchor="int-yaml-filename-extension">
        <name>Filename extension</name>
        <t>The "yaml" filename extension is the preferred one;
it is the most popular and widely used on the web.
The "yml" filename extension is still used.
The simultaneous usage of two filename extensions in the same context
might cause interoperability issues
(e.g. when both a "config.yaml" and a "config.yml" are present).</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 intended to be consumed as JSON,
information not reflected in the representation graph
and classified as presentation or serialization detail
(see Section 3.2 of <xref target="YAML"/>) can be discarded.
This includes comments (see Section 3.2.3.3 of <xref target="YAML"/>),
directives, 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>multi-document YAML streams;</li>
          <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 with tags like <tt>!!timestamp</tt>
that were included in the default schema of older YAML versions;</li>
          <li>tags in general, and specifically the 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 and values not supported in JSON in a multi-document YAML stream</name>
          <sourcecode type="example"><![CDATA[
 %YAML 1.2
 ---
 non-json-keys:
   0: a number
   [0, 1]: a sequence
   ? {k: v}
   : a map
 ---
 non-json-keys:
   !date 2020-01-01: a timestamp
 non-json-value: !date 2020-01-01
 ...
]]></sourcecode>
        </figure>
      </section>
      <section anchor="int-fragment">
        <name>Fragment identifiers</name>
        <t>To allow fragment identifiers to traverse alias nodes,
the YAML representation graph needs to be generated before the fragment identifier evaluation.
It is important that this evaluation will not cause the issues mentioned in <xref target="int-yaml-and-json"/>
and in <xref target="security-considerations">Security considerations</xref> such as infinite loops and unexpected code execution.</t>
        <t>Implementers need to consider that the YAML version and supported features (e.g. merge keys)
can impact on the generation of the representation graph (see <xref target="example-merge-keys"/>).</t>
        <t>In <xref target="application-yaml"/>, this document extends the use of specifications based on
the JSON data model with support for YAML fragment identifiers.
This is to improve the interoperability of already consolidated practices,
such as the one of writing <xref target="OAS">OpenAPI documents</xref> in YAML.</t>
        <t><xref target="ex-fragid"/> provides a non-exhaustive list of examples that could help
understand interoperability issues related to fragment identifiers.</t>
      </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-code-execution">
        <name>Arbitrary Code Execution</name>
        <t>Care should be used when using YAML tags,
because their resolution 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 traversing the YAML representation graph at some point,
for example:</t>
        <ul spacing="normal">
          <li>when trying to serialize it JSON;</li>
          <li>or when searching/identifying nodes using specifications based on the JSON data model (e.g. <xref target="JSON-POINTER"/>).</li>
        </ul>
        <figure anchor="example-yaml-cyclic">
          <name>A cyclic document</name>
          <sourcecode type="yaml"><![CDATA[
x: &x
  y: *x
]]></sourcecode>
        </figure>
        <t>Even if a representaion graph is not cyclic, treating it as a simple 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 does not support reference cycles (see <xref target="int-yaml-and-json"/>).</t>
      </section>
      <section anchor="yaml-streams">
        <name>YAML streams</name>
        <t>Incremental parsing and processing of a YAML stream can produce partial results
and later indicate failure to parse the remainder of the stream;
to prevent partial processing, implementers might prefer validating all the documents in a stream beforehand.</t>
        <t>Repeated parsing and re-encoding of a YAML stream can result
in the addition or removal of document delimiters (e.g. <tt>---</tt> or <tt>...</tt>)
as well as the modification of anchor names and other serialization details:
this can break signature validation.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This specification defines the following new Internet media type <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 this document</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 this document</td>
          </tr>
        </tbody>
      </table>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="YAML" target="https://yaml.org/spec/1.2.2/">
          <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>
            <author initials="" surname="Tina Müller">
              <organization/>
            </author>
            <author initials="" surname="Pantelis Antoniou">
              <organization/>
            </author>
            <author initials="" surname="Eemeli Aro">
              <organization/>
            </author>
            <author initials="" surname="Thomas Smith">
              <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="JSON-POINTER">
          <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>
        <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" initials="R. T." surname="Fielding">
              <organization>Adobe</organization>
            </author>
            <author fullname="Mark Nottingham" initials="M." surname="Nottingham">
              <organization>Fastly</organization>
            </author>
            <author fullname="Julian Reschke" initials="J." surname="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 RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics-19"/>
        </reference>
        <reference anchor="URI">
          <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="UTF-8">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau">
              <organization/>
            </author>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems.  The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo.  UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values.  This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </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>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.ietf-jsonpath-base">
          <front>
            <title>JSONPath: Query expressions for JSON</title>
            <author fullname="Stefan Gössner" initials="S." surname="Gössner">
              <organization>Fachhochschule Dortmund</organization>
            </author>
            <author fullname="Glyn Normington" initials="G." surname="Normington">
         </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="21" month="November" year="2022"/>
            <abstract>
              <t>   JSONPath defines a string syntax for selecting and extracting JSON
   (RFC 8259) values from a JSON value.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-jsonpath-base-08"/>
        </reference>
        <reference anchor="RFC7464">
          <front>
            <title>JavaScript Object Notation (JSON) Text Sequences</title>
            <author fullname="N. Williams" initials="N." surname="Williams">
              <organization/>
            </author>
            <date month="February" year="2015"/>
            <abstract>
              <t>This document describes the JavaScript Object Notation (JSON) text sequence format and associated media type "application/json-seq".  A JSON text sequence consists of any number of JSON texts, all encoded in UTF-8, each prefixed by an ASCII Record Separator (0x1E), and each ending with an ASCII Line Feed character (0x0A).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7464"/>
          <seriesInfo name="DOI" value="10.17487/RFC7464"/>
        </reference>
      </references>
    </references>
    <section anchor="ex-fragid">
      <name>Examples related to fragment identifier interoperability</name>
      <section anchor="unreferenceable-nodes">
        <name>Unreferenceable nodes</name>
        <t>In this example, a couple of YAML nodes that cannot be referenced
based on the JSON data model
since their mapping keys are not strings.</t>
        <figure anchor="example-unsupported-paths">
          <name>Example of YAML nodes that are not referenceable based on JSON data model.</name>
          <sourcecode type="example"><![CDATA[
 %YAML 1.2
 ---
 a-map-cannot:
   ? {be: expressed}
   : with a JSON Pointer

 0: no numeric mapping keys in JSON
]]></sourcecode>
        </figure>
      </section>
      <section anchor="referencing-a-missing-node">
        <name>Referencing a missing node</name>
        <t>In this example the fragment <tt>#/0</tt> does not reference an existing node</t>
        <figure anchor="example-missing-node">
          <name>Example of a JSON Pointer that does not reference an existing node.</name>
          <sourcecode type="example"><![CDATA[
0: "JSON Pointer `#/0` references a string mapping key."
]]></sourcecode>
        </figure>
      </section>
      <section anchor="representation-graph-with-anchors-and-cyclic-references">
        <name>Representation graph with anchors and cyclic references</name>
        <t>In this YAML document, the <tt>#/foo/bar/baz</tt> fragment identifier
traverses the representation graph and references the string <tt>you</tt>.
Moreover, the presence of a cyclic reference implies that
there are infinite fragment identifiers <tt>#/foo/bat/../bat/bar</tt>
referencing the <tt>&amp;anchor</tt> node.</t>
        <figure anchor="example-cyclic-graph">
          <name>Example of a cyclic references and alias nodes.</name>
          <sourcecode type="example"><![CDATA[
 anchor: &anchor
   baz: you
 foo: &foo
   bar: *anchor
   bat: *foo
]]></sourcecode>
        </figure>
        <t>Many YAML implementations will resolve
<eref target="https://yaml.org/type/merge.html">the merge key "&lt;&lt;:"</eref> defined in YAML 1.1
in the representation graph.
This means that the fragment <tt>#/book/author/given_name</tt> references the string <tt>Federico</tt>
and that the fragment <tt>#/book/&lt;&lt;</tt> will not reference any existing node.</t>
        <figure anchor="example-merge-keys">
          <name>Example of YAML merge keys.</name>
          <sourcecode type="example"><![CDATA[
 %YAML 1.1
 ---
 # Many implementations use merge keys.
 the-viceroys: &the-viceroys
   title: The Viceroys
   author:
     given_name: Federico
     family_name: De Roberto
 book:
   <<: *the-viceroys
   title: The Illusion
]]></sourcecode>
        </figure>
      </section>
    </section>
    <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>Tina (tinita) Mueller,
Ben Hutton,
Manu Sporny
and Jason Desrosiers.</t>
    </section>
    <section numbered="false" removeInRFC="true" 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>
        <dt>Q: Why using alias nodes as fragment identifiers?</dt>
        <dd>
          <t>Alias nodes are a native YAML feature that allows
addressing any node in a YAML document.
Since YAML is not limited to string keywords,
not all nodes are addressable using JSON Pointers.
Alias nodes are thus the natural choice for fragment identifiers
<xref target="application-yaml-fragment"/>.</t>
        </dd>
        <dt>Q: Why not use plain names for alias nodes? Why not define plain names?</dt>
        <dd>
          <t>Using plain name fragments could have
limited the ability of future xxx+yaml
media types to define their plain name fragments.
Moreover, alias nodes starts with <tt>*</tt> so we found no reason
to strip it when using them in fragments.
</t>
          <t>Preserving <tt>*</tt> had another positive result:
it allows distinguishing
a fragment identifier expressed as an alias node from
one expressed in other formats.
In this document we included JSON Pointer <xref target="JSON-POINTER"/>
which is expected to start with <tt>/</tt>.
Moreover, since JSON Path <xref target="I-D.ietf-jsonpath-base"/> expressions
start with <tt>$</tt>, this mechanism can be extended to JSON Path too.</t>
        </dd>
        <dt>Q: Why not just use JSON Pointer as the primary fragment identifier?</dt>
        <dd>
          <t>Fragment identifiers in YAML always reference
YAML representation graph nodes.
JSON Pointer can only rely on string keywords so
it is not able to reference a generic node in the
representation graph.
</t>
          <t>Since JSON Pointer is a specification unrelated to YAML,
we decided to isolate the impacts of changes in JSON Pointer
on YAML fragments:
only fragments starting with "/" are "delegated" to an external spec,
and if <xref target="JSON-POINTER"/> changes, it will only affect fragments starting with "/".</t>
          <t>The current behaviour for empty fragments is the same
for both JSON Pointer and alias nodes.
Incidentally, it's the only sensible behaviour independently of <xref target="JSON-POINTER"/>.</t>
        </dd>
      </dl>
    </section>
    <section numbered="false" removeInRFC="true" anchor="change-log">
      <name>Change Log</name>
      <section numbered="false" anchor="since-draft-ietf-httpapi-yaml-mediatypes-02">
        <name>Since draft-ietf-httpapi-yaml-mediatypes-02</name>
        <ul spacing="normal">
          <li>clarification on fragment identifiers #50.</li>
        </ul>
      </section>
      <section numbered="false" anchor="since-draft-ietf-httpapi-yaml-mediatypes-01">
        <name>Since draft-ietf-httpapi-yaml-mediatypes-01</name>
        <ul spacing="normal">
          <li>application/yaml fragment identifiers compatible with JSON Pointer #41 (#47).</li>
        </ul>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7Vc/XbbxpX/H08xkXYTyyEpS3achE6aKracqGvZriU3J8cn
pxySQxIVCLAYQBTtqM+yD7J/7b7Y/u69M8AABBXntM1pEwqYjzv3+2vQ7/ej
Ii4SM1Q/n5y/UOdmGmt1uVmZSI/HubkeRtNskuolBkxzPSv6sSlm/UVRrPQq
7m/0MukvaU6BKbb/4FE00YWZZ/lmqOJ0lkVRvMqHqshLWxw/ePD1g+NI50YP
1clqlcQYG2epVTqdqjdGJ/3LeGmidZZfzfOsXA3Vj5eXr09en0VXZoOn06E6
SwuTp6boPyNgosgWmPtXnWQpANwYG63ioXpXZJOewr/idGrSoqdslhe5mVn8
2izdjyKPJ3g1yZYr7X4sMRiv4jSJU9NTOPhSr1ZxOv8lujZpaYaRUi3AlKKD
D9VPgBkD1Q/0Gk8XGWGM0GSHh4dTXegi15Mrkw8If4Msnx+u54cOjYd6nJXF
IaYtdZzINDz+ox+KFzqfLOr1aBg9ia9NvR49OBzn2dqaamHMzM0qq2fO42JR
jgc47CETcj33tDysyXiY6LFJ7CFRN5IZ/dja0vT5BRBNLyJdFossB1L62EYB
bXao3gzU6yxJYn4ibPMmG5u8yILngHaonsVYWSfqMtepnWX5knlBPTMrnRdL
JtsZ3sc6VT9k1yA6PePpRrCUZ+N4RWv+cU4P6Ez8epKVaUH8R9M3DehOB+qn
OJmaALrTPL4KHjJoJzdrvQm3Mhg0WNOgP05zUwzAgM2tLtZx8d7kCZixveFJ
noXbmaVJ4uohb3eevY+TRDc25GG7DvYcHEo7Ramg7Zo5k+R3yANDgT6J088K
da7zq3KlXuh0Xuq5UX8xuSVsHw2OeQYYFBOOHxwf9Y8e9B8c8cOKvvinL+d5
lZtUfW/S/n/FV3H44in48UqdXoOW4eOzdL6BHBXqpcOYe34Zp1qd/9//JInJ
w+evNeQ7ia06SYssjbMyfNnCnV8KoqatuliCT+X0Op+bomZ5YlYWELsyk0Oc
eHBMcvHq5KKBrVcrk0Ki1QVGxTOnmtTDwYPBgwaKjr7sP/iyf/x4F4qe6Tw3
iTqP22f7k8nNcqN+WmC/bHIVvgJ57EL9oPMpFE9j0nl8ZdQbnawWNkvDF28A
3BtdZNf2ahM+f5vH6kLnMfhQ/eni1cv+61dnLy9P32DG86ePvwZpI9LLAd+c
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
qXv7j748GET/D/L7GJPKVQAA

-->

</rfc>
