Fortanix Confidential Computing Manager REST API

REST API for the Fortanix Confidential Computing Manager (CCM) backend: compute-node and application enrollment, enclave image build and conversion, attestation, certificate issuance, container registries, application configuration, approval requests, compute clusters, datasets and workflow runs.

Operations 109

GET /v1/zones Get all zones. #
GET /v1/zones/{zone-id} Get zone details. #
GET /v1/zones/{zone-id}/token Get the authentication token. #
GET /v1/zones/{zone-id}/certificates Get all zone certificates #
POST /v1/zones/{zone-id}/certificates Create a new zone certificate #
POST /v1/zones/{zone-id}/certificates/rotate Rotate zone certificate #
GET /v1/accounts Get all accounts. #
POST /v1/accounts Create a new account. #
GET /v1/accounts/{account-id} Get a specific account. #
DELETE /v1/accounts/{account-id} Delete an account. #
PATCH /v1/accounts/{account-id} Update an account. #
GET /v1/builds Get all images information. #
POST /v1/builds Create a new image. #
GET /v1/builds/{build-id} Get details of a particular image. #
DELETE /v1/builds/{build-id} Delete a particular image. #
PATCH /v1/builds/{build-id} Update details of a particular image. #
GET /v1/builds/deployments/{build-id} Get all deployments of an image. #
POST /v1/builds/convert-app/nitro-enclaves Convert a docker image and create a new Nitro enclaves converted image. #
POST /v1/builds/convert-app/aci Analyze a docker image and create Confidential ACI deployment templates. #
GET /v1/nodes Get all compute nodes information. #
POST /v1/nodes Provision a new compute node. #
GET /v1/nodes/{node-id} Get details of a particular compute node. #
PATCH /v1/nodes/{node-id} Update details of a particular compute node. #
GET /v1/nodes/{node-id}/certificate Get an attested compute node's certificate. #
GET /v1/nodes/{node-id}/certificate-details Get a compute node's certificate. #
POST /v1/nodes/{node-id}/deactivate Deactivate a particular compute node. #
GET /v1/certificates/{cert-id} Retrieve a certificate. #
GET /v1/apps Get all apps information. #
POST /v1/apps Add an application. #
GET /v1/apps/{app-id} Get details of a particular app. #
PATCH /v1/apps/{app-id} Update details of a particular app. #
DELETE /v1/apps/{app-id} Delete a particular app #
GET /v1/apps/{app-id}/node/{node-id}/certificate-details Get an app's certificate for a compute node. #
GET /v1/apps/{app-id}/node/{node-id}/certificate Get an attested app's certificate. #
GET /v1/apps/unique_labels/count Get all the unique labels across all the applications within selected account #
GET /v1/tasks Get all the tasks. #
GET /v1/tasks/{task-id} Get details of a particular task. #
PATCH /v1/tasks/{task-id} Update status of approver and task. #
DELETE /v1/tasks/{task-id} Delete a particular task. #
GET /v1/tasks/status/{task-id} Get status and result of a particular task. #
GET /v1/user Get details of the current logged in user. #
GET /v1/users Get all user's information. #
POST /v1/users Create a new user. #
POST /v1/users/invite Invite a user. #
GET /v1/users/{user-id} Get details of a particular user. #
PATCH /v1/users/{user-id} Update status, name, and the role of a user. User with MANAGER access role can only update another user. #
DELETE /v1/users/{user-id} Completely delete a user profile from system #
GET /v1/users/{user-id}/accounts Get user accounts #
DELETE /v1/users/{user-id}/accounts Remove user's association with an account. #
POST /v1/sys/auth User authentication #
POST /v1/sys/auth/discover Discover the supported authentication methods for a user. #
POST /v1/sys/session/refresh Refreshes existing user session. #
POST /v1/sys/session/terminate Terminate a session #
POST /v1/sys/session/select_account/{account-id} Select a user's account to work on. #
GET /v1/sys/version Get Manager Version. #
PATCH /v1/system/config Modify cluster configuration by SysAdmin #
GET /v1/system/config Get cluster configuration by SysAdmin #
POST /v1/tools/converter/convert-app/nitro-enclaves Convert an application to run in Nitro Enclaves. #
POST /v1/tools/converter/convert-app/aci Convert an application to run in ACI. #
POST /v1/registry Add a new registry to an account #
GET /v1/registry Get details of all registry in the account #
GET /v1/registry/{registry-id} Get details of a particular registry #
PATCH /v1/registry/{registry-id} Update a particular registry details #
DELETE /v1/registry/{registry-id} Delete registry #
GET /v1/registry/app/{app-id} Get details of the registry that will be used for the particular app images #
GET /v1/image/registry Get details of the registry that will be used for the particular image #
GET /v1/app_configs Get all app configs #
POST /v1/app_configs Add an app config. #
GET /v1/runtime/app_configs Get app config #
GET /v1/runtime/app_configs/{config-id} Get details of a particular runtime app config. #
GET /v1/app_configs/{config-id} Get details of a particular app config. #
DELETE /v1/app_configs/{config-id} Delete a particular app config #
PATCH /v1/app_configs/{config-id} Update details of a particular app config. #
GET /v1/approval_requests Get all approval requests #
POST /v1/approval_requests Create approval request. #
GET /v1/approval_requests/{request-id} Get an approval request. #
DELETE /v1/approval_requests/{request-id} Delete an approval request. #
POST /v1/approval_requests/{request-id}/approve Approve a request. #
POST /v1/approval_requests/{request-id}/deny Deny a request. #
POST /v1/approval_requests/{request-id}/result Get the result for an approved or failed request. #
POST /v1/clusters Add a new compute cluster to an account #
GET /v1/clusters Get details of all compute clusters in the account #
GET /v1/clusters/{cluster-id} Get details of a particular compute cluster #
PATCH /v1/clusters/{cluster-id} Update a particular compute cluster details #
DELETE /v1/clusters/{cluster-id} Delete compute cluster #
GET /v1/datasets Get all datasets #
POST /v1/datasets Create a new dataset object. #
GET /v1/datasets/{dataset-id} Retrieve information about a particular dataset. #
DELETE /v1/datasets/{dataset-id} Delete a particular dataset. #
PATCH /v1/datasets/{dataset-id} Modify a particular dataset. #
GET /v1/workflow_runs Get all registered running workflows #
POST /v1/workflow_runs Start the given workflow #
PATCH /v1/workflow_runs/{run-id} Update the properties of a workflow run #
GET /v1/workflow_runs/{run-id}/status Get the status of the given running workflow #
GET /v1/workflow_runs/{run-id}/logs Retrieve logs from an app in the given workflow #
POST /v1/workflow_runs/{run-id}/stop Stop execution for the given workflow. #
GET /v1/workflows/final/graphs Search all the final workflow graphs. #
POST /v1/workflows/final/graphs Create a finalized workflow graph request via approval. #
POST /v1/workflows/final/graphs/{graph-id} Create a new version for a particular final workflow #
GET /v1/workflows/final/graphs/{graph-id} Get details of a particular final workflow #
PATCH /v1/workflows/final/graphs/{graph-id} Change name/description of a particular final workflow #
GET /v1/workflows/final/graphs/{graph-id}/{version} Get details of a particular final workflow version #
DELETE /v1/workflows/final/graphs/{graph-id}/{version} Delete a particular final workflow #
PATCH /v1/workflows/final/graphs/{graph-id}/{version} Update the final workflow graph's runtime (reference to ComputeCluster). #
GET /v1/workflows/draft/graphs Search all workflow draft graphs #
POST /v1/workflows/draft/graphs Create a new workflow graph as a draft #
GET /v1/workflows/draft/graphs/{graph-id} Get details of a particular draft workflow #
PUT /v1/workflows/draft/graphs/{graph-id} Update a particular workflow graph. #
DELETE /v1/workflows/draft/graphs/{graph-id} Delete a particular draft workflow #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/ccm"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

fortanix-ccm-openapi-original.json Raw ↑
{
  "swagger": "2.0",
  "info": {
    "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.",
    "version": "2.0.0",
    "title": "Confidential Computing Manager",
    "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"
    }
  },
  "host": "ccm.fortanix.com",
  "produces": [
    "application/json"
  ],
  "schemes": [
    "https"
  ],
  "securityDefinitions": {
    "bearerToken": {
      "type": "apiKey",
      "in": "header",
      "name": "Authentication",
      "description": "A JWT bearer token to be passed once authenticated."
    }
  },
  "paths": {
    "/v1/zones": {
      "get": {
        "tags": [
          "Zone"
        ],
        "summary": "Get all zones.",
        "description": "Get details of all the zones.",
        "operationId": "getZones",
        "x-auth-resource": "Reader,Writer,Manager",
        "responses": {
          "200": {
            "description": "Details of all the zones.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Zone"
              }
            }
          }
        }
      }
    },
    "/v1/zones/{zone-id}": {
      "get": {
        "tags": [
          "Zone"
        ],
        "summary": "Get zone details.",
        "description": "Get details for a zone.",
        "operationId": "getZone",
        "x-auth-resource": "Reader,Writer,Manager",
        "parameters": [
          {
            "$ref": "#/parameters/ZoneId"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of the zone.",
            "schema": {
              "$ref": "#/definitions/Zone"
            }
          }
        }
      }
    },
    "/v1/zones/{zone-id}/token": {
      "get": {
        "tags": [
          "Zone"
        ],
        "summary": "Get the authentication token.",
        "description": "\"Retrieve the authentication token (\"join token\") used to enroll compute nodes in this zone.\"\n",
        "operationId": "getZoneJoinToken",
        "x-auth-resource": "Manager",
        "parameters": [
          {
            "$ref": "#/parameters/ZoneId"
          }
        ],
        "responses": {
          "200": {
            "description": "Join token for the zone.",
            "schema": {
              "$ref": "#/definitions/ZoneJoinToken"
            }
          }
        }
      }
    },
    "/v1/zones/{zone-id}/certificates": {
      "get": {
        "tags": [
          "Zone"
        ],
        "summary": "Get all zone certificates",
        "description": "Get all certificates in the specified zone",
        "operationId": "GetZoneCertificates",
        "x-auth-resource": "Reader,Writer,Manager,ServiceAuth,AdminIfAuth",
        "parameters": [
          {
            "$ref": "#/parameters/ZoneId"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of all zone certificates.",
            "schema": {
              "$ref": "#/definitions/ZoneCertificates"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "post": {
        "tags": [
          "Zone"
        ],
        "summary": "Create a new zone certificate",
        "description": "Creates a new Zone Certificate for the specified Zone",
        "operationId": "createZoneCertificate",
        "x-auth-resource": "Manager",
        "parameters": [
          {
            "$ref": "#/parameters/ZoneId"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of the new zone certificate.",
            "schema": {
              "$ref": "#/definitions/ZoneCertificateCreateResponse"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/zones/{zone-id}/certificates/rotate": {
      "post": {
        "tags": [
          "Zone"
        ],
        "summary": "Rotate zone certificate",
        "description": "Rotates the Zone Certificate for the specified Zone",
        "operationId": "rotateZoneCertificate",
        "x-auth-resource": "Manager",
        "parameters": [
          {
            "$ref": "#/parameters/ZoneId"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of the new zone certificate.",
            "schema": {
              "$ref": "#/definitions/ZoneCertificates"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/accounts": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get all accounts.",
        "description": "Get detailed information about all accounts that the current user has permission to see.",
        "operationId": "getAccounts",
        "x-auth-resource": "UserAuth,Reader,Writer,Manager",
        "parameters": [
          {
            "name": "scope",
            "in": "query",
            "description": "Specify the scope from which to get the accounts. Possible options: USER, SYSTEM.",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum numbers of accounts to return.",
            "required": false,
            "type": "integer"
          },
          {
            "name": "previous_id",
            "in": "query",
            "description": "Id of account from previous page of results.",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "sort_by",
            "in": "query",
            "description": "Sort fields. In the format of key1:ASC,key2:DESC,key3:DESC",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "All account details for the current user.",
            "schema": {
              "$ref": "#/definitions/AccountListResponse"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Create a new account.",
        "description": "Create a new account with the specified properties. Only an authenticated user can create an account.",
        "parameters": [
          {
            "$ref": "#/parameters/AccountRequest"
          }
        ],
        "operationId": "createAccount",
        "x-auth-resource": "UserAuth,Reader,Writer,Manager",
        "responses": {
          "200": {
            "description": "The details of the account created.",
            "schema": {
              "$ref": "#/definitions/Account"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/accounts/{account-id}": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get a specific account.",
        "description": "Look up an account by account ID. Current user must belong to a particular account.",
        "parameters": [
          {
            "$ref": "#/parameters/AccountId"
          },
          {
            "$ref": "#/parameters/WithTotals"
          }
        ],
        "operationId": "getAccount",
        "x-auth-resource": "UserAuth,Reader,Writer,Manager",
        "responses": {
          "200": {
            "description": "Particular account details.",
            "schema": {
              "$ref": "#/definitions/Account"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Accounts"
        ],
        "summary": "Delete an account.",
        "description": "Remove an account.",
        "parameters": [
          {
            "$ref": "#/parameters/AccountId"
          }
        ],
        "operationId": "deleteAccount",
        "x-auth-resource": "NoAuth",
        "responses": {
          "204": {
            "description": "Nothing is returned on success."
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Accounts"
        ],
        "summary": "Update an account.",
        "description": "Update the properties of an account. Only certain properties may be changed with this API.",
        "parameters": [
          {
            "$ref": "#/parameters/AccountId"
          },
          {
            "$ref": "#/parameters/AccountUpdateRequest"
          }
        ],
        "operationId": "updateAccount",
        "x-auth-resource": "Manager, UserAuth",
        "responses": {
          "200": {
            "description": "Updated account.",
            "schema": {
              "$ref": "#/definitions/Account"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/builds": {
      "get": {
        "tags": [
          "Build"
        ],
        "summary": "Get all images information.",
        "description": "Get the image's information with all the attributes.",
        "operationId": "getAllBuilds",
        "x-auth-resource": "Reader,Writer,Manager",
        "parameters": [
          {
            "name": "all_search",
            "in": "query",
            "description": "Search on all fields(docker image name, app name, mrenclave, mrsigner, app output image name).",
            "required": false,
            "type": "string"
          },
          {
            "name": "docker_image_name",
            "in": "query",
            "description": "Search on docker image name or app's output image name.",
            "required": false,
            "type": "string"
          },
          {
            "name": "config_id",
            "in": "query",
            "description": "Search builds with access to application config id.",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/BuildDeploymentStatusType"
          },
          {
            "$ref": "#/parameters/BuildStatusType"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum numbers of images to return.",
            "required": false,
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of images to skip from start.",
            "required": false,
            "type": "integer"
          },
          {
            "name": "sort_by",
            "in": "query",
            "description": "Sort fields. In the format of key1:ASC,key2:DESC,key3:DESC",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Filter to use for items, currently supports list of groups",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Search result for image objects.",
            "schema": {
              "$ref": "#/definitions/GetAllBuildsResponse"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "post": {
        "tags": [
          "Build"
        ],
        "summary": "Create a new image.",
        "description": "Create a new image.",
        "operationId": "createBuild",
        "x-auth-resource": "Writer,Manager,ActiveAccount",
        "parameters": [
          {
            "$ref": "#/parameters/CreateBuildRequest"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of the created image.",
            "schema": {
              "$ref": "#/definitions/Build"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/builds/{build-id}": {
      "get": {
        "tags": [
          "Build"
        ],
        "summary": "Get details of a particular image.",
        "description": "Details of a particular image.",
        "operationId": "getBuild",
        "x-auth-resource": "Reader,Writer,Manager",
        "parameters": [
          {
            "$ref": "#/parameters/BuildId"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of an image.",
            "schema": {
              "$ref": "#/definitions/Build"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Build"
        ],
        "summary": "Delete a particular image.",
        "description": "Delete a particular image.",
        "operationId": "deleteBuild",
        "x-auth-resource": "Writer,Manager",
        "parameters": [
          {
            "$ref": "#/parameters/BuildId"
          }
        ],
        "responses": {
          "204": {
            "description": "Nothing is returned on success."
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Build"
        ],
        "summary": "Update details of a particular image.",
        "description": "Update details of a particular image.",
        "operationId": "updateBuild",
        "x-auth-resource": "Writer,Manager",
        "parameters": [
          {
            "$ref": "#/parameters/BuildId"
          },
          {
            "$ref": "#/parameters/BuildUpdateRequest"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of a compute node.",
            "schema": {
              "$ref": "#/definitions/Build"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/builds/deployments/{build-id}": {
      "get": {
        "tags": [
          "Build"
        ],
        "summary": "Get all deployments of an image.",
        "description": "Get all deployments of an image.",
        "operationId": "getBuildDeployments",
        "x-auth-resource": "Reader,Writer,Manager",
        "parameters": [
          {
            "$ref": "#/parameters/BuildId"
          },
          {
            "$ref": "#/parameters/AppStatusType"
          },
          {
            "name": "all_search",
            "in": "query",
            "description": "Search on all fields (image status and compute node name).",
            "required": false,
            "type": "string"
          },
          {
            "name": "sort_by",
            "in": "query",
            "description": "Sort fields. In the format of key1:ASC,key2:DESC,key3:DESC",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of images to return.",
            "required": false,
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of images to skip from start.",
            "required": false,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of image deployments.",
            "schema": {
              "$ref": "#/definitions/GetAllBuildDeploymentsResponse"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/builds/convert-app/nitro-enclaves": {
      "post": {
        "tags": [
          "Build"
        ],
        "summary": "Convert a docker image and create a new Nitro enclaves converted image.",
        "description": "Convert a docker image and create a new Nitro enclaves converted image.",
        "operationId": "convertAppBuildNitroEnclaves",
        "x-auth-resource": "Writer,Manager,ActiveAccount",
        "parameters": [
          {
            "$ref": "#/parameters/NitroEnclavesConversionRequest"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of the created image.",
            "schema": {
              "$ref": "#/definitions/Build"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/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",
        "x-auth-resource": "Writer,Manager,ActiveAccount",
        "parameters": [
          {
            "$ref": "#/parameters/AciConversionRequest"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of the created image.",
            "schema": {
              "$ref": "#/definitions/Build"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/nodes": {
      "get": {
        "tags": [
          "Node"
        ],
        "summary": "Get all compute nodes information.",
        "description": "Get compute nodes information with status.",
        "operationId": "getAllNodes",
        "x-auth-resource": "Reader,Writer,Manager",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "Compute node name.",
            "required": false,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "description": "Compute node description.",
            "required": false,
            "type": "string"
          },
          {
            "name": "sgx_version",
            "in": "query",
            "description": "Search on node's SGX platform software version.",
            "required": false,
            "type": "string"
          },
          {
            "name": "all_search",
            "in": "query",
            "description": "Search on name or description.",
            "required": false,
            "type": "string"
          },
          {
            "name": "attestation_type",
            "in": "query",
            "description": "Node Attestation type (DCAP, NITRO_ENCLAVE or AMD_SEV_SNP).",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/NodeStatusType"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum numbers of compute nodes to return.",
            "required": false,
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of compute nodes to skip from start.",
            "required": false,
            "type": "integer"
          },
          {
            "name": "sort_by",
            "in": "query",
            "description": "Sort fields. In the format of key1:ASC,key2:DESC,key3:DESC",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Filter query supports searching by list of node_id.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Search result for compute node objects.",
            "schema": {
              "$ref": "#/definitions/GetAllNodesResponse"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "post": {
        "tags": [
          "Node"
        ],
        "summary": "Provision a new compute node.",
        "description": "Provision a new compute node.",
        "operationId": "provisionNode",
        "x-auth-resource": "Manager,JoinTokenAuth",
        "parameters": [
          {
            "$ref": "#/parameters/NodeProvisionRequest"
          }
        ],
        "responses": {
          "200": {
            "description": "Compute node creation task.",
            "schema": {
              "$ref": "#/definitions/TaskResult"
            }
          }
        }
      }
    },
    "/v1/nodes/{node-id}": {
      "get": {
        "tags": [
          "Node"
        ],
        "summary": "Get details of a particular compute node.",
        "description": "Details of a particular compute node.",
        "operationId": "getNode",
        "x-auth-resource": "Reader,Writer,Manager,AgentAuth",
        "parameters": [
          {
            "$ref": "#/parameters/NodeId"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of a compute node.",
            "schema": {
              "$ref": "#/definitions/Node"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "patch": {
        "tags": [
          "Node"
        ],
        "summary": "Update details of a particular compute node.",
        "description": "Update details of a particular compute node.",
        "operationId": "updateNode",
        "x-auth-resource": "Writer,Manager,ActiveAccount",
        "parameters": [
          {
            "$ref": "#/parameters/NodeId"
          },
          {
            "$ref": "#/parameters/NodeUpdateRequest"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of a compute node.",
            "schema": {
              "$ref": "#/definitions/Node"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/nodes/{node-id}/certificate": {
      "get": {
        "tags": [
          "Node"
        ],
        "summary": "Get an attested compute node's certificate.",
        "description": "Get certificate for the compute node, only if the compute node is attested.",
        "operationId": "getNodeCertificate",
        "x-auth-resource": "Reader,Writer,Manager,JoinTokenAuth,AgentAuth",
        "parameters": [
          {
            "$ref": "#/parameters/NodeId"
          }
        ],
        "responses": {
          "200": {
            "description": "Compute node certificate.",
            "schema": {
              "$ref": "#/definitions/Certificate"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/nodes/{node-id}/certificate-details": {
      "get": {
        "tags": [
          "Node"
        ],
        "summary": "Get a compute node's certificate.",
        "description": "Get certificate for the compute node.",
        "x-auth-resource": "Reader,Writer,Manager",
        "operationId": "getNodeCertificateDetails",
        "parameters": [
          {
            "$ref": "#/parameters/NodeId"
          }
        ],
        "responses": {
          "200": {
            "description": "Certificate details.",
            "schema": {
              "$ref": "#/definitions/CertificateDetails"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/nodes/{node-id}/deactivate": {
      "post": {
        "tags": [
          "Node"
        ],
        "summary": "Deactivate a particular compute node.",
        "description": "Deactivate a particular compute node.",
        "operationId": "deactivateNode",
        "x-auth-resource": "Manager,ActiveAccount",
        "parameters": [
          {
            "$ref": "#/parameters/NodeId"
          }
        ],
        "responses": {
          "204": {
            "description": "Nothing is returned on success."
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/certificates/{cert-id}": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "summary": "Retrieve a certificate.",
        "description": "Retrieve a certificate.",
        "operationId": "getCertificate",
        "x-auth-resource": "Reader,Writer,Manager,AgentAuth,JoinTokenAuth",
        "parameters": [
          {
            "$ref": "#/parameters/CertificateId"
          }
        ],
        "responses": {
          "200": {
            "description": "Certificate",
            "schema": {
              "$ref": "#/definitions/Certificate"
            }
          }
        }
      }
    },
    "/v1/apps": {
      "get": {
        "tags": [
          "App"
        ],
        "summary": "Get all apps information.",
        "description": "Get app's information with status.",
        "operationId": "getAllApps",
        "x-auth-resource": "Reader,Writer,Manager",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "App name.",
            "required": false,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "description": "Compute node description.",
            "required": false,
            "type": "string"
          },
          {
            "name": "all_search",
            "in": "query",
            "description": "Search on name or description.",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum numbers of apps to return.",
            "required": false,
            "type": "integer"
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of apps to skip from start.",
            "required": false,
            "type": "integer"
          },
          {
            "name": "sort_by",
            "in": "query",
            "description": "Sort fields. In the format of key1:ASC,key2:DESC,key3:DESC",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Filter to use for items, currently supports list of groups",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Search result for App objects.",
            "schema": {
              "$ref": "#/definitions/GetAllAppsResponse"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "post": {
        "tags": [
          "App"
        ],
        "summary": "Add an application.",
        "description": "Add an application.",
        "operationId": "addApplication",
        "x-auth-resource": "Writer,Manager,ActiveAccount",
        "parameters": [
          {
            "$ref": "#/parameters/AppRequest"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of an app.",
            "schema": {
              "$ref": "#/definitions/App"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/apps/{app-id}": {
      "get": {
        "tags": [
          "App"
        ],
        "summary": "Get details of a particular app.",
        "description": "Details of a particular app.",
        "operationId": "getApp",
        "x-auth-resource": "Reader,Writer,Manager",
        "parameters": [
          {
            "$ref": "#/parameters/AppId"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of an app.",
            "schema": {
              "$ref": "#/definitions/App"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "patch": {
        "tags": [
          "App"
        ],
        "summary": "Update details of a particular app.",
        "description": "Update a particular app.",
        "operationId": "updateApp",
        "x-auth-resource": "Writer,Manager,ActiveAccount",
        "parameters": [
          {
            "$ref": "#/parameters/AppId"
          },
          {
            "$ref": "#/parameters/AppBodyUpdateRequest"
          }
        ],
        "responses": {
          "200": {
            "description": "Details of an app.",
            "schema": {
              "$ref": "#/definitions/App"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      },
      "delete": {
        "tags": [
          "App"
        ],
        "summary": "Delete a particular app",
        "description": "Delete a particular app.",
        "operationId": "deleteApp",
        "x-auth-resource": "Writer,Manager",
        "parameters": [
          {
            "$ref": "#/parameters/AppId"
          }
        ],
        "responses": {
          "204": {
            "description": "Nothing is returned on success."
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/apps/{app-id}/node/{node-id}/certificate-details": {
      "get": {
        "tags": [
          "App"
        ],
        "summary": "Get an app's certificate for a compute node.",
        "description": "Get certificate for the app of a compute node.",
        "x-auth-resource": "Reader,Writer,Manager",
        "operationId": "getAppNodeCertificateDetails",
        "parameters": [
          {
            "$ref": "#/parameters/NodeId"
          },
          {
            "$ref": "#/parameters/AppId"
          }
        ],
        "responses": {
          "200": {
            "description": "App certificate details.",
            "schema": {
              "$ref": "#/definitions/CertificateDetails"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/apps/{app-id}/node/{node-id}/certificate": {
      "get": {
        "tags": [
          "App"
        ],
        "summary": "Get an attested app's certificate.",
        "description": "Get certificate for the app, only if the compute node and app has been attested.",
        "operationId": "getAppCertificate",
        "x-auth-resource": "Reader,Writer,Manager,ActiveAccount",
        "parameters": [
          {
            "$ref": "#/parameters/NodeId"
          },
          {
            "$ref": "#/parameters/AppId"
          }
        ],
        "responses": {
          "200": {
            "description": "App certificate.",
            "schema": {
              "$ref": "#/definitions/Certificate"
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    },
    "/v1/apps/unique_labels/count": {
      "get": {
        "tags": [
          "App"
        ],
        "summary": "Get all the unique labels across all the applications within selected account",
        "description": "Get all the unique labels (with count) across all the applications within selected account.",
        "operationId": "getAppsUniqueLabels",
        "x-auth-resource": "Reader,Writer,Manager",
        "responses": {
          "20

# --- truncated at 32 KB (276 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fortanix/refs/heads/main/openapi/_original/fortanix-ccm-openapi-original.json