> ## Documentation Index > Fetch the complete documentation index at: https://support.fortanix.com/llms.txt > Use this file to discover all available pages before exploring further. # Update details of a particular app > Update a particular app. ## OpenAPI ````json PATCH /v1/apps/{app-id} { "openapi": "3.0.4", "info": { "title": "Confidential Computing Manager", "description": "Fortanix Confidential Computing Manager Backend. These are APIs using which the frontend and other clients (compute node agents) interact with Fortanix Confidential Computing Manager functionalities, which include compute node and app enrollment, attestation and signing, and Certificate Authority.", "termsOfService": "https://www.fortanix.com/legal/terms/", "contact": { "name": "Fortanix Support", "url": "https://support.fortanix.com/hc/en-us/categories/360003107511-Confidential-Computing-Manager", "email": "support@fortanix.com" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" }, "version": "2.0.0" }, "servers": [ { "url": "https://ccm.fortanix.com" } ], "paths": { "/v1/apps/{app-id}": { "patch": { "tags": [ "App" ], "summary": "Update details of a particular app.", "description": "Update a particular app.", "operationId": "updateApp", "parameters": [ { "$ref": "#/components/parameters/AppId" } ], "requestBody": { "$ref": "#/components/requestBodies/AppBodyUpdateRequest" }, "responses": { "200": { "description": "Details of an app.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/App" } } } } }, "security": [ { "bearerToken": [] } ], "x-auth-resource": "Writer,Manager,ActiveAccount" } } }, "components": { "parameters": { "AppId": { "name": "app-id", "in": "path", "description": "UUID of an app.", "required": true, "schema": { "type": "string", "format": "uuid" } } }, "requestBodies": { "AppBodyUpdateRequest": { "description": "Status of an app for a compute node.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppBodyUpdateRequest" } } }, "required": true, "x-bodyName": "body" } }, "schemas": { "App": { "required": [ "name", "input_image_name", "output_image_name", "isvprodid", "isvsvn", "mem_size", "threads", "app_id", "default_build_settings" ], "type": "object", "properties": { "created_at": { "type": "integer", "description": "Timestamp of image addition to the system.", "format": "int64" }, "updated_at": { "type": "integer", "description": "Timestamp of image updation to the system.", "format": "int64" }, "name": { "type": "string", "description": "Name of the app." }, "description": { "type": "string", "description": "Description of the app." }, "app_id": { "type": "string", "description": "UUID for the app.", "format": "uuid" }, "input_image_name": { "type": "string", "description": "Input image name of images for apps." }, "output_image_name": { "type": "string", "description": "Output image name of images for apps." }, "isvprodid": { "type": "integer", "description": "Deprecated. ISV Product Id.", "format": "int32" }, "isvsvn": { "type": "integer", "description": "Deprecated. ISV Security Version Number.", "format": "int32" }, "mem_size": { "type": "integer", "description": "Deprecated. Memory size required for the image.", "format": "int64" }, "threads": { "type": "integer", "description": "Deprecated. Threads required for the image.", "format": "int32" }, "default_build_settings": { "$ref": "#/components/schemas/DefaultBuildSettings" }, "allowed_domains": { "type": "array", "items": { "type": "string" }, "description": "A set of domains requested for this application; need to be approved." }, "whitelisted_domains": { "type": "array", "items": { "type": "string" }, "description": "A set of domains approved for usage by this application." }, "nodes": { "type": "array", "items": { "$ref": "#/components/schemas/AppNodeInfo" } }, "advanced_settings": { "$ref": "#/components/schemas/AdvancedSettings" }, "pending_task_id": { "type": "string", "description": "UUID of pending domain whitelist task for the app.", "format": "uuid" }, "domains_added": { "type": "array", "items": { "type": "string" } }, "domains_removed": { "type": "array", "items": { "type": "string" } }, "labels": { "type": "object", "additionalProperties": { "type": "string" } }, "custom_metadata": { "type": "object", "additionalProperties": { "type": "string" } }, "certificate_policy": { "$ref": "#/components/schemas/CertificateIssuancePolicy" }, "signers": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicationSigner" } }, "marketplace_app_id": { "type": "string", "description": "Id of the corresponding marketplace listing.", "format": "uuid" }, "group_id": { "type": "string", "description": "Group Id", "format": "uuid" } } }, "AppBodyUpdateRequest": { "type": "object", "properties": { "description": { "type": "string", "description": "Description of the app." }, "input_image_name": { "type": "string", "description": "Input image name of images for apps." }, "output_image_name": { "type": "string", "description": "Output image name of images for apps." }, "isvsvn": { "type": "integer", "description": "ISV Security Version Number.", "format": "int32" }, "isvprodid": { "type": "integer", "description": "ISV Product Id.", "format": "int32" }, "mem_size": { "type": "integer", "description": "Memory size required for the image.", "format": "int64" }, "threads": { "type": "integer", "description": "Threads required for the image.", "format": "int32" }, "default_build_settings": { "$ref": "#/components/schemas/DefaultBuildSettings" }, "allowed_domains": { "type": "array", "items": { "type": "string" }, "description": "A set of domains requested for this application; need to be approved." }, "advanced_settings": { "$ref": "#/components/schemas/AdvancedSettings" }, "labels": { "$ref": "#/components/schemas/PatchRequest" }, "custom_metadata": { "$ref": "#/components/schemas/PatchRequest" }, "certificate_policy": { "$ref": "#/components/schemas/CertificateIssuancePolicy" }, "signers": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicationSigner" } }, "group_id": { "type": "string", "format": "uuid" } }, "description": "Request to update an app." }, "DefaultBuildSettings": { "type": "object", "properties": { "sgx": { "$ref": "#/components/schemas/DefaultSgxBuildSettings" }, "nitro_enclaves": { "$ref": "#/components/schemas/DefaultNitroEnclavesBuildSettings" } }, "description": "DefaultBuildSettings for builds" }, "AppNodeInfo": { "required": [ "certificate", "created_at", "node_id" ], "type": "object", "properties": { "certificate": { "$ref": "#/components/schemas/Certificate" }, "created_at": { "type": "integer", "description": "App compute node creation time.", "format": "int64" }, "node_id": { "type": "string", "description": "Compute Node Id.", "format": "uuid" }, "node_name": { "type": "string", "description": "Compute Node Name." }, "status": { "$ref": "#/components/schemas/AppStatus" }, "build_info": { "$ref": "#/components/schemas/Build" }, "message_count": { "type": "integer", "description": "App heartbeat message count.", "format": "int32" }, "key_id": { "type": "string", "description": "Key Id for app heartbeat." }, "is_debug": { "type": "boolean", "description": "App running in debug mode or not." } }, "description": "Detailed info of an app running on a compute node." }, "AdvancedSettings": { "type": "object", "properties": { "entrypoint": { "type": "array", "items": { "type": "string" }, "description": "Entrypoint for the container." }, "encryptedDirs": { "type": "array", "items": { "type": "string" }, "description": "List of read-write files and/or directories which are encrypted using the enclave sealing key\nDefault encrypted directories - enclave-os protects the content in these files by encrypting them using the enclave sealing key. Anyone is allowed to read from or write to these files but only the enclave application can see it's contents in plain text.\n - /tmp\n - /run\n - /ftx-efs\n - /opt/fortanix/enclave-os/app-config/rw\nTips while debugging -> The default encrypted directories visible to the guest application as /tmp, /run and /ftx-efs are available in the container filesystem at /opt/fortanix/enclave-os/default-efs-dirs/.\n" }, "certificate": { "$ref": "#/components/schemas/CertificateConfig" }, "java_runtime": { "$ref": "#/components/schemas/JavaRuntime" }, "rw_dirs": { "type": "array", "items": { "type": "string" }, "description": "List of read-write files and/or directories\nDefault read-write directories - enclave-os doesn't provide any security measures for these files and anyone is allowed to read from or write to these files.\n - /etc/hosts\n - /etc/resolv.conf\n - /etc/hostname\n" }, "allowCmdlineArgs": { "type": "boolean", "description": "Allow command line arguments converter flag for an image." }, "manifestEnv": { "type": "array", "items": { "type": "string" }, "description": "Environment variables that will be passed to the manifest file when the container is converted." }, "mutableEnv": { "type": "array", "items": { "type": "string" }, "description": "Environment variables with supplied default values, but that may be overridden at runtime.\n" } }, "description": "Advanced settings for apps and images." }, "CertificateIssuancePolicy": { "required": [ "require_known_image", "require_known_signer" ], "type": "object", "properties": { "require_known_image": { "type": "boolean" }, "require_known_signer": { "type": "boolean" }, "require_known_node": { "type": "boolean", "default": true } } }, "ApplicationSigner": { "maxProperties": 1, "minProperties": 1, "type": "object", "properties": { "sgx": { "$ref": "#/components/schemas/SgxSigner" }, "nitro_enclave": { "$ref": "#/components/schemas/NitroEnclaveSigner" } } }, "PatchRequest": { "type": "array", "items": { "$ref": "#/components/schemas/PatchDocument" } }, "DefaultSgxBuildSettings": { "type": "object", "properties": { "isvprodid": { "type": "integer", "description": "ISV Product Id.", "format": "int32" }, "mem_size": { "type": "integer", "description": "Memory size (in MBs) required for the image.", "format": "int64" }, "threads": { "type": "integer", "description": "Threads required for the image.", "format": "int32" } }, "description": "Default build settings for SGX/SGX2 builds" }, "DefaultNitroEnclavesBuildSettings": { "type": "object", "properties": { "cpu_count": { "type": "integer", "description": "CPU count", "format": "int32" }, "mem_size": { "type": "integer", "description": "Enclave memory size in MBs", "format": "int64" }, "enable_overlay_filesystem_persistence": { "type": "boolean", "description": "Flag to enable file persistence, on by default.", "default": true } }, "description": "Default build settings for Nitro Enclave builds" }, "Certificate": { "type": "object", "properties": { "certificate_id": { "type": "string", "description": "Certificate ID.", "format": "uuid" }, "status": { "$ref": "#/components/schemas/CertificateStatusType" }, "csr": { "type": "string", "description": "The certificate signing request." }, "certificate": { "type": "string", "description": "The certificate itself, if issued." }, "node_id": { "type": "string", "description": "The node relevant to this certificate, if known.", "format": "uuid" }, "app_id": { "type": "string", "description": "The app relevant to this certificate, if known.", "format": "uuid" }, "build_id": { "type": "string", "description": "The build relevant to this certificate, if known.", "format": "uuid" } }, "description": "A certificate request or issued certificate." }, "AppStatus": { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/AppStatusType" }, "status_updated_at": { "type": "integer", "description": "Time since the status change.", "format": "int64" }, "attested_at": { "type": "integer", "description": "The app attestation date.", "format": "int64" } }, "description": "Run status info of an app for a compute node." }, "Build": { "required": [ "status" ], "type": "object", "properties": { "build_id": { "type": "string", "description": "Image Id.", "format": "uuid" }, "docker_info": { "$ref": "#/components/schemas/DockerInfo" }, "created_at": { "type": "integer", "description": "Timestamp of image addition to the system (number of seconds since epoch).", "format": "int64" }, "updated_at": { "type": "integer", "description": "Timestamp of when the image was updated (number of seconds since epoch).", "format": "int64" }, "app_id": { "type": "string", "description": "App Id.", "format": "uuid" }, "app_name": { "type": "string", "description": "App name." }, "status": { "$ref": "#/components/schemas/BuildStatus" }, "deployment_status": { "$ref": "#/components/schemas/BuildDeploymentStatus" }, "enclave_info": { "$ref": "#/components/schemas/EnclaveInfo" }, "attributes": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ImageAttributes" }, "description": "Image attributes" }, "app_description": { "type": "string", "description": "App Description." }, "mem_size": { "type": "integer", "description": "Memory size required for the image.", "format": "int64" }, "threads": { "type": "integer", "description": "Threads required for the image.", "format": "int32" }, "advanced_settings": { "$ref": "#/components/schemas/AdvancedSettings" }, "build_name": { "type": "string", "description": "image name if curated app." }, "pending_task_id": { "type": "string", "description": "UUID of pending build whitelist task for the build", "format": "uuid" }, "configs": { "type": "object", "additionalProperties": { "type": "object", "nullable": true }, "description": "Application configurations attached to the image." }, "marketplace_build_id": { "type": "string", "description": "Id of the corresponding marketplace listing.", "format": "uuid" }, "launch_hint": { "$ref": "#/components/schemas/LaunchHint" }, "enable_overlay_filesystem_persistence": { "type": "boolean", "description": "Flag indicating if file persistence is enabled. This is only for Nitro Enclaves." }, "group_id": { "type": "string", "description": "Group Id", "format": "uuid" } }, "description": "Detailed info of an application image." }, "CertificateConfig": { "type": "object", "properties": { "issuer": { "enum": [ "MANAGER_CA", "NODE", "SELF_IAS" ], "type": "string", "description": "Certificate issuance strategy", "default": "MANAGER_CA" }, "subject": { "type": "string", "description": "Certificate subject common name, typically a DNS name" }, "keyType": { "enum": [ "RSA" ], "type": "string", "description": "Type of key to generate", "default": "RSA" }, "keyParam": { "type": "object", "description": "Key parameters. Currently must be an instance of RsaKeyParam, but other types may be supported in the future.\n" }, "keyPath": { "type": "string", "description": "Path to expose the key in the application filesystem" }, "certPath": { "type": "string", "description": "Path to expose the certificate in the application filesystem" } } }, "JavaRuntime": { "enum": [ "JAVA-ORACLE", "OPENJDK", "OPENJ9", "LIBERTY-JRE" ], "type": "string", "description": "Java runtime mode for conversion." }, "SgxSigner": { "required": [ "mrsigner", "isvprodid" ], "type": "object", "properties": { "mrsigner": { "type": "string", "description": "mrsigner as a hex string." }, "isvprodid": { "type": "integer", "description": "ISV Product Id.", "format": "int32" } } }, "NitroEnclaveSigner": { "required": [ "pcr8" ], "type": "object", "properties": { "pcr8": { "type": "string", "description": "The signer pcr as a hex string." } } }, "PatchDocument": { "required": [ "op", "path" ], "type": "object", "properties": { "op": { "$ref": "#/components/schemas/PatchOperation" }, "path": { "type": "string", "description": "It is JSON pointer indicating a field to be updated" }, "value": { "type": "object", "description": "It is the value to be used for the field as indicated by op and path" } }, "description": "A JSONPatch document as defined by RFC 6902. The patch operation is subset of what is supported by RFC 6902." }, "CertificateStatusType": { "enum": [ "PENDING", "REJECTED", "ISSUED", "REVOKED", "EXPIRED" ], "type": "string", "description": "Certificate status." }, "AppStatusType": { "enum": [ "RUNNING", "STOPPED", "UNKNOWN" ], "type": "string", "description": "Status string for the app on a compute node." }, "DockerInfo": { "required": [ "docker_image_name", "docker_version" ], "type": "object", "properties": { "docker_image_name": { "type": "string", "description": "Image docker image name." }, "docker_version": { "type": "string", "description": "Image docker version." }, "docker_image_sha": { "type": "string", "description": "Build docker image sha." }, "docker_image_size": { "type": "integer", "description": "Docker image size in MiB (units of 2**20 bytes).", "format": "int64" }, "exposed_ports": { "type": "array", "items": { "$ref": "#/components/schemas/DockerNetworkPort" }, "description": "List of ports exposed by the Docker image." } }, "description": "Docker info of an image." }, "BuildStatus": { "required": [ "status", "status_updated_at" ], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/BuildStatusType" }, "status_updated_at": { "type": "integer", "description": "Time since the status change.", "format": "int64" } } }, "BuildDeploymentStatus": { "required": [ "status", "status_updated_at" ], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/BuildDeploymentStatusType" }, "status_updated_at": { "type": "integer", "description": "The time when the deployment status changed.", "format": "int64" } } }, "EnclaveInfo": { "required": [ "mrenclave", "mrsigner", "isvsvn", "isvprodid" ], "type": "object", "properties": { "mrenclave": { "type": "string", "description": "mrenclave of an image, as a hex string." }, "mrsigner": { "type": "string", "description": "mrsigner of an image, as a hex string." }, "isvprodid": { "type": "integer", "description": "ISV Product Id.", "format": "int32" }, "isvsvn": { "type": "integer", "description": "ISV Security Version Number.", "format": "int32" } }, "description": "Info on a application enclave." }, "ImageAttributes": { "maxProperties": 1, "minProperties": 0, "type": "object", "properties": { "sgx": { "$ref": "#/components/schemas/SgxAttributes" }, "nitro_enclave": { "$ref": "#/components/schemas/NitroEnclaveAttributes" }, "aci": { "$ref": "#/components/schemas/AciAttributes" }, "azure_cvm": { "$ref": "#/components/schemas/AzureCvmAttributes" }, "baremetal_tdx": { "$ref": "#/components/schemas/BaremetalTdxAttributes" }, "baremetal_amd_sev_snp": { "$ref": "#/components/schemas/BaremetalAmdSevSnpAttributes" } }, "x-derive-default": true }, "LaunchHint": { "maxProperties": 1, "minProperties": 1, "type": "object", "properties": { "azure_resource_template": { "type": "string", "description": "The Microsoft ARM Template for launching this build. May require some properties (such as the join token)." } }, "description": "This object encodes a suggested manner for launching a confidential application. It may need to be configured further depending on your environment." }, "PatchOperation": { "enum": [ "add", "remove", "replace" ], "type": "string", "description": "The operation to be performed" }, "DockerNetworkPort": { "required": [ "port", "protocol" ], "type": "object", "properties": { "port": { "type": "integer", "description": "A valid, specific port number from 1..65535 (inclusive)." }, "protocol": { "$ref": "#/components/schemas/DockerNetworkProtocol" } }, "description": "A port exposed by a docker container." }, "BuildStatusType": { "enum": [ "REJECTED", "WHITELISTED", "PENDING" ], "type": "string", "description": "Status string for the image." }, "BuildDeploymentStatusType": { "enum": [ "DEPLOYED", "UNDEPLOYED" ], "type": "string", "description": "Status string for the image deployment." }, "SgxAttributes": { "required": [ "mrenclave" ], "type": "object", "properties": { "mrenclave": { "type": "string", "description": "mrenclave as a hex string." }, "features": { "uniqueItems": true, "type": "array", "items": { "type": "string" } } } }, "NitroEnclaveAttributes": { "required": [ "hash_algorithm", "pcr0", "pcr1", "pcr2" ], "type": "object", "properties": { "hash_algorithm": { "$ref": "#/components/schemas/NitroEnclaveHashAlgorithm" }, "pcr0": { "type": "string", "description": "A contiguous measure of the contents of the image file, without the section data as a hex string." }, "pcr1": { "type": "string", "description": "A contiguous measure of the contents of the image file, without the section data as a hex string." }, "pcr2": { "type": "string", "description": "A contiguous measure of the contents of the image file, without the section data as a hex string." } } }, "AciAttributes": { "required": [ "policy" ], "type": "object", "properties": { "policy": { "type": "string", "description": "Base64-encoded output of azure confcom acipolicygen tool." } }, "description": "ACI generated policy that represents the containers to run and other security restrictions." }, "AzureCvmAttributes": { "required": [ "pcrs", "coprocessors" ], "type": "object", "properties": { "pcrs": { "required": [ "hash_alg" ], "type": "object", "properties": { "hash_alg": { "$ref": "#/components/schemas/HashAlgorithm" }, "pcr0": { "type": "string" }, "pcr1": { "type": "string" }, "pcr2": { "type": "string" }, "pcr3": { "type": "string" }, "pcr4": { "type": "string" }, "pcr5": { "type": "string" }, "pcr6": { "type": "string" }, "pcr7": { "type": "string" }, "pcr8": { "type": "string" }, "pcr9": { "type": "string" }, "pcr10": { "type": "string" }, "pcr11": { "type": "string" }, "pcr12": { "type": "string" }, "pcr13": { "type": "string" }, "pcr14": { "type": "string" }, "pcr15": { "type": "string" }, "pcr16": { "type": "string" }, "pcr17": { "type": "string" }, "pcr18": { "type": "string" }, "pcr19": { "type": "string" }, "pcr20": { "type": "string" }, "pcr21": { "type": "string" }, "pcr22": { "type": "string" } }, "description": "List of TPM PCRs hash values to enforce. 64 hex characters" }, "coprocessors": { "type": "array", "items": { "$ref": "#/components/schemas/Coprocessor" } } } }, "BaremetalTdxAttributes": { "required": [ "mrtd", "coprocessors" ], "type": "object", "properties": { "mrtd": { "type": "string", "description": "TD firmware binary (OVMF.fd) measurement as a hex string." }, "rtmr0": { "type": "string", "description": "Firmware and platform runtime measurements as hex string" }, "rtmr1": { "type": "string", "description": "Runtime measurement for kernel for direct boot and bootchain for indirect boot as hex string" }, "rtmr2": { "type": "string", "description": "Runtime measurement of kernel cmdline and initrd as hex string" }, "rtmr3": { "type": "string", "description": "Runtime extendable measurement register 3 as hex string" }, "mrconfigid": { "type": "string", "description": "Host supplied configuration digest" }, "coprocessors": { "type": "array", "items": { "$ref": "#/components/schemas/Coprocessor" } } } }, "BaremetalAmdSevSnpAttributes": { "required": [ "measurement", "vmpl", "coprocessors" ], "type": "object", "properties": { "measurement": { "type": "string", "description": "Guest Launch Measurement as hex string" }, "vmpl": { "$ref": "#/components/schemas/AmdSevSnpVmpl" }, "host_data": { "type": "string", "description": "Host supplied configuration digest" }, "coprocessors": { "type": "array", "items": { "$ref": "#/components/schemas/Coprocessor" } } } }, "DockerNetworkProtocol": { "enum": [ "Tcp", "Udp" ], "type": "string", "description": "Protocol Associated with a Port exposed by a docker container." }, "NitroEnclaveHashAlgorithm": { "enum": [ "Sha384" ], "type": "string", "description": "Nitro enclave hash algorithm" }, "HashAlgorithm": { "enum": [ "SHA256" ], "type": "string" }, "Coprocessor": { "required": [ "attestation" ], "type": "object", "properties": { "attestation": { "$ref": "#/components/schemas/Attestation" }, "gpu_vendor": { "$ref": "#/components/schemas/GpuVendor" } } }, "AmdSevSnpVmpl": { "enum": [ "vmpl0", "vmpl1", "vmpl2", "vmpl3" ], "type": "string", "description": "Virtual Machine Privilege Level" }, "Attestation": { "enum": [ "Ignored", "Required" ], "type": "string", "description": "Specifies whether attestation is required or ignored." }, "GpuVendor": { "enum": [ "Nvidia" ], "type": "string", "description": "An enum for GPU Vendor" } }, "securitySchemes": { "bearerToken": { "type": "apiKey", "description": "A JWT bearer token to be passed once authenticated.", "name": "Authentication", "in": "header" } } } } ````