Skip to content

Issue Certificate

POST
/certificates

Issues a new Certificate proving that a Resource has fulfilled an Action requirement. Preconditions: the Resource and Action must belong to the same Space, the Resource’s type must match the Action’s targetResourceType (type-matching rule), and issuedAt must be <= expiresAt. The Space must be active.

X-Space-Id
required
string format: uuid

UUID of the target Space (tenant boundary). Validated against user access.

object
resourceId
required

ID of the Resource this certificate is for

string format: uuid
Example
550e8400-e29b-41d4-a716-446655440000
actionId
required

ID of the Action this certificate proves compliance with

string format: uuid
Example
660e8400-e29b-41d4-a716-446655440000
name
required

Name or description of the certificate

string
Example
Fire safety certificate 2026
issuedAt
required

Date the certificate was issued (ISO 8601)

string format: date
Example
2026-01-15
expiresAt
required

Expiration date (ISO 8601, must be after issuedAt)

string format: date
Example
2031-01-15
object
id
required

Certificate ID

string format: uuid
Example
550e8400-e29b-41d4-a716-446655440000
spaceId
required

Space ID

string format: uuid
Example
660e8400-e29b-41d4-a716-446655440000
resourceId
required

Resource ID

string format: uuid
Example
770e8400-e29b-41d4-a716-446655440000
actionId
required

Action ID

string format: uuid
Example
880e8400-e29b-41d4-a716-446655440000
name
required

Certificate name

string
Example
Fire safety certificate 2026
issuedAt
required

Issue date (ISO 8601)

string
Example
2026-01-15
expiresAt
required

Expiration date (ISO 8601)

string
Example
2031-01-15
attachments
required

Attached files

Array<object>
object
id
required

Attachment ID

string format: uuid
Example
880e8400-e29b-41d4-a716-446655440000
url
required

File URL

string
Example
https://storage.example.com/docs/certificate.pdf
label
required

Human-readable label

string
Example
Certificate PDF
createdAt
required

Upload timestamp (ISO 8601)

string
Example
2026-01-15T10:30:00.000Z

Unauthorized — missing or invalid JWT

Forbidden — insufficient permissions

Resource not found

Validation failed — invalid input