Reference
View as MarkdownCertificates API
3 operations. Every call needs a session cookie or an Authorization: Bearer nct_… token unless marked Public. Conventions, errors and scopes
/certificates/{certificateId}Delete a certificate (staged removal when it is installed)
Refused with 409 certificate_in_use while a domain pins it.
| Parameter | In | Type | Description |
|---|---|---|---|
certificateIdrequired | path | string |
Response 204 · No Content
No body.
Errors
401Unauthorized403Forbidden404Not Found409Conflictcertificate_in_use422Unprocessable Entity500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.
/servers/{serverId}/certificatesList a server's custom certificates
| Parameter | In | Type | Description |
|---|---|---|---|
serverIdrequired | path | string |
Response 200 · OK · application/json
CertificatesOutputBody
- ServerCertificate[] | nullrequired
Errors
401Unauthorized403Forbidden404Not Found422Unprocessable Entity500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.
/servers/{serverId}/certificatesUpload a custom TLS certificate (staged until the proxy is deployed)
Needs proxy:write. The leaf is the first certificate of the chain; encrypted keys, mismatching keys, expired and not-yet-valid certificates and certificates without a SAN are rejected. The key is sealed at rest and never returned.
| Parameter | In | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string | Client-chosen key (<=255 chars). A retry with the same key replays the original response for 24 hours. |
serverIdrequired | path | string |
Request body · application/json · required
UploadCertificateInputBody
- certPemstringrequiredServerCertificate chain in PEM, leaf first
- keyPemstringrequiredUnencrypted private key in PEM. Write-only: sealed at rest, never returned.
- namestringrequiredUnique per server
Response 201 · Created · application/json
ServerCertificate
- appliedAtstring (date-time) | nullrequired
- changeenum: none | add | removerequiredStaged change awaiting Deploy proxy
- createdAtstring (date-time)required
- daysToExpiryinteger (int64)requiredWhole days until NotAfter (negative when expired)
- domainsstring[] | nullrequiredSubject Alternative Names (DNS and IP)
- fingerprintstringrequiredSHA-256 of the leaf certificate, hex
- idstringrequired
- issuerstringrequired
- namestringrequired
- notAfterstring (date-time)required
- notBeforestring (date-time)required
- serverIdstringrequired
- statusenum: pending | active | errorrequiredpending: never applied; active: loaded by the proxy; error: expired or the proxy could not load it
- statusMessagestringrequired
Errors
401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.