<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scitt-scrapi-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="SCRAPI">SCITT Reference APIs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-scrapi-05"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="J." surname="Geater" fullname="Jon Geater">
      <organization>DataTrails Inc.</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>jon.geater@datatrails.ai</email>
      </address>
    </author>
    <date year="2025" month="July" day="02"/>
    <area>Security</area>
    <workgroup>SCITT</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 72?>

<t>This document describes a REST API that supports the normative requirements of the SCITT Architecture.
Optional key discovery and query interfaces are provided to support interoperability with X.509 Certificates, alternative methods commonly used to support public key discovery and Artifact Repositories.</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-scitt-scrapi/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        SCITT Working Group mailing list (<eref target="mailto:scitt@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/scitt/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/scitt/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-scitt/draft-ietf-scitt-scrapi"/>.</t>
    </note>
  </front>
  <middle>
    <?line 77?>

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>The SCITT Architecture <xref target="I-D.draft-ietf-scitt-architecture"/> defines the core objects, identifiers and workflows necessary to interact with a SCITT Transparency Service:</t>
      <ul spacing="normal">
        <li>Signed Statements</li>
        <li>Receipts</li>
        <li>Transparent Statements</li>
        <li>Registration Policies</li>
      </ul>
      <t>SCRAPI defines the operations necessary to support supply chain transparency using COSE <xref target="RFC9052"/>:</t>
      <ul spacing="normal">
        <li>Issuances of Signed Statements</li>
        <li>Registration of Signed Statements</li>
        <li>Verification of Signed Statements</li>
        <li>Issuance of Receipts</li>
        <li>Verification of Receipts</li>
        <li>Production of Transparent Statements</li>
        <li>Verification of Transparent Statements</li>
      </ul>
      <t>In addition to these operational HTTP endpoints, this specification defines supporting endpoints:</t>
      <ul spacing="normal">
        <li>Resolving Verification Keys for Issuers</li>
        <li>Retrieving Receipts Asynchronously</li>
        <li>Retrieving Signed Statements from an Artifact Repository</li>
        <li>Retrieving Statements from an Artifact Repository</li>
      </ul>
      <section anchor="sec-terminology">
        <name>Terminology</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This specification uses the terms "Signed Statement", "Receipt", "Transparent Statement", "Artifact Repositories", "Transparency Service" and "Registration Policy" as defined in <xref target="I-D.draft-ietf-scitt-architecture"/>.</t>
        <t>This specification uses "payload" as defined in <xref target="RFC9052"/>.</t>
      </section>
    </section>
    <section anchor="sec-endpoints">
      <name>Endpoints</name>
      <t>Authentication is out of scope for this document.
Implementations <bcp14>MAY</bcp14> authenticate clients, for example authorization or preventing denial of service attacks.
If Authentication is not implemented, rate limiting or other denial of service mitigation <bcp14>MUST</bcp14> be implemented.</t>
      <t>All messages are sent as HTTP GET or POST requests.</t>
      <t>If the Transparency Service cannot process a client's request, it <bcp14>MUST</bcp14> return either:</t>
      <ol spacing="normal" type="1">
        <li>an HTTP 3xx code, indicating to the client additional action they must take to complete the request, such as follow a redirection, or</li>
        <li>an HTTP 4xx or 5xx status code, and the body <bcp14>SHOULD</bcp14> be a Concise Problem Details object (application/concise-problem-details+cbor) <xref target="RFC9290"/> containing:</li>
      </ol>
      <ul spacing="normal">
        <li>title: A human-readable string identifying the error that prevented the Transparency Service from processing the request, ideally short and suitable for inclusion in log messages.</li>
        <li>detail: A human-readable string describing the error in more depth, ideally with sufficient detail enabling the error to be rectified.</li>
      </ul>
      <t>NOTE: SCRAPI is not a CoAP API.
Nonetheless Constrained Problem Details objects <xref target="RFC9290"/> provide a useful CBOR encoding for problem details and avoids the need for mixing CBOR and JSON in endpoint or client implementations.</t>
      <t>NOTE: Examples use '\' line wrapping per <xref target="RFC8792"/></t>
      <t>Examples of errors may include:</t>
      <sourcecode type="cbor-diag">
{
  / title /         -1: \
            "Bad Signature Algorithm",
  / detail /        -2: \
            "Signing algorithm 'WalnutDSA' not supported"
}
</sourcecode>
      <t>Most error types are specific to the type of request and are defined in the respective subsections below.
The one exception is the "malformed" error type, which indicates that the Transparency Service could not parse the client's request because it did not comply with this document:</t>
      <t><tt>
Error code: `malformed` (The request could not be parsed)
</tt></t>
      <t>Clients <bcp14>SHOULD</bcp14> treat 500 and 503 HTTP status code responses as transient failures and <bcp14>MAY</bcp14> retry the same request without modification at a later date.</t>
      <t>Note that in the case of any error response, the Transparency Service <bcp14>MAY</bcp14> include a <tt>Retry-After</tt> header field per <xref target="RFC9110"/> in order to request a minimum time for the client to wait before retrying the request.
In the absence of this header field, this document does not specify a minimum.</t>
      <section anchor="sec-mandatory">
        <name>Mandatory</name>
        <t>The following HTTP endpoints are mandatory to implement to enable conformance to this specification.</t>
        <section anchor="sec-transparency-configuration">
          <name>Transparency Configuration</name>
          <t>This endpoint is used to discover the capabilities and current configuration of a transparency service implementing this specification.</t>
          <t>The Transparency Service responds with a CBOR map of configuration elements.
These elements are Transparency-Service specific.</t>
          <t>Contents of bodies are informative examples only.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET /.well-known/transparency-configuration HTTP/1.1
Host: transparency.example
Accept: application/cbor
</sourcecode>
          <t>Response:</t>
          <sourcecode type="http-message">
HTTP/1.1 200 OK
Content-Type: application/cbor

Body (in CBOR diagnostic notation)

{
  "issuer": "https://transparency.example",
  "jwks_uri": "https://transparency.example/jwks"
}
</sourcecode>
          <t>Responses to this message are vendor-specific.
Fields that are not understood <bcp14>MUST</bcp14> be ignored.</t>
        </section>
        <section anchor="sec-register-signed-statement">
          <name>Register Signed Statement</name>
          <t>This endpoint instructs a Transparency Service to register a Signed Statement on its log.
Since log implementations may take many seconds or longer to reach finality, this API provides an asynchronous mode that returns a locator that can be used to check the registration's status asynchronously.</t>
          <t>The following is a non-normative example of an HTTP request to register a Signed Statement:</t>
          <t>Request:</t>
          <sourcecode type="http">
POST /entries HTTP/1.1
Host: transparency.example
Accept: application/cbor
Accept: application/cose
Content-Type: application/cose

Body (in CBOR diagnostic notation)

18([                            / COSE Sign1                                           /
  &lt;&lt;{
    / signature alg         / 1:  -35, # ES384
    / key identifier        / 4:   h'75726e3a...32636573',
    / cose sign1 type       / 16:  "application/example+cose",
    / payload-hash-alg      / 258: -16, # sha-256
    / preimage-content-type / 259: "application/spdx+json",
    / payload-location      / 260: "https://.../manifest.json"
  }&gt;&gt;,                          / Protected Header                                     /
  {},                           / Unprotected Header                                   /
  h'935b5a91...e18a588a',       / Payload, sha-256 digest of file stored at Location   /
  h'269cd68f4211dffc...0dcb29c' / Signature                                            /
])
</sourcecode>
          <t>A Transparency Service depends on both the client's authentication context (if present) and the verification of the Signed Statement in the Registration Policy.</t>
          <t>The Registration Policy for the Transparency Service <bcp14>MUST</bcp14> be applied before any additional processing.
The details of Registration Policies are out of scope for this document.</t>
          <t>Response:</t>
          <t>One of the following:</t>
          <section anchor="sec-status-201-registration-is-successful">
            <name>Status 201 - Registration is successful</name>
            <t>If the Transparency Service is able to produce a Receipt within a reasonable time, it <bcp14>MAY</bcp14> return it directly.</t>
            <t>Along with the receipt the Transparency Service <bcp14>MAY</bcp14> return a locator in the HTTP response <tt>Location</tt> header, provided the locator is a valid URL.</t>
            <sourcecode type="http-message">
HTTP/1.1 201 Created
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose

Body (in CBOR diagnostic notation)

/ cose-sign1 / 18([
  / protected   / &lt;&lt;{
    / key / 4 : "mxA4KiOkQFZ-dkLebSo3mLOEPR7rN8XtxkJe45xuyJk",
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
    / claims / 15 : {
      / issuer  / 1 : "https://blue.notary.example",
      / subject / 2 : "https://green.software.example/cli@v1.2.3",
    },
  }&gt;&gt;,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        &lt;&lt;[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]&gt;&gt;
      ],
    },
  },
  / payload     / null,
  / signature   / h'02d227ed...ccd3774f'
])
</sourcecode>
            <t>The response contains the Receipt for the Signed Statement.
Fresh Receipts may be requested through the resource identified in the Location header.</t>
          </section>
          <section anchor="sec-status-303-registration-is-running">
            <name>Status 303 - Registration is running</name>
            <t>In cases where the registration request is accepted but the Transparency Service is not able to produce a Receipt in a reasonable time, it <bcp14>MAY</bcp14> return a locator for the registration operation, as in this non-normative example:</t>
            <sourcecode type="http">
HTTP/1.1 303 See Other
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose
Content-Length: 0
Retry-After: &lt;seconds&gt;
</sourcecode>
            <t>The location <bcp14>MAY</bcp14> be temporary, and the service may not serve a relevant response at this Location after a reasonable delay.</t>
            <t>The Transparency Service <bcp14>MAY</bcp14> include a <tt>Retry-After</tt> header in the HTTP response to help with polling.</t>
          </section>
        </section>
        <section anchor="sec-query-registration-status">
          <name>Query Registration Status</name>
          <t>This endpoint lets a client query a Transparency Service for the registration status of a Signed Statement they have submitted earlier, and for which they have received a 303 or 302 - Registration is running response.</t>
          <t>Request:</t>
          <sourcecode type="http">
GET /entries/67ed...befe HTTP/1.1
Host: transparency.example
Accept: application/cbor
Accept: application/cose
Content-Type: application/cose
</sourcecode>
          <t>Response:</t>
          <t>One of the following:</t>
          <section anchor="sec-status-302-registration-is-running">
            <name>Status 302 - Registration is running</name>
            <t>Registration requests <bcp14>MAY</bcp14> fail, in which case the Location <bcp14>MAY</bcp14> return an error when queried.</t>
            <t>If the client requests (GET) the location when the registration is still in progress, the TS <bcp14>MAY</bcp14> return a 302 Found, as in this non-normative example:</t>
            <sourcecode type="http-message">
HTTP/1.1 302 Found
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose
Content-Length: 0
Retry-After: &lt;seconds&gt;
</sourcecode>
            <t>The location <bcp14>MAY</bcp14> be temporary, and the service may not serve a relevant response at this Location after a reasonable delay.</t>
            <t>The Transparency Service <bcp14>MAY</bcp14> include a <tt>Retry-After</tt> header in the HTTP response to help with polling.</t>
          </section>
          <section anchor="sec-status-200-asynchronous-registration-is-successful">
            <name>Status 200 - Asynchronous registration is successful</name>
            <t>Along with the receipt the Transparency Service <bcp14>MAY</bcp14> return a locator in the HTTP response <tt>Location</tt> header, provided the locator is a valid URL.</t>
            <sourcecode type="http-message">
HTTP/1.1 200 OK
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose

Body (in CBOR diagnostic notation)

/ cose-sign1 / 18([
  / protected   / &lt;&lt;{
    / key / 4 : "mxA4KiOkQFZ-dkLebSo3mLOEPR7rN8XtxkJe45xuyJk",
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
    / claims / 15 : {
      / issuer  / 1 : "https://blue.notary.example",
      / subject / 2 : "https://green.software.example/cli@v1.2.3",
    },
  }&gt;&gt;,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        &lt;&lt;[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]&gt;&gt;
      ],
    },
  },
  / payload     / null,
  / signature   / h'02d227ed...ccd3774f'
])
</sourcecode>
            <t>The response contains the Receipt for the Signed Statement.
Fresh Receipts may be requested through the resource identified in the Location header.</t>
            <t>As an example, a successful asynchronous follows the following sequence:</t>
            <artwork><![CDATA[
Initial exchange:

Client --- POST /entries (Signed Statement) --> TS
Client <-- 303 Location: .../entries/tmp123 --- TS

May happen zero or more times:

Client --- GET .../entries/tmp123           --> TS
Client <-- 302 Location: .../entries/tmp123 --- TS

Finally:

Client --- GET .../entries/tmp123           --> TS
Client <-- 200 (Transparent Statement)      --- TS
           Location: .../entries/final123
]]></artwork>
          </section>
          <section anchor="sec-status-400-invalid-client-request">
            <name>Status 400 - Invalid Client Request</name>
            <t>The following expected errors are defined.
Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: \
          "Bad Signature Algorithm",
  / detail /        -2: \
          "Signed Statement contained a non supported algorithm"
}
</sourcecode>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: "\
          Confirmation Missing",
  / detail /        -2: \
          "Signed Statement did not contain proof of possession"
}
</sourcecode>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: \
          "Payload Missing",
  / detail /        -2: \
          "Signed Statement payload must be present"
}
</sourcecode>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: \
          "Rejected",
  / detail /        -2: \
          "Signed Statement not accepted by the current\
          Registration Policy"
}
</sourcecode>
          </section>
          <section anchor="sec-status-400-invalid-client-request-1">
            <name>Status 400 - Invalid Client Request</name>
            <t>The following expected errors are defined.
Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
            <sourcecode type="http-message">
HTTP/1.1 400 Bad Request
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: "Invalid locator",
  / detail /        -2: "Operation locator is not in a valid form"
}
</sourcecode>
          </section>
          <section anchor="sec-status-404-operation-not-found">
            <name>Status 404 - Operation Not Found</name>
            <t>If no record of the specified running operation is found, the Transparency Service returns a 404 response.</t>
            <sourcecode type="http-message">
HTTP/1.1 404 Not Found
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: \
          "Operation Not Found",
  / detail /        -2: \
          "No running operation was found matching the requested ID"
}
</sourcecode>
          </section>
          <section anchor="sec-status-429-too-many-requests">
            <name>Status 429 - Too Many Requests</name>
            <t>If a client is polling for an in-progress registration too frequently then the Transparency Service <bcp14>MAY</bcp14>, in addition to implementing rate limiting, return a 429 response:</t>
            <sourcecode type="http-message">
HTTP/1.1 429 Too Many Requests
Content-Type: application/concise-problem-details+cbor
Retry-After: &lt;seconds&gt;

{
  / title /         -1: \
          "Too Many Requests",
  / detail /        -2: \
          "Only &lt;number&gt; requests per &lt;period&gt; are allowed."
}
</sourcecode>
          </section>
        </section>
        <section anchor="sec-resolve-receipt">
          <name>Resolve Receipt</name>
          <t>Authentication <bcp14>SHOULD</bcp14> be implemented for this endpoint.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET entries/67ed41f1de6a...cfc158694ed0befe HTTP/1.1
Host: transparency.example
Accept: application/cose
</sourcecode>
          <t>Response:</t>
          <section anchor="sec-status-200-ok">
            <name>Status 200 - OK</name>
            <t>If the Receipt is found:</t>
            <sourcecode type="http-message">
HTTP/1.1 200 Ok
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose

Body (in CBOR diagnostic notation)

/ cose-sign1 / 18([
  / protected   / &lt;&lt;{
    / key / 4 : "mxA4KiOkQFZ-dkLebSo3mLOEPR7rN8XtxkJe45xuyJk",
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
    / claims / 15 : {
      / issuer  / 1 : "https://blue.notary.example",
      / subject / 2 : "https://green.software.example/cli@v1.2.3",
    },
  }&gt;&gt;,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        &lt;&lt;[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]&gt;&gt;
      ],
    },
  },
  / payload     / null,
  / signature   / h'02d227ed...ccd3774f'
])
</sourcecode>
          </section>
          <section anchor="sec-status-404-not-found">
            <name>Status 404 - Not Found</name>
            <t>If there is no Receipt found for the specified <tt>EntryID</tt> the Transparency Service returns a 404 response:</t>
            <sourcecode type="http-message">
HTTP/1.1 404 Not Found
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: \
          "Not Found",
  / detail /        -2: \
          "Receipt with entry ID &lt;id&gt; not known \
          to this Transparency Service"
}
</sourcecode>
          </section>
        </section>
      </section>
      <section anchor="sec-optional-endpoints">
        <name>Optional Endpoints</name>
        <section anchor="sec-exchange-receipt">
          <name>Exchange Receipt</name>
          <t>Authentication <bcp14>SHOULD</bcp14> be implemented for this endpoint.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
POST receipt-exchange HTTP/1.1
Host: transparency.example
Accept: application/cose

Body (in CBOR diagnostic notation)

/ cose-sign1 / 18([
  / protected   / &lt;&lt;{
    / key / 4 : "mxA4KiOkQFZ-dkLebSo3mLOEPR7rN8XtxkJe45xuyJk",
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
    / claims / 15 : {
      / issuer  / 1 : "https://blue.example",
      / subject / 2 : "https://green.example/cli@v1.2.3",
      / iat / 6: 1443944944
    },
  }&gt;&gt;,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        &lt;&lt;[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]&gt;&gt;
      ],
    },
  },
  / payload     / null,
  / signature   / h'02d227ed...ccd3774f'
])
</sourcecode>
          <t>Response:</t>
          <section anchor="sec-status-200-ok-1">
            <name>Status 200 - OK</name>
            <t>If a new Receipt can be issued for the given submitted Receipt:</t>
            <sourcecode type="http-message">
HTTP/1.1 200 OK
Content-Type: application/cose

Body (in CBOR diagnostic notation)

/ cose-sign1 / 18([
  / protected   / &lt;&lt;{
    / key / 4 : "0vx7agoebGc...9nndrQmbX",
    / algorithm / 1 : -35,  # ES384
    / vds       / 395 : 1,  # RFC9162 SHA-256
    / claims / 15 : {
      / issuer  / 1 : "https://blue.example",
      / subject / 2 : "https://green.example/cli@v1.2.3",
      / iat / 6: 2443944944,
    },
  }&gt;&gt;,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        &lt;&lt;[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]&gt;&gt;
      ],
    },
  },
  / payload     / null,
  / signature   / h'123227ed...ccd37123'
])
</sourcecode>
            <t>A TS may limit how often a new receipt can be issued, and respond with a 503 if a client requests new receipts too frequently.</t>
            <t>The following HTTP endpoints are optional to implement.</t>
          </section>
        </section>
        <section anchor="sec-resolve-signed-statement">
          <name>Resolve Signed Statement</name>
          <t>This endpoint enables Transparency Service APIs to act like Artifact Repositories, and serve Signed Statements directly, instead of indirectly through Receipts.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET /signed-statements/9e4f...688a HTTP/1.1
Host: transparency.example
Accept: application/cose
</sourcecode>
          <t>Response:</t>
          <t>One of the following:</t>
          <section anchor="sec-status-200-success">
            <name>Status 200 - Success</name>
            <sourcecode type="http-message">
HTTP/1.1 200 Ok
Content-Type: application/cose

Body (in CBOR diagnostic notation)

18([                            / COSE Sign1         /
  h'a1013822',                  / Protected Header   /
  {},                           / Unprotected Header /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
</sourcecode>
          </section>
          <section anchor="sec-status-404-not-found-1">
            <name>Status 404 - Not Found</name>
            <t>The following expected errors are defined.
Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
            <sourcecode type="http-message">
HTTP/1.1 404 Not Found
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: \
          "Not Found",
  / detail /        -2: \
          "No Signed Statement found with the specified ID"
</sourcecode>
          </section>
          <section anchor="sec-eventual-consistency">
            <name>Eventual Consistency</name>
            <t>For all responses additional eventually consistent operation details <bcp14>MAY</bcp14> be present.
Support for eventually consistent Receipts is implementation specific, and out of scope for this specification.</t>
          </section>
        </section>
        <section anchor="sec-exchange-receipt-1">
          <name>Exchange Receipt</name>
          <t>This endpoint is used to exchange old or expiring Receipts for fresh ones.</t>
          <t>The <tt>iat</tt>, <tt>exp</tt> and <tt>kid</tt> claims can change each time a Receipt is exchanged.</t>
          <t>This means that fresh Receipts can have more recent issued at times, further in the future expiration times, and be signed with new signature algorithms.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
POST /exchange/receipt HTTP/1.1
Host: transparency.example
Accept: application/cose
Content-Type: application/cose

Body (in CBOR diagnostic notation)

/ cose-sign1 / 18([
  / protected   / &lt;&lt;{
    / key / 4 : "mxA4KiOkQFZ-dkLebSo3mLOEPR7rN8XtxkJe45xuyJk",
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
    / claims / 15 : {
      / issuer  / 1 : "https://blue.notary.example",
      / subject / 2 : "https://green.software.example/cli@v1.2.3",
      / iat     / 6 : 1750683311 # Pre-refresh
    },
  }&gt;&gt;,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        &lt;&lt;[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]&gt;&gt;
      ],
    },
  },
  / payload     / null,
  / signature   / h'02d227ed...ccd3774f'
])
</sourcecode>
          <section anchor="sec-status-200">
            <name>Status 200</name>
            <t>A new Receipt:</t>
            <sourcecode type="http-message">
HTTP/1.1 200 Ok
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose

Body (in CBOR diagnostic notation)

/ cose-sign1 / 18([
  / protected   / &lt;&lt;{
    / key / 4 : "mxA4KiOkQFZ-dkLebSo3mLOEPR7rN8XtxkJe45xuyJk",
    / algorithm / 1 : -7,  # ES256
    / vds       / 395 : 1, # RFC9162 SHA-256
    / claims / 15 : {
      / issuer  / 1 : "https://blue.notary.example",
      / subject / 2 : "https://green.software.example/cli@v1.2.3",
      / iat     / 6 : 1750683573 # Post-refresh
    },
  }&gt;&gt;,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        &lt;&lt;[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]&gt;&gt;
      ],
    },
  },
  / payload     / null,
  / signature   / h'48f67a8b...b474bb3a'
])
</sourcecode>
          </section>
        </section>
        <section anchor="sec-resolve-issuer">
          <name>Resolve Issuer</name>
          <t>This endpoint is inspired by <xref target="I-D.draft-ietf-oauth-sd-jwt-vc"/>.</t>
          <t>The following is a non-normative example of a HTTP request for the Issuer Metadata configuration when <tt>iss</tt> is set to <tt>https://transparency.example/tenant/1234</tt>:</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET /.well-known/issuer/tenant/1234 HTTP/1.1
Host: transparency.example
Accept: application/json
</sourcecode>
          <t>Response:</t>
          <sourcecode type="http-message">
HTTP/1.1 200 Ok
Content-Type: application/json

{
  "issuer": "https://transparency.example/tenant/1234",
  "jwks": {
    "keys": [
      {
        "kid": "urn:ietf:params:oauth\
                 :jwk-thumbprint:sha-256:Dgyo...agRo",
        "alg": "ES256",
        "use": "sig",
        "kty": "EC",
        "crv": "P-256",
        "x": "p-kZ4uOASt9IjQRTrWikGnlbGb-z3LU1ltwRjZaOS9w",
        "y": "ymXE1yltJPXgjQSRe9NweN3TLlSUALYZTzy83NVfdg0"
      },
      {
        "kid": "urn:ietf:params:oauth\
                 :jwk-thumbprint:sha-256:4Fzx...0ClE",
        "alg": "HPKE-Base-P256-SHA256-AES128GCM",
        "use": "enc",
        "kty": "EC",
        "crv": "P-256",
        "x": "Vreuil95vzR6ixutgBBf2ota-rj97MvKfuJWB4qqp5w",
        "y": "NkUTeaoNlLRRsVRxHGDA-RsA0ex2tSpcd3G-4SmKXbs"
      }
    ]
  }
}
</sourcecode>
        </section>
      </section>
    </section>
    <section anchor="sec-privacy-considerations">
      <name>Privacy Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="sec-security-considerations">
      <name>Security Considerations</name>
      <section anchor="sec-general-scope">
        <name>General Scope</name>
        <t>This document describes the interoperable API for client calls to, and implementations of, a Transparency Service as specified in <xref target="I-D.draft-ietf-scitt-architecture"/>.
As such the security considerations in this section are concerned only with security considerations that are relevant at that implementation layer.
All questions of security of the related COSE formats, algorithm choices, cryptographic envelopes,verifiable data structures and the like are handled elsewhere and out of scope of this document.</t>
      </section>
      <section anchor="sec-applicable-environment">
        <name>Applicable Environment</name>
        <t>SCITT is concerned with issues of cross-boundary supply-chain-wide data integrity and as such must assume a very wide range of deployment environments.
Thus, no assumptions can be made about the security of the computing environment in which any client implementation of this specification runs.</t>
      </section>
      <section anchor="sec-user-host-authentication">
        <name>User-host Authentication</name>
        <t><xref target="I-D.draft-ietf-scitt-architecture"/> defines 2 distinct roles that require authentication:
Issuers who sign Statements, and clients that submit API calls on behalf of Issuers.
While Issuer authentication and signing of Statements is very important for the trustworthiness of systems implementing the SCITT building blocks, it is out of scope of this document.
This document is only concerned with authentication of API clients.</t>
        <t>For those endpoints that require client authentication, Transparency Services <bcp14>MUST</bcp14> support at least one of the following options:</t>
        <ul spacing="normal">
          <li>HTTP Authorization header with a JWT</li>
          <li>domain-bound API key</li>
          <li>TLS client authentication</li>
        </ul>
        <t>Where authentication methods rely on long term secrets, both clients and Transparency Services implementing this specification <bcp14>SHOULD</bcp14> allow for the revocation and rolling of authentication secrets.</t>
      </section>
      <section anchor="sec-primary-threats">
        <name>Primary Threats</name>
        <section anchor="sec-in-scope">
          <name>In Scope</name>
          <t>The most serious threats to implementations on Transparency Services are ones that would cause the failure of their main promises, to wit:</t>
          <ul spacing="normal">
            <li>Threats to strong identification, for example representing the Statements from one issuer as those of another</li>
            <li>Threats to payload integrity, for example changing the contents of a Signed Statement before making it transparent</li>
            <li>Threats to non-equivocation, for example attacks that would enable the presentation or verification of divergent proofs for the same Statement payload</li>
          </ul>
          <section anchor="sec-denial-of-service-attacks">
            <name>Denial of Service Attacks</name>
            <t>While denial of service attacks are very hard to defend against completely, and Transparency Services are unlikely to be in the critical path of any safety-liable operation, any attack which could cause the <em>silent</em> failure of Signed Statement registration, for example, should be considered in scope.</t>
            <t>In principle DoS attacks are easily mitigated by the client checking that the Transparency Service has registered any submitted Signed Statement and returned a Receipt.
Since verification of Receipts does not require the involvement of the Transparency Service DoS attacks are not a major issue.</t>
            <t>Clients to Transparency Services <bcp14>SHOULD</bcp14> ensure that Receipts are available for their registered Statements, either on a periodic or needs-must basis, depending on the use case.</t>
            <t>Beyond this, implementers of Transparency Services <bcp14>SHOULD</bcp14> implement general good practice around network attacks, flooding, rate limiting etc.</t>
          </section>
          <section anchor="sec-eavesdropping">
            <name>Eavesdropping</name>
            <t>Since the purpose of this API is to ultimately put the message payloads on a Transparency Log there is limited risk to eavesdropping.
Nonetheless transparency may mean 'within a limited community' rather than 'in full public', so implementers <bcp14>MUST</bcp14> add protections against man-in-the-middle and network eavesdropping, such as TLS.</t>
          </section>
          <section anchor="sec-message-modification-attacks">
            <name>Message Modification Attacks</name>
            <t>Modification attacks are mitigated by the use of the Issuer signature on the Signed Statement.</t>
          </section>
          <section anchor="sec-message-insertion-attacks">
            <name>Message Insertion Attacks</name>
            <t>Insertion attacks are mitigated by the use of the Issuer signature on the Signed Statement, therefore care must be taken in the protection of Issuer keys and credentials to avoid theft Issuer and impersonation.</t>
            <t>Transparency Services <bcp14>MAY</bcp14> also implement additional protections such as anomaly detection or rate limiting in order to mitigate the impact of any breach.</t>
          </section>
        </section>
        <section anchor="sec-out-of-scope">
          <name>Out of Scope</name>
          <section anchor="sec-replay-attacks">
            <name>Replay Attacks</name>
            <t>Replay attacks are not particularly concerning for SCITT or SCRAPI:
Once a statement is made, it is intended to be immutable and non-repudiable, so making it twice should not lead to any particular issues.
There could be issues at the payload level (for instance, the statement "it is raining" may true when first submitted but not when replayed), but being payload-agnostic implementations of SCITT services cannot be required to worry about that.</t>
            <t>If the semantic content of the payload are time dependent and susceptible to replay attacks in this way then timestamps <bcp14>MAY</bcp14> be added to the protected header signed by the Issuer.</t>
          </section>
          <section anchor="sec-message-deletion-attacks">
            <name>Message Deletion Attacks</name>
            <t>Once registered with a Transparency Service, Registered Signed Statements cannot be deleted.
Thus, any message deletion attack must occur prior to registration else it is indistinguishable from a man-in-the-middle or denial-of-service attack on this interface.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="sec-todo">
      <name>&nbsp;TODO</name>
      <t>TODO: Consider negotiation for Receipt as "JSON" or "YAML".
TODO: Consider impact of media type on "Data URIs" and QR Codes.</t>
    </section>
    <section anchor="sec-iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="sec-well-known-uri-for-issuers">
        <name>Well-Known URI for Issuers</name>
        <t>The following value is requested to be registered in the "Well-Known URIs" registry (using the template from <xref target="RFC8615"/>):</t>
        <t>URI suffix: issuer
Change controller: IETF
Specification document(s): RFCthis.
Related information: N/A</t>
      </section>
      <section anchor="sec-well-known-uri-for-transparency-configuration">
        <name>Well-Known URI for Transparency Configuration</name>
        <t>The following value is requested to be registered in the "Well-Known URIs" registry (using the template from <xref target="RFC8615"/>):</t>
        <t>URI suffix: transparency-configuration
Change controller: IETF
Specification document(s): RFCthis.
Related information: N/A</t>
        <t>TODO: Register them from here.</t>
      </section>
      <section anchor="sec-media-type-registration">
        <name>Media Type Registration</name>
        <t>This section requests registration of the "application/scitt.receipt+cose" media type <xref target="RFC2046"/> in the "Media Types" registry in the manner described in <xref target="RFC6838"/>.</t>
        <t>To indicate that the content is a SCITT Receipt:</t>
        <ul spacing="normal">
          <li>Type name: application</li>
          <li>Subtype name: scitt.receipt+cose</li>
          <li>Required parameters: n/a</li>
          <li>Optional parameters: n/a</li>
          <li>Encoding considerations: TODO</li>
          <li>Security considerations: TODO</li>
          <li>Interoperability considerations: n/a</li>
          <li>Published specification: this specification</li>
          <li>Applications that use this media type: TBD</li>
          <li>Fragment identifier considerations: n/a</li>
          <li>
            <t>Additional information:
            </t>
            <ul spacing="normal">
              <li>Magic number(s): n/a</li>
              <li>File extension(s): n/a</li>
              <li>Macintosh file type code(s): n/a</li>
            </ul>
          </li>
          <li>Person &amp; email address to contact for further information: TODO</li>
          <li>Intended usage: COMMON</li>
          <li>Restrictions on usage: none</li>
          <li>Author: TODO</li>
          <li>Change Controller: IESG</li>
          <li>Provisional registration?  No</li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.draft-ietf-scitt-architecture">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-13"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>ARM</organization>
            </author>
            <author fullname="Steve Lasker" initials="S." surname="Lasker">
         </author>
            <date day="18" month="June" year="2025"/>
            <abstract>
              <t>   Traceability in supply chains is a growing security concern.  While
   verifiable data structures have addressed specific issues, such as
   equivocation over digital certificates, they lack a universal
   architecture for all supply chains.  This document proposes a
   scalable architecture for single-issuer signed statement transparency
   applicable to any supply chain.  It ensures flexibility,
   interoperability between different transparency services, and
   compliance with various auditing procedures and regulatory
   requirements.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8615"/>
            <seriesInfo name="RFC" value="8615"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <seriesInfo name="DOI" value="10.17487/RFC9052"/>
            <seriesInfo name="RFC" value="9052"/>
            <seriesInfo name="STD" value="96"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <seriesInfo name="DOI" value="10.17487/RFC9110"/>
            <seriesInfo name="RFC" value="9110"/>
            <seriesInfo name="STD" value="97"/>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <seriesInfo name="DOI" value="10.17487/RFC9290"/>
            <seriesInfo name="RFC" value="9290"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a concise "problem detail" as a way to carry machine-readable details of errors in a Representational State Transfer (REST) response to avoid the need to define new error response formats for REST APIs for constrained environments. The format is inspired by, but intended to be more concise than, the problem details for HTTP APIs defined in RFC 7807.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-ietf-oauth-sd-jwt-vc">
          <front>
            <title>SD-JWT-based Verifiable Credentials (SD-JWT VC)</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-sd-jwt-vc-09"/>
            <author fullname="Oliver Terbu" initials="O." surname="Terbu">
              <organization>MATTR</organization>
            </author>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete Inc.</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="28" month="May" year="2025"/>
            <abstract>
              <t>   This specification describes data formats as well as validation and
   processing rules to express Verifiable Credentials with JSON payloads
   with and without selective disclosure based on the SD-JWT
   [I-D.ietf-oauth-selective-disclosure-jwt] format.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC2046">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <seriesInfo name="DOI" value="10.17487/RFC2046"/>
            <seriesInfo name="RFC" value="2046"/>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein"/>
            <date month="November" year="1996"/>
            <abstract>
              <t>This second document defines the general structure of the MIME media typing system and defines an initial set of media types. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <seriesInfo name="DOI" value="10.17487/RFC6838"/>
            <seriesInfo name="RFC" value="6838"/>
            <seriesInfo name="BCP" value="13"/>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <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>
        </reference>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <seriesInfo name="DOI" value="10.17487/RFC8792"/>
            <seriesInfo name="RFC" value="8792"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>This document defines two strategies for handling long lines in width-bounded text content. One strategy, called the "single backslash" strategy, is based on the historical use of a single backslash ('\') character to indicate where line-folding has occurred, with the continuation occurring with the first character that is not a space character (' ') on the next line. The second strategy, called the "double backslash" strategy, extends the first strategy by adding a second backslash character to identify where the continuation begins and is thereby able to handle cases not supported by the first strategy. Both strategies use a self-describing header enabling automated reconstitution of the original content.</t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="O." surname="Steele" fullname="Orie Steele">
        <organization>Transmute</organization>
        <address>
          <postal>
            <country>United States</country>
          </postal>
          <email>orie@transmute.industries</email>
        </address>
      </contact>
      <t>Orie contributed examples, text, and URN structure to early version of this draft.</t>
      <contact initials="A." surname="Chamayou" fullname="Amaury Chamayou">
        <organization>Microsoft</organization>
        <address>
          <postal>
            <country>United Kingdom</country>
          </postal>
          <email>amaury.chamayou@microsoft.com</email>
        </address>
      </contact>
      <t>Amaury contributed crucial content to ensure interoperability between implementations, improve example expressiveness and consistency, as well as overall document quality.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
EJSS878oVsq+H3cAAA==

-->

</rfc>
