/api/certificates resource is the operational core of TigerTrust — every certificate the platform manages, whether discovered from the field, imported from an external CA, or issued through the internal PKI, is represented here.
All endpoints require an authenticated session or an API key with a scope containing certificates:read (for reads) or certificates:write (for mutations). Every mutation is written to the audit log.
Statistics
Aggregated counts of the workspace’s certificate inventory. Useful for dashboards and health checks.List certificates
GET /api/certificates
One of
active, expiring, expired, revoked.Case-insensitive substring match on
commonName and issuer.e.g.
SHA-256, RSA, ECDSA, ED25519.TLS, S/MIME, Code Signing, or Client Auth. Always populated.internal (private key downloadable), agent, vault, or external.Get a single certificate
GET /api/certificates/:id
Numeric certificate ID.
certificate string when available. Returns 404 NOT_FOUND if the ID does not exist.
Create (register) a certificate
POST /api/certificates
Records an already-existing certificate in the inventory. Use this for imports from external sources when discovery is not desired. Fields are validated against insertCertificateSchema from @shared/schema.
PEM-encoded certificate body.
201 Created with the persisted resource in the standard data envelope.
Issue a new certificate
POST /api/certificates/issue
Unified endpoint that routes to either the internal PKI Core or an external CA (Let’s Encrypt, DigiCert, Sectigo, Vault, AWS PCA, ADCS, EST/SCEP, etc.). If no csr is supplied, TigerTrust generates a key pair server-side.
ID of the target CA. Combine with
caType to disambiguate.PEM-encoded CSR. Required if
commonName is omitted.Required if
csr is omitted.DNS names and/or IP addresses. Auto-classified by format.
PKI Core template, e.g.
web_server, code_signing.{ organization, organizationalUnit, country, state, locality }.503 SERVICE_UNAVAILABLE when PKI Core is offline, or 400 UNSUPPORTED_CA when the CA type has no matching renewal method.
Update a certificate
PUT /api/certificates/:id
Accepts any subset of the create fields. Common uses: toggling autoRenewal, updating metadata, or annotating location.
Delete a certificate
DELETE /api/certificates/:id
Removes the certificate record from the inventory. Returns 204 No Content. This does not revoke the certificate — call /revoke for that.
Toggle auto-renewal
PUT /api/certificates/:id/auto-renew
Revoke
POST /api/certificates/:id/revoke
Free-form reason for the audit log. Defaults to
unspecified.status to revoked. Returns 400 VALIDATION_ERROR if the certificate is already revoked.
Download
GET /api/certificates/:id/download?format=pem|der
Returns the raw certificate bytes with Content-Disposition: attachment. Default format is PEM.
Download private key
GET /api/certificates/:id/private-key
Only works for certificates where issuanceSource === "internal". Returns 403 PRIVATE_KEY_NOT_AVAILABLE otherwise. Every successful download is audit-logged.
Private-key status probe
GET /api/certificates/:id/private-key-status
Cheap check that tells the UI whether the download button should be enabled — returns { downloadable, issuanceSource, reason }.
Assign an identity
POST /api/certificates/:id/assign-identity
Attach the certificate to a machine identity record.
Related endpoints
GET /api/certificates/revocation-requests— pending revocation approvalsGET /api/certificates/crl— CRL entries for internal CAsGET|POST|PUT|DELETE /api/certificate-templates— reusable issuance profilesGET|POST /api/certificate-usage— track where a certificate is deployedGET|POST /api/certificate-requests+/approve+/reject— approval-gated CSR workflow
See also
- Certificate authorities — connect and manage CAs
- Workflows — automate renewal and revocation
- Discovery — feed the inventory automatically
- Attestation — TPM-gated issuance for IoT devices