Enum options:
ACTIVITY_TYPE_CREATE_TVC_DEPLOYMENTTimestamp (in milliseconds) of the request, used to verify liveness of user requests.
Unique identifier for a given Organization.
The parameters object containing the specific intent data for this activity.
Show details
Show details
Arguments to pass to the pivot binary at startup. Encoded as a list of strings, for example [“—foo”, “bar”]
Show item details
Show item details
Array item type: string
item field
The activity object containing type, intent, and result
Show activity details
Show activity details
curl --request POST \
--url https://api.turnkey.com/public/v1/submit/create_tvc_deployment \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header "X-Stamp: <string> (see Authorizations)" \
--data '{
"type": "ACTIVITY_TYPE_CREATE_TVC_DEPLOYMENT",
"timestampMs": "<string> (e.g. 1746736509954)",
"organizationId": "<string> (Your Organization ID)",
"parameters": {
"appId": "<string>",
"qosVersion": "<string>",
"pivotContainerImageUrl": "<string>",
"pivotPath": "<string>",
"pivotArgs": [
"<string>"
],
"expectedPivotDigest": "<string>",
"nonce": "<number>",
"pivotContainerEncryptedPullSecret": "<string>",
"debugMode": "<boolean>",
"healthCheckType": "<TVC_HEALTH_CHECK_TYPE_HTTP>",
"healthCheckPort": "<number>",
"publicIngressPort": "<number>"
}
}'
import { Turnkey } from "@turnkey/sdk-server";
const turnkeyClient = new Turnkey({
apiBaseUrl: "https://api.turnkey.com",
apiPublicKey: process.env.API_PUBLIC_KEY!,
apiPrivateKey: process.env.API_PRIVATE_KEY!,
defaultOrganizationId: process.env.ORGANIZATION_ID!,
});
const response = await turnkeyClient.apiClient().createTvcDeployment({
appId: "<string> (The unique identifier of the to-be-deployed TVC application)",
qosVersion: "<string> (The QuorumOS version to use to deploy this application)",
pivotContainerImageUrl: "<string> (URL of the container containing the pivot binary)",
pivotPath: "<string> (Location of the binary in the pivot container)",
pivotArgs: ["<string>"] // Arguments to pass to the pivot binary at startup. Encoded as a list of strings, for example ["--foo", "bar"],
expectedPivotDigest: "<string> (Digest of the pivot binary in the pivot container. This value will be inserted in the QOS manifest to ensure application integrity.)",
nonce: 0 // Optional nonce to ensure uniqueness of the deployment manifest. If not provided, it defaults to the current Unix timestamp in seconds.,
pivotContainerEncryptedPullSecret: "<string> (Optional encrypted pull secret to authorize Turnkey to pull the pivot container image. If your image is public, leave this empty.)",
debugMode: true // Optional flag to indicate whether to deploy the TVC app in debug mode, which includes additional logging and debugging tools. Default is false.,
healthCheckType: "<TVC_HEALTH_CHECK_TYPE_HTTP>" // healthCheckType field,
healthCheckPort: 0 // Port to use for health checks.,
publicIngressPort: 0 // Port to use for public ingress.
});
{
"activity": {
"id": "<activity-id>",
"status": "ACTIVITY_STATUS_COMPLETED",
"type": "ACTIVITY_TYPE_CREATE_TVC_DEPLOYMENT",
"organizationId": "<organization-id>",
"timestampMs": "<timestamp> (e.g. 1746736509954)",
"result": {
"activity": {
"id": "<string>",
"organizationId": "<string>",
"status": "<string>",
"type": "<string>",
"intent": {
"createTvcDeploymentIntent": {
"appId": "<string>",
"qosVersion": "<string>",
"pivotContainerImageUrl": "<string>",
"pivotPath": "<string>",
"pivotArgs": [
"<string>"
],
"expectedPivotDigest": "<string>",
"nonce": "<number>",
"pivotContainerEncryptedPullSecret": "<string>",
"debugMode": "<boolean>",
"healthCheckType": "<TVC_HEALTH_CHECK_TYPE_HTTP>",
"healthCheckPort": "<number>",
"publicIngressPort": "<number>"
}
},
"result": {
"createTvcDeploymentResult": {
"deploymentId": "<string>",
"manifestId": "<string>"
}
},
"votes": "<array>",
"fingerprint": "<string>",
"canApprove": "<boolean>",
"canReject": "<boolean>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
}
}
}