<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.18 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scitt-scrapi-09" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="SCRAPI">SCITT Reference APIs</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-scrapi-09"/>
    <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>Bowball Technologies Ltd</organization>
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>jonathan@bowball-tech.com</email>
      </address>
    </author>
    <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="21"/>
    <area>Security</area>
    <workgroup>SCITT</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 127?>

<t>This document describes a REST API that supports the normative requirements of the Supply Chain Integrity, Transparency, and Trust (SCITT) Architecture.</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 131?>

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>The Supply Chain Integrity, Transparency, and Trust (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>
          <t>Signed Statements</t>
        </li>
        <li>
          <t>Receipts</t>
        </li>
        <li>
          <t>Transparent Statements</t>
        </li>
        <li>
          <t>Registration Policies</t>
        </li>
      </ul>
      <t>SCITT Reference APIs (SCRAPI) defines HTTP resources for a Transparency Service using COSE (<xref target="RFC9052"/>).
The following resources <bcp14>MUST</bcp14> be implemented for conformance to this specification:</t>
      <ul spacing="normal">
        <li>
          <t>Registration of Signed Statements</t>
        </li>
        <li>
          <t>Issuance and resolution of Receipts</t>
        </li>
        <li>
          <t>Discovery of Transparency Service Keys</t>
        </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 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-resources">
      <name>Resources</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>
          <t>an HTTP 3xx code, indicating to the client additional action they must take to complete the request, such as follow a redirection, or</t>
        </li>
        <li>
          <t>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:</t>
        </li>
      </ol>
      <ul spacing="normal">
        <li>
          <t>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.</t>
        </li>
        <li>
          <t>detail: A human-readable string describing the error in more depth, ideally with sufficient detail enabling the error to be rectified.</t>
        </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 resource 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"><![CDATA[
{
  / 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"><![CDATA[
{
  / 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>
      <t>The following HTTP resources <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 resource 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"><![CDATA[
GET /.well-known/scitt-keys HTTP/1.1
Host: transparency.example
Accept: application/cbor
]]></sourcecode>
        <t>Response:</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/cbor

Body (in CBOR diagnostic notation)

[
  {
    -1:1,
    -2:h'65eda5a1...9c08551d',
    -3:h'1e52ed75...0084d19c',
    1:2,
    2:'kid1'
  },
  {
    -1:1,
    -2:h'bac5b11c...d6a09eff',
    -3:h'20138bf8...bbfc117e',
    1:2,
    2:'kid2'
  }
]
]]></sourcecode>
        <t>The Transparency Service <bcp14>MAY</bcp14> stop returning at that resource the keys it no longer uses to issue Receipts, following a reasonable delay.
A delay is considered reasonable if it is sufficient for relying parties to have obtained the key needed to verify any previously issued Receipt.
Consistent with key management best practices described in <xref target="NIST.SP.800-57pt1r5"/> (Section 5.3.4), retired keys <bcp14>SHOULD</bcp14> remain available for as long as any Receipts signed with them may still need to be verified.</t>
      </section>
      <section anchor="sec-individual-transparency-service-key">
        <name>Individual Transparency Service Key</name>
        <t>This resource 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>The Transparency Service responds with a single COSE Key, as defined in <xref section="7" sectionFormat="of" target="RFC9052"/>.</t>
        <t>Request:</t>
        <sourcecode type="http-message"><![CDATA[
GET /.well-known/scitt-keys/{kid_value} HTTP/1.1
Host: transparency.example
Accept: application/cbor
]]></sourcecode>
        <t>Response:</t>
        <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/cbor

Body (in CBOR diagnostic notation)

{
  -1:1,
  -2:h'bac5b11c...d6a09eff',
  -3:h'20138bf8...bbfc117e',
  1:2,
  2:'kid_value'
}
]]></sourcecode>
        <t>The following expected error is defined and <bcp14>MUST</bcp14> be returned when the corresponding condition is encountered:</t>
        <sourcecode type="http-message"><![CDATA[
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>Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
        <t>If the <tt>kid</tt> values used by the service (<tt>{kid_value}</tt> in the request above) are not URL-safe, the resource <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 resource 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"><![CDATA[
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           /
  <<{
    / 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",
    }
  }>>,                          / Protected Header   /
  {},                           / Unprotected Header /
  / Payload, sha-256 digest of file stored at payload-location /
  h'935b5a91...e18a588a',
  h'269cd68f4211dffc...0dcb29c' / Signature /
])
]]></sourcecode>
        <t>A Transparency Service depends on 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>Signed Statements <bcp14>MAY</bcp14> use detached payloads, as described in <xref target="I-D.draft-ietf-scitt-architecture"/>.
When a Signed Statement is submitted with a detached payload,
the Transparency Service still requires access to the payload content in order to verify the signature as part of applying the Registration Policy.
The mechanism by which the payload is made available to the Transparency Service is implementation-specific.</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"><![CDATA[
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   / <<{
    / 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",
    },
  }>>,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        <<[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]>>
      ],
    },
  },
  / 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"><![CDATA[
HTTP/1.1 303 See Other
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose
Content-Length: 0
Retry-After: <seconds>
]]></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 <bcp14>MUST</bcp14> be returned when the corresponding conditions are encountered.
Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
          <sourcecode type="http-message"><![CDATA[
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"><![CDATA[
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"><![CDATA[
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"><![CDATA[
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"><![CDATA[
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 resource 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"><![CDATA[
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"><![CDATA[
HTTP/1.1 302 Found
Location: https://transparency.example/entries/67ed...befe
Content-Type: application/cose
Content-Length: 0
Retry-After: <seconds>
]]></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"><![CDATA[
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   / <<{
    / 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",
    },
  }>>,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        <<[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]>>
      ],
    },
  },
  / 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 <bcp14>MUST</bcp14> be returned when the corresponding conditions are encountered.
Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
          <sourcecode type="http-message"><![CDATA[
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"><![CDATA[
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"><![CDATA[
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"><![CDATA[
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"><![CDATA[
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"><![CDATA[
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"><![CDATA[
HTTP/1.1 429 Too Many Requests
Content-Type: application/concise-problem-details+cbor
Retry-After: <seconds>

{
  / title /         -1: \
          "Too Many Requests",
  / detail /        -2: \
          "Only <number> requests per <period> are allowed."
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="sec-resolve-receipt">
        <name>Resolve Receipt</name>
        <t>Request:</t>
        <sourcecode type="http-message"><![CDATA[
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"><![CDATA[
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   / <<{
    / 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",
    },
  }>>,
  / unprotected / {
    / proofs / 396 : {
      / inclusion / -1 : [
        <<[
          / size / 9, / leaf / 8,
          / inclusion path /
          h'7558a95f...e02e35d6'
        ]>>
      ],
    },
  },
  / 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"><![CDATA[
HTTP/1.1 404 Not Found
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: \
          "Not Found",
  / detail /        -2: \
          "Receipt with entry ID <id> not known \
          to this Transparency Service"
}
]]></sourcecode>
        </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-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 mitigations <bcp14>MUST</bcp14> be implemented.</t>
      </section>
      <section anchor="sec-threat-model">
        <name>Threat Model</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>
              <t>Threats to strong identification, for example representing the Statements from one issuer as those of another</t>
            </li>
            <li>
              <t>Threats to payload integrity, for example changing the contents of a Signed Statement before making it transparent</t>
            </li>
            <li>
              <t>Threats to non-equivocation, for example attacks that would enable the presentation or verification of divergent proofs for the same Statement payload</t>
            </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>The impact of DoS attacks can be detected by a 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, a DoS attack cannot cause the silent loss of a registration.
However, this relies on clients actively checking for Receipts and does not prevent the disruption itself.</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>MUST</bcp14> follow general good practice around defending against network attacks such as flooding, including defenses such as rate limiting.</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>
          </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 be 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>MUST</bcp14> be added to the protected header signed by the Issuer.
<xref target="RFC9921"/> defines COSE header parameters for including <xref target="RFC3161"/> timestamp tokens that <bcp14>MAY</bcp14> be used for this purpose.</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 anchor="sec-use-of-unauthenticated-http-metadata">
            <name>Use of Unauthenticated HTTP Metadata</name>
            <t>Implementations that serve multiple application profiles <bcp14>MAY</bcp14> use unauthenticated HTTP-layer signals, such as request headers or distinct registration endpoints, to route incoming Signed Statements to
profile-specific processing.</t>
            <t>However, these signals are not signed, are not committed to the Verifiable Data Structure, and cannot be replayed by Auditors.</t>
            <t>Implementations <bcp14>MUST NOT</bcp14> use unauthenticated signals as authoritative inputs to the registration decision.</t>
            <t>Implementations that use such signals for early dispatch <bcp14>MUST</bcp14> ensure that any processing decisions that affect the outcome of registration are fully determined by authenticated inputs, or are otherwise captured in the Verifiable Data Structure, such that the registration process remains deterministic and replayable by Auditors.</t>
            <t>The authoritative identification of the application profile is carried within the protected header or payload of the Signed Statement, and <bcp14>MUST</bcp14> be verified after signature authentication.</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>This section defines the <tt>/.well-known/scitt-keys</tt> resource in accordance with <xref target="RFC8615"/>.</t>
        <section anchor="sec-resource-definition">
          <name>Resource Definition</name>
          <t>The <tt>/.well-known/scitt-keys</tt> resource allows clients to discover the public keys used by a Transparency Service to issue Receipts.</t>
          <t>Clients interact with this resource by issuing an HTTP GET request to <tt>/.well-known/scitt-keys</tt>.
The Transparency Service <bcp14>MUST</bcp14> respond with a COSE Key Set (as defined in <xref section="7" sectionFormat="of" target="RFC9052"/>) serialized as <tt>application/cbor</tt>.</t>
          <t>The following media types are used with this resource:</t>
          <ul spacing="normal">
            <li>
              <t>Request: Clients <bcp14>SHOULD</bcp14> include <tt>Accept: application/cbor</tt> in the request.</t>
            </li>
            <li>
              <t>Response: The Transparency Service <bcp14>MUST</bcp14> use <tt>Content-Type: application/cbor</tt>.</t>
            </li>
          </ul>
          <t>The <tt>/.well-known/scitt-keys/{kid_value}</tt> sub-resource allows clients to resolve a single public key by its key identifier (<tt>kid</tt>).
Clients interact with this sub-resource by issuing an HTTP GET request.
The Transparency Service <bcp14>MUST</bcp14> respond with a single COSE Key (as defined in <xref section="7" sectionFormat="of" target="RFC9052"/>) serialized as <tt>application/cbor</tt>, or a 404 status if no matching key is found.</t>
          <t>The full normative behavior of these resources, including key lifecycle, error handling, and <tt>kid</tt> encoding requirements, is defined in <xref target="sec-transparency-service-keys"/> and <xref target="sec-individual-transparency-service-key"/>.</t>
        </section>
        <section anchor="sec-registration-template">
          <name>Registration Template</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>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <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>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="I-D.draft-ietf-scitt-architecture">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <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>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-22"/>
        </reference>
        <reference anchor="RFC8615">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <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>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <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>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <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>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9290">
          <front>
            <title>Concise Problem Details for Constrained Application Protocol (CoAP) APIs</title>
            <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>
          <seriesInfo name="RFC" value="9290"/>
          <seriesInfo name="DOI" value="10.17487/RFC9290"/>
        </reference>
        <reference anchor="RFC7515">
          <front>
            <title>JSON Web Signature (JWS)</title>
            <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>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <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>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC9679">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) Key Thumbprint</title>
            <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>
          <seriesInfo name="RFC" value="9679"/>
          <seriesInfo name="DOI" value="10.17487/RFC9679"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8792">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <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>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
        <reference anchor="RFC9921">
          <front>
            <title>CBOR Object Signing and Encryption (COSE) Header Parameter for Timestamp Tokens as Defined in RFC 3161</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <author fullname="M. Riechert" initials="M." surname="Riechert"/>
            <date month="February" year="2026"/>
            <abstract>
              <t>This document defines two CBOR Object Signing and Encryption (COSE) header parameters for incorporating timestamping based on RFC 3161 into COSE message structures (COSE_Sign and COSE_Sign1). This enables the use of established timestamping infrastructure per RFC 3161 in COSE-based protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9921"/>
          <seriesInfo name="DOI" value="10.17487/RFC9921"/>
        </reference>
        <reference anchor="RFC3161">
          <front>
            <title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="P. Cain" initials="P." surname="Cain"/>
            <author fullname="D. Pinkas" initials="D." surname="Pinkas"/>
            <author fullname="R. Zuccherato" initials="R." surname="Zuccherato"/>
            <date month="August" year="2001"/>
            <abstract>
              <t>This document describes the format of a request sent to a Time Stamping Authority (TSA) and of the response that is returned. It also establishes several security-relevant requirements for TSA operation, with regards to processing requests to generate responses. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3161"/>
          <seriesInfo name="DOI" value="10.17487/RFC3161"/>
        </reference>
        <reference anchor="NIST.SP.800-57pt1r5" target="https://doi.org/10.6028/NIST.SP.800-57pt1r5">
          <front>
            <title>Recommendation for Key Management: Part 1 - General</title>
            <author initials="E." surname="Barker" fullname="Elaine Barker">
              <organization/>
            </author>
            <date year="2020" month="May"/>
          </front>
          <seriesInfo name="NIST" value="Special Publication 800-57 Part 1 Revision 5"/>
        </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>
      <contact initials="D." surname="Brooks" fullname="Dick Brooks">
        <organization>Business Cyber Guardian</organization>
        <address>
          <postal>
            <country>United States</country>
          </postal>
          <email>dick@businesscyberguardian.com</email>
        </address>
      </contact>
      <t>Dick contributed use cases and helped improve example expressiveness and consistency.</t>
      <contact initials="R. A." surname="Martin" fullname="Robert Martin">
        <organization>MITRE Corporation</organization>
        <address>
          <postal>
            <country>United States</country>
          </postal>
          <email>ramartin@mitre.org</email>
        </address>
      </contact>
      <t>Bob contributed use cases and helped with authoring and improving the document.</t>
      <contact initials="S." surname="Lasker" fullname="Steve Lasker">
        <organization/>
        <address>
          <email>stevenlasker@hotmail.com</email>
        </address>
      </contact>
      <t>Steve contributed architectural insights, particularly around asynchronous operations and participated in the initial writing of the document.</t>
      <contact initials="N." surname="Bates" fullname="Nicole Bates">
        <organization>Microsoft</organization>
        <address>
          <postal>
            <country>United States</country>
          </postal>
          <email>nicolebates@microsoft.com</email>
        </address>
      </contact>
      <t>Nicole contributed reviews and edits that improved the quality of the text.</t>
      <contact initials="R." surname="Williams" fullname="Roy Williams">
        <organization/>
        <address>
          <postal>
            <country>USA</country>
          </postal>
          <email>roywill@msn.com</email>
        </address>
      </contact>
      <t>Roy contributed the receipt refresh use case and associated resource definition.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
