Signer API Reference
| Field | Value |
|---|---|
| Source spec | signer/openapi/v1.json |
| OpenAPI version | 3.1.1 |
| API version | 1.0.0 |
| Operations | 20 |
| Path filter | All paths |
Operations
GET /
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | StellaOps.Signer.WebService |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /api/v1/anchors/{anchorId}/keys
Add a new signing key to a trust anchor
Adds a new public signing key to the specified trust anchor, recording the addition in the audit log. Returns 201 Created with the updated allowed key IDs and audit log reference. Returns 404 if the anchor is not found. Requires KeyManagement authorization.
| Property | Value |
|---|---|
| Operation ID | AddKey |
| Tags | KeyRotation, TrustAnchors |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
anchorId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
400 | Bad Request | application/json |
404 | Not Found | application/json |
GET /api/v1/anchors/{anchorId}/keys/history
Get the full key history for a trust anchor
Returns the complete key lifecycle history for a trust anchor including all added, revoked, and expired keys with their timestamps and revocation reasons. Requires KeyManagement authorization.
| Property | Value |
|---|---|
| Operation ID | GetKeyHistory |
| Tags | KeyRotation, TrustAnchors |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
anchorId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
404 | Not Found | application/json |
GET /api/v1/anchors/{anchorId}/keys/warnings
Get rotation warnings for a trust anchor
Returns active rotation warnings for a trust anchor such as keys approaching expiry or requiring rotation. Includes the warning type, message, and critical deadline timestamp. Requires KeyManagement authorization.
| Property | Value |
|---|---|
| Operation ID | GetRotationWarnings |
| Tags | KeyRotation, TrustAnchors |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
anchorId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
404 | Not Found | application/json |
POST /api/v1/anchors/{anchorId}/keys/{keyId}/revoke
Revoke a signing key from a trust anchor
Revokes a specific signing key from a trust anchor with a mandatory reason and optional effective timestamp. Records the revocation in the audit log. Returns the updated allowed and revoked key lists. Requires KeyManagement authorization.
| Property | Value |
|---|---|
| Operation ID | RevokeKey |
| Tags | KeyRotation, TrustAnchors |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
anchorId | path | yes | |
keyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/json |
404 | Not Found | application/json |
GET /api/v1/anchors/{anchorId}/keys/{keyId}/validity
Check if a key was valid at a specific time
Checks whether a specific key was in a valid (non-revoked, non-expired) state at the given timestamp. Defaults to the current time if no signedAt is provided. Used for retrospective signature verification. Requires KeyManagement authorization.
| Property | Value |
|---|---|
| Operation ID | CheckKeyValidity |
| Tags | KeyRotation, TrustAnchors |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
anchorId | path | yes | |
keyId | path | yes | |
signedAt | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
404 | Not Found | application/json |
GET /api/v1/buildinfo
API alias for /buildinfo.json (same payload).
| Property | Value |
|---|---|
| Operation ID | StellaOpsBuildInfoApi |
| Tags | StellaOps.Signer.WebService |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/ceremonies
List ceremonies with optional filters
Returns a paginated list of signing ceremonies optionally filtered by state, operation type, initiator, or tenant. Supports limit and offset for pagination. Requires ceremony:read authorization.
| Property | Value |
|---|---|
| Operation ID | ListCeremonies |
| Tags | Ceremonies |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
initiatedBy | query | no | |
limit | query | no | |
offset | query | no | |
operationType | query | no | |
state | query | no | |
tenantId | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
POST /api/v1/ceremonies
Create a new signing ceremony
Initiates a new M-of-N dual-control signing ceremony for key management operations such as key generation, rotation, revocation, or recovery. Returns 201 Created with the ceremony record including required approval threshold and expiry. Requires ceremony:create authorization.
| Property | Value |
|---|---|
| Operation ID | CreateCeremony |
| Tags | Ceremonies |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
201 | Created | application/json |
400 | Bad Request | application/problem+json |
403 | Forbidden | application/problem+json |
GET /api/v1/ceremonies/{ceremonyId}
Get a ceremony by ID
Returns the full ceremony record including operation type, state, approvals received, approval threshold, and expiry. Returns 404 if the ceremony is not found. Requires ceremony:read authorization.
| Property | Value |
|---|---|
| Operation ID | GetCeremony |
| Tags | Ceremonies |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
ceremonyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
404 | Not Found | application/problem+json |
DELETE /api/v1/ceremonies/{ceremonyId}
Cancel a pending ceremony
Cancels a pending or partially approved signing ceremony with an optional reason. Returns 204 No Content on success. Returns 409 Conflict if the ceremony has already been executed, expired, or cancelled. Requires ceremony:cancel authorization.
| Property | Value |
|---|---|
| Operation ID | CancelCeremony |
| Tags | Ceremonies |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
ceremonyId | path | yes | |
reason | query | no |
Responses:
| Status | Description | Content types |
|---|---|---|
204 | No Content | - |
404 | Not Found | application/problem+json |
409 | Conflict | application/problem+json |
POST /api/v1/ceremonies/{ceremonyId}/approve
Submit an approval for a ceremony
Submits a signed approval for a dual-control ceremony. Requires a valid base64-encoded approval signature and optional signing key ID. Returns 409 Conflict on duplicate approval or terminal ceremony state. Requires ceremony:approve authorization.
| Property | Value |
|---|---|
| Operation ID | ApproveCeremony |
| Tags | Ceremonies |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
ceremonyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/problem+json |
404 | Not Found | application/problem+json |
409 | Conflict | application/problem+json |
POST /api/v1/ceremonies/{ceremonyId}/execute
Execute an approved ceremony
Executes a fully approved signing ceremony once the approval threshold has been reached. Performs the key operation and records the execution. Returns 409 Conflict if the ceremony is not fully approved, already executed, expired, or cancelled. Requires ceremony:execute authorization.
| Property | Value |
|---|---|
| Operation ID | ExecuteCeremony |
| Tags | Ceremonies |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
ceremonyId | path | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/problem+json |
404 | Not Found | application/problem+json |
409 | Conflict | application/problem+json |
POST /api/v1/signer/sign/dsse
Signs exactly one DSSE payload shape with the configured KMS or keyless mode: either predicateType plus predicate, or directPayload. A predicate request supplies exactly one producer identity as either typed producer or the legacy scannerImageDigest fallback. A direct payload requires typed producer and forbids predicateType, predicate, and scannerImageDigest. Subject and PoE are required for both shapes. Requires proof of entitlement in JWT or mTLS format and returns the signed envelope, certificate chain, and signing policy metadata.
| Property | Value |
|---|---|
| Operation ID | SignDsse |
| Tags | Signer |
| Auth | Not declared |
| Request body | application/json |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
Idempotency-Key | header | no |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | application/json |
400 | Bad Request | application/problem+json |
403 | Forbidden | application/problem+json |
409 | Conflict | application/problem+json |
425 | application/problem+json | |
429 | Too Many Requests | application/problem+json |
500 | Internal Server Error | application/problem+json |
POST /api/v1/signer/verify/dsse
Verifies a DSSE envelope signature against the configured signing key. Accepts the full bundle or a raw DSSE envelope. Returns a verification result indicating whether the signature matches the configured key ID.
| Property | Value |
|---|---|
| Operation ID | VerifyDsse |
| Tags | Signer |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /api/v1/signer/verify/referrers
Verifies the release integrity of a container image or artifact by digest using the OCI referrers API. Returns whether the artifact has a trusted signature from the configured release signer.
| Property | Value |
|---|---|
| Operation ID | VerifyReferrers |
| Tags | Signer |
| Auth | Not declared |
| Request body | - |
Parameters:
| Name | In | Required | Description |
|---|---|---|---|
digest | query | yes |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /buildinfo.json
Image build provenance (module, gitSha, gitCommitTime, imageBuiltAt, branch) for drift detection.
| Property | Value |
|---|---|
| Operation ID | StellaOpsBuildInfoFile |
| Tags | StellaOps.Signer.WebService |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /doctor/checks
| Property | Value |
|---|---|
| Operation ID | - |
| Tags | Health |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
POST /internal/plugins/probe
Probe Signer crypto provider readiness.
| Property | Value |
|---|---|
| Operation ID | SignerPluginProbe |
| Tags | StellaOps.Signer.WebService |
| Auth | Not declared |
| Request body | application/json |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
GET /internal/plugins/status
Return canonical Signer crypto provider plugin status.
| Property | Value |
|---|---|
| Operation ID | SignerPluginStatus |
| Tags | StellaOps.Signer.WebService |
| Auth | Not declared |
| Request body | - |
Responses:
| Status | Description | Content types |
|---|---|---|
200 | OK | - |
