Skip to content

Trust a signing key

POST
/v1/signing-keys
curl --request POST \
--url https://example.com/v1/signing-keys \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "keyId": "example", "algorithm": "ed25519", "publicKey": "example", "label": "example" }'

Adds a public key to the tenant’s trust list: deployments it signs verify. Needs the signing-keys:write capability. Trusting the same key again answers 200; a known keyId with a different public key is 409 signing-key-conflict (rotate under a new id). Mounted when the deployment supplies a signing-key registry.

Idempotency-Key
string
>= 1 characters

Caller-supplied idempotency key. Retries with the same key return the original response byte-identical (per docs/API-ROUTE-CONVENTIONS.md §3.1).

Media typeapplication/json
object
keyId
required

The id deployment envelopes name as signerKeyId. Bound to publicKey for good: rotate by trusting a new id.

string
/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/
algorithm
string
default: ed25519
Allowed values: ed25519
publicKey
required

Base64 of the 32 raw bytes of the Ed25519 public key.

string
label
string
<= 200 characters

Already trusted.

Media typeapplication/json

A public key the tenant trusts to sign deployments (POST /v1/deployments). A revoked key stays readable, with revokedAt, so the deployments it signed can be audited; it verifies no new ones.

object
keyId
required

The signer key id a deployment envelope names.

string
tenantId
required
string format: uuid
algorithm
required
string
Allowed values: ed25519
publicKey
required

Base64 of the raw public-key bytes (32 for Ed25519).

string
label
string
createdAt
required
string format: date-time
revokedAt
string format: date-time
revokedReason
string
Example
{
"algorithm": "ed25519"
}

Trusted.

Media typeapplication/json

A public key the tenant trusts to sign deployments (POST /v1/deployments). A revoked key stays readable, with revokedAt, so the deployments it signed can be audited; it verifies no new ones.

object
keyId
required

The signer key id a deployment envelope names.

string
tenantId
required
string format: uuid
algorithm
required
string
Allowed values: ed25519
publicKey
required

Base64 of the raw public-key bytes (32 for Ed25519).

string
label
string
createdAt
required
string format: date-time
revokedAt
string format: date-time
revokedReason
string
Example
{
"algorithm": "ed25519"
}

Malformed request body.

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

Missing / malformed / expired / revoked bearer token.

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

keyId is already trusted with a different public key (signing-key-conflict), or was revoked (signing-key-revoked: revocation is final).

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

Server error (unmapped domain code or framework crash).

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}