{"openapi":"3.1.2","info":{"title":"Enclave Security Platform","version":"1.0.0"},"servers":[{"url":"{full_url}","description":"Custom Server URL","variables":{"full_url":{"description":"Enter your full base server URL.","default":"your-server-url"}}}],"tags":[{"name":"License","x-displayName":"License"}],"paths":{"/public/platform/ls/api/v1/license":{"put":{"x-public":true,"summary":"Upload a license key file","description":"Uploads a new license key file to activate or update the license for the Tenable Enclave Security instance.","operationId":"tes-license-key-upload","tags":["License"],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"The license key file to upload."}}}}}},"responses":{"200":{"description":"Returned if the license key file was uploaded and applied successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/License_UploadLicenseResponse"}}}},"400":{"$ref":"#/components/responses/License_Error400"},"401":{"$ref":"#/components/responses/License_Error401"},"500":{"$ref":"#/components/responses/License_Error500"}},"security":[{"License_ApiKeyAuth":[]}]},"get":{"x-public":true,"summary":"Get license details","description":"Retrieves the full license object, including blade configuration, status, and expiration information.","operationId":"tes-license-details","tags":["License"],"responses":{"200":{"description":"Returned if the license details were retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/License_License"}}}},"401":{"$ref":"#/components/responses/License_Error401"},"404":{"$ref":"#/components/responses/License_Error404"},"500":{"$ref":"#/components/responses/License_Error500"}},"security":[{"License_ApiKeyAuth":[]}]}},"/public/platform/ls/api/v1/license/utilization":{"get":{"x-public":true,"summary":"Get license utilization","description":"Retrieves license utilization information across all blades, including total licensed capacity and current usage for each blade.","operationId":"tes-license-utilization","tags":["License"],"responses":{"200":{"description":"Returned if the license utilization information was retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/License_LicenseUtilization"}}}},"401":{"$ref":"#/components/responses/License_Error401"},"403":{"description":"Returned if you do not have permission to view license utilization."},"404":{"$ref":"#/components/responses/License_Error404"},"500":{"$ref":"#/components/responses/License_Error500"}},"security":[{"License_ApiKeyAuth":[]}]}}},"components":{"securitySchemes":{"License_ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-apikey","description":"Format - accessKey=ACCESS_KEY;secretKey=SECRET_KEY"}},"schemas":{"License_Blade":{"type":"object","description":"Configuration and status details for a single license blade.","properties":{"enabled":{"type":"boolean","description":"Indicates whether the blade is enabled."},"mode":{"type":"string","description":"The operating mode of the blade."},"limit":{"type":"integer","description":"The total number of licenses available for this blade."},"expiration":{"type":"string","description":"A timestamp indicating the date and time when the blade license expires."},"expiration_epoch":{"type":"integer","format":"int64","description":"A Unix timestamp indicating the date and time when the blade license expires."},"features":{"type":"object","additionalProperties":true,"description":"A map of feature flags and their values for this blade."},"status":{"type":"string","description":"The current status of the blade license.","enum":["Valid","Expired","Exceeded","Locked","Stale","Invalid"]}}},"License_Blades":{"type":"object","description":"The license blades associated with this license, organized by product.","properties":{"sc":{"description":"The Tenable Security Center blade.","$ref":"#/components/schemas/License_Blade"},"consec":{"description":"The Tenable Container Security blade.","$ref":"#/components/schemas/License_Blade"},"was":{"description":"The Tenable Web App Scanning blade.","$ref":"#/components/schemas/License_Blade"}}},"License_License":{"type":"object","description":"The full license object, including blade configuration, status, and update credentials.","properties":{"activation_code":{"type":"string","description":"The activation code for the license."},"type":{"type":"string","description":"The license type."},"name":{"type":"string","description":"The name associated with the license."},"namespace":{"type":"string","description":"The namespace the license is scoped to."},"id":{"type":"string","description":"The unique identifier of the license."},"cluster_id":{"type":"string","description":"The cluster identifier the license is bound to."},"license_by":{"type":"string","description":"The method used to bind the license to the deployment.","enum":["cluster_id","namespace_id","custom_resource"]},"customer_id":{"type":"integer","description":"The Tenable customer identifier associated with the license."},"expiration":{"type":"string","description":"A timestamp indicating the date and time when the license expires."},"expiration_epoch":{"type":"integer","format":"int64","description":"A Unix timestamp indicating the date and time when the license expires."},"comment":{"type":"string","description":"A comment associated with the license."},"eval":{"type":"integer","description":"Indicates whether the license is an evaluation license."},"update_url":{"type":"string","description":"The URL used to retrieve plugin and definition updates."},"update_login":{"type":"string","description":"The login credential for accessing plugin updates."},"update_password":{"type":"string","description":"The password credential for accessing plugin updates."},"pendo_api_key":{"type":"string","description":"The Pendo API key for analytics."},"last_updated":{"type":"string","description":"A timestamp indicating the date and time when the license was last updated."},"status":{"type":"string","description":"The current status of the license.","enum":["Valid","Invalid","Expired"]},"blades":{"description":"The blade configurations associated with this license.","$ref":"#/components/schemas/License_Blades"}}},"License_UploadLicenseResponse":{"type":"object","description":"The response returned after a license key file is uploaded.","properties":{"message":{"type":"string","description":"A message indicating the result of the license upload operation."}}},"License_UtilizationBlade":{"type":"object","description":"Utilization details for a single license blade, including capacity and current usage.","properties":{"enabled":{"type":"boolean","description":"Indicates whether the blade is enabled."},"limit":{"type":"integer","description":"The total number of licenses available for this blade."},"used":{"type":"integer","description":"The number of licenses currently in use."},"remaining":{"type":"integer","description":"The number of licenses remaining in the license pool."},"last_updated":{"type":"string","format":"date-time","description":"An ISO timestamp indicating the date and time when the blade utilization data was last updated."},"expiration":{"type":"string","description":"A timestamp indicating the date and time when the blade license expires."},"status":{"type":"string","description":"The current status of the blade license.","enum":["Valid","Expired","Exceeded","Locked","Stale","Invalid"]}}},"License_UtilizationBlades":{"type":"object","description":"Utilization data for each license blade, organized by product.","properties":{"sc":{"description":"The Tenable Security Center blade utilization.","$ref":"#/components/schemas/License_UtilizationBlade"},"consec":{"description":"The Tenable Container Security blade utilization.","$ref":"#/components/schemas/License_UtilizationBlade"},"was":{"description":"The Tenable Web App Scanning blade utilization.","$ref":"#/components/schemas/License_UtilizationBlade"}}},"License_LicenseUtilization":{"type":"object","description":"License utilization information, including total licensed capacity and current usage across all blades.","properties":{"activation_code":{"type":"string","description":"The activation code for the license."},"expiration":{"type":"string","description":"A timestamp indicating the date and time when the license expires."},"last_updated":{"type":"string","description":"A timestamp indicating the date and time when the license utilization data was last updated."},"id":{"type":"string","description":"The unique identifier of the license."},"cluster_id":{"type":"string","description":"The cluster identifier the license is bound to."},"license_by":{"type":"string","description":"The method used to bind the license to the deployment.","enum":["cluster_id","namespace_id","custom_resource"]},"status":{"type":"string","description":"The current status of the license.","enum":["Valid","Invalid","Expired"]},"blades":{"description":"Utilization data for each blade associated with this license.","$ref":"#/components/schemas/License_UtilizationBlades"}}}},"responses":{"License_Error401":{"description":"Returned if the API keys specified in your request are invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error object containing details about the unauthorized request.","properties":{"code":{"type":"string","description":"The error code identifying the cause of the authentication failure.\n\n* `INVALID_API_KEY_CREDS` — The API key credentials in the request are not valid.\n* `MISSING_API_KEY_CREDS` — The request did not include API key credentials."},"description":{"type":"array","description":"An array of error messages describing the authentication failure.","items":{"type":"string"}}}}}}}}},"License_Error404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"An error message indicating the requested resource was not found.","example":"Resource not found"}}}}}},"License_Error500":{"description":"Return an error","content":{"application/json":{"schema":{"type":"object","required":["code","message"],"properties":{"code":{"type":"number","description":"The HTTP status code for the error (500)."},"message":{"type":"string","description":"A message describing the internal server error."}}}}}},"License_Error400":{"description":"Returned if your request specified invalid parameters or if your request was improperly formatted.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","description":"The error object containing details about the bad request.","properties":{"code":{"type":"number","description":"The HTTP status code for the error (400)."},"description":{"type":"array","description":"An array of error messages describing what was invalid in the request.","items":{"type":"string"}}}}}}}}}}},"x-readme":{"proxy-enabled":false,"samples-languages":["python","curl","node","powershell","ruby","javascript","objectivec","java","php","csharp","go","swift","kotlin"]}}