<?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.11 (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-02" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.12.10 -->
  <front>
    <title>YAML Media Type</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-yaml-mediatypes-02"/>
    <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="June" 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>
      <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>YAML <xref target="YAML"/> is a data serialization format that 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 data
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 "node", "alias node", "anchor" and "named anchor"
in this document are to be intepreded as in <xref target="YAML"/>.</t>
      </section>
      <section anchor="application-yaml-fragment">
        <name>Fragment identification</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 octects 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>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>
        <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
named anchors 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 alias node <tt>*foo</tt> pointing to the node with value <tt>scalar</tt>;
whereas
the URL <tt>file.yaml#*bar</tt> references the alias node <tt>*bar</tt> pointing to the node
with value <tt>[ some, sequence, items ]</tt>.</t>
        <sourcecode type="example"><![CDATA[
 %YAML 1.2
 ---
 one: &foo scalar
 two: &bar
   - some
   - sequence
   - items
]]></sourcecode>
      </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>None</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>None; 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>HTTP</t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>An empty fragment identifier references
the root node.
</t>
            <t>A fragment identifier starting with "*"
is to be interpreted as a YAML alias node <xref target="application-yaml-fragment"/>.</t>
            <t>A fragment identifier starting 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;
this syntax can only reference 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>
          </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, yml</li>
          <li>Macintosh file type code(s):  n/a</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>
          <dt>Change controller:</dt>
          <dd>
            <t>n/a</t>
          </dd>
        </dl>
      </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>See Authors' Addresses section.</t>
          </dd>
          <dt>Author:</dt>
          <dd>
            <t>See Authors' Addresses section</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>n/a</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 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 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 not supported in JSON</name>
          <sourcecode type="example"><![CDATA[
 %YAML 1.2
 ---
 non-json-keys:
   0: a number
   2020-01-01: a timestamp
   [0, 1]: a sequence
   ? {k: v}
   : a map
 non-json-value: 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
understanding 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 document 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>
    <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">
              <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 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">
              <organization>Fachhochschule Dortmund</organization>
            </author>
            <author fullname="Glyn Normington">
	 </author>
            <author fullname="Carsten Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="25" month="April" year="2022"/>
            <abstract>
              <t>   JSONPath defines a string syntax for selecting and extracting values
   within a JavaScript Object Notation (JSON, RFC 8259) value.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-jsonpath-base-05"/>
        </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 starts with <tt>*</tt>. This allow to distinguish
a fragment identifier expressed as an alias node from
one expressed in 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 is even extensible that specification.</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-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:
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
22LYfXqoHu0+fb7XC/4fme7qctdEAAA=

-->

</rfc>
