<?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-06" 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-06"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="J." surname="Geater" fullname="Jon Geater">
      <organization>DataTrails Inc.</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>jon.geater@datatrails.ai</email>
      </address>
    </author>
    <date year="2025" month="December" day="29"/>
    <area>Security</area>
    <workgroup>SCITT</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 75?>

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

<section anchor="sec-introduction">
      <name>Introduction</name>
      <t>The SCITT Architecture <xref target="I-D.draft-ietf-scitt-architecture"/> defines the core objects, identifiers and workflows necessary to interact with a SCITT Transparency Service:</t>
      <ul spacing="normal">
        <li>Signed Statements</li>
        <li>Receipts</li>
        <li>Transparent Statements</li>
        <li>Registration Policies</li>
      </ul>
      <t>SCRAPI defines the operations necessary to support supply chain transparency using COSE <xref target="RFC9052"/>:</t>
      <ul spacing="normal">
        <li>Issuance of Signed Statements</li>
        <li>Registration of Signed Statements</li>
        <li>Verification of Signed Statements</li>
        <li>Issuance of Receipts</li>
        <li>Verification of Receipts</li>
        <li>Production of Transparent Statements</li>
        <li>Verification of Transparent Statements</li>
      </ul>
      <t>In addition to these operational HTTP endpoints, this specification defines supporting endpoints:</t>
      <ul spacing="normal">
        <li>Resolving Verification Keys for Issuers</li>
        <li>Retrieving Receipts Asynchronously</li>
        <li>Retrieving Signed Statements from an Artifact Repository</li>
        <li>Retrieving Statements from an Artifact Repository</li>
        <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-endpoints">
      <name>Endpoints</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>
      <t>All messages are sent as HTTP GET or POST requests.</t>
      <t>If the Transparency Service cannot process a client's request, it <bcp14>MUST</bcp14> return either:</t>
      <ol spacing="normal" type="1">
        <li>an HTTP 3xx code, indicating to the client additional action they must take to complete the request, such as follow a redirection, or</li>
        <li>an HTTP 4xx or 5xx status code, and the body <bcp14>SHOULD</bcp14> be a Concise Problem Details object (application/concise-problem-details+cbor) <xref target="RFC9290"/> containing:</li>
      </ol>
      <ul spacing="normal">
        <li>title: A human-readable string identifying the error that prevented the Transparency Service from processing the request, ideally short and suitable for inclusion in log messages.</li>
        <li>detail: A human-readable string describing the error in more depth, ideally with sufficient detail enabling the error to be rectified.</li>
      </ul>
      <t>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>
      <t><tt>
Error code: `malformed` (The request could not be parsed)
</tt></t>
      <t>Clients <bcp14>SHOULD</bcp14> treat 500 and 503 HTTP status code responses as transient failures and <bcp14>MAY</bcp14> retry the same request without modification at a later date.</t>
      <t>Note that in the case of any error response, the Transparency Service <bcp14>MAY</bcp14> include a <tt>Retry-After</tt> header field per <xref target="RFC9110"/> in order to request a minimum time for the client to wait before retrying the request.
In the absence of this header field, this document does not specify a minimum.</t>
      <section anchor="sec-mandatory">
        <name>Mandatory</name>
        <t>The following HTTP endpoints are mandatory to implement to enable conformance to this specification.</t>
        <section anchor="sec-transparency-configuration">
          <name>Transparency Configuration</name>
          <t>This endpoint is used to discover the capabilities and current configuration of a Transparency Service implementing this specification.</t>
          <t>The Transparency Service responds with a CBOR map of configuration elements.
These elements are Transparency-Service specific.</t>
          <t>Contents of bodies are informative examples only.</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET /.well-known/scitt-configuration HTTP/1.1
Host: transparency.example
Accept: application/cbor
</sourcecode>
          <t>Response:</t>
          <sourcecode type="http-message">
HTTP/1.1 200 OK
Content-Type: application/cbor

Body (in CBOR diagnostic notation)

{
  "issuer": "https://transparency.example"
}
</sourcecode>
          <t>Responses to this message are vendor-specific, and out of the scope of this document.</t>
        </section>
        <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>
        </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 (Transparent Statement)      --- 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>
        <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 /
  null,                         / Detached Payload   /
  h'269cd68f4211dffc...0dcb29c' / Signature          /
])
</sourcecode>
          </section>
          <section anchor="sec-status-404-not-found-1">
            <name>Status 404 - Not Found</name>
            <t>The following expected errors are defined.
Implementations <bcp14>MAY</bcp14> return other errors, so long as they are valid <xref target="RFC9290"/> objects.</t>
            <sourcecode type="http-message">
HTTP/1.1 404 Not Found
Content-Type: application/concise-problem-details+cbor

{
  / title /         -1: \
          "Not Found",
  / detail /        -2: \
          "No Signed Statement found with the specified ID"
</sourcecode>
          </section>
          <section anchor="sec-eventual-consistency">
            <name>Eventual Consistency</name>
            <t>For all responses additional eventually consistent operation details <bcp14>MAY</bcp14> be present.
Support for eventually consistent Receipts is implementation specific, and out of scope for this specification.</t>
          </section>
        </section>
        <section anchor="sec-resolve-issuer">
          <name>Resolve Issuer</name>
          <t>This endpoint is inspired by <xref target="I-D.draft-ietf-oauth-sd-jwt-vc"/>.</t>
          <t>The following is a non-normative example of a HTTP request for the Issuer Metadata configuration when <tt>iss</tt> is set to <tt>https://transparency.example/tenant/1234</tt>:</t>
          <t>Request:</t>
          <sourcecode type="http-message">
GET /.well-known/issuer/tenant/1234 HTTP/1.1
Host: transparency.example
Accept: application/json
</sourcecode>
          <t>Response:</t>
          <sourcecode type="http-message">
HTTP/1.1 200 OK
Content-Type: application/json

{
  "issuer": "https://transparency.example/tenant/1234",
  "jwks": {
    "keys": [
      {
        "kid": "urn:ietf:params:oauth\
                 :jwk-thumbprint:sha-256:Dgyo...agRo",
        "alg": "ES256",
        "use": "sig",
        "kty": "EC",
        "crv": "P-256",
        "x": "p-kZ4uOASt9IjQRTrWikGnlbGb-z3LU1ltwRjZaOS9w",
        "y": "ymXE1yltJPXgjQSRe9NweN3TLlSUALYZTzy83NVfdg0"
      },
      {
        "kid": "urn:ietf:params:oauth\
                 :jwk-thumbprint:sha-256:4Fzx...0ClE",
        "alg": "HPKE-Base-P256-SHA256-AES128GCM",
        "use": "enc",
        "kty": "EC",
        "crv": "P-256",
        "x": "Vreuil95vzR6ixutgBBf2ota-rj97MvKfuJWB4qqp5w",
        "y": "NkUTeaoNlLRRsVRxHGDA-RsA0ex2tSpcd3G-4SmKXbs"
      }
    ]
  }
}
</sourcecode>
        </section>
      </section>
    </section>
    <section anchor="sec-privacy-considerations">
      <name>Privacy Considerations</name>
      <t>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-transparency-configuration">
        <name>Well-Known URI for Transparency Configuration</name>
        <t>The following value is requested to be registered in the "Well-Known URIs" registry (using the template from <xref target="RFC8615"/>):</t>
        <t>URI suffix: scitt-configuration
Change controller: IETF
Specification document(s): RFCthis
Status: Permanent
Related information: <xref target="I-D.draft-ietf-scitt-architecture"/></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="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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

-->

</rfc>
