> ## 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. # Analyze a docker image and create Confidential ACI deployment templates > Analyze a docker image and create Confidential ACI deployment templates. ## OpenAPI ````json POST /v1/builds/convert-app/aci { "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/builds/convert-app/aci": { "post": { "tags": [ "Build" ], "summary": "Analyze a docker image and create Confidential ACI deployment templates.", "description": "Analyze a docker image and create Confidential ACI deployment templates.", "operationId": "convertAppBuildAci", "requestBody": { "$ref": "#/components/requestBodies/AciConversionRequest" }, "responses": { "200": { "description": "Details of the created image.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Build" } } } } }, "security": [ { "bearerToken": [] } ], "x-auth-resource": "Writer,Manager,ActiveAccount" } } }, "components": { "requestBodies": { "AciConversionRequest": { "description": "Aci conversion request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AciConversionRequest" } } }, "required": true, "x-bodyName": "body" } }, "schemas": { "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." }, "AciConversionRequest": { "required": [ "app_id", "input_image", "aci_options" ], "type": "object", "properties": { "app_id": { "type": "string", "description": "App id of the image.", "format": "uuid" }, "input_image": { "$ref": "#/components/schemas/ConversionRequestImageInfo" }, "converter_options": { "$ref": "#/components/schemas/ConverterOptions" }, "aci_options": { "$ref": "#/components/schemas/AciConversionRequestOptions" } } }, "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 }, "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." }, "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." }, "ConversionRequestImageInfo": { "required": [ "name" ], "type": "object", "properties": { "name": { "type": "string", "description": "Docker image name" }, "auth_config": { "$ref": "#/components/schemas/AuthConfig" } } }, "ConverterOptions": { "type": "object", "properties": { "add_ccm_ca_certificates": { "type": "boolean", "description": "Adds CCM CA certificates into the application." }, "allow_cmdline_args": { "type": "boolean", "description": "Allow command line arguments." }, "debug": { "type": "boolean", "description": "Enables debug logging from EnclaveOS" }, "entrypoint": { "type": "array", "items": { "type": "string" }, "description": "Override the entrypoint of the original container" }, "entrypoint_args": { "type": "array", "items": { "type": "string" }, "description": "Override additional arguments to the container entrypoint" }, "env_vars": { "type": "array", "items": { "type": "string" }, "description": "List of manifest environment variables.\nFor ACI, these fixed values become part of the security policy.\n" }, "mutable_env_vars": { "type": "array", "items": { "type": "string" }, "description": "List of mutable environment variable default values.\nFor ACI, these become deployment template parameters.\n" }, "java_mode": { "type": "string", "description": "Type of the Java JVM used" } } }, "AciConversionRequestOptions": { "type": "object", "properties": { "cpu_count": { "maximum": 65535, "minimum": 1, "type": "integer", "description": "Number of cores", "format": "int32", "default": 1 }, "gb_mem": { "minimum": 0, "exclusiveMinimum": true, "type": "number", "description": "Container memory size in GBs (1,000,000,000 bytes)", "format": "double", "default": 1 }, "wait_for_agent": { "type": "boolean", "description": "Inserts a loop waiting for /opt/fortanix/agent.ready into your application's entrypoint; ensures app startup occurs after confidential compute verifications. Don't touch this unless there's good reason.\n", "default": true } } }, "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" } } } }, "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." }, "AuthConfig": { "required": [ "username" ], "type": "object", "properties": { "username": { "type": "string", "description": "User name for docker registry authentication" }, "password": { "type": "string", "description": "Password for docker registry authentication. Note that this field may be redacted when it appears in API responses." } }, "description": "Credentials for authenticating to a docker registry" }, "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" } } } } ````