<?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-07" 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-07"/>
    <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="2026" month="February" day="04"/>
    <area>Security</area>
    <workgroup>SCITT</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 78?>

<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 83?>

<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 HTTP endpoints implementing the core operations that constitute a Transparency Service using COSE (<xref target="RFC9052"/>):</t>
      <ul spacing="normal">
        <li>Registration of Signed Statements</li>
        <li>Issuance and resolution of Receipts</li>
        <li>Discovery of Transparency Service Keys</li>
      </ul>
      <t>In addition to these core endpoints, this specification defines optional supporting endpoints:</t>
      <ul spacing="normal">
        <li>Retrieving Signed Statements</li>
        <li>Retrieving Transparent Statements</li>
        <li>Exchanging Receipts for refreshed Receipts</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-authentication">
      <name>Authentication</name>
      <t>Authentication is out of scope for this document.
Implementations <bcp14>MAY</bcp14> authenticate clients, for example for the purposes of 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>
    </section>
    <section anchor="sec-endpoints">
      <name>Endpoints</name>
      <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>MUST</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>SCRAPI is not a CoAP API, but Constrained Problem Details objects <xref target="RFC9290"/> provide a useful encoding for problem details and avoid the need to mix 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>
      <sourcecode type="cbor-diag">
{
  / title /         -1: \
            "Malformed request",
  / detail /        -2: \
            "The request could not be parsed"
}
</sourcecode>
      <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-core-endpoints">
        <name>Core Endpoints</name>
        <t>The following HTTP endpoints <bcp14>MUST</bcp14> be implemented to enable conformance to this specification.</t>
        <section anchor="sec-transparency-service-keys">
          <name>Transparency Service Keys</name>
          <t>This endpoint is used to discover the public keys that can be used by relying parties to verify Receipts issued by the Transparency Service.</t>
          <t>The Transparency Service responds with a COSE Key Set, as defined in <xref section="7" sectionFormat="of" target="RFC9052"/>.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET /.well-known/scitt-keys 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)

[
  {
    -1:1,
    -2:h'65eda5a12577c2bae829437fe338701a10aaa375e1bb5b5de108de439c08551d',
    -3:h'1e52ed75701163f7f9e40ddf9f341b3dc9ba860af7e0ca7ca7e9eecd0084d19c',
    1:2,
    2:'kid1'
  },
  {
    -1:1,
    -2:h'bac5b11cad8f99f9c72b05cf4b9e26d244dc189f745228255a219a86d6a09eff',
    -3:h'20138bf82dc1b6d562be0fa54ab7804a3a64b6d72ccfed6b6fb6ed28bbfc117e',
    1:2,
    2:'kid2'
  }
]
</sourcecode>
          <t>The Transparency Service <bcp14>MAY</bcp14> stop returning at that endpoint the keys it no longer uses to issue Receipts, following a reasonable delay.</t>
        </section>
        <section anchor="sec-individual-transparency-service-key">
          <name>Individual Transparency Service Key</name>
          <t>This endpoint is used to resolve a single public key, from a <tt>kid</tt> value contained in a Receipt previously issued by the Transparency Service.</t>
          <t>Request:
~~~ http-message
GET /.well-known/scitt-keys/{kid_value} HTTP/1.1
Host: transparency.example
Accept: application/cbor
~~~</t>
          <sourcecode type="http-message">
HTTP/1.1 200 OK
Content-Type: application/cbor

Body (in CBOR diagnostic notation)

[
  {
    -1:1,
    -2:h'bac5b11cad8f99f9c72b05cf4b9e26d244dc189f745228255a219a86d6a09eff',
    -3:h'20138bf82dc1b6d562be0fa54ab7804a3a64b6d72ccfed6b6fb6ed28bbfc117e',
    1:2,
    2:'kid_value'
  }
]
</sourcecode>
          <t>The following expected error is 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: "No such key",
  / detail /        -2: "No key could be found for this kid value"
}
</sourcecode>
          <t>If the <tt>kid</tt> values used by the service (<tt>{kid_value}</tt> in the request above) are not URL-safe, the endpoint <bcp14>MUST</bcp14> accept the base64url encoding of the <tt>kid</tt> value, without padding, in the URL instead.</t>
          <t><xref section="2" sectionFormat="of" target="RFC7515"/> specifies Base64Url encoding as follows:</t>
          <t><xref target="RFC7515"/> specifies Base64url encoding as follows:</t>
          <t>"Base64 encoding using the URL- and filename-safe character set
defined in Section 5 of RFC 4648 <xref target="RFC4648"/>, with all trailing '='
characters omitted and without the inclusion of any line breaks,
whitespace, or other additional characters.  Note that the base64url
encoding of the empty octet sequence is the empty string.
(See Appendix C of <xref target="RFC7515"/> for notes on implementing base64url
encoding without padding.)"</t>
          <t>It is <bcp14>RECOMMENDED</bcp14> to use COSE Key Thumbprint, as defined in <xref target="RFC9679"/> as the mechanism to assign a <tt>kid</tt> to Transparency Service keys.</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",
    / CWT Claims            / 15: {
      / Issuer  / 1: "vendor.example",
      / Subject / 2: "vendor.product.example",
    }
  }&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 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>
            <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>
        <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 (Receipt)                    --- TS
           Location: .../entries/final123
]]></artwork>
          </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: \
          "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>
            <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>
        <t>These additional, optional endpoints can be implemented for client convenience, but are not required for conformance to this specification.</t>
        <section anchor="sec-exchange-receipt">
          <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>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
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.example",
      / subject / 2 : "https://green.example/cli@v1.2.3",
      / iat / 6: 1443944944 # 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>
          <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
Location: https://transparency.example/entries/67ed...befe

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, # 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'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 /
  h'b158a1...0149a9',           / 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>
        <section anchor="sec-resolve-transparent-statement">
          <name>Resolve Transparent Statement</name>
          <t>This endpoint enables Transparency Service APIs to serve Transparent Statements directly, including the Receipt they have issued for it.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET /transparent-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-1">
            <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 /
    394:   [                    / Receipts           /
      h'd284586c...4191f9d2'    / Receipt            /
    ]
  },
  h'b158a1...0149a9',           / Payload            /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
</sourcecode>
          </section>
          <section anchor="sec-status-404-not-found-2">
            <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 Transparent 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>
    </section>
    <section anchor="sec-privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The privacy considerations section of <xref target="I-D.draft-ietf-scitt-architecture"/> applies to this document.</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 for 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 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-iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="sec-well-known-uri-for-key-discovery">
        <name>Well-Known URI for Key Discovery</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: scitt-keys
Change controller: IETF
Specification document(s): RFCthis
Status: Permanent
Related information: <xref target="I-D.draft-ietf-scitt-architecture"/></t>
      </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-22"/>
            <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="10" month="October" 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 defines such an
   architecture for single-issuer signed statement transparency.  It
   ensures extensibility, 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="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7515"/>
            <seriesInfo name="RFC" value="7515"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <seriesInfo name="DOI" value="10.17487/RFC4648"/>
            <seriesInfo name="RFC" value="4648"/>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9679">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) Key Thumbprint</title>
            <seriesInfo name="DOI" value="10.17487/RFC9679"/>
            <seriesInfo name="RFC" value="9679"/>
            <author fullname="K. Isobe" initials="K." surname="Isobe"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="O. Steele" initials="O." surname="Steele"/>
            <date month="December" year="2024"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a CBOR Object Signing and Encryption (COSE) Key. It specifies which fields within the COSE Key structure are included in the cryptographic hash computation, the process for creating a canonical representation of these fields, and how to hash the resulting byte sequence. The resulting hash value, referred to as a "thumbprint", can be used to identify or select the corresponding key.</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-13"/>
            <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="6" month="November" 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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
BSl6AAA=

-->

</rfc>
