Sign SSH Certificate
const url = 'https://example.com/vault/v1/workspaces/example/engines/qibdo/ssh/example/certificates:sign';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"workspace":"example","source_role":"example","public_key":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/vault/v1/workspaces/example/engines/qibdo/ssh/example/certificates:sign \ --header 'Content-Type: application/json' \ --data '{ "workspace": "example", "source_role": "example", "public_key": "example" }'Signs a client SSH public key with the workspace SSH CA, returning a
short-lived OpenSSH certificate (ssh-rsa-cert-v01@openssh.com ... line).
The signed certificate plus its serial number is returned in the response;
a QibdoLease is created so the certificate can be revoked engine-side
before its own validity window expires.
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”The workspace to issue the SSH certificate under.
The pre-configured SSH role bound to the workspace SSH CA.
Request Body required
Section titled “Request Body required ”Request payload for Sign Ssh Qibdo Certificate
Carries the input fields required to sign ssh qibdo certificate.
object
The workspace to issue the SSH certificate under.
The pre-configured SSH role bound to the workspace SSH CA.
The OpenSSH-formatted client public key to sign (e.g., ssh-rsa AAAAB3...).
Example generated
{ "workspace": "example", "source_role": "example", "public_key": "example"}Responses
Section titled “ Responses ”OK
Response payload from Sign Ssh Qibdo Certificate
Carries the output produced by sign ssh qibdo certificate.
object
The OpenSSH-formatted signed certificate (ssh-rsa-cert-v01@openssh.com ...).
Returned exactly once — clients MUST persist it before the lease expires.
The serial number assigned by the SSH CA at signing time.
The lease metadata that governs the certificate’s lifetime.
object
The unique identifier of the lease (UUID).
The workspace this lease belongs to (UUID, weak reference to taxonomy).
The principal (IAM user / service account) the lease was issued to.
Initial time-to-live for the lease.
Maximum total lifetime including renewals — capped by the engine.
Whether the lease can be renewed.
Whether the lease can be revoked early.
Timestamp when the lease was issued.
Timestamp when the lease expires (may be extended by RenewQibdoLease).
Current lifecycle status of the lease.
The engine that produced this lease (database / cloud_aws / cloud_gcp / cloud_azure / ssh / kubernetes).
Engine-specific role identifier the lease was issued against (e.g., the vault
database role name for database leases).
The engine-side lease identifier (e.g., vault lease ID). Used as the prefix key for bulk-revoke operations.
Timestamp when the lease metadata row was created (server-managed).
Timestamp when the lease metadata was last modified (server-managed).
Weak reference to a topology Location — where this resource resides. Defaults to the global location when omitted at creation and is immutable thereafter. Only the global location is available in this release.
Example
{ "lease": { "status": "LEASE_STATUS_UNSPECIFIED", "source_type": "LEASE_SOURCE_TYPE_UNSPECIFIED" }}default
Section titled “default ”Default error response
The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC. Each Status message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the API Design Guide.
object
The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
A list of messages that carry the error details. There is a common set of message types for APIs to use.
Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.
object
The type of the serialized message.
Example generated
{ "code": 1, "message": "example", "details": [ { "@type": "example" } ]}