From f3587ac821ef451ad6bb395f5adb4e5889397b7d Mon Sep 17 00:00:00 2001 From: frikky Date: Mon, 11 May 2020 19:17:35 +0200 Subject: [PATCH] Initial open source commit --- .env | 8 + .gitignore | 19 + README.md | 120 + .../generated/carbon_black_response.yaml | 235 + .../generated/cyberreason.yaml | 559 + .../generated/recorded_future.yaml | 1383 + app_gen/openapi-parsers/generated/shodan.yaml | 166 + .../generated/tenable_tenable.io.yaml | 149 + app_gen/openapi-parsers/misp.py | 109 + .../other/TIO-API-Container-Security-v1.json | 1 + .../other/TIO-API-Container-Security-v2.json | 1 + .../other/TIO-API-Downloads-API.json | 1 + .../other/TIO-API-Tenable-Platform.json | 1 + .../TIO-API-Vulnerability-Management.json | 1 + .../TIO-API-Web-Application-Scanning.json | 1 + app_gen/openapi-parsers/swimlane.py | 131 + app_gen/openapi/README.md | 7 + app_gen/openapi/baseline/Dockerfile | 26 + app_gen/openapi/baseline/requirements.txt | 3 + app_gen/openapi/test.go | 387 + app_gen/openapi/testGCP.go | 499 + app_gen/python-lib/README.md | 5 + app_gen/python-lib/baseline/Dockerfile | 26 + .../python-lib/baseline/docker-compose.yml | 14 + app_gen/python-lib/baseline/env.txt | 4 + app_gen/python-lib/baseline/requirements.txt | 1 + app_gen/python-lib/generator.py | 525 + app_gen/python-lib/requirements.txt | 2 + backend/Dockerfile | 26 + backend/README.md | 61 + backend/database/Dockerfile | 5 + backend/deploy-backend.sh | 8 + backend/go-app/README.md | 6 + backend/go-app/app.yaml | 98 + backend/go-app/codegen.go | 1279 + backend/go-app/docker.go | 644 + .../Dockerfile | 26 + .../requirements.txt | 3 + .../Dockerfile | 26 + .../api.yaml | 50 + .../requirements.txt | 3 + .../src/app.py | 29 + .../Dockerfile | 26 + .../api.yaml | 193 + .../requirements.txt | 3 + .../src/app.py | 66 + .../Dockerfile | 26 + .../api.yaml | 193 + .../requirements.txt | 3 + .../src/app.py | 66 + .../Dockerfile | 26 + .../api.yaml | 228 + .../requirements.txt | 3 + .../src/app.py | 66 + .../Dockerfile | 26 + .../api.yaml | 31 + .../requirements.txt | 3 + .../src/app.py | 23 + .../Dockerfile | 26 + .../api.yaml | 31 + .../requirements.txt | 3 + .../src/app.py | 23 + backend/go-app/go.mod | 31 + backend/go-app/go.sum | 400 + backend/go-app/main.go | 5587 ++++ backend/go-app/walkoff.go | 3594 +++ backend/go-app/webapp | Bin 0 -> 32776728 bytes backend/run.sh | 15 + backend/tests/cleanup.sh | 2 + backend/tests/execute.sh | 5 + backend/tests/hooks.sh | 24 + backend/tests/run_function.py | 69 + backend/tests/scheduleapps.sh | 2 + backend/tests/schedules.sh | 2 + backend/tests/sendmail.sh | 3 + backend/tests/testWorkflows.sh | 7 + backend/tests/triggers.sh | 1 + backend/tests/websocket.sh | 4 + backend/tests/workflowdata.json | 202 + backend/tests/workflowresults.sh | 23 + backend/tests/workflows.sh | 15 + backend/webhook/Dockerfile | 15 + backend/webhook/README.md | 7 + backend/webhook/functionhook.go | 44 + backend/webhook/gcp_run.sh | 4 + backend/webhook/run.sh | 16 + backend/webhook/webhook.go | 260 + docker-compose.yml | 68 + frontend/Dockerfile | 33 + frontend/build.sh | 3 + frontend/certs/README | 10 + frontend/certs/cert.pem | 31 + frontend/certs/chain.pem | 27 + frontend/certs/fullchain.pem | 58 + frontend/certs/old/cert1.pem | 34 + frontend/certs/old/certbot.log | 12 + frontend/certs/old/chain1.pem | 27 + frontend/certs/old/fullchain1.pem | 61 + frontend/certs/old/privkey1.pem | 28 + frontend/certs/privkey.pem | 28 + frontend/nginx.conf | 55 + frontend/nginxtest.conf | 89 + frontend/package-lock.json | 23203 ++++++++++++++++ frontend/package.json | 78 + frontend/public/favicon.ico | Bin 0 -> 119717 bytes frontend/public/index.html | 15 + frontend/public/manifest.json | 14 + frontend/run.sh | 17 + frontend/src/About.js | 49 + frontend/src/Admin.js | 395 + frontend/src/AdminSetup.js | 224 + frontend/src/AlertPopup.js | 26 + frontend/src/AlertTemplate.js | 44 + frontend/src/AngularWorkflow.js | 4325 +++ frontend/src/App.js | 166 + frontend/src/AppCreator.js | 1232 + frontend/src/Apps.js | 725 + frontend/src/Contact.js | 343 + frontend/src/Dashboard.js | 211 + frontend/src/Docs.js | 226 + frontend/src/EditSchedule.js | 1391 + frontend/src/EditWebhook.js | 366 + frontend/src/EditWorkflow.js | 364 + frontend/src/Flows.js | 25 + frontend/src/FooterNew.js | 54 + frontend/src/ForgotPassword.js | 122 + frontend/src/ForgotPasswordLink.js | 134 + frontend/src/Header.js | 295 + frontend/src/Hookpost.js | 25 + frontend/src/Landingpage.js | 179 + frontend/src/LandingpageLoggedin.js | 21 + frontend/src/LandingpageNew.js | 349 + frontend/src/LoginPage.js | 255 + frontend/src/LoginPopup.js | 139 + frontend/src/Oauth2.js | 11 + frontend/src/Post.js | 72 + frontend/src/PrivacyPolicy.js | 122 + frontend/src/RegisterLink.js | 93 + frontend/src/RegisterPage.js | 139 + frontend/src/Schedules.js | 220 + frontend/src/Schedulespost.js | 25 + frontend/src/SettingsPage.js | 457 + frontend/src/SettingsPopup.js | 141 + frontend/src/Webhooks.js | 295 + frontend/src/Workflows.js | 831 + frontend/src/appdata.js | 3 + .../src/assets/img/default-monochrome.svg | 1 + frontend/src/assets/img/transform.sh | 3 + frontend/src/charts.js | 427 + frontend/src/defaultCytoscapeStyle.js | 235 + frontend/src/environmentdata.js | 3 + frontend/src/index.css | 14 + frontend/src/index.js | 15 + frontend/src/scheduledata.js | 30 + frontend/src/serviceWorker.js | 127 + frontend/src/webhookdata.js | 15 + frontend/src/workflowdata.js | 3 + frontend/test.sh | 17 + functions/README.md | 19 + functions/newworker/Dockerfile | 25 + functions/newworker/async_logger.py | 253 + functions/newworker/config.py | 73 + functions/newworker/docker_helpers.py | 321 + functions/newworker/helpers.py | 101 + functions/newworker/main.py | 583 + functions/newworker/message_types.py | 214 + functions/newworker/redis_helpers.py | 40 + functions/newworker/requirements.txt | 12 + functions/newworker/workflow_types.py | 548 + functions/onprem/README.md | 40 + functions/onprem/app_sdk/Dockerfile | 16 + functions/onprem/app_sdk/README.md | 3 + functions/onprem/app_sdk/__init__.py | 0 functions/onprem/app_sdk/app_base.py | 437 + functions/onprem/app_sdk/requirements.txt | 2 + functions/onprem/app_sdk/update_dockerhub | 4 + functions/onprem/orborus/Dockerfile | 14 + functions/onprem/orborus/build.sh | 4 + functions/onprem/orborus/orborus.go | 425 + functions/onprem/orborus/run.sh | 5 + functions/onprem/worker/Dockerfile | 21 + functions/onprem/worker/run | 15 + functions/onprem/worker/worker.bin | Bin 0 -> 12508715 bytes functions/onprem/worker/worker.go | 814 + functions/static_baseline.py | 76 + functions/stitcher.go | 702 + functions/triggers/msteams/.gcloudignore | 3 + functions/triggers/msteams/README.md | 17 + functions/triggers/msteams/hook.go | 415 + functions/triggers/msteams/main.go | 41 + functions/triggers/msteams/manifest.json | 50 + functions/triggers/msteams/test.sh | 35 + functions/triggers/outlook/README.md | 57 + functions/triggers/outlook/hook.go | 222 + .../triggers/outlook/integrations/config.json | 7 + .../triggers/outlook/integrations/server.crt | 21 + .../triggers/outlook/integrations/server.key | 27 + functions/triggers/outlook/main.go | 41 + functions/triggers/outlook/run.go | 304 + functions/triggers/webhook/.gcloudignore | 3 + functions/triggers/webhook/README.md | 17 + functions/triggers/webhook/hook.go | 249 + functions/triggers/webhook/main.go | 39 + install-guide.md | 27 + setup.sh | 31 + 205 files changed, 63293 insertions(+) create mode 100644 .env create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app_gen/openapi-parsers/generated/carbon_black_response.yaml create mode 100644 app_gen/openapi-parsers/generated/cyberreason.yaml create mode 100644 app_gen/openapi-parsers/generated/recorded_future.yaml create mode 100644 app_gen/openapi-parsers/generated/shodan.yaml create mode 100644 app_gen/openapi-parsers/generated/tenable_tenable.io.yaml create mode 100644 app_gen/openapi-parsers/misp.py create mode 100644 app_gen/openapi-parsers/other/TIO-API-Container-Security-v1.json create mode 100644 app_gen/openapi-parsers/other/TIO-API-Container-Security-v2.json create mode 100644 app_gen/openapi-parsers/other/TIO-API-Downloads-API.json create mode 100644 app_gen/openapi-parsers/other/TIO-API-Tenable-Platform.json create mode 100644 app_gen/openapi-parsers/other/TIO-API-Vulnerability-Management.json create mode 100644 app_gen/openapi-parsers/other/TIO-API-Web-Application-Scanning.json create mode 100644 app_gen/openapi-parsers/swimlane.py create mode 100644 app_gen/openapi/README.md create mode 100644 app_gen/openapi/baseline/Dockerfile create mode 100644 app_gen/openapi/baseline/requirements.txt create mode 100644 app_gen/openapi/test.go create mode 100644 app_gen/openapi/testGCP.go create mode 100644 app_gen/python-lib/README.md create mode 100644 app_gen/python-lib/baseline/Dockerfile create mode 100644 app_gen/python-lib/baseline/docker-compose.yml create mode 100644 app_gen/python-lib/baseline/env.txt create mode 100644 app_gen/python-lib/baseline/requirements.txt create mode 100644 app_gen/python-lib/generator.py create mode 100644 app_gen/python-lib/requirements.txt create mode 100644 backend/Dockerfile create mode 100644 backend/README.md create mode 100644 backend/database/Dockerfile create mode 100644 backend/deploy-backend.sh create mode 100644 backend/go-app/README.md create mode 100644 backend/go-app/app.yaml create mode 100644 backend/go-app/codegen.go create mode 100644 backend/go-app/docker.go create mode 100644 backend/go-app/generated/-12c5230274e48df565e79874f997cb7f/Dockerfile create mode 100644 backend/go-app/generated/-12c5230274e48df565e79874f997cb7f/requirements.txt create mode 100644 backend/go-app/generated/Asd-37fff3ea5fa10cdde521f21134320c26/Dockerfile create mode 100755 backend/go-app/generated/Asd-37fff3ea5fa10cdde521f21134320c26/api.yaml create mode 100644 backend/go-app/generated/Asd-37fff3ea5fa10cdde521f21134320c26/requirements.txt create mode 100755 backend/go-app/generated/Asd-37fff3ea5fa10cdde521f21134320c26/src/app.py create mode 100644 backend/go-app/generated/Uber API-547f1803-edf7-433f-8016-d508ed978f65/Dockerfile create mode 100755 backend/go-app/generated/Uber API-547f1803-edf7-433f-8016-d508ed978f65/api.yaml create mode 100644 backend/go-app/generated/Uber API-547f1803-edf7-433f-8016-d508ed978f65/requirements.txt create mode 100755 backend/go-app/generated/Uber API-547f1803-edf7-433f-8016-d508ed978f65/src/app.py create mode 100644 backend/go-app/generated/Uber API-795ed46f-2dbd-43d6-9d0c-1f6b9cce14ea/Dockerfile create mode 100755 backend/go-app/generated/Uber API-795ed46f-2dbd-43d6-9d0c-1f6b9cce14ea/api.yaml create mode 100644 backend/go-app/generated/Uber API-795ed46f-2dbd-43d6-9d0c-1f6b9cce14ea/requirements.txt create mode 100755 backend/go-app/generated/Uber API-795ed46f-2dbd-43d6-9d0c-1f6b9cce14ea/src/app.py create mode 100644 backend/go-app/generated/Uber API-f97a44dd-f1c3-48ae-b46f-ceb19ce3039c/Dockerfile create mode 100755 backend/go-app/generated/Uber API-f97a44dd-f1c3-48ae-b46f-ceb19ce3039c/api.yaml create mode 100644 backend/go-app/generated/Uber API-f97a44dd-f1c3-48ae-b46f-ceb19ce3039c/requirements.txt create mode 100755 backend/go-app/generated/Uber API-f97a44dd-f1c3-48ae-b46f-ceb19ce3039c/src/app.py create mode 100644 backend/go-app/generated/a-757f74fead843a8d9b5a954d2fadfa69/Dockerfile create mode 100755 backend/go-app/generated/a-757f74fead843a8d9b5a954d2fadfa69/api.yaml create mode 100644 backend/go-app/generated/a-757f74fead843a8d9b5a954d2fadfa69/requirements.txt create mode 100755 backend/go-app/generated/a-757f74fead843a8d9b5a954d2fadfa69/src/app.py create mode 100644 backend/go-app/generated/test-f383aa4f34d36802daf465e2af5f7aa1/Dockerfile create mode 100755 backend/go-app/generated/test-f383aa4f34d36802daf465e2af5f7aa1/api.yaml create mode 100644 backend/go-app/generated/test-f383aa4f34d36802daf465e2af5f7aa1/requirements.txt create mode 100755 backend/go-app/generated/test-f383aa4f34d36802daf465e2af5f7aa1/src/app.py create mode 100644 backend/go-app/go.mod create mode 100644 backend/go-app/go.sum create mode 100644 backend/go-app/main.go create mode 100644 backend/go-app/walkoff.go create mode 100755 backend/go-app/webapp create mode 100644 backend/run.sh create mode 100644 backend/tests/cleanup.sh create mode 100644 backend/tests/execute.sh create mode 100644 backend/tests/hooks.sh create mode 100644 backend/tests/run_function.py create mode 100644 backend/tests/scheduleapps.sh create mode 100644 backend/tests/schedules.sh create mode 100644 backend/tests/sendmail.sh create mode 100644 backend/tests/testWorkflows.sh create mode 100644 backend/tests/triggers.sh create mode 100644 backend/tests/websocket.sh create mode 100644 backend/tests/workflowdata.json create mode 100644 backend/tests/workflowresults.sh create mode 100644 backend/tests/workflows.sh create mode 100644 backend/webhook/Dockerfile create mode 100644 backend/webhook/README.md create mode 100644 backend/webhook/functionhook.go create mode 100644 backend/webhook/gcp_run.sh create mode 100644 backend/webhook/run.sh create mode 100644 backend/webhook/webhook.go create mode 100644 docker-compose.yml create mode 100644 frontend/Dockerfile create mode 100644 frontend/build.sh create mode 100644 frontend/certs/README create mode 100644 frontend/certs/cert.pem create mode 100644 frontend/certs/chain.pem create mode 100644 frontend/certs/fullchain.pem create mode 100644 frontend/certs/old/cert1.pem create mode 100644 frontend/certs/old/certbot.log create mode 100644 frontend/certs/old/chain1.pem create mode 100644 frontend/certs/old/fullchain1.pem create mode 100644 frontend/certs/old/privkey1.pem create mode 100644 frontend/certs/privkey.pem create mode 100644 frontend/nginx.conf create mode 100644 frontend/nginxtest.conf create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/public/favicon.ico create mode 100644 frontend/public/index.html create mode 100644 frontend/public/manifest.json create mode 100755 frontend/run.sh create mode 100644 frontend/src/About.js create mode 100644 frontend/src/Admin.js create mode 100644 frontend/src/AdminSetup.js create mode 100644 frontend/src/AlertPopup.js create mode 100644 frontend/src/AlertTemplate.js create mode 100644 frontend/src/AngularWorkflow.js create mode 100644 frontend/src/App.js create mode 100644 frontend/src/AppCreator.js create mode 100644 frontend/src/Apps.js create mode 100644 frontend/src/Contact.js create mode 100644 frontend/src/Dashboard.js create mode 100644 frontend/src/Docs.js create mode 100644 frontend/src/EditSchedule.js create mode 100644 frontend/src/EditWebhook.js create mode 100644 frontend/src/EditWorkflow.js create mode 100644 frontend/src/Flows.js create mode 100644 frontend/src/FooterNew.js create mode 100644 frontend/src/ForgotPassword.js create mode 100644 frontend/src/ForgotPasswordLink.js create mode 100644 frontend/src/Header.js create mode 100644 frontend/src/Hookpost.js create mode 100644 frontend/src/Landingpage.js create mode 100644 frontend/src/LandingpageLoggedin.js create mode 100644 frontend/src/LandingpageNew.js create mode 100644 frontend/src/LoginPage.js create mode 100644 frontend/src/LoginPopup.js create mode 100644 frontend/src/Oauth2.js create mode 100644 frontend/src/Post.js create mode 100644 frontend/src/PrivacyPolicy.js create mode 100644 frontend/src/RegisterLink.js create mode 100644 frontend/src/RegisterPage.js create mode 100644 frontend/src/Schedules.js create mode 100644 frontend/src/Schedulespost.js create mode 100644 frontend/src/SettingsPage.js create mode 100644 frontend/src/SettingsPopup.js create mode 100644 frontend/src/Webhooks.js create mode 100644 frontend/src/Workflows.js create mode 100644 frontend/src/appdata.js create mode 100755 frontend/src/assets/img/default-monochrome.svg create mode 100755 frontend/src/assets/img/transform.sh create mode 100644 frontend/src/charts.js create mode 100644 frontend/src/defaultCytoscapeStyle.js create mode 100644 frontend/src/environmentdata.js create mode 100644 frontend/src/index.css create mode 100644 frontend/src/index.js create mode 100644 frontend/src/scheduledata.js create mode 100644 frontend/src/serviceWorker.js create mode 100644 frontend/src/webhookdata.js create mode 100644 frontend/src/workflowdata.js create mode 100755 frontend/test.sh create mode 100644 functions/README.md create mode 100644 functions/newworker/Dockerfile create mode 100644 functions/newworker/async_logger.py create mode 100644 functions/newworker/config.py create mode 100644 functions/newworker/docker_helpers.py create mode 100644 functions/newworker/helpers.py create mode 100644 functions/newworker/main.py create mode 100644 functions/newworker/message_types.py create mode 100644 functions/newworker/redis_helpers.py create mode 100644 functions/newworker/requirements.txt create mode 100644 functions/newworker/workflow_types.py create mode 100644 functions/onprem/README.md create mode 100644 functions/onprem/app_sdk/Dockerfile create mode 100644 functions/onprem/app_sdk/README.md create mode 100644 functions/onprem/app_sdk/__init__.py create mode 100644 functions/onprem/app_sdk/app_base.py create mode 100644 functions/onprem/app_sdk/requirements.txt create mode 100644 functions/onprem/app_sdk/update_dockerhub create mode 100644 functions/onprem/orborus/Dockerfile create mode 100644 functions/onprem/orborus/build.sh create mode 100644 functions/onprem/orborus/orborus.go create mode 100644 functions/onprem/orborus/run.sh create mode 100644 functions/onprem/worker/Dockerfile create mode 100644 functions/onprem/worker/run create mode 100755 functions/onprem/worker/worker.bin create mode 100644 functions/onprem/worker/worker.go create mode 100644 functions/static_baseline.py create mode 100644 functions/stitcher.go create mode 100644 functions/triggers/msteams/.gcloudignore create mode 100644 functions/triggers/msteams/README.md create mode 100644 functions/triggers/msteams/hook.go create mode 100644 functions/triggers/msteams/main.go create mode 100644 functions/triggers/msteams/manifest.json create mode 100644 functions/triggers/msteams/test.sh create mode 100644 functions/triggers/outlook/README.md create mode 100644 functions/triggers/outlook/hook.go create mode 100644 functions/triggers/outlook/integrations/config.json create mode 100644 functions/triggers/outlook/integrations/server.crt create mode 100644 functions/triggers/outlook/integrations/server.key create mode 100644 functions/triggers/outlook/main.go create mode 100644 functions/triggers/outlook/run.go create mode 100644 functions/triggers/webhook/.gcloudignore create mode 100644 functions/triggers/webhook/README.md create mode 100644 functions/triggers/webhook/hook.go create mode 100644 functions/triggers/webhook/main.go create mode 100644 install-guide.md create mode 100644 setup.sh diff --git a/.env b/.env new file mode 100644 index 00000000..cf00a013 --- /dev/null +++ b/.env @@ -0,0 +1,8 @@ +# Default execution environment for workers +ORG_ID=Shuffle +ENVIRONMENT_NAME=Shuffle + +# Other configs +BACKEND_HOSTNAME=shuffle-backend +BACKEND_PORT=5010 +OUTER_HOSTNAME=192.168.3.6 diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..f637768c --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +*node_modules/ +*build/ +*.lock +*.swo +*.swp +*.swn +*__pycache__* + +Shuffle-*.json + +functions/generated_apps +*.zip + +*.png +*.jpeg +*.jpg + +backend/onprem/app_sdk/apps +*test.py diff --git a/README.md b/README.md new file mode 100644 index 00000000..84d99b83 --- /dev/null +++ b/README.md @@ -0,0 +1,120 @@ +# Shuffle +[Shuffler](https://shuffler.io) is an automation platform for your security stack. It leverages docker for scaling and OpenAPI for integrations. It has the possibility to run across multiple isolated environments, and gives you powerful tools to track progress. + +## Try it +Check out the [installation guide](https://github.com/frikky/shuffle/blob/master/install-guide.md) + +## Documentation +Documentation can be found on https://shuffler.io/docs/about or in your own instance. Currently lacking: +* API documentation +* Updates after migrating from SaaS to open source + +## Features +* Premade workflows for Email, TheHive, C rtex MISP +* Premade apps for a number of security tools +* Simple workflow editor +* App creator for [OpenAPI](https://github.com/frikky/OpenAPI-security-definitions) +* Easy to learn Python library for custom apps + +## License +Shuffle is an open source and free software released under the AGPL (Affero General Public License). + +### Setup - Local +Frontend - requires [npm](https://nodejs.org/en/download/)/[yarn](https://yarnpkg.com/lang/en/docs/install/#debian-stable)/your preferred manager. Runs independently from backend - edit frontend/src/App.yaml to change from localhost to prod setting. +```bash +cd frontend +npm i +npm start +``` + +Backend - API calls - requires [>=go1.13](https://golang.org/dl/) and [gcloud](https://cloud.google.com/sdk/install) +```bash +cd backend/go-app +go build +sudo apt -y update && sudo apt -y upgrade && sudo apt install -y google-cloud-sdk-app-engine-python google-cloud-sdk-app-engine-python google-cloud-sdk-datastore-emulator google-cloud-sdk-app-engine-go +go run *.go +``` + +### Project overview +Below is the folder structure with a short explanation +```bash +├── README.md # :) +├── deploy.sh # Simple oneliner script to build and deploy the code to gcloud +├── backend # Contains directly backend related code. Go with sh tests +├── frontend # Contains frontend code. ReactJS and cytoscape. Horrible code :) +├── app_gen # Contains code generation projects for OpenAPI or PythonLib -> Shuffler app +├── functions # Contains google cloud function code mainly. +│   ├── apps # Some of the existing apps, manually made mostly +│   ├── generated_apps # Some of the autogenerated apps +│   ├── newworker # The worker that handles a workflow as a google cloud function +│   ├── static_baseline.py # Static code used by stitcher.go to generate code +│   ├── stitcher.go # Attempts to stitch together an app and deploy it to cloud functions and (TBD: Docker hub) +│   └── triggers # Custom triggers used in https://shuffler.io/workflows +│   ├── onprem # All code for onprem solutions (https://shuffler.io/docs/hybrid for short doc) _mostly_ reflects google cloud. Should be deprecated somehow and use the same code. +├── openintegrationhub # Here to remind me that openintegrationhub is a thing +├── legacy # Legacy README. Contains A LOT of useful information about what I found with WALKOFF +└── tmp # Some legacy code, not yet ready to be removed +``` + +# Architecture +A basic image of how everything fits together, including legacy (left side) +![](architecture.png) + +# Technology +GCP was chosen because why not use the best thingies. "Serverless" \o/ +```bash +├── languages +│   ├── Go # I like go, which is why go. +│   ├── Python3.7 # 3.7 specifically because of f-strings and 2.7 deprecation in 2020 +│   ├── Javascript # Frontend stuff. Uses ReactJS + Cytoscape for visualization +│   ├── sh/Bash # Basic testing and some deployment stuff +├── gcloud +│   ├── appengine # Hosting frontend and backend. Currently on a free plan which is nice :) +│   ├── cloud functions # Runs the "apps", "triggers" and other things +│   ├── datastore # Database - TODO before live: Move to firebase +│   ├── storage # Save datablobs and information before deployment +│   ├── pubsub # Used to instantly run cloud functions +│   ├── scheduler # Schedules can be triggers +├── onprem +│   ├── Docker # Runs the same cloud functions. I didn't like the thought of proxies +``` + +# Current focus(es) AKA todo +1. Make workflows work 99%+ of the time. This is a challenge with onprem + cloud stuff. Cloud sometimes breaks currently because of workers +2. Add user run statistics (e.g. how many runs of each workflow, how many failures etc.) +3. X - Fix OpenAPI app generator +4. Fix error overview in workflows +5. X - Better GUI (improved, but not good) +6. Have default workflows + +# How to Add a trigger / custom thing +1. Add it to TriggersView in AngularWorkflow.js +2. Add it to RightSideBar for trigger + +# Migration +There will be a major overhaul to the backend specifically. I'm currently moving and updating the following: +- Create dockerfiles and a single runscript +- * App creator - (Cloud function -> Docker) +- * Workflows - Run workflows locally +- * App list - IMPORT EXISTING APPS +- * Dockerfiles - Load the ones that are in workflows with a new version +- * Docker-compose- Frontend, backend, db & orborus +- * Configuration - Write setup documentation - Did for docker +- Workflows - IMPORT DEFAULT WORKFLOWS - Create some towards e.g. TheHive & MISP. +- Documentation - General documentation /docs rewrite +- API doc - 1. In Shuffle. 2. In e.g. python +- Remove orborus? Can deploy straight, but that would be weird. +- Add secret to orborus +- Change workflow name +- Remove registration and add user screen +- Add external and internal hostname for orborus & worker + +``` +# 1. export DATASTORE_EMULATOR_HOST=0.0.0.0:8000 +# 2. docker run -p 8000:8000 google/cloud-sdk gcloud beta emulators datastore start --project=shuffle --host-port 0.0.0.0:8000 --no-store-on-disk +``` +* Mail: Use appengine and connect to sendmail + +### Migration issues: +* Some workflows where items have multiple parents don't work. +* Fix dummy.json (GCP config) - bypass this somehow. diff --git a/app_gen/openapi-parsers/generated/carbon_black_response.yaml b/app_gen/openapi-parsers/generated/carbon_black_response.yaml new file mode 100644 index 00000000..124f2968 --- /dev/null +++ b/app_gen/openapi-parsers/generated/carbon_black_response.yaml @@ -0,0 +1,235 @@ +components: + schemas: + tmp0: + properties: + cb_version: + type: string + company_name: + type: string + copied_mod_len: + type: string + digsig_issuer: + type: string + digsig_prog_name: + type: string + digsig_publisher: + type: string + digsig_result: + type: string + digsig_result_code: + type: string + digsig_sign_time: + type: string + digsig_subject: + type: string + endpoint: + type: string + event_partition_id: + type: string + facet_id: + type: string + file_desc: + type: string + file_version: + type: string + group: + type: string + host_count: + type: string + internal_name: + type: string + is_64bit: + type: string + is_executable_image: + type: string + last_seen: + type: string + legal_copyright: + type: string + md5: + type: string + observed_filename: + type: string + orig_mod_len: + type: string + original_filename: + type: string + os_type: + type: string + product_name: + type: string + product_version: + type: string + server_added_timestamp: + type: string + signed: + type: string + timestamp: + type: string + watchlists: + type: string + type: object + tmp1: + properties: + message: + type: string + type: object + tmp2: + properties: + childproc_count: + type: string + cmdline: + type: string + comms_ip: + type: string + crossproc_count: + type: string + emet_config: + type: string + emet_count: + type: string + filemod_count: + type: string + filtering_known_dlls: + type: string + group: + type: string + host_type: + type: string + hostname: + type: string + id: + type: string + interface_ip: + type: string + last_server_update: + type: string + last_update: + type: string + modload_count: + type: string + netconn_count: + type: string + os_type: + type: string + parent_id: + type: string + parent_name: + type: string + parent_pid: + type: string + parent_unique_id: + type: string + path: + type: string + process_md5: + type: string + process_name: + type: string + process_pid: + type: string + processblock_count: + type: string + regmod_count: + type: string + segment_id: + type: string + sensor_id: + type: string + start: + type: string + terminated: + type: string + unique_id: + type: string + username: + type: string + type: object + tmp3: + properties: + message: + type: string + type: object + securitySchemes: {} +info: + contact: + email: frikky@shuffler.io + name: '@frikkylikeme' + url: https://twitter.com/frikkylikeme + description: Automated generation of Carbon Black Response + title: Carbon Black Response + version: 1.0.0 +openapi: 3.0.2 +paths: + tmp0: + post: + description: Carbon Black Response Binary Search + parameters: + - description: Query + in: query + name: Query + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp0' + description: Successful request + summary: Carbon Black Response Binary Search + tmp1: + post: + description: Carbon Black Response Isolate Sensor + parameters: + - description: Hostname of a sensor to isolate. + in: query + name: Hostname + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp1' + description: Successful request + summary: Carbon Black Response Isolate Sensor + tmp2: + post: + description: Carbon Black Response Process Search + parameters: + - description: Query + in: query + name: Query + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp2' + description: Successful request + summary: Carbon Black Response Process Search + tmp3: + post: + description: Carbon Black Response Unisolate Sensor + parameters: + - description: Hostname of a sensor to unisolate. + in: query + name: Hostname + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp3' + description: Successful request + summary: Carbon Black Response Unisolate Sensor diff --git a/app_gen/openapi-parsers/generated/cyberreason.yaml b/app_gen/openapi-parsers/generated/cyberreason.yaml new file mode 100644 index 00000000..70e10109 --- /dev/null +++ b/app_gen/openapi-parsers/generated/cyberreason.yaml @@ -0,0 +1,559 @@ +components: + schemas: + tmp0: + properties: + outcome: + type: string + type: object + tmp1: + properties: + allRansomwareProcessesSuspended: + type: string + closeTime: + type: string + closerName: + type: string + creationTime: + type: string + customClassification: + type: string + decisionFeature: + type: string + detectionType: + type: string + elementDisplayName: + type: string + hasRansomwareSuspendedProcesses: + type: string + isBlocked: + type: string + malopActivityTypes: + type: string + malopLastUpdateTime: + type: string + malopStartTime: + type: string + managementStatus: + type: string + rootCauseElementNames: + type: string + rootCauseElementTypes: + type: string + type: object + tmp2: + properties: + blocking: + type: string + direction: + type: string + domain: + type: string + ipAddress: + type: string + ipAddressString: + type: string + lastUpdated: + type: string + port: + type: string + ruleId: + type: string + type: object + tmp3: + properties: + blacklistClassification: + type: string + classificationLink: + type: string + containsTorDomain: + type: string + domainClassificationSuspicion: + type: string + domainNameUniqueId: + type: string + elementDisplayName: + type: string + everResolvedDomain: + type: string + everResolvedSecondLevelDomain: + type: string + extendedDisplayId: + type: string + federationSegments: + type: string + getIpDiscoveryDomainList: + type: string + hasMalops: + type: string + hasResolvedClassificationEvidence: + type: string + hasSuspicions: + type: string + indifferentClassification: + type: string + isDomainMalicious: + type: string + isInIpDiscoveryDomainList: + type: string + isInternalDomain: + type: string + isInternalDomainByName: + type: string + isReverseLookup: + type: string + isTorrentDomain: + type: string + lookupDomainClassification: + type: string + maliciousClassification: + type: string + maliciousClassificationString: + type: string + maliciousClassificationType: + type: string + malwareClassification: + type: string + name: + type: string + relatedToMalop: + type: string + rootCauseKey: + type: string + secondLevelDomain: + type: string + sinkholedClassification: + type: string + sinkholedClassificationEvidence: + type: string + topLevelDomain: + type: string + unknownClassification: + type: string + unresolvedClassification: + type: string + unwantedClassification: + type: string + whitelistClassification: + type: string + type: object + tmp4: + properties: + attemptExecutionProcessSuspicion: + type: string + attributes: + type: string + blackListClassification: + type: string + canonizedPath: + type: string + classificationLink: + type: string + correctedPath: + type: string + createdTime: + type: string + detectionEventData: + type: string + dualExtensionName: + type: string + elementDisplayName: + type: string + extendedDisplayId: + type: string + extension: + type: string + extensionRecord: + type: string + extensionType: + type: string + externalProductClassification: + type: string + externalProductClassificationIsSigned: + type: string + externalProductClassificationSignatureVerificationStatus: + type: string + externalProductClassificationSignatureVerified: + type: string + externalProductClassificationSignatureVerifiedByVerificationStatus: + type: string + externalProductClassificationType: + type: string + federationSegments: + type: string + fileHasSystem32SubDirectories: + type: string + fileHasSystemSubDirectories: + type: string + fileHashUniqueId: + type: string + fileInSystemPath: + type: string + fileReputationSuspicion: + type: string + fileReputationSuspicionDecision: + type: string + fileVersionSuspicionDecision: + type: string + getNetworkScannersNames: + type: string + getToolsForUnusualNetworkEvidence: + type: string + hackingToolClassification: + type: string + hasAutorun: + type: string + hasClassification: + type: string + hasInternalName: + type: string + hasLegitClassification: + type: string + hasMalops: + type: string + hasNonLegitClassification: + type: string + hasNonLegitClassificationEvidence: + type: string + hasProductClassification: + type: string + hasRansomwareClassificationSubType: + type: string + hasSuspicions: + type: string + identifiedProduct: + type: string + indifferentClassification: + type: string + isDocument: + type: string + isExecutable: + type: string + isFromRemovableDevice: + type: string + isFromTemp: + type: string + isNoTypeFoundClassification: + type: string + isPEFile: + type: string + isProcessImageFile: + type: string + isScreenSaver: + type: string + isSigned: + type: string + isSuspicious: + type: string + lastDetectionEventData: + type: string + maliciousClassification: + type: string + maliciousClassificationString: + type: string + maliciousClassificationType: + type: string + maliciousToolClassification: + type: string + malwareClassification: + type: string + malwareClassificationEvidence: + type: string + malwareType: + type: string + md5: + type: string + md5String: + type: string + missingInterperterSectionValue: + type: string + modifiedTime: + type: string + name: + type: string + nameWithoutExtension: + type: string + path: + type: string + peSignedAndVerified: + type: string + productClassificationType: + type: string + productType: + type: string + profileId: + type: string + ransomwareClassification: + type: string + reasonSignatureVerificationStatus: + type: string + relatedToMalop: + type: string + reportedByAntiMalwareEvidence: + type: string + reportedByAntiMalwareSuspicion: + type: string + rootCauseKey: + type: string + sha1: + type: string + sha1String: + type: string + signatureVerified: + type: string + signatureVerifiedByVerificationStatus: + type: string + signatureVerifiedInternalOrExternal: + type: string + signedByApple: + type: string + signedByLinux: + type: string + signedByMicrosoft: + type: string + signedByOperatingSystem: + type: string + signedInternalOrExternal: + type: string + size: + type: string + suspiciousClassification: + type: string + suspiciousScreenSaverCondition: + type: string + unknownClassification: + type: string + unsignedPeFileEvidence: + type: string + unwantedClassification: + type: string + whitelistClassification: + type: string + type: object + tmp5: + properties: + address: + type: string + addressInternalExternalLocal: + type: string + addressString: + type: string + blackListClassification: + type: string + countryCode: + type: string + countryName: + type: string + countryNameOrNotExternalType: + type: string + elementDisplayName: + type: string + extendedDisplayId: + type: string + federationSegments: + type: string + geolocationLookup: + type: string + hasMalops: + type: string + hasSuspicions: + type: string + isDynamicConfiguration: + type: string + isExternalAddress: + type: string + isInternalAddress: + type: string + isLocalAddress: + type: string + latitude: + type: string + longitude: + type: string + lookupIpClassification: + type: string + maliciousClassification: + type: string + maliciousClassificationType: + type: string + rootCauseKey: + type: string + uniqueIpAddressHash: + type: string + version: + type: string + whiteListClassification: + type: string + type: object + securitySchemes: {} +info: + contact: + email: frikky@shuffler.io + name: '@frikkylikeme' + url: https://twitter.com/frikkylikeme + description: Automated generation of Cyberreason + title: Cyberreason + version: 1.0.0 +openapi: 3.0.2 +paths: + tmp0: + post: + description: CyberReason Block or Unblock an Item + parameters: + - description: Either 'blacklist' or 'whitelist' + in: query + name: Action + required: true + schema: + type: string + - description: IP, Domain, or Hash CSV values to blacklist or whitelist + in: query + name: Values + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp0' + description: Successful request + summary: CyberReason Block Item + tmp1: + post: + description: CyberReason get alerts from MalOps + parameters: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp1' + description: Successful request + summary: CyberReason Get MalOps Alerts + tmp2: + post: + description: CyberReason isolate a host by port + parameters: + - description: IP to block + in: query + name: IP + required: true + schema: + type: string + - description: Direction to block traffic, one of 'ALL', 'INCOMING', 'OUTGOING' + in: query + name: Direction to block + required: true + schema: + type: string + - description: Port to block + in: query + name: Port + required: true + schema: + type: string + - description: If true will isolate, false will remove from isolation + in: query + name: Block + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp2' + description: Successful request + summary: CyberReason Isolate Host + tmp3: + post: + description: Check CyberReason for a domain + parameters: + - description: Limit of results to return + in: body + name: Limit + required: false + schema: + type: string + - description: Timeout + in: body + name: Timeout (ms) + required: false + schema: + type: string + - description: Domain to search for + in: query + name: Domain + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp3' + description: Successful request + summary: CyberReason Query for Domain + tmp4: + post: + description: Check CyberReason for a hash + parameters: + - description: Limit of results to return + in: body + name: Limit + required: false + schema: + type: string + - description: Timeout + in: body + name: Timeout (ms) + required: false + schema: + type: string + - description: Hash to search for + in: query + name: Hash + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp4' + description: Successful request + summary: CyberReason Query for Hash + tmp5: + post: + description: Check CyberReason for a IP + parameters: + - description: Limit of results to return + in: body + name: Limit + required: false + schema: + type: string + - description: Timeout + in: body + name: Timeout (ms) + required: false + schema: + type: string + - description: IP to search for + in: query + name: IP + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp5' + description: Successful request + summary: CyberReason Query for IP diff --git a/app_gen/openapi-parsers/generated/recorded_future.yaml b/app_gen/openapi-parsers/generated/recorded_future.yaml new file mode 100644 index 00000000..2c3bc20e --- /dev/null +++ b/app_gen/openapi-parsers/generated/recorded_future.yaml @@ -0,0 +1,1383 @@ +components: + schemas: + tmp0: + properties: + counts_returned: + type: string + counts_total: + type: string + data_results: + type: string + type: object + tmp1: + properties: + data_entity_id: + type: string + data_entity_name: + type: string + data_entity_type: + type: string + data_timestamps_firstSeen: + type: string + data_timestamps_lastSeen: + type: string + error_message: + type: string + type: object + tmp10: + properties: + analystNotes: + type: string + counts_count: + type: string + counts_date: + type: string + entity_id: + type: string + entity_name: + type: string + entity_type: + type: string + error_message: + type: string + intelCard: + type: string + location_asn: + type: string + location_cidr_id: + type: string + location_cidr_name: + type: string + location_cidr_type: + type: string + location_location_city: + type: string + location_location_continent: + type: string + location_location_country: + type: string + location_organization: + type: string + metrics_type: + type: string + metrics_value: + type: string + relatedEntities_entities_count: + type: string + relatedEntities_entities_entity_id: + type: string + relatedEntities_entities_entity_name: + type: string + relatedEntities_entities_entity_type: + type: string + relatedEntities_type: + type: string + risk_criticality: + type: string + risk_criticalityLabel: + type: string + risk_evidenceDetails_criticality: + type: string + risk_evidenceDetails_criticalityLabel: + type: string + risk_evidenceDetails_evidenceString: + type: string + risk_evidenceDetails_mitigationString: + type: string + risk_evidenceDetails_rule: + type: string + risk_evidenceDetails_timestamp: + type: string + risk_riskString: + type: string + risk_riskSummary: + type: string + risk_rules: + type: string + risk_score: + type: string + riskyCIDRIPs_ip_id: + type: string + riskyCIDRIPs_ip_name: + type: string + riskyCIDRIPs_ip_type: + type: string + riskyCIDRIPs_score: + type: string + sightings_fragment: + type: string + sightings_published: + type: string + sightings_source: + type: string + sightings_title: + type: string + sightings_type: + type: string + sightings_url: + type: string + threatLists_description: + type: string + threatLists_id: + type: string + threatLists_name: + type: string + threatLists_type: + type: string + timestamps_firstSeen: + type: string + timestamps_lastSeen: + type: string + type: object + tmp11: + properties: + analystNotes_attributes_context_entities_id: + type: string + analystNotes_attributes_context_entities_name: + type: string + analystNotes_attributes_context_entities_type: + type: string + analystNotes_attributes_note_entities_id: + type: string + analystNotes_attributes_note_entities_name: + type: string + analystNotes_attributes_note_entities_type: + type: string + analystNotes_attributes_published: + type: string + analystNotes_attributes_text: + type: string + analystNotes_attributes_title: + type: string + analystNotes_attributes_topic_id: + type: string + analystNotes_attributes_topic_name: + type: string + analystNotes_attributes_topic_type: + type: string + analystNotes_attributes_validated_on: + type: string + analystNotes_attributes_validation_urls_id: + type: string + analystNotes_attributes_validation_urls_name: + type: string + analystNotes_attributes_validation_urls_type: + type: string + analystNotes_id: + type: string + analystNotes_source_id: + type: string + analystNotes_source_name: + type: string + analystNotes_source_type: + type: string + counts_count: + type: string + counts_date: + type: string + entity_id: + type: string + entity_name: + type: string + entity_type: + type: string + error_message: + type: string + intelCard: + type: string + metrics_type: + type: string + metrics_value: + type: string + relatedEntities_entities_count: + type: string + relatedEntities_entities_entity_id: + type: string + relatedEntities_entities_entity_name: + type: string + relatedEntities_entities_entity_type: + type: string + relatedEntities_type: + type: string + sightings_fragment: + type: string + sightings_published: + type: string + sightings_source: + type: string + sightings_title: + type: string + sightings_type: + type: string + sightings_url: + type: string + timestamps_firstSeen: + type: string + timestamps_lastSeen: + type: string + type: object + tmp12: + properties: + Criticality: + type: string + CriticalityLabel: + type: string + EvidenceString: + type: string + MitigationString: + type: string + Name: + type: string + Risk: + type: string + RiskString: + type: string + Rule: + type: string + Timestamp: + type: string + type: object + tmp13: + properties: + count: + type: string + criticality: + type: string + criticalityLabel: + type: string + description: + type: string + name: + type: string + type: object + tmp14: + properties: + analystNotes: + type: string + counts_count: + type: string + counts_date: + type: string + entity_id: + type: string + entity_name: + type: string + entity_type: + type: string + error_message: + type: string + metrics_type: + type: string + metrics_value: + type: string + relatedEntities: + type: string + risk_criticality: + type: string + risk_criticalityLabel: + type: string + risk_evidenceDetails_criticality: + type: string + risk_evidenceDetails_criticalityLabel: + type: string + risk_evidenceDetails_evidenceString: + type: string + risk_evidenceDetails_mitigationString: + type: string + risk_evidenceDetails_rule: + type: string + risk_evidenceDetails_timestamp: + type: string + risk_riskString: + type: string + risk_riskSummary: + type: string + risk_rules: + type: string + risk_score: + type: string + sightings: + type: string + timestamps_firstSeen: + type: string + timestamps_lastSeen: + type: string + type: object + tmp15: + properties: + Criticality: + type: string + CriticalityLabel: + type: string + EvidenceString: + type: string + MitigationString: + type: string + Name: + type: string + Risk: + type: string + RiskString: + type: string + Rule: + type: string + Timestamp: + type: string + type: object + tmp16: + properties: + count: + type: string + criticality: + type: string + criticalityLabel: + type: string + description: + type: string + name: + type: string + type: object + tmp17: + properties: + analystNotes: + type: string + commonNames: + type: string + counts_count: + type: string + counts_date: + type: string + cpe: + type: string + cpe22uri: + type: string + entity_description: + type: string + entity_id: + type: string + entity_name: + type: string + entity_type: + type: string + error_message: + type: string + intelCard: + type: string + metrics_type: + type: string + metrics_value: + type: string + nvdDescription: + type: string + rawrisk_rule: + type: string + rawrisk_timestamp: + type: string + relatedEntities_entities_count: + type: string + relatedEntities_entities_entity_description: + type: string + relatedEntities_entities_entity_id: + type: string + relatedEntities_entities_entity_name: + type: string + relatedEntities_entities_entity_type: + type: string + relatedEntities_type: + type: string + relatedLinks: + type: string + risk_criticality: + type: string + risk_criticalityLabel: + type: string + risk_evidenceDetails_criticality: + type: string + risk_evidenceDetails_criticalityLabel: + type: string + risk_evidenceDetails_evidenceString: + type: string + risk_evidenceDetails_mitigationString: + type: string + risk_evidenceDetails_rule: + type: string + risk_evidenceDetails_timestamp: + type: string + risk_riskString: + type: string + risk_riskSummary: + type: string + risk_rules: + type: string + risk_score: + type: string + sightings_fragment: + type: string + sightings_published: + type: string + sightings_source: + type: string + sightings_title: + type: string + sightings_type: + type: string + sightings_url: + type: string + threatLists: + type: string + timestamps_firstSeen: + type: string + timestamps_lastSeen: + type: string + type: object + tmp2: + properties: + Criticality: + type: string + CriticalityLabel: + type: string + EvidenceString: + type: string + MitigationString: + type: string + Name: + type: string + Risk: + type: string + RiskString: + type: string + Rule: + type: string + Timestamp: + type: string + type: object + tmp3: + properties: + count: + type: string + criticality: + type: string + criticalityLabel: + type: string + description: + type: string + name: + type: string + type: object + tmp4: + properties: + analystNotes: + type: string + counts_count: + type: string + counts_date: + type: string + entity_id: + type: string + entity_name: + type: string + entity_type: + type: string + error_message: + type: string + intelCard: + type: string + metrics_type: + type: string + metrics_value: + type: string + relatedEntities_entities_count: + type: string + relatedEntities_entities_entity_id: + type: string + relatedEntities_entities_entity_name: + type: string + relatedEntities_entities_entity_type: + type: string + relatedEntities_type: + type: string + risk_criticality: + type: string + risk_criticalityLabel: + type: string + risk_evidenceDetails_criticality: + type: string + risk_evidenceDetails_criticalityLabel: + type: string + risk_evidenceDetails_evidenceString: + type: string + risk_evidenceDetails_mitigationString: + type: string + risk_evidenceDetails_rule: + type: string + risk_evidenceDetails_timestamp: + type: string + risk_riskString: + type: string + risk_riskSummary: + type: string + risk_rules: + type: string + risk_score: + type: string + sightings_fragment: + type: string + sightings_published: + type: string + sightings_source: + type: string + sightings_title: + type: string + sightings_type: + type: string + sightings_url: + type: string + threatLists: + type: string + timestamps_firstSeen: + type: string + timestamps_lastSeen: + type: string + type: object + tmp5: + properties: + Criticality: + type: string + CriticalityLabel: + type: string + EvidenceString: + type: string + MitigationString: + type: string + Name: + type: string + Risk: + type: string + RiskString: + type: string + Rule: + type: string + Timestamp: + type: string + type: object + tmp6: + properties: + count: + type: string + criticality: + type: string + criticalityLabel: + type: string + description: + type: string + name: + type: string + type: object + tmp7: + properties: + analystNotes: + type: string + counts_count: + type: string + counts_date: + type: string + entity_id: + type: string + entity_name: + type: string + entity_type: + type: string + error_message: + type: string + hashAlgorithm: + type: string + intelCard: + type: string + metrics_type: + type: string + metrics_value: + type: string + relatedEntities_entities_count: + type: string + relatedEntities_entities_entity_id: + type: string + relatedEntities_entities_entity_name: + type: string + relatedEntities_entities_entity_type: + type: string + relatedEntities_type: + type: string + risk_criticality: + type: string + risk_criticalityLabel: + type: string + risk_evidenceDetails: + type: string + risk_riskString: + type: string + risk_riskSummary: + type: string + risk_rules: + type: string + risk_score: + type: string + sightings_fragment: + type: string + sightings_published: + type: string + sightings_source: + type: string + sightings_title: + type: string + sightings_type: + type: string + sightings_url: + type: string + threatLists: + type: string + timestamps_firstSeen: + type: string + timestamps_lastSeen: + type: string + type: object + tmp8: + properties: + Criticality: + type: string + CriticalityLabel: + type: string + EvidenceString: + type: string + MitigationString: + type: string + Name: + type: string + Risk: + type: string + RiskString: + type: string + Rule: + type: string + Timestamp: + type: string + type: object + tmp9: + properties: + count: + type: string + criticality: + type: string + criticalityLabel: + type: string + description: + type: string + name: + type: string + type: object + securitySchemes: {} +info: + contact: + email: frikky@shuffler.io + name: '@frikkylikeme' + url: https://twitter.com/frikkylikeme + description: Automated generation of Recorded Future + title: Recorded Future + version: 1.0.0 +openapi: 3.0.2 +paths: + tmp0: + post: + description: Search Alert Rules + parameters: + - description: Maximum number of records. + in: body + name: Limit + required: false + schema: + type: string + - description: Freetext search for an alert. + in: query + name: Freetext Search + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp0' + description: Successful request + summary: Recorded Future Search Alert Rules + tmp1: + post: + description: Lookup Alert Notification + parameters: + - description: Alert ID + in: query + name: Alert ID + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp1' + description: Successful request + summary: Recorded Future Lookup Alert Notification + tmp10: + post: + description: Lookup IP Address + parameters: + - description: Whether to include threat lists fields in output + in: query + name: Threat Lists + required: true + schema: + type: boolean + - description: Whether to include risk fields in output + in: query + name: Risk + required: true + schema: + type: boolean + - description: Whether to include risky CIDR IPs fields in output + in: query + name: Risky CIDR IPs + required: true + schema: + type: boolean + - description: IP Address to lookup. + in: query + name: IP Address + required: true + schema: + type: string + - description: Whether to include sightings fields in output + in: query + name: Sightings + required: true + schema: + type: boolean + - description: Whether to include entity fields in output + in: query + name: Entity + required: true + schema: + type: boolean + - description: Whether to include metrics fields in output + in: query + name: Metrics + required: true + schema: + type: boolean + - description: Whether to include intel card fields in output + in: query + name: Intel Card + required: true + schema: + type: boolean + - description: Whether to include location in output + in: query + name: Location + required: true + schema: + type: boolean + - description: Whether to include timestamps fields in output + in: query + name: Timestamps + required: true + schema: + type: boolean + - description: Whether to include counts fields in output + in: query + name: Counts + required: true + schema: + type: boolean + - description: Whether to include related entities fields in output + in: query + name: Related Entities + required: true + schema: + type: boolean + - description: Whether to include analyst notes fields in output + in: query + name: Analyst Notes + required: true + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp10' + description: Successful request + summary: Recorded Future Lookup IP Address + tmp11: + post: + description: Lookup Malware + parameters: + - description: Malware name or ID to lookup + in: query + name: Malware + required: true + schema: + type: string + - description: Whether to include sightings fields in output + in: query + name: Sightings + required: true + schema: + type: boolean + - description: Whether to include entity fields in output + in: query + name: Entity + required: true + schema: + type: boolean + - description: Whether to include metrics fields in output + in: query + name: Metrics + required: true + schema: + type: boolean + - description: Whether to include intel card fields in output + in: query + name: Intel Card + required: true + schema: + type: boolean + - description: Whether to include analyst notes fields in output + in: query + name: Analyst Notes + required: true + schema: + type: boolean + - description: Whether to include timestamps fields in output + in: query + name: Timestamps + required: true + schema: + type: boolean + - description: Whether to include counts fields in output + in: query + name: Counts + required: true + schema: + type: boolean + - description: Whether to include related entities fields in output + in: query + name: Related Entities + required: true + schema: + type: boolean + - description: Whether to include categories fields in output + in: query + name: Categories + required: true + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp11' + description: Successful request + summary: Recorded Future Lookup Malware + tmp12: + post: + description: Get URL Risk List + parameters: + - description: Limit content to entities matching a category/rule. + in: query + name: Category + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp12' + description: Successful request + summary: Recorded Future Get URL Risk List + tmp13: + post: + description: URL Risk Rules + parameters: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp13' + description: Successful request + summary: Recorded Future List URL Risk Rules + tmp14: + post: + description: Recorded Future Lookup URL + parameters: + - description: Whether to include risk fields in output + in: query + name: Risk + required: true + schema: + type: boolean + - description: URL to lookup + in: query + name: URL + required: true + schema: + type: string + - description: Whether to include sightings fields in output + in: query + name: Sightings + required: true + schema: + type: boolean + - description: Whether to include related entities fields in output + in: query + name: Related Entities + required: true + schema: + type: boolean + - description: Whether to include metrics fields in output + in: query + name: Metrics + required: true + schema: + type: boolean + - description: Whether to include analyst notes fields in output + in: query + name: Analyst Notes + required: true + schema: + type: boolean + - description: Whether ot include timestamps fields in output + in: query + name: Timestamps + required: true + schema: + type: boolean + - description: Whether to include counts fields in output + in: query + name: Counts + required: true + schema: + type: boolean + - description: Whether to include entity fields in output + in: query + name: Entity + required: true + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp14' + description: Successful request + summary: Recorded Future Lookup URL + tmp15: + post: + description: Get Vulnerability Risk List + parameters: + - description: Limit content to entities matching a category/rule. + in: query + name: Category + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp15' + description: Successful request + summary: Recorded Future Get Vulnerability Risk List + tmp16: + post: + description: List Vulnerability Risk Rules + parameters: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp16' + description: Successful request + summary: Recorded Future List Vulnerability Risk Rules + tmp17: + post: + description: Lookup Vulnerability + parameters: + - description: Whether to include related links in the output + in: query + name: Related Links + required: true + schema: + type: boolean + - description: Whether to include NVD description fields in output + in: query + name: NVD Description + required: true + schema: + type: boolean + - description: Whether to include risk fields in output + in: query + name: Risk + required: true + schema: + type: boolean + - description: Whether to include CPE 2.2 URI fields in output + in: query + name: CPE 2.2 URI + required: true + schema: + type: boolean + - description: Whether to include common names fields in output + in: query + name: Common Names + required: true + schema: + type: boolean + - description: Vulnerability to lookup + in: query + name: Vulnerability + required: true + schema: + type: string + - description: Whether to include CPE fields in output + in: query + name: CPE + required: true + schema: + type: boolean + - description: Whether to include threat lists fields in output + in: query + name: Threat Lists + required: true + schema: + type: boolean + - description: Whether to include entity fields in output + in: query + name: Entity + required: true + schema: + type: boolean + - description: Whether to include metrics fields in output + in: query + name: Metrics + required: true + schema: + type: boolean + - description: Whether to include intel card fields in output + in: query + name: Intel Card + required: true + schema: + type: boolean + - description: Whether to include analyst notes fields in output + in: query + name: Analyst Notes + required: true + schema: + type: boolean + - description: Whether to include raw risk fields in output + in: query + name: Raw Risk + required: true + schema: + type: boolean + - description: Whether to include timestamps fields in output + in: query + name: Timestamps + required: true + schema: + type: boolean + - description: Whether to include counts fields in output + in: query + name: Counts + required: true + schema: + type: boolean + - description: Whether to include related entities fields in output + in: query + name: Related Entities + required: true + schema: + type: boolean + - description: Whether to include sightings fields in output + in: query + name: Sightings + required: true + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp17' + description: Successful request + summary: Recorded Future Lookup Vulnerability + tmp2: + post: + description: Get Domain Risk List + parameters: + - description: Limit content to entities matching a category/rule. + in: query + name: Category + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp2' + description: Successful request + summary: Recorded Future Get Domain Risk List + tmp3: + post: + description: List Domain Risk Rules + parameters: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp3' + description: Successful request + summary: Recorded Future List Domain Risk Rules + tmp4: + post: + description: Lookup Domain + parameters: + - description: Whether to include threat lists fields in output + in: query + name: Threat Lists + required: true + schema: + type: boolean + - description: Domain name to lookup. + in: query + name: Domain + required: true + schema: + type: string + - description: Whether to include risk fields in output + in: query + name: Risk + required: true + schema: + type: boolean + - description: Whether to include sightings fields in output + in: query + name: Sightings + required: true + schema: + type: boolean + - description: Whether to include entity fields in output + in: query + name: Entity + required: true + schema: + type: boolean + - description: Whether to include metrics fields in output + in: query + name: Metrics + required: true + schema: + type: boolean + - description: Whether to include intel card fields in output + in: query + name: Intel Card + required: true + schema: + type: boolean + - description: Whether to include analyst notes fields in output + in: query + name: Analyst Notes + required: true + schema: + type: boolean + - description: Whether to include timestamps fields in output + in: query + name: Timestamps + required: true + schema: + type: boolean + - description: Whether to include counts fields in output + in: query + name: Counts + required: true + schema: + type: boolean + - description: Whether to include related entities fields in output + in: query + name: Related Entities + required: true + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp4' + description: Successful request + summary: Recorded Future Lookup Domain + tmp5: + post: + description: Get Hash Risk List + parameters: + - description: Limit content to entities matching a category/rule. + in: query + name: Category + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp5' + description: Successful request + summary: Recorded Future Get Hash Risk List + tmp6: + post: + description: List Hash Risk Rules + parameters: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp6' + description: Successful request + summary: Recorded Future List Hash Risk Rules + tmp7: + post: + description: Lookup Hash + parameters: + - description: Whether to include threat lists fields in output + in: query + name: Threat Lists + required: true + schema: + type: boolean + - description: Whether to include hash algorithm fields in output + in: query + name: Hash Algorithm + required: true + schema: + type: boolean + - description: Hash to lookup + in: query + name: Hash + required: true + schema: + type: string + - description: Whether to include risk fields in output + in: query + name: Risk + required: true + schema: + type: boolean + - description: Whether to include sightings fields in output + in: query + name: Sightings + required: true + schema: + type: boolean + - description: Whether to include entity fields in output + in: query + name: Entity + required: true + schema: + type: boolean + - description: Whether to include metrics fields in output + in: query + name: Metrics + required: true + schema: + type: boolean + - description: Whether to include intel card fields in output + in: query + name: Intel Card + required: true + schema: + type: boolean + - description: Whether to include analyst notes fields in output + in: query + name: Analyst Notes + required: true + schema: + type: boolean + - description: Whether to include timestamps fields in output + in: query + name: Timestamps + required: true + schema: + type: boolean + - description: Whether to include counts fields in output + in: query + name: Counts + required: true + schema: + type: boolean + - description: Whether to include related entities fields in output + in: query + name: Related Entities + required: true + schema: + type: boolean + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp7' + description: Successful request + summary: Recorded Future Lookup Hash + tmp8: + post: + description: Get IP Risk List + parameters: + - description: Limit content to entities matching a category/rule. + in: query + name: Category + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp8' + description: Successful request + summary: Recorded Future Get IP Risk List + tmp9: + post: + description: List IP Risk Rules + parameters: [] + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp9' + description: Successful request + summary: Recorded Future List IP Risk Rules diff --git a/app_gen/openapi-parsers/generated/shodan.yaml b/app_gen/openapi-parsers/generated/shodan.yaml new file mode 100644 index 00000000..8004d442 --- /dev/null +++ b/app_gen/openapi-parsers/generated/shodan.yaml @@ -0,0 +1,166 @@ +components: + schemas: + tmp0: + properties: + bid: + type: string + cve: + type: string + description: + type: string + msb: + type: string + osvdb: + type: string + source: + type: string + type: object + tmp1: + properties: + data: + type: string + domains: + type: string + hostnames: + type: string + ip: + type: string + location.area_code: + type: string + location.city: + type: string + location.country_code: + type: string + location.country_name: + type: string + location.dma_code: + type: string + location.latitude: + type: string + location.longitude: + type: string + location.postal_code: + type: string + location.region_code: + type: string + org: + type: string + os: + type: string + port: + type: string + transport: + type: string + type: object + tmp2: + properties: + devicetype: + type: string + domains: + type: string + hostnames: + type: string + ip_str: + type: string + isp: + type: string + location.area_code: + type: string + location.city: + type: string + location.country_code: + type: string + location.country_name: + type: string + location.dma_code: + type: string + location.latitude: + type: string + location.longitude: + type: string + location.postal_code: + type: string + org: + type: string + os: + type: string + port: + type: string + product: + type: string + timestamp: + type: string + title: + type: string + type: object + securitySchemes: {} +info: + contact: + email: frikky@shuffler.io + name: '@frikkylikeme' + url: https://twitter.com/frikkylikeme + description: Automated generation of Shodan + title: Shodan + version: 1.0.0 +openapi: 3.0.2 +paths: + tmp0: + post: + description: Search across a variety of data sources for exploits + parameters: + - description: Search query used to search the database of known exploits + in: query + name: Query + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp0' + description: Successful request + summary: Shodan Exploit Search + tmp1: + post: + description: Search all services that have been found on the given host IP + parameters: + - description: Host IP address + in: query + name: IP + required: true + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp1' + description: Successful request + summary: Shodan Host + tmp2: + post: + description: Search the SHODAN database + parameters: + - description: Keyword to search Shodan for + in: query + name: Query + required: true + schema: + type: string + - description: 'Max number of results to return. Default: ''Infinite''' + in: body + name: Limit + required: false + schema: + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/tmp2' + description: Successful request + summary: Shodan Search diff --git a/app_gen/openapi-parsers/generated/tenable_tenable.io.yaml b/app_gen/openapi-parsers/generated/tenable_tenable.io.yaml new file mode 100644 index 00000000..3bac77a9 --- /dev/null +++ b/app_gen/openapi-parsers/generated/tenable_tenable.io.yaml @@ -0,0 +1,149 @@ +components: + schemas: + tmp0: + properties: + bios_uuid: + type: string + fqdn: + type: string + hostname: + type: string + id: + type: string + ipv4: + type: string + ipv6: + type: string + mac_address: + type: string + netbios_name: + type: string + operating_system: + type: string + ssh_fingerprint: + type: string + system_type: + type: string + type: object + tmp1: + properties: + agent_name: + type: string + fqdn: + type: string + id: + type: string + ipv4: + type: string + ipv6: + type: string + last_seen: + type: string + mac_address: + type: string + operating_system: + type: string + type: object + tmp2: + properties: + hostcount: + type: string + name: + type: string + owner: + type: string + policy: + type: string + scan_end: + type: string + scan_start: + type: string + status: + type: string + targets: + type: string + uuid: + type: string + type: object + tmp4: + properties: + count: + type: string + plugin_family: + type: string + plugin_name: + type: string + severity: + type: string + vulnerability_state: + type: string + type: object + securitySchemes: {} +info: + contact: + email: frikky@shuffler.io + name: '@frikkylikeme' + url: https://twitter.com/frikkylikeme + description: Automated generation of Tenable Tenable.io + title: Tenable Tenable.io + version: 1.0.0 +openapi: 3.0.2 +paths: + tmp0: + post: + description: Returns information about the specified asset. + parameters: + - description: The UUID of the asset. + in: query + name: Asset UUID + required: true + schema: + type: string + responses: + '200': + description: Successful request + summary: Tenable.io Asset Info + tmp1: + post: + description: Returns a list of up to 5000 assets. + parameters: [] + responses: + '200': + description: Successful request + summary: Tenable.io List Assets + tmp2: + post: + description: Returns details for the given scan. + parameters: + - description: The ID of the scan. + in: query + name: Scan ID + required: true + schema: + type: string + responses: + '200': + description: Successful request + summary: Tenable.io Scan Details + tmp3: + post: + description: Launches a scan. + parameters: + - description: The ID of the scan. + in: body + name: Scan ID + required: true + schema: + type: string + responses: + '200': + description: Successful request + summary: Tenable.io Scan Launch + tmp4: + post: + description: Retrieves a list of recorded vulnerabilities. + parameters: [] + responses: + '200': + description: Successful request + summary: Tenable.io Vulnerabilities diff --git a/app_gen/openapi-parsers/misp.py b/app_gen/openapi-parsers/misp.py new file mode 100644 index 00000000..66e06c60 --- /dev/null +++ b/app_gen/openapi-parsers/misp.py @@ -0,0 +1,109 @@ +import json +import yaml + +items = [] + +openapi = { + "openapi": "3.0.2", + "info": { + "title": "MISP", + "description": "MISP API generated from the misp book: https://github.com/MISP/misp-book/blob/master/automation/README.md", + "version": "1.0.0", + "contact": { + "name": "@frikkylikeme", + "url": "https://twitter.com/frikkylikeme", + "email": "frikky@shuffler.io" + } + }, + "paths": {}, + "components": { + "schemas": {}, + "securitySchemes": { + "ApiKeyAuth": { + "type": "apikey", + "in": "header", + "name": "Authorization", + } + }, + } +} + +with open("misp.txt", "r") as tmp: + newitem = {} + recorditem = False + + counter = 0 + itemsplit = tmp.read().split("\n") + for item in itemsplit: + counter += 1 + if item.startswith("### ") and "/" in item: + try: + path = item.split(" ")[2] + method = item.split(" ")[1].lower() + newitem = { + "path": path, + "method": method, + } + + try: + openapi["paths"][path][method] = {} + except KeyError: + openapi["paths"][path] = {} + openapi["paths"][path][method] = {} + + except IndexError: + newitem = {} + continue + + recorditem = True + #print(newitem) + + if not recorditem: + continue + + if "Description" in item: + openapi["paths"][newitem["path"]][newitem["method"]]["description"] = itemsplit[counter+1] + elif "URL Arguments" in item: + parameters = [] + innercnt = 0 + + openapi["paths"][newitem["path"]][newitem["method"]]["parameters"] = [] + while True: + curline = itemsplit[counter+1+innercnt] + if "#" in curline: + break + + innercnt += 1 + if not curline: + continue + + print(curline) + parameters.append({ + "description": curline.split(" ")[1], + "in": "query", + "name": curline.split(" ")[1], + "required": True, + "schema": {"type": "string"}, + }) + + openapi["paths"][newitem["path"]][newitem["method"]]["parameters"] = parameters + elif "Output" in item: + # FIXME + innercnt = 0 + while True: + curline = itemsplit[counter+1+innercnt] + + if "#" in curline: + break + + innercnt += 1 + if "json" in curline: + continue + #print(curline) + +print(json.dumps(openapi, indent=4)) + + +generatedfile = "generated/misp.yaml" +with open(generatedfile, "w+") as tmp: + tmp.write(yaml.dump(openapi)) diff --git a/app_gen/openapi-parsers/other/TIO-API-Container-Security-v1.json b/app_gen/openapi-parsers/other/TIO-API-Container-Security-v1.json new file mode 100644 index 00000000..1b6783ad --- /dev/null +++ b/app_gen/openapi-parsers/other/TIO-API-Container-Security-v1.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"title":"Container Security v1","version":"1.0.0"},"security":[{"cloud":[]}],"servers":[{"url":"https://cloud.tenable.com"}],"components":{"securitySchemes":{"cloud":{"type":"apiKey","in":"header","name":"X-ApiKeys","description":"Format - accessKey=ACCESS_KEY;secretKey=SECRET_KEY"}}},"x-samples-languages":["python","curl","node","powershell","ruby","javascript","objectivec","java","php","csharp","go","swift","kotlin"],"paths":{"/container-security/api/v1/container/list":{"get":{"summary":"List containers","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. Use the [GET /container-security/api/v2/images](/reference#list-images) endpoint instead.\nLists all containers.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-containers-list-containers","deprecated":true,"tags":["Containers"],"responses":{"200":{"description":"Returns an array of containers.","content":{"application/json":{"schema":{},"examples":{"response":{"value":[{"number_of_vulnerabilities":"string","name":"string","size":"string","digest":"string","repo_name":"string","score":"string","id":"string","status":"string","created_at":"string","repo_id":"string","platform":"string","updated_at":"string"}]}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/container/{imageID}/status":{"get":{"summary":"Get image inventory","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. Use the [GET /container-security/api/v2/images](/reference#container-security-v2-list-images) endpoint instead.\nReturns an inventory of an image by ID.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-containers-image-inventory","deprecated":true,"tags":["Containers"],"parameters":[{"description":"The ID of the image that you want to inventory.","required":true,"name":"imageID","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the inventory of the image you specified.","content":{"application/json":{"schema":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object"}},"packages":{"type":"array","items":{"type":"object"}},"id":{"type":"string"}}},"examples":{"response":{"value":{"files":[{"path":"string","md5":"string","sha256":"string","fileType":"string","isCritical":true}],"packages":[{"name":"string","version":"string","release":"string","epoch":"string","rawString":"string"}],"id":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/import":{"post":{"summary":"Create import","deprecated":true,"description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. For images import, use Tenable.io connectors. For more information, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/ConfigureConnectors.htm).\nCreates an import.

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"container-security-import-import","tags":["Import"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string","description":""},"port":{"type":"integer","description":"","format":"int32"},"username":{"type":"string","description":""},"password":{"type":"string","description":""},"provider":{"type":"string","description":""},"active":{"type":"boolean","description":""},"ssl":{"type":"boolean","description":""}},"required":["host","port","username","password","provider","ssl"]}}}},"responses":{"200":{"description":"Returns the ID you specified in the request.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"id":{"type":"string"}}},"examples":{"response":{"value":{"status":"string","id":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/import/list":{"get":{"summary":"List imports","deprecated":true,"description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. For images import, use Tenable.io connectors. For more information, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/ConfigureConnectors.htm).\nReturns a list of all imports.

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"container-security-import-list-imports","tags":["Import"],"responses":{"200":{"description":"Returns an array of information about each import that has been performed.","content":{"application/json":{"schema":{},"examples":{"response":{"value":[{"org_id":"integer","user_uuid":"string","host":"string","port":"integer","username":"string","password":"string","provider":"string","active":"boolean","ssl":"boolean","hourBetween":"integer","id":"integer","created_at":"string","updated_at":"string","started_at":"string","finished_at":"string"}]}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/import/{id}":{"post":{"summary":"Update import","deprecated":true,"description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. For images import, use Tenable.io connectors. For more information, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/ConfigureConnectors.htm).\nUpdates an import by ID.

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"container-security-import-update-import-by-id","tags":["Import"],"parameters":[{"description":"The ID of the import that you want to update.","required":true,"name":"id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string","description":""},"port":{"type":"integer","description":"","format":"int32"},"username":{"type":"string","description":""},"password":{"type":"string","description":""},"provider":{"type":"string","description":""},"active":{"type":"boolean","description":""},"ssl":{"type":"boolean","description":""}},"required":["host","port","username","password","provider","ssl"]}}}},"responses":{"200":{"description":"Returns the ID you specified in the request.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"id":{"type":"string"}}},"examples":{"response":{"value":{"status":"string","id":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete import","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. For images import, use Tenable.io connectors. For more information, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/ConfigureConnectors.htm).\nDeletes an import by ID.

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"container-security-import-delete-import-by-id","deprecated":true,"tags":["Import"],"parameters":[{"description":"The ID of the import that you want to delete.","required":true,"name":"id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the ID of the deleted import.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"id":{"type":"string"}}},"examples":{"response":{"value":{"status":"string","id":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/import/{id}/run":{"post":{"summary":"Run import ","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. For images import, use Tenable.io connectors. For more information, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/ConfigureConnectors.htm).\nRuns an import by ID.

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"container-security-import-run-import-by-id","deprecated":true,"tags":["Import"],"parameters":[{"description":"The ID of the import that you want to run.","required":true,"name":"id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the ID of the import you want to run.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"id":{"type":"string"}}},"examples":{"response":{"value":{"status":"string","id":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/import/{id}/test":{"post":{"summary":"Test connection to Tenable.io","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. For images import, use Tenable.io connectors. For more information, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/ConfigureConnectors.htm).\nTests your connection to Tenable.io Container Security.

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"container-security-import-test-connection","deprecated":true,"tags":["Import"],"parameters":[{"description":"A test ID. You can specify any integer as the ID. Tenable.io Container Security uses this value for the test only.","required":true,"name":"id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the ID you specified in the request.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"id":{"type":"string"}}},"examples":{"response":{"value":{"status":"string","id":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/jobs/list":{"get":{"summary":"List active jobs","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. To determine the progress of an image analysis, use the [GET /container-security/api/v2/images/{repository}/{image}/{tag}](/reference#container-security-v2-get-image-report) endpoint in Tenable.io Container Security API v2.\nReturns a list of active jobs.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-jobs-list-jobs","deprecated":true,"tags":["Jobs"],"responses":{"200":{"description":"Returns an array of the statuses of all active jobs.","content":{"application/json":{"schema":{},"examples":{"response":{"value":[{"container_id":"string","job_id":"string","error":"string","job_status":"string","created_at":"string","updated_at":"string"}]}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/jobs/status":{"get":{"summary":"Get job status by ID","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. To determine the progress of an image analysis, use the [GET /container-security/api/v2/images/{repository}/{image}/{tag}](/reference#container-security-v2-get-image-report) endpoint in Tenable.io Container Security API v2.\nReturns the status of a job that you specify by ID to determine if the job is still queued, in progress, or has completed.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-jobs-job-status","deprecated":true,"tags":["Jobs"],"parameters":[{"description":"The ID of the job for which you want the status.","required":true,"name":"job_id","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the status of the job you specified.","content":{"application/json":{"schema":{"type":"object","properties":{"container_id":{"type":"string"},"job_id":{"type":"string"},"error":{"type":"string"},"job_status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"examples":{"response":{"value":{"container_id":"string","job_id":"string","error":"string","job_status":"string","created_at":"string","updated_at":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/jobs/image_status":{"get":{"summary":"Get job status by image ID","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. To determine the progress of an image analysis, use the [GET /container-security/api/v2/images/{repository}/{image}/{tag}](/reference#container-security-v2-get-image-report) endpoint in Tenable.io Container Security API v2.\nReturns the status of a job by specifying an image ID to determine if the job is still queued, in progress, or has completed.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-jobs-job-status-by-image-id","deprecated":true,"tags":["Jobs"],"parameters":[{"description":"The ID of the image for which you want the status.","required":true,"name":"image_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the status of the job you specified.","content":{"application/json":{"schema":{"type":"object","properties":{"container_id":{"type":"string"},"job_id":{"type":"string"},"error":{"type":"string"},"job_status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"examples":{"response":{"value":{"container_id":"string","job_id":"string","error":"string","job_status":"string","created_at":"string","updated_at":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/jobs/image_status_digest":{"get":{"summary":"Get job status by image digest","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. To determine the progress of an image analysis, use the [GET /container-security/api/v2/images/{repository}/{image}/{tag}](/reference#container-security-v2-get-image-report) endpoint in Tenable.io Container Security API v2.\nReturns the status of a job by specifying an image digest to determine if the job is still queued, in progress, or has completed.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-jobs-job-status-by-image-digest","deprecated":true,"tags":["Jobs"],"parameters":[{"description":"The image digest of the job for which you want the status.","required":true,"name":"image_digest","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the status of the job you specified.","content":{"application/json":{"schema":{"type":"object","properties":{"container_id":{"type":"string"},"job_id":{"type":"string"},"error":{"type":"string"},"job_status":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"examples":{"response":{"value":{"container_id":"string","job_id":"string","error":"string","job_status":"string","created_at":"string","updated_at":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/policycompliance":{"get":{"summary":"Get compliance status by ID","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated.\nChecks the compliance of an image that you specify by ID against your policies.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-policy-policy-compliance-by-id","deprecated":true,"tags":["Policy"],"parameters":[{"description":"The ID of the image that you want to check for policy compliance.","required":true,"name":"image_id","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns an array of compliance results.","content":{"application/json":{"schema":{},"examples":{"response":{"value":[{"status":"string","message":"string","reason":"string"}]}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/compliancebyname":{"get":{"summary":"Get compliance status by name","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated.\nChecks the compliance of an image that you specify by name against your policies.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-policy-policy-compliance-by-name","deprecated":true,"tags":["Policy"],"parameters":[{"description":"The name of the image for which you want the job status.","required":true,"name":"image","in":"query","schema":{"type":"string"}},{"description":"The name of the repository that hosts the image. By default, this value is library.","required":false,"name":"repo","in":"query","schema":{"type":"string"}},{"description":"The tag for the image that you want to check for policy compliance.","required":false,"name":"tag","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns an array compliance results.","content":{"application/json":{"schema":{},"examples":{"response":{"value":[{"status":"string","message":"string","reason":"string"}]}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/reports/show":{"get":{"summary":"Get container report","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. Use the [GET /container-security/api/v2/images/{repository}/{image}/{tag}](/reference#container-security-v2-get-image-report) endpoint instead.\nReturns a report in JSON format for a container that you specify by ID. Note: If you do not have the container_id, you can call the list-containers endpoint.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-reports-report-by-container-id","deprecated":true,"tags":["Reports"],"parameters":[{"description":"The ID of the container for which you want a report.","required":true,"name":"container_id","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the report for the container you specified.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"image_name":{"type":"string"},"docker_image_id":{"type":"string"},"tag":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"platform":{"type":"string"},"findings":{"type":"array","items":{"type":"object"}},"malware":{"type":"array","items":{"type":"object"}},"potentially_unwanted_programs":{"type":"array","items":{"type":"object"}},"sha256":{"type":"string"},"os":{"type":"string"},"os_version":{"type":"string"},"os_architecture":{"type":"string"},"os_release_name":{"type":"string"},"installed_packages":{"type":"array","items":{"type":"object"}},"risk_score":{"type":"integer","format":"int32"},"digest":{"type":"string"}}},"examples":{"response":{"value":{"id":"string","image_name":"string","docker_image_id":"string","tag":"string","created_at":"string","updated_at":"string","platform":"string","findings":[{"nvdFinding":{"reference_id":"string","cve":"string","published_date":"string","modified_date":"string","description":"string","cvss_score":"string","access_vector":"string","access_complexity":"string","auth":"string","availability_impact":"string","confidentiality_impact":"string","integrity_impact":"string","cwe":"string","cpe":["string"],"remediation":"string","references":["string"]},"packages":[{"name":"string","version":"string","release":"string","epoch":"string","rawString":"string"}]}],"malware":[{"infectedFile":"string","fileTypeDescriptor":"string","md5":"string","sha256":"string"}],"potentially_unwanted_programs":[{"file":"string","md5":"string","sha256":"string"}],"sha256":"string","os":"string","os_version":"string","os_architecture":"string","os_release_name":"string","installed_packages":[{"name":"string","version":"string","release":"string","epoch":"string","rawString":"string"}],"risk_score":0,"digest":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/reports/by_image":{"get":{"summary":"Get image report","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. Use the [GET /container-security/api/v2/images/{repository}/{image}/{tag}](/reference#container-security-v2-get-image-report) endpoint instead.\nReturns a report in JSON format for an image that you specify by ID. Note: If you do not have the image_id, you can call the list-images endpoint.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-reports-report-by-image-id","deprecated":true,"tags":["Reports"],"parameters":[{"description":"The ID of the image for which you want a report.","required":true,"name":"image_id","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the report for the image you specified.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"image_name":{"type":"string"},"docker_image_id":{"type":"string"},"tag":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"platform":{"type":"string"},"findings":{"type":"array","items":{"type":"object"}},"malware":{"type":"array","items":{"type":"object"}},"potentially_unwanted_programs":{"type":"array","items":{"type":"object"}},"sha256":{"type":"string"},"os":{"type":"string"},"os_version":{"type":"string"},"os_architecture":{"type":"string"},"os_release_name":{"type":"string"},"installed_packages":{"type":"array","items":{"type":"object"}},"risk_score":{"type":"integer","format":"int32"},"digest":{"type":"string"}}},"examples":{"response":{"value":{"id":"string","image_name":"string","docker_image_id":"string","tag":"string","created_at":"string","updated_at":"string","platform":"string","findings":[{"nvdFinding":{"cve":"string","published_date":"string","modified_date":"string","description":"string","cvss_score":"string","access_vector":"string","access_complexity":"string","auth":"string","availability_impact":"string","confidentiality_impact":"string","integrity_impact":"string","cwe":"string","cpe":["string"],"remediation":"string","references":["string"]},"packages":[{"name":"string","version":"string","release":"string","epoch":"string","rawString":"string"}]}],"malware":[{"infectedFile":"string","fileTypeDescriptor":"string","md5":"string","sha256":"string"}],"potentially_unwanted_programs":[{"file":"string","md5":"string","sha256":"string"}],"sha256":"string","os":"string","os_version":"string","os_architecture":"string","os_release_name":"string","installed_packages":[{"name":"string","version":"string","type":"string","license":"string"}],"risk_score":0,"digest":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/reports/by_image_digest":{"get":{"summary":"Get image digest report","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. Use the [GET /container-security/api/v2/images/{repository}/{image}/{tag}](/reference#container-security-v2-get-image-report) endpoint instead.\nReturns a report in JSON format for an image digest.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-reports-report-by-image-digest","deprecated":true,"tags":["Reports"],"parameters":[{"description":"The image digest of the image for which you want a report.","required":true,"name":"image_digest","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the report for the image you specified.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"image_name":{"type":"string"},"docker_image_id":{"type":"string"},"tag":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"platform":{"type":"string"},"findings":{"type":"array","items":{"type":"object"}},"malware":{"type":"array","items":{"type":"object"}},"potentially_unwanted_programs":{"type":"array","items":{"type":"object"}},"sha256":{"type":"string"},"os":{"type":"string"},"os_version":{"type":"string"},"os_architecture":{"type":"string"},"os_release_name":{"type":"string"},"installed_packages":{"type":"array","items":{"type":"object"}},"risk_score":{"type":"integer","format":"int32"},"digest":{"type":"string"}}},"examples":{"response":{"value":{"id":"string","image_name":"string","docker_image_id":"string","tag":"string","created_at":"string","updated_at":"string","platform":"string","findings":[{"nvdFinding":{"reference_id":"string","cve":"string","published_date":"string","modified_date":"string","description":"string","cvss_score":"string","access_vector":"string","access_complexity":"string","auth":"string","availability_impact":"string","confidentiality_impact":"string","integrity_impact":"string","cwe":"string","cpe":["string"],"remediation":"string","references":["string"]},"packages":[{"name":"string","version":"string","release":"string","epoch":"string","rawString":"string"}]}],"malware":[{"infectedFile":"string","fileTypeDescriptor":"string","md5":"string","sha256":"string"}],"potentially_unwanted_programs":[{"file":"string","md5":"string","sha256":"string"}],"sha256":"string","os":"string","os_version":"string","os_architecture":"string","os_release_name":"string","installed_packages":[{"name":"string","version":"string","release":"string","epoch":"string","rawString":"string"}],"risk_score":0,"digest":"string"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/reports/nessus/show":{"get":{"summary":"Get Nessus report for container","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. Use the [GET /container-security/api/v2/images/{repository}/{image}/{tag}](/reference#container-security-v2-get-image-report) endpoint instead.\nReturns a Nessus report for a container that you specify by ID. Note: If you do not have the container_id, you can call the list-containers endpoint.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-reports-nessus-report-by-container-id","deprecated":true,"tags":["Reports"],"parameters":[{"description":"The ID of the container for which you want a report.","required":true,"name":"id","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the Nessus report for the container you specified.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{"To do":"Add response sample here"}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/repositories":{"get":{"summary":"List repositories","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. Use the [GET /container-security/api/v2/repositories](/reference#container-security-v2-list-repositories) endpoint instead.\nReturns a list of repositories.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-repositories-list-repositories","deprecated":true,"tags":["Repositories"],"parameters":[{"description":"The number of items Tenable.io Container Security skips before starting to collect the result set.","required":false,"name":"offset","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The maximum number of items to return.","required":false,"name":"limit","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns an array of repositories.","content":{"application/json":{"schema":{"type":"object","properties":{"offset":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"items":{"type":"array","items":{"type":"object"}}}},"examples":{"response":{"value":{"offset":"integer","limit":"integer","total":"integer","items":[{"name":"string","description":"string","pullCount":"integer","pushCount":"integer"}]}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/container-security/api/v1/repositories/{id}/images":{"get":{"summary":"List images in repository","description":"**Deprecated!** Tenable.io Container Security API v1 is deprecated. Use the [GET /container-security/api/v2/images](/reference#container-security-v2-list-images) endpoint with the repository filter instead.\nReturns a list of images inside a specific repository.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"container-security-repositories-list-images","deprecated":true,"tags":["Repositories"],"parameters":[{"description":"The ID of the relevant repository.","required":true,"name":"id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The number of items to skip before Tenable.io Container Security starts to collect the result set.","required":false,"name":"offset","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The maximum number of items to return.","required":false,"name":"limit","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns an array of images.","content":{"application/json":{"schema":{"type":"object","properties":{"offset":{"type":"integer"},"limit":{"type":"integer"},"total":{"type":"integer"},"items":{"type":"array","items":{"type":"object"}}}},"examples":{"response":{"value":{"offset":"integer","limit":"integer","total":"integer","items":[{"id":"string","repoId":"string","name":"string","tag":"string","digest":"string","hasReport":"boolean","hasInventory":"boolean","status":"string","score":"integer","numberOfVulns":"integer","numberOfMalware":"integer","pullCount":"string","pushCount":"string","source":"string","createdAt":"string","updatedAt":"string","finishedAt":"string","imageHash":"string","size":"string","layers":["string"]}]}}}}}},"401":{"description":"Returns an error message if the request is not authorized."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}}},"x-explorer-enabled":true,"x-proxy-enabled":true,"x-samples-enabled":true} \ No newline at end of file diff --git a/app_gen/openapi-parsers/other/TIO-API-Container-Security-v2.json b/app_gen/openapi-parsers/other/TIO-API-Container-Security-v2.json new file mode 100644 index 00000000..dfb515ae --- /dev/null +++ b/app_gen/openapi-parsers/other/TIO-API-Container-Security-v2.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"title":"Container Security v2","description":"Container Security API provides the endpoints for securing container images, for example, Docker. Using the API, you can you seamlessly and securely enable DevOps processes by providing visibility into the security of container images – including vulnerabilities, malware and policy violations – through integration with the build process.\n\nFor background information about managing container security, see the [documentation site](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/Welcome.htm).","version":"1.0.0"},"security":[{"cloud":[]}],"tags":[{"name":"Images","description":"With the Tenable.io Container Security images API, you can get a filtered list of available images, as well as the details of an individual image.\n\nFor background information, see [Tenable.io Container Security User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/Welcome.htm)."},{"name":"Repositories","description":"With the Tenable.io Container Security repositories API, you can get a filtered list of available image repositories, as well as the details of an individual repository.\n\nFor background information, see [Tenable.io Container Security User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/ManageImageRepositories.htm)."},{"name":"Reports","description":"With the Tenable.io Container security reports API, you can get a detailed vulnerability scan report for an image.\n\nFor background information, see [Tenable.io Container Security User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/ViewScanResults.htm)."}],"servers":[{"url":"https://cloud.tenable.com/container-security/api/v2/"}],"paths":{"/images":{"get":{"tags":["Images"],"operationId":"container-security-v2-list-images","summary":"List images","description":"Returns a paginated list of images. Use URL query parameters to filter the list.

Requires BASIC [16] user permissions. See Permissions.

","parameters":[{"in":"query","name":"offset","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"The number of skipped records in the returned result set. Must be in the int32 format."},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50},"description":"The number of records to include in the result set. Must be in the int32 format. Default is 50. The maximum limit is 1,000."},{"in":"query","name":"name","schema":{"type":"string"},"description":"The image name to filter on. Tenable.io returns only the images with names that exactly match the parameter value. The value is case-sensitive."},{"in":"query","name":"repo","schema":{"type":"string"},"description":"The repository name to filter on. Tenable.io returns only the images from repositories that exactly match the parameter value. The value is case-sensitive."},{"in":"query","name":"tag","schema":{"type":"string"},"description":"The tag to filter on. Tenable.io returns only the images with tags that exactly match the parameter value. The value is case-sensitive."},{"in":"query","name":"hasMalware","schema":{"type":"boolean"},"description":"Specifies whether to return only the images with associated malware (images with the `numberOfMalware` attribute greater than 0)."},{"in":"query","name":"score","schema":{"type":"integer"},"description":"The score to filter on. Tenable.io limits results based on the parameter value and the comparison operator specified by the `scoreOperator` parameter. For more information about the risk score metric, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/RiskMetrics.htm)."},{"in":"query","name":"scoreOperator","description":"The comparison operator for the value specified by the `score` parameter. Operators include:\n - EQ—equals\n - GT—greater than\n - EQ—less than","schema":{"type":"string","enum":["EQ","LT","GT"]}},{"in":"query","name":"os","schema":{"type":"string"},"description":"The operating system to filter on. Tenable.io returns only the images with an operating system that exactly matches the parameter value."}],"responses":{"200":{"description":"Returns a paginated list of images in your Tenable.io Container Security instance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/imageListResponse"},"examples":{"response":{"value":{"items":[{"repoId":"2491620318530539587","repoName":"dmjb","name":"jboss","tag":"latest","digest":"sha256:f75748b2bbd5a386c8d876770ff09a65c42335fb1f538025b928c794ffa8123f","hasReport":false,"hasInventory":false,"status":"scan_failed","lastJobStatus":"failed","pullCount":"0","pushCount":"1","source":"pushed","createdAt":"2019-04-19T11:31:11.283Z","updatedAt":"2019-04-19T12:33:29.903Z","finishedAt":"2019-04-19T12:33:29.903Z","imageHash":"859c02589af7","size":"4471","layers":[{"size":133212385,"digest":"sha256:01e684a89bbea67a11fcc96caed8e8b3320c44e29c2ab2a85016f48a69870bc8"},{"size":32,"digest":"sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1"},{"size":32,"digest":"sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1"},{"size":32,"digest":"sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1"},{"size":32,"digest":"sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1"},{"size":3338,"digest":"sha256:ebdaef68b4f08d23189ae32fd90bd68261385549f46360d9c3d163b988d91a45"},{"size":250,"digest":"sha256:cc7ec6c68bd72324ab932dc00474d0713044542c2adf6bff6f4e4d1cacc70737"},{"size":510,"digest":"sha256:01bb3ac59edc6a05e14a5151cdc39eae261ff37a933118063d1f91bb14aaceb4"},{"size":7863072,"digest":"sha256:a248b0871c3cac9ce2b2a956e118ce03e49027d5d4c4da74df00ae399fff17c3"},{"size":681,"digest":"sha256:c9f371853f28eb40b76f309e27f671b57bffb8d80df4ca8e7970885ae532e172"},{"size":86733990,"digest":"sha256:2fe0df338fc0cc7d9ec4428ba7538f165f901f3a7760c7fecbdda11a435c5eee"},{"size":71511,"digest":"sha256:aa2f8df214335759614f9aceea51f570354944f59c36cc8399415bbfab91839e"},{"size":67494686,"digest":"sha256:23efb549476f5f10a40b3784758a807c0194d87a0b18c9a5a3436e67611e971b"},{"size":421,"digest":"sha256:1049dfc2ba444c2f74f3eb77a07d0fd5fe304d79ea7178d5a0885788696d63aa"},{"size":374,"digest":"sha256:ef072d3c9b418ba3ce624ce456d311bb81c9ae5d4d5bc682da5edadde408fce7"}],"os":"Unknown","osVersion":"Unknown"},{"repoId":"7185635748924628551","repoName":"elastic","name":"elasticsearch","tag":"5","digest":"sha256:0278ed727ad6dd0bef0be279b3112755a110980c31f07e7f4a54e19b9ca2e24a","hasReport":true,"hasInventory":false,"status":"scanned","lastJobStatus":"completed","score":10,"numberOfVulns":54,"numberOfMalware":0,"pullCount":"0","pushCount":"1","source":"on_prem_import","createdAt":"2018-12-13T17:51:03.295Z","updatedAt":"2019-05-14T10:48:02.857Z","finishedAt":"2019-05-14T10:48:02.857Z","imageHash":"5e9d896dc62c","size":"3460","layers":[],"os":"Debian","osVersion":"9.5"},{"repoId":"7185635748924628551","repoName":"postgres_db","name":"postgres","tag":"latest","digest":"sha256:0dec082064d1203a3ead704057de56823d2c8ae11818da0fd3065dee9ec1b92e","hasReport":true,"hasInventory":false,"status":"scanned","lastJobStatus":"completed","score":10,"numberOfVulns":46,"numberOfMalware":0,"pullCount":"0","pushCount":"1","source":"on_prem_import","createdAt":"2018-12-13T17:51:43.861Z","updatedAt":"2019-05-14T16:46:10.739Z","finishedAt":"2019-05-14T16:46:10.739Z","imageHash":"c230b2f564da","size":"3244","layers":[],"os":"Debian","osVersion":"9.6"}],"pagination":{"offset":0,"limit":1000,"total":138,"sort":[]}}}}}}},"401":{"description":"Returned if Tenable.io cannot authenticate the user account that submitted the request."}}}},"/images/{repository}/{image}/{tag}":{"get":{"tags":["Images"],"summary":"Get image details","operationId":"container-security-v2-get-image-details","description":"Returns the details for an image specified by repository, name, and tag.

Requires BASIC [16] user permissions. See Permissions.

","parameters":[{"name":"repository","in":"path","description":"The name of the Tenable.io Container Security repository where the image is stored. The value is case-sensitive.","required":true,"schema":{"type":"string"}},{"name":"image","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the image. The value is case-sensitive."},{"name":"tag","in":"path","required":true,"description":"The tag identifying the image version. The value is case-sensitive.\n**Note**: Image tags are not equivalent to Tenable.io [asset tags](/reference#tags).","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the image details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/imageDetails"},"examples":{"response":{"value":{"name":"jboss","repository":"dmjb","tag":"latest","digest":"sha256:f75748b2bbd5a386c8d876770ff09a65c42335fb1f538025b928c794ffa8123f","uploadedAt":"2019-04-19T11:31:11.283Z","lastScanned":"2019-04-19T12:33:29.903Z","status":"scan_failed","size":"4471","layers":[{"size":133212385,"digest":"sha256:01e684a89bbea67a11fcc96caed8e8b3320c44e29c2ab2a85016f48a69870bc8"},{"size":32,"digest":"sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1"},{"size":32,"digest":"sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1"},{"size":32,"digest":"sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1"},{"size":32,"digest":"sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1"},{"size":3338,"digest":"sha256:ebdaef68b4f08d23189ae32fd90bd68261385549f46360d9c3d163b988d91a45"},{"size":250,"digest":"sha256:cc7ec6c68bd72324ab932dc00474d0713044542c2adf6bff6f4e4d1cacc70737"},{"size":510,"digest":"sha256:01bb3ac59edc6a05e14a5151cdc39eae261ff37a933118063d1f91bb14aaceb4"},{"size":7863072,"digest":"sha256:a248b0871c3cac9ce2b2a956e118ce03e49027d5d4c4da74df00ae399fff17c3"},{"size":681,"digest":"sha256:c9f371853f28eb40b76f309e27f671b57bffb8d80df4ca8e7970885ae532e172"},{"size":86733990,"digest":"sha256:2fe0df338fc0cc7d9ec4428ba7538f165f901f3a7760c7fecbdda11a435c5eee"},{"size":71511,"digest":"sha256:aa2f8df214335759614f9aceea51f570354944f59c36cc8399415bbfab91839e"},{"size":67494686,"digest":"sha256:23efb549476f5f10a40b3784758a807c0194d87a0b18c9a5a3436e67611e971b"},{"size":421,"digest":"sha256:1049dfc2ba444c2f74f3eb77a07d0fd5fe304d79ea7178d5a0885788696d63aa"},{"size":374,"digest":"sha256:ef072d3c9b418ba3ce624ce456d311bb81c9ae5d4d5bc682da5edadde408fce7"}]}}}}}},"401":{"description":"Returned if Tenable.io cannot authenticate the user account that submitted the request."},"404":{"description":"Returned if Tenable.io cannot find the specified image."}}},"delete":{"tags":["Images"],"summary":"Delete image","description":"Deletes an image specified by repository, name, and tag.

Requires SCAN OPERATOR [24] user permissions. See Permissions.

","operationId":"container-security-v2-delete-image","parameters":[{"name":"repository","in":"path","description":"The name of the Tenable.io Container Security repository where the image is stored. The value is case-sensitive.","required":true,"schema":{"type":"string"}},{"name":"image","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the image. The value is case-sensitive."},{"name":"tag","in":"path","required":true,"description":"The tag identifying the image version. The value is case-sensitive.\n**Note**: Image tags are not equivalent to Tenable.io [asset tags](/reference#tags).","schema":{"type":"string"}}],"responses":{"204":{"description":"Returned if Tenable.io successfully deletes the specified image."},"401":{"description":"Returned if Tenable.io cannot authenticate the user account that submitted the request."},"404":{"description":"Returned if Tenable.io cannot find the specified image."}}}},"/repositories":{"get":{"tags":["Repositories"],"operationId":"container-security-v2-list-repositories","summary":"List repositories","description":"Returns a list of image repositories in your Tenable.io Container Security instance. Use the query parameters to filter the list.

Requires BASIC [16] user permissions. See Permissions.

","parameters":[{"name":"imageName","in":"query","required":false,"schema":{"type":"string"},"description":"The repository name to filter on. Tenable.io Container Security returns only the repositories with names that exactly match the parameter value. The value is case-sensitive."},{"name":"nameContains","in":"query","required":false,"schema":{"type":"string"},"description":"The partial repository name to filter on. Tenable.io Container Security returns the images with names that contain the parameter value. The value is case-sensitive."},{"in":"query","name":"offset","required":false,"schema":{"type":"integer","minimum":0,"default":0},"description":"The number of skipped records in the returned result set. Must be in the int32 format."},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":50},"description":"The number of records to include in the result set. Must be in the int32 format. Default is 50. The maximum limit is 1,000."}],"responses":{"200":{"description":"success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/repositoryListResponse"},"examples":{"response":{"value":{"items":[{"name":"dmjb","imagesCount":6,"labelsCount":6,"vulnerabilitiesCount":792,"malwareCount":0,"pullCount":0,"pushCount":12,"totalBytes":1766950068},{"name":"air-gap","imagesCount":7,"labelsCount":7,"vulnerabilitiesCount":514,"malwareCount":0,"pullCount":0,"pushCount":0,"totalBytes":0},{"name":"imiell","imagesCount":1,"labelsCount":1,"vulnerabilitiesCount":291,"malwareCount":0,"pullCount":0,"pushCount":2,"totalBytes":403346467}],"pagination":{"offset":0,"limit":10,"total":3,"sort":[]}}}}}}},"401":{"description":"Returned if Tenable.io cannot authenticate the user account that submitted the request."}}}},"/repositories/{name}":{"get":{"tags":["Repositories"],"operationId":"container-security-v2-get-repository-details","summary":"Get repository details","description":"Returns details for a Tenable.io Container Security repository.

Requires BASIC [16] user permissions. See Permissions.

","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the repository details.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/repositoryDetails"},"examples":{"response":{"value":{"name":"dmjb","imagesCount":6,"labelsCount":6,"vulnerabilitiesCount":842,"malwareCount":0,"pullCount":0,"pushCount":12,"totalBytes":1766950068}}}}}},"401":{"description":"Returned if Tenable.io cannot authenticate the user account that submitted the request."},"404":{"description":"Returned if Tenable.io cannot find the specified repository."}}},"delete":{"tags":["Repositories"],"summary":"Delete repository","description":"Deletes a Tenable.io Container Security repository.

Requires SCAN OPERATOR [24] user permissions. See Permissions.

","operationId":"container-security-v2-delete-repository","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the repository to delete."}],"responses":{"204":{"description":"Returned if Tenable.io successfully deletes the specified repository."},"401":{"description":"Returned if Tenable.io cannot authenticate the user account that submitted the request."},"404":{"description":"Returned if Tenable.io cannot find the specified repository."}}}},"/reports/{repository}/{image}/{tag}":{"get":{"tags":["Reports"],"operationId":"container-security-v2-get-image-report","summary":"Get image report","description":"Returns a vulnerability report for the specified image.

Requires BASIC [16] user permissions. See Permissions.

","parameters":[{"name":"repository","in":"path","description":"The name of the Tenable.io Container Security repository where the image is stored. The value is case-sensitive.","required":true,"schema":{"type":"string"}},{"name":"image","in":"path","required":true,"schema":{"type":"string"},"description":"The name of the image. The value is case-sensitive."},{"name":"tag","in":"path","required":true,"description":"The tag identifying the image version. The value is case-sensitive.\n**Note**: Image tags are not equivalent to Tenable.io [asset tags](/reference#tags).","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns a vulnerability scan report for the image.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/imageReport"},"examples":{"response":{"value":{"os_release_name":"16.04.2 LTS (Xenial Xerus)","malware":[{"file":"/20131116130541_http___198_2_192_204_22_disknyp","type":"ELF32","md5":"c92129fc230bacd113530fee254fc2b6","sha256":"sha256:60e24cb19a3cfdc88712f3511adfde242abff3c1915b34eeb19dd7cc72380df2"},{"file":"/20131103183232_http___61_132_227_111_8080_meimei","type":"ELF32","md5":"27072fd3a3cedaeed8cfebf29b9ed73f","sha256":"sha256:a8cd37210dea08880122c360cd096eda872f443c3dd39e498b2695955a3e0ad7"},{"file":"/20131116163507_http___198_2_192_204_22_disknyp","type":"ELF32","md5":"c92129fc230bacd113530fee254fc2b6","sha256":"sha256:60e24cb19a3cfdc88712f3511adfde242abff3c1915b34eeb19dd7cc72380df2"}],"sha256":"sha256:f708f91abdec052d05a46213815540616d24627b6af9cb3668484efb017969bf","os":"LINUX_UBUNTU","risk_score":10,"findings":[{"nvdFinding":{"cve":"CVE-2018-0494","description":"2018/05/09","published_date":"2018/05/09","modified_date":"It was discovered that Wget incorrectly handled certain inputs. An\nattacker could possibly use this to inject arbitrary cookie values.\n\nNote that Tenable Network Security has extracted the preceding\ndescription block directly from the Ubuntu security advisory. Tenable\nhas attempted to automatically clean and format it as much as possible\nwithout introducing additional issues.","cvss_score":"4.3","access_vector":"Network","access_complexity":"Medium","auth":"None required","availability_impact":"None","confidentiality_impact":"None","integrity_impact":"Partial","cwe":"CWE-20","cpe":["p-cpe:/a:canonical:ubuntu_linux:wget"],"remediation":"Update the affected wget package.","references":["USN:3643-1"]},"packages":[{"name":"wget","version":"1.17.1-1ubuntu1.2","type":"linux"}]},{"nvdFinding":{"cve":"CVE-2017-15670","description":"2018/01/17","published_date":"2018/01/17","modified_date":"It was discovered that the GNU C library did not properly handle all\nof the possible return values from the kernel getcwd(2) syscall. A\nlocal attacker could potentially exploit this to execute arbitrary\ncode in setuid programs and gain administrative privileges.\n(CVE-2018-1000001)\n\nA memory leak was discovered in the _dl_init_paths() function in the\nGNU C library dynamic loader. A local attacker could potentially\nexploit this with a specially crafted value in the LD_HWCAP_MASK\nenvironment variable, in combination with CVE-2017-1000409 and another\nvulnerability on a system with hardlink protections disabled, in order\nto gain administrative privileges. (CVE-2017-1000408)\n\nA heap-based buffer overflow was discovered in the _dl_init_paths()\nfunction in the GNU C library dynamic loader. A local attacker could\npotentially exploit this with a specially crafted value in the\nLD_LIBRARY_PATH environment variable, in combination with\nCVE-2017-1000408 and another vulnerability on a system with hardlink\nprotections disabled, in order to gain administrative privileges.\n(CVE-2017-1000409)\n\nAn off-by-one error leading to a heap-based buffer overflow was\ndiscovered in the GNU C library glob() implementation. An attacker\ncould potentially exploit this to cause a denial of service or execute\narbitrary code via a maliciously crafted pattern. (CVE-2017-15670)\n\nA heap-based buffer overflow was discovered during unescaping of user\nnames with the ~ operator in the GNU C library glob() implementation.\nAn attacker could potentially exploit this to cause a denial of\nservice or execute arbitrary code via a maliciously crafted pattern.\n(CVE-2017-15804)\n\nIt was discovered that the GNU C library dynamic loader mishandles\nRPATH and RUNPATH containing $ORIGIN for privileged (setuid or\nAT_SECURE) programs. A local attacker could potentially exploit this\nby providing a specially crafted library in the current working\ndirectory in order to gain administrative privileges. (CVE-2017-16997)\n\nIt was discovered that the GNU C library malloc() implementation could\nreturn a memory block that is too small if an attempt is made to\nallocate an object whose size is close to SIZE_MAX, resulting in a\nheap-based overflow. An attacker could potentially exploit this to\ncause a denial of service or execute arbitrary code. This issue only\naffected Ubuntu 17.10. (CVE-2017-17426).\n\nNote that Tenable Network Security has extracted the preceding\ndescription block directly from the Ubuntu security advisory. Tenable\nhas attempted to automatically clean and format it as much as possible\nwithout introducing additional issues.","cvss_score":"7.5","access_vector":"Network","access_complexity":"Medium","auth":"None required","availability_impact":"Complete","confidentiality_impact":"Complete","integrity_impact":"Complete","cwe":"CWE-119","cpe":["p-cpe:/a:canonical:ubuntu_linux:libc6"],"remediation":"Update the affected libc6 package.","references":["USN:3534-1"]},"packages":[{"name":"libc6","version":"2.23-0ubuntu9","type":"linux"}]},{"nvdFinding":{"cve":"CVE-2017-13089","description":"2017/10/26","published_date":"2017/10/26","modified_date":"Antti Levomäki, Christian Jalio, and Joonas Pihlaja discovered that\nWget incorrectly handled certain HTTP responses. A remote attacker\ncould use this issue to cause Wget to crash, resulting in a denial of\nservice, or possibly execute arbitrary code. (CVE-2017-13089,\nCVE-2017-13090)\n\nDawid Golunski discovered that Wget incorrectly handled recursive or\nmirroring mode. A remote attacker could possibly use this issue to\nbypass intended access list restrictions. (CVE-2016-7098)\n\nOrange Tsai discovered that Wget incorrectly handled CRLF sequences in\nHTTP headers. A remote attacker could possibly use this issue to\ninject arbitrary HTTP headers. (CVE-2017-6508).\n\nNote that Tenable Network Security has extracted the preceding\ndescription block directly from the Ubuntu security advisory. Tenable\nhas attempted to automatically clean and format it as much as possible\nwithout introducing additional issues.","cvss_score":"9.3","access_vector":"Network","access_complexity":"Medium","auth":"None required","availability_impact":"Complete","confidentiality_impact":"Complete","integrity_impact":"Complete","cwe":"CWE-119","cpe":["p-cpe:/a:canonical:ubuntu_linux:wget"],"remediation":"Update the affected wget package.","references":["USN:3464-1"]},"packages":[{"name":"wget","version":"1.17.1-1ubuntu1.2","type":"linux"}]}],"os_version":"16.04","created_at":"2018-09-17T17:07:34.556Z","installed_packages":[{"name":"dpkg","version":"1.18.4ubuntu1.2","type":"linux"},{"name":"ubuntu-keyring","version":"2012.05.19","type":"linux"},{"name":"libssl1.0.0","version":"1.0.2g-1ubuntu4.8","type":"linux"},{"name":"libcap2-bin","version":"1:2.24-12","type":"linux"},{"name":"liblz4-1","version":"0.0~r131-2ubuntu2","type":"linux"}],"platform":"docker","image_name":"ubuntu","updated_at":"2019-05-16T11:04:20.301Z","digest":"f708f91abdec052d05a46213815540616d24627b6af9cb3668484efb017969bf","tag":"infected","potentially_unwanted_programs":[],"docker_image_id":"4013750e4cd5","os_architecture":"AMD64"}}}}}},"401":{"description":"Returned if Tenable.io cannot authenticate the user account that submitted the request."},"404":{"description":"Returned if Tenable.io cannot find the specified image or the report for the image is not ready."}}}}},"components":{"securitySchemes":{"cloud":{"type":"apiKey","in":"header","name":"X-ApiKeys","description":"Format - accessKey=ACCESS_KEY;secretKey=SECRET_KEY"}},"schemas":{"imageListResponse":{"type":"object","description":"A list of images with pagination information.","properties":{"pagination":{"$ref":"#/components/schemas/pagination"},"items":{"type":"array","items":{"$ref":"#/components/schemas/imageDetails"}}}},"imageDetails":{"type":"object","description":"The image details.","properties":{"name":{"type":"string","description":"The name of the image."},"repository":{"type":"string","description":"The name of the Tenable.io Container Security repository where the image is stored."},"tag":{"type":"string","description":"The tag identifying the image version.\n**Note**: Image tags are not equivalent to Tenable.io [asset tags](/reference#tags)."},"digest":{"type":"string","description":"A content-addressable image identifier."},"status":{"type":"string","description":"The image analysis status. Status values can include:\n - never_scanned\n - scanned\n - scan_failed","enum":["never_scanned","scanned","scan_failed"]},"score":{"type":"number","format":"double","description":"The image risk score. For more information about the risk score metric, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/RiskMetrics.htm)."},"numberOfVulns":{"type":"integer","format":"int32","description":"The number of known vulnerabilities for the image."},"numberOfMalware":{"type":"integer","format":"int32","description":"The number of known malware exploits for image."},"uploadedAt":{"type":"string","description":"An ISO timestamp indicating the date and time when the image was uploaded to Tenable.io Container Security, for example, `2018-12-31T13:51:17.243Z`."},"lastScanned":{"type":"string","description":"An ISO timestamp indicating the date and time when Tenable.io Container Security last scanned the image, for example, `2018-12-31T13:51:17.243Z`."},"layers":{"type":"array","description":"The layers that represent the history of changes to the image.","items":{"$ref":"#/components/schemas/layer"}},"reportUrl":{"type":"string","description":"The URL of the latest available image analysis report."}}},"layer":{"type":"object","description":"Detailed information for an image layer.","properties":{"size":{"type":"number","format":"long","description":"The layer size in kilobytes."},"digest":{"type":"string","description":"A content-addressable layer identifier."}}},"repositoryListResponse":{"type":"object","description":"A list of Tenable.io Container Security repositories with pagination information.","properties":{"pagination":{"$ref":"#/components/schemas/pagination"},"items":{"type":"array","items":{"$ref":"#/components/schemas/repositoryDetails"}}}},"repositoryDetails":{"type":"object","description":"Details of a Tenable.io Container Security repository.","properties":{"name":{"type":"string","description":"The name of the repository."},"description":{"type":"string","description":"The description of the repository."},"imagesCount":{"type":"integer","format":"int64","description":"The total number of images in the repository."},"labelsCount":{"type":"integer","format":"int64","description":"The number of unique image name/tag combinations in the repository."},"vulnerabilitiesCount":{"type":"integer","format":"int64","description":"The total number of discovered vulnerabilities for the images in the repository."},"malwareCount":{"type":"integer","format":"int64","description":"The total number of known malware exploits for the images in the repository."},"pullCount":{"type":"integer","format":"int64","description":"The number of times the image was pulled from the repository."},"pushCount":{"type":"integer","format":"int64","description":"The number of times the image was uploaded to the repository"},"totalBytes":{"type":"integer","format":"int64","description":"The total size in bytes of the images in the repository."}},"required":["name","imagesCount","labelsCount","vulnerabilitiesCount","malwareCount","pullCount","pushCount","totalBytes"]},"imageReport":{"type":"object","description":"An image vulnerability report.","properties":{"os_release_name":{"type":"string","description":"The image operating system release name."},"malware":{"type":"array","description":"A list of malware files identified by the Tenable.io Container Security scan in the image.","items":{"$ref":"#/components/schemas/malware"},"uniqueItems":true},"sha256":{"type":"string","description":"The image SHA256 hash."},"os":{"type":"string","description":"The image operating system."},"risk_score":{"type":"integer","description":"The image risk score on a scale of 1-10. For more information about the risk score metric, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/containersecurity/Content/ContainerSecurity/RiskMetrics.htm)."},"findings":{"type":"array","description":"A list of vulnerabilities that Tenable.io Container Security identified in the image.","items":{"$ref":"#/components/schemas/finding"},"uniqueItems":true},"os_version":{"type":"string","description":"The image operating system version."},"created_at":{"type":"string","format":"date-time","description":"An ISO timestamp indicating the date and time when the image was created, for example, `2018-12-31T13:51:17.243Z`."},"installed_packages":{"type":"array","description":"A list of installed software packages for the image.","items":{"$ref":"#/components/schemas/installedPackage"}},"platform":{"type":"string","description":"The image platform, for example, `docker`."},"image_name":{"type":"string","description":"The name of the image."},"updated_at":{"type":"string","format":"date-time","description":"An ISO timestamp indicating the date and time when the image was last uploaded, for example, `2018-12-31T13:51:17.243Z`."},"digest":{"type":"string","description":"The image digest."},"tag":{"type":"string","description":"The tag identifying the image version.\n**Note**: Image tags are not equivalent to Tenable.io [asset tags](/reference#tags)."},"potentially_unwanted_programs":{"type":"array","description":"A list of potentially unwanted programs for the image.","items":{"$ref":"#/components/schemas/unwantedProgram"},"uniqueItems":true},"docker_image_id":{"type":"string","description":"The image Docker ID."},"os_architecture":{"type":"string","description":"An image processor architecture, for example, `AMD64`."}},"required":["name","imagesCount","labelsCount","vulnerabilitiesCount","malwareCount","pullCount","pushCount","totalBytes"]},"finding":{"type":"object","description":"The details for the discovered vulnerability and a list of associated software packages.","properties":{"nvdFinding":{"$ref":"#/components/schemas/nvdFinding"},"packages":{"type":"array","items":{},"uniqueItems":true}}},"nvdFinding":{"type":"object","description":"The details for the discovered vulnerability, including description, external references, and remediation information.","properties":{"cve":{"type":"string","description":"The Common Vulnerabilities and Exposures (CVE) ID for vulnerability."},"description":{"type":"string","description":"The extended description of the vulnerability."},"published_date":{"type":"string","description":"An ISO timestamp indicating the date when the vulnerability definition was published, for example, `2018-12-31T13:51:17.243Z`."},"modified_date":{"type":"string","description":"An ISO timestamp indicating the date when the vulnerability definition was updated, for example, `2018-12-31T13:51:17.243Z`."},"cvss_score":{"type":"string","description":"The CVSSv2 base score (intrinsic and fundamental characteristics of a vulnerability that are constant over time and user environments)."},"access_vector":{"type":"string","description":"The CVSSv2 Access Vector (AV) metric for the vulnerability indicating how the vulnerability can be exploited. Possible values include:\n - Local\n - Adjacent Network\n - Network"},"access_complexity":{"type":"string","description":"The CVSSv2 Access Complexity (AC) metric for the vulnerability. Possible values include:\n - High\n - Medium\n - Low"},"auth":{"type":"string","description":"The CVSSv2 Authentication (Au) metric for the vulnerability. The metric describes the number of times that an attacker must authenticate to a target to exploit it. Possible values include:\n - None required\n - Single\n - Multiple"},"availability_impact":{"type":"string","description":"The CVSSv2 availability impact metric for the vulnerability. The metric describes the impact on the availability of the target system. Possible values include:\n - None\n - Partial\n - Complete"},"confidentiality_impact":{"type":"string","description":"The CVSSv2 confidentiality impact metric for the vulnerability. The metric describes the impact on the confidentiality of data processed by the system. Possible values include:\n - None\n - Partial\n - Complete"},"integrity_impact":{"type":"string","description":"The CVSSv2 integrity impact metric for the vulnerability. The metric describes the impact on the integrity of the exploited system. Possible values include:\n - None\n - Partial\n - Complete"},"cwe":{"type":"string","description":"The Common Weakness Enumeration (CWE) ID for vulnerability."},"cpe":{"type":"array","description":"The systems the vulnerability affects identified by Common Platform Enumeration (CPE).","items":{"type":"string"}},"remediation":{"type":"string","description":"Remediation information for the vulnerability."},"references":{"type":"array","items":{"type":"string"},"description":"Additional references to third-party information about the vulnerability."}}},"package":{"type":"object","description":"A software packages affected by the vulnerability.","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."},"type":{"type":"string","description":"The operating system or distribution associated with the package, for example, `linux`."}}},"installedPackage":{"type":"object","description":"A software package installed on the image.","properties":{"name":{"type":"string","description":"The name of the package."},"version":{"type":"string","description":"The version of the package."},"type":{"type":"string","description":"The operating system or distribution associated with the package, for example, `linux`."}}},"malware":{"type":"object","description":"The details of identified malware.","properties":{"infectedFile":{"type":"string","description":"The path of the infected file."},"fileTypeDescriptor":{"type":"string","description":"The file type of the infected file, for example, `ELF32`."},"md5":{"type":"string","description":"The MD5 signature of the infected file."},"sha256":{"type":"string","description":"The SHA256 signature of the infected file."}}},"unwantedProgram":{"description":"The unwanted program details.","type":"object","properties":{"infectedFile":{"type":"string","description":"The path of the program file."},"fileTypeDescriptor":{"type":"string","description":"The file type of the program file, for example, `ELF32`."},"md5":{"type":"string","description":"The MD5 signature of the program file."},"sha256":{"type":"string","description":"The SHA256 signature of the program file."}}},"pagination":{"type":"object","properties":{"total":{"type":"integer","description":"The total number of records matching your search criteria. Must be in the int32 format."},"limit":{"type":"integer","description":"Maximum number of records requested (or service imposed limit if not in request). Must be in the int32 format."},"offset":{"type":"integer","description":"The number of skipped records in the returned result set. Must be in the int32 format."},"sort":{"description":"An array of objects representing the fields you specified as sort parameters in the request. This attribute is only present if your request message specifies sort parameters.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the sort field."},"order":{"type":"string","description":"The direction in which Tenable.io sorts on the field, `asc` for ascending or `desc` for descending.","enum":["asc","desc"]}}}}}}}},"x-explorer-enabled":true,"x-proxy-enabled":true,"x-samples-enabled":true,"x-samples-languages":["python","curl","node","powershell","ruby","javascript","objectivec","java","php","csharp","go","swift","kotlin"]} \ No newline at end of file diff --git a/app_gen/openapi-parsers/other/TIO-API-Downloads-API.json b/app_gen/openapi-parsers/other/TIO-API-Downloads-API.json new file mode 100644 index 00000000..54ec76f8 --- /dev/null +++ b/app_gen/openapi-parsers/other/TIO-API-Downloads-API.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"version":"1.0.0","title":"Downloads API","description":"The Downloads API allows you to access and download available Tenable products installation files and updates. You can use the API endpoints to list product pages, list downloads available for a specific product, and to download a file. The endpoints can also be used to determine and download latest version of a file to facilitate the automation of an installation.\n\n**Note:** Tenable Downloads API uses a different server URL than Tenable.io API: `https://www.tenable.com/downloads/api/v2/pages`.\n\n### Authentication\n\nThe Downloads API uses Bearer token authentication and requires a valid token in the Authorization header:\n```\nAuthorization: Bearer AbCdEf123456\n```\n\nTo access or reset your authentication token, navigate to the [Authentication Token](https://www.tenable.com/downloads/api_docs) page."},"tags":[{"name":"Downloads","description":"The Downloads API allows you to access and download available Tenable products installation files and updates. You can use the API endpoints to list product pages, list downloads available for a specific product, and to download a file. The endpoints can also be used to determine and download latest version of a file to facilitate the automation of an installation.\n\n**Note:** Tenable Downloads API uses a different server URL than Tenable.io API: `https://www.tenable.com/downloads/api/v2/pages`.\n\n### Authentication\n\nThe Downloads API uses Bearer token authentication and requires a valid token in the Authorization header:\n```\nAuthorization: Bearer AbCdEf123456\n```\n\nTo access or reset your authentication token, navigate to the [Authentication Token](https://www.tenable.com/downloads/api_docs) page."}],"servers":[{"url":"https://www.tenable.com/downloads/api/v2"}],"components":{"securitySchemes":{"Bearer":{"type":"apiKey","in":"header","name":"Authorization","description":"Example: Bearer "}},"schemas":{"Page":{"type":"object","properties":{"title":{"type":"string","description":"The name of the product.","example":"Nessus"},"page_slug":{"type":"string","description":"Product page slug, for example, `nessus`.","example":"nessus"},"description":{"type":"string","description":"The description of a product.","example":"Binary download files for Nessus Professional, Nessus Manager, and connecting Nessus Scanners to Tenable.io & Tenable.sc."},"files_index_url":{"type":"string","description":"The URL to list the product files available for download.","example":"https://www.tenable.com/downloads/api/v2/downloads/api/v2/pages/nessus"}}},"Download":{"type":"object","properties":{"file":{"type":"string","description":"The name of the file.","example":"Nessus-8.2.1-debian6_i386.deb"},"version":{"type":"string","description":"Product version.","example":"8.2.1"},"size":{"type":"integer","description":"The size of the file in bytes.","example":67331530},"release_date":{"type":"string","description":"Release date.","example":"01/24/2019"},"product_release_date":{"type":"string","description":"Product release date.","example":"01/24/2019"},"md5":{"type":"string","description":"The MD5 hash of the file.","example":"098f6bcd4621d373cade4e832627b4f6"},"sha256":{"type":"string","description":"The SHA256 hash of the file","example":"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"},"file_url":{"type":"string","description":"The URL to download the file.","example":"https://www.tenable.com/downloads/api/v2/downloads/api/v2/pages/nessus/files/Nessus-8.2.1-debian6_i386.deb"}}},"LatestDownload":{"type":"object","properties":{"file":{"type":"string","description":"The name of the file.","example":"Nessus-8.2.1-debian6_i386.deb"},"version":{"type":"string","description":"Product version.","example":"8.2.1"},"size":{"type":"integer","description":"The size of the file in bytes.","example":67331530},"release_date":{"type":"string","description":"Release date.","example":"01/24/2019"},"product_release_date":{"type":"string","description":"Product release date.","example":"01/24/2019"},"md5":{"type":"string","description":"The MD5 hash of the file.","example":"098f6bcd4621d373cade4e832627b4f6"},"sha256":{"type":"string","description":"The SHA256 hash of the file","example":"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"},"file_url":{"type":"string","description":"The URL to download the latest version of this file.","example":"https://www.tenable.com/downloads/api/v2/downloads/api/v2/pages/nessus/files/Nessus-latest-debian6_i386.deb"}}},"Releases":{"type":"object","properties":{"latest":{"properties":{"Product Name - X.X.X":{"type":"array","items":{"$ref":"#/components/schemas/LatestDownload"}}}},"Product Name - X.X.X":{"type":"array","items":{"$ref":"#/components/schemas/Download"}}}},"SigningKey":{"type":"object","properties":{"file":{"type":"string","description":"The name of the file.","example":"Tenable GPG Key - 2048 bit"},"size":{"type":"integer","description":"The size of the file in bytes.","example":1764},"md5":{"type":"string","description":"The MD5 hash of the file.","example":"098f6bcd4621d373cade4e832627b4f6"},"sha256":{"type":"string","description":"The SHA256 hash of the file.","example":"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"},"file_url":{"type":"string","description":"The URL to download the file.","example":"https://www.tenable.com/downloads/api/v2/downloads/api/v2/pages/nessus/files/tenable-2048.gpg"}}},"NotFound":{"type":"object","properties":{"message":{"type":"string","description":"Not Found","example":"Page Not Found"}}},"Unauthorized":{"type":"object","properties":{"message":{"type":"string","description":"Unauthorized","example":"Unauthorized"}}},"InternalServerError":{"type":"object","properties":{"message":{"type":"string","description":"Server Error","example":"Server Error"}}}}},"security":[{"Bearer":[]}],"x-samples-languages":["python","curl","node","powershell","ruby","javascript","objectivec","java","php","csharp","go","swift","kotlin"],"paths":{"/pages":{"get":{"summary":"List product pages","description":"Returns a list of product pages.","tags":["Downloads"],"responses":{"200":{"description":"An array of product pages.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Page"}},"examples":{"response":{"value":[{"title":"Nessus","page_slug":"nessus","description":"Binary download files for Nessus Professional, Nessus Manager, and connecting Nessus Scanners to Tenable.io & Tenable.sc.\n","files_index_url":"https://www.tenable.com/downloads/api/v2/pages/nessus"}]}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"},"examples":{"response":{"value":{"message":"Unauthorized"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"examples":{"response":{"value":{"message":"Server Error"}}}}}}}}},"/pages/{slug}":{"get":{"summary":"List downloadable files for a product","description":"Returns a JSON hash of all download files for a given product page.","tags":["Downloads"],"parameters":[{"in":"path","name":"slug","schema":{"type":"string"},"required":true,"description":"Product page slug, for example, `nessus`."}],"responses":{"200":{"description":"A JSON hash of releases for a given product","content":{"application/json":{"schema":{"type":"object","properties":{"releases":{"$ref":"#/components/schemas/Releases"},"signing_keys":{"type":"array","items":{"$ref":"#/components/schemas/SigningKey"}}}},"examples":{"response":{"value":{"releases":{"latest":{"Product Name - X.X.X":[{"file":"Nessus-8.2.1-debian6_i386.deb","version":"8.2.1","size":67331530,"release_date":"01/24/2019","product_release_date":"01/24/2019","md5":"098f6bcd4621d373cade4e832627b4f6","sha256":"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08","file_url":"https://www.tenable.com/downloads/api/v2/pages/nessus/files/Nessus-latest-debian6_i386.deb"}]},"Product Name - X.X.X":[{"file":"Nessus-8.2.1-debian6_i386.deb","version":"8.2.1","size":67331530,"release_date":"01/24/2019","product_release_date":"01/24/2019","md5":"098f6bcd4621d373cade4e832627b4f6","sha256":"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08","file_url":"https://www.tenable.com/downloads/api/v2/pages/nessus/files/Nessus-8.2.1-debian6_i386.deb"}]},"signing_keys":[{"file":"Tenable GPG Key - 2048 bit","size":1764,"md5":"098f6bcd4621d373cade4e832627b4f6","sha256":"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08","file_url":"https://www.tenable.com/downloads/api/v2/pages/nessus/files/tenable-2048.gpg"}]}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"},"examples":{"response":{"value":{"message":"Unauthorized"}}}}}},"404":{"description":"Page Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"},"examples":{"response":{"value":{"message":"Page Not Found"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"examples":{"response":{"value":{"message":"Server Error"}}}}}}}}},"/pages/{slug}/files/{file}":{"get":{"summary":"Download a file","description":"Downloads a requested file.","tags":["Downloads"],"parameters":[{"in":"path","name":"slug","schema":{"type":"string"},"required":true,"description":"Product page slug, for example, `nessus`."},{"in":"path","name":"file","schema":{"type":"string"},"required":true,"description":"File name, for example,. `Nessus-latest-x64.msi`."}],"responses":{"200":{"description":"Requested file"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"},"examples":{"response":{"value":{"message":"Unauthorized"}}}}}},"404":{"description":"File or Page Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"},"examples":{"response":{"value":{"message":"Page Not Found"}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"examples":{"response":{"value":{"message":"Server Error"}}}}}}}}}},"x-explorer-enabled":true,"x-proxy-enabled":true,"x-samples-enabled":true} \ No newline at end of file diff --git a/app_gen/openapi-parsers/other/TIO-API-Tenable-Platform.json b/app_gen/openapi-parsers/other/TIO-API-Tenable-Platform.json new file mode 100644 index 00000000..0377f176 --- /dev/null +++ b/app_gen/openapi-parsers/other/TIO-API-Tenable-Platform.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"title":"Tenable Platform","version":"1.0.0"},"security":[{"cloud":[]}],"servers":[{"url":"https://cloud.tenable.com"}],"components":{"securitySchemes":{"cloud":{"type":"apiKey","in":"header","name":"X-ApiKeys","description":"Format - accessKey=ACCESS_KEY;secretKey=SECRET_KEY"}}},"x-samples-languages":["python","curl","node","powershell","ruby","javascript","objectivec","java","php","csharp","go","swift","kotlin"],"paths":{"/session":{"post":{"summary":"Create session","description":"**Note:** This endpoint is deprecated. Tenable best practice is to use API keys that are generated for specific user accounts. For your organization's integrations with the Tenable.io API, Tenable recommends you do not create and use session tokens.

Requires BASIC [16] user permissions. See Permissions.

","deprecated":true,"operationId":"session-create","tags":["Session"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","description":"The username for the person who is attempting to log in."},"password":{"type":"string","description":"The password for the person who is attempting to log in.","format":"password"}},"required":["username","password"]}}}},"responses":{"200":{"description":"Returns the session token.","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The session token."}}},"examples":{"response":{"value":{"token":"k83049e04e76ea2b696f76e1cc83a2e87b6a52adbc014967f915c469e5739ac3"}}}}}},"400":{"description":"Returned if the username format is not valid."},"401":{"description":"Returned if the username or password is invalid."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if too many users are connected.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"Get user session","description":"Returns the user session data.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"session-get","tags":["Session"],"responses":{"200":{"description":"Returns the user session data.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The unique ID of the user."},"uuid":{"type":"string","description":"The UUID of the user."},"uuid_id":{"type":"string","description":"The UUID of the user."},"username":{"type":"string","description":"The username for the user."},"user_name":{"type":"string","description":"The username for the user."},"email":{"type":"string","description":"The email address for the user."},"name":{"type":"string","description":"The full name for the user."},"type":{"type":"string","description":"The type of user (`local` or `ldap`)."},"permissions":{"type":"integer","description":"The user permissions as described in Permissions.","format":"int32"},"enabled":{"type":"integer","description":"If 1, the user is enabled."},"last_login_attempt":{"type":"integer","description":"The Unix timestamp of the last failed login attempt."},"login_fail_count":{"type":"integer","description":"The count of failed login attempts."},"login_fail_total":{"type":"integer","description":"The number of failed logins that may occur prior to the user being locked."},"two_factor":{"type":"object","description":"This attribute is only present if two-factor authentication is enabled for the user account.","properties":{"sms_phone":{"type":"string","description":"The mobile phone number Tenable.io uses during two-factor authentication for the user account."},"sms_enabled":{"type":"integer","description":"A value specifying whether two-factor authentication is enabled (`1`) or disabled (`0`) for the user account.","format":"int32"},"email_enabled":{"type":"integer","description":"A value specifying whether, in addition to sending a text message with the verification code, Tenable.io sends a backup email containing the verification code to the email associated with your user account. If this value is `0`, Tenable.io does not send a backup email message. If this value is `1`, Tenable.io sends a backup email message.","format":"int32"}}},"container_id":{"type":"integer","description":"The ID of the user's Tenable.io instance."},"container_uuid":{"type":"string","description":"The UUID of the user's Tenable.io instance."},"container_name":{"type":"string","description":"The name of the user's Tenable.io instance."},"features":{"type":"object","description":"A list of Tenable.io features enabled for the user's instance.","properties":{}},"apps":{"type":"object","description":"A list of Tenable.io products enabled for the user's instance.","properties":{"consec":{"type":"string","description":"The license status for Tenable.io Container Security, if enabled for the user's instance."},"was":{"type":"string","description":"The license status for Tenable.io Web Application Scanning, if enabled for the user's instance."}}},"group_uuids":{"type":"array","description":"The UUIDs of user groups to which the user belongs.","items":{"type":"string"}},"groups":{"description":"The list of user groups to which the user belongs.","type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","description":"The UUID of the user group."},"name":{"type":"string","description":"The name of the user group."},"permissions":{"type":"integer","description":"The specified user's permissions for the user group. Default to `0`.","format":"int32"},"id":{"type":"integer","description":"The ID of the user group.","format":"int32"}}}},"lastlogin":{"type":"integer","description":"The Unix timestamp for the user's last login."},"connectors":{"type":"boolean","description":"Connectors for the user's Tenable.io instance."},"lockout":{"type":"integer","description":"Specifies whether the user account is locked out (`1`) or available (`0`)."}}},"examples":{"response":{"value":{"id":2,"uuid":"fb76f456-9a6f-4f63-8553-1cee234eb965","uuid_id":"fa76e456-9a6f-4f63-8553-1ced233eb965","username":"user2@example.com","user_name":"user2@example.com","email":"user2@example.org","name":"Sample User","type":"local","permissions":64,"enabled":true,"last_login_attempt":1540942030719,"login_fail_count":0,"login_fail_total":14,"two_factor":{"sms_phone":"+14108720555","sms_enabled":1,"email_enabled":0},"container_id":766315,"container_uuid":"3bc442f4-0cd1-4de0-95a3-3d8e587820ee","container_name":"demo","features":{"access_groups":true,"access_groups_migration":true,"advanced_search_v2":true,"agent_triage_m2":true,"agent_updates":true,"analytics":true,"analytics_v2":true,"asset_deleting_ui":true,"asset_management":true,"audits_workbench":false,"aws_connector_v1":true,"cfl_core_ssor":true,"connectors_gen2":false,"container_security":true,"container_security_gen2":true,"container_security_gen2_runtime":true,"credentials_mgmt":true,"credentials_mgmt_v2":true,"dashboards_gen2":false,"dashboards_gen2_blank_canvas":false,"dashboards_gen2_export":false,"dashboards_gen2_export_png":false,"dashboards_gen2_lumin_enabled":false,"dashboards_gen2_schedule":false,"dashboards_gen2_tag_filter":false,"dashboards_gen2_widget_filters":false,"dashboards_gen2_widget_library":false,"dynamic_tagging":true,"environment_management":true,"export_dashboard":true,"export_dashboard_pdf":true,"general_data_protection_compliance":true,"import_data":false,"indexing_v2":true,"lumin_beta_allowed":true,"lumin_beta_enabled":true,"modify_vulnerability":false,"pci_multiscan":true,"qualys_connector":true,"qualys_vuln_connector":true,"rbac":true,"recast_rules":true,"reporting":true,"scan_service":true,"scans_gen2":true,"state":true,"suggest_feature":true,"system":false,"tagging":true,"vm_service_query":true,"vulnerability_management_gen2":true,"was_discovery":true,"was_multi_scanning":true,"was_plugin_selection":true,"was_scan_progress":true,"webapp_scanning":true,"webapp_scanning_gen2":true},"apps":{},"group_uuids":[],"groups":[],"lastlogin":1543864186682}}}}}},"403":{"description":"Returned if the user does not have permission to view the session data."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"put":{"summary":"Update user settings","description":"Updates the settings for the current user.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"session-edit","tags":["Session"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Full name for the user."},"email":{"type":"string","description":"Email address for the user."}}}}}},"responses":{"200":{"description":"Returns the user session data.","content":{"application/json":{"schema":{"type":"object","properties":{"uuid":{"type":"string","description":"The UUID for the user."},"id":{"type":"integer","description":"The unique ID of the user."},"user_name":{"type":"string","description":"The username for the user."},"username":{"type":"string","description":"The username for the user."},"email":{"type":"string","description":"The email address for the user."},"name":{"type":"string","description":"The real name of the user."},"type":{"type":"string","description":"The type of user (`local` or `ldap`)."},"container_uuid":{"type":"string","description":"The UUID of the user's Tenable.io instance."},"whatsnew_version":{"type":"string","description":"The version of the \"what's new\" messaging that appears when the user logs into the user interface."},"aggregate":{"type":"integer","description":"If `1`, aggregate collection is enabled."},"permissions":{"type":"integer","description":"The user permissions for the user as described in Permissions.","format":"int32"},"last_login_attempt":{"type":"integer","description":"The Unix timestamp for the last failed login attempt."},"login_fail_count":{"type":"integer","description":"The number of failed login attempts for the user since the last successful login."},"login_fail_total":{"type":"integer","description":"The total number of failed login attempts for the user."},"enabled":{"type":"boolean","description":"Specifies whether the user account is enabled (true) or disabled (false)."},"two_factor":{"type":"object","description":"This attribute is only present if two-factor authentication is enabled for the user account.","properties":{"sms_phone":{"type":"string","description":"The mobile phone number Tenable.io uses during two-factor authentication for the user account."},"sms_enabled":{"type":"integer","description":"A value specifying whether two-factor authentication is enabled (`1`) or disabled (`0`) for the user account.","format":"int32"},"email_enabled":{"type":"integer","description":"A value specifying whether, in addition to sending a text message with the verification code, Tenable.io sends a backup email containing the verification code to the email associated with your user account. If this value is `0`, Tenable.io does not send a backup email message. If this value is `1`, Tenable.io sends a backup email message.","format":"int32"}}},"lockout":{"type":"integer","description":"Specifies whether the user account is locked out (`1`) or available (`0`)."},"group_uuids":{"type":"array","description":"The UUIDs of user groups to which the user belongs.","items":{"type":"string"}},"groups":{"description":"The list of user groups to which the user belongs.","type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","description":"The UUID of the user group."},"name":{"type":"string","description":"The name of the user group."},"id":{"type":"integer","description":"The ID of the user group.","format":"int32"}}}},"lastlogin":{"type":"integer","description":"The last time the user logged in to Tenable.io in the Unix time format."},"uuid_id":{"type":"string","description":"The UUID for the user."}}},"examples":{"response":{"value":{"id":2,"user_name":"user2@example.com","username":"user2@example.com","email":"user2@example.org","name":"Sample User","type":"local","whatsnew_version":"","aggregate":true,"permissions":64,"last_login_attempt":1540942130719,"login_fail_count":0,"login_fail_total":14,"enabled":true,"uuid":"fa76f456-9a6f-4f63-8553-1cee233fb965","container_uuid":"3bc442f4-0cd1-4de0-95a3-3d8e587820fe","lastlogin":1543864196682,"uuid_id":"fa76f456-9a6f-4f63-8553-1cfe233eb965"}}}}}},"403":{"description":"Returned if the user does not have permission to edit the session data."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if the server failed to edit the user.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Log out user","description":"Logs the current user out and destroys the session.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"session-destroy","tags":["Session"],"responses":{"200":{"description":"Returned if the session has been properly destroyed.","content":{"application/json":{"schema":{}}}},"401":{"description":"Returned if no session exists."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/session/restore":{"post":{"summary":"Restore impersonated session","description":"Restores an impersonated session to the original user.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"session-restore","tags":["Session"],"responses":{"200":{"description":"Returned if the session has been properly restored.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"401":{"description":"Returned if no session exists."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/session/chpasswd":{"put":{"summary":"Change password","description":"Changes password for the current user.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"session-password","tags":["Session"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"current_password":{"type":"string","description":"The current password for the user.","format":"password"},"password":{"type":"string","description":"The new password for the user.","format":"password"}},"required":["password","current_password"]}}}},"responses":{"200":{"description":"Returned if the user password has been changed.","content":{"application/json":{"schema":{}}}},"400":{"description":"Returned if the password is too short."},"403":{"description":"Returned if the user does not have permission to change the password."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if the server failed to change the password.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/session/keys":{"put":{"summary":"Generate API keys","description":"Generates API keys for the current user.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"session-keys","tags":["Session"],"responses":{"200":{"description":"Returned if the user API keys were generated.","content":{"application/json":{"schema":{"type":"object","properties":{"accessKey":{"type":"string","description":"The access key for the user account in Tenable.io. Use this key in combination with the user's secret key to submit authorized API requests to Tenable.io."},"secretKey":{"type":"string","description":"The secret key for the user account in Tenable.io. Use this key in combination with the user's access key to submit authorized API requests to Tenable.io."}}},"examples":{"response":{"value":{"accessKey":"748a5a175273ea87b026d815378f328b4d02d89df070d7891bd869762adf5b69","secretKey":"d2c7a8d58c996a2eccba270de732d0c1833fb1107c2929cb5321c3f15c5bc0ee"}}}}}},"401":{"description":"Returned if the user is not logged in."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/session/two-factor/send-verification":{"post":{"summary":"Send verification code","description":"Start the process of enabling two-factor authentication by sending a one-time verification code to the provided phone number.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"session-send-code","tags":["Session"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sms_phone":{"type":"string","description":"The phone number where Tenable.io sends the one-time verification code. Must begin with the `+` sign."}},"required":["sms_phone"]}}}},"responses":{"200":{"description":"Returned if the one-time verification code was sent successfully to the provided phone number.","content":{"application/json":{"schema":{}}}},"400":{"description":"Returned if the verification code could not be sent."},"404":{"description":"Returned if the user does not exist."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/session/two-factor/verify-code":{"post":{"summary":"Validate verification code","description":"Validate the verification code sent to a phone number. If this request is successful, it enables two-factor authentication for the current user.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"session-verify-code","tags":["Session"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"verification_code":{"type":"string","description":"The verification code sent in the send-verification request."}},"required":["verification_code"]}}}},"responses":{"200":{"description":"Returned if two-factor authentication was successfully enabled for this user.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"400":{"description":"Returned if the the verification code was empty, incorrect, or expired."},"404":{"description":"Returned if the user does not exist."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/session/two-factor":{"put":{"summary":"Configure two-factor authentication","description":"Configure the current user's two-factor authentication settings. Before you can change these settings, you must send and validate the verification code using the /session/two-factor/send-verification and /session/two-factor/verify-code endpoints.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"session-two-factor-settings","tags":["Session"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email_enabled":{"type":"boolean","description":"Specifies whether backup notification for two-factor authentication is enabled. If enabled, Tenable.io sends the two-factor verification code via e-mail, as well as via the default SMS message."},"sms_enabled":{"type":"boolean","description":"Specifies whether two-factor authentication is enabled. If enabled, Tenable.io sends the verification code via an SMS message. This parameter must be enabled to enable two-factor verification for the user."},"sms_phone":{"type":"string","description":"The phone number to use for two-factor authentication. Must begin with the `+` sign. This field is required when sms\\_enabled is set to `true`.","example":"+155555555555"}},"required":["email_enabled","sms_enabled"]}}}},"responses":{"200":{"description":"Returned if the two-factor authentication settings update was successful.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"404":{"description":"Returned if the user does not exist."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/users":{"post":{"summary":"Create user","description":"Creates a new user.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-create","tags":["Users"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","description":"The login name for the user."},"password":{"type":"string","description":"The initial password for the user.","format":"password"},"permissions":{"type":"integer","description":"The user permissions for the user as described in Permissions.","format":"int32"},"name":{"type":"string","description":"The name of the user (for example, first and last name)."},"email":{"type":"string","description":"The email address of the user."}},"required":["username","password","permissions"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully creates the user.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the user."},"username":{"type":"string","description":"The username for the user."},"name":{"type":"string","description":"The name of the user (for example, first and last name)."},"email":{"type":"string","description":"The email address for the user."},"permissions":{"type":"integer","description":"The user permissions for the user as described in Permissions.","format":"int32"},"lastlogin":{"type":"integer","description":"The last time the user logged in to Tenable.io in the Unix time format."},"type":{"type":"string","description":"The type of user. The only supported type is `local`."},"login_fail_count":{"type":"integer","description":"The number of failed login attempts for the user since the last successful login."},"login_fail_total":{"type":"integer","description":"The total number of failed login attempts for the user."},"last_login_attempt":{"type":"integer","description":"The timestamp of the last failed login attempt for the user."},"enabled":{"type":"boolean","description":"Specifies whether the user account is enabled (true) or disabled (false)."},"lockout":{"type":"integer","description":"Specifies whether the user account is locked out (1) or available (0)."},"uuid_id":{"type":"string","description":"The unique UUID for the user."}}},"examples":{"response":{"value":{"id":5,"user_name":"user2@example.com","username":"user4@api.demo","email":"user2@example.com","name":"Test User","type":"local","aggregate":true,"permissions":32,"login_fail_count":0,"login_fail_total":0,"enabled":true,"uuid":"ed6fd6a6-9d02-4178-8a71-7dd8b000e526","container_uuid":"36f234c4-4ae3-4353-9324-8ad3dcc7fcc5","uuid_id":"ed6fd6a6-9d02-4178-8a71-7dd8b000e526"}}}}}},"400":{"description":"Returned if a field in the request is invalid."},"403":{"description":"Returned if you do not have permission to create a user."},"409":{"description":"Returned if you attempted to create a duplicate user."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"List users","description":"Returns a list of users.

Requires BASIC [16] user permissions. If you use credentials with ADMIN [64] permissions, Tenable.io returns all fields for individual user details. Otherwise, user details include only the `uuid`, `id`, `username`, and `email` fields. See Permissions.

","operationId":"users-list","tags":["Users"],"responses":{"200":{"description":"Returns a list of users.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the user."},"username":{"type":"string","description":"The username for the user."},"name":{"type":"string","description":"The name of the user (for example, first and last name)."},"email":{"type":"string","description":"The email address for the user."},"permissions":{"type":"integer","description":"The user permissions for the user as described in Permissions.","format":"int32"},"lastlogin":{"type":"integer","description":"The last time the user logged in to Tenable.io in the Unix time format."},"type":{"type":"string","description":"The type of user. The only supported type is `local`."},"login_fail_count":{"type":"integer","description":"The number of failed login attempts for the user since the last successful login."},"login_fail_total":{"type":"integer","description":"The total number of failed login attempts for the user."},"last_login_attempt":{"type":"integer","description":"The timestamp of the last failed login attempt for the user."},"enabled":{"type":"boolean","description":"Specifies whether the user account is enabled (true) or disabled (false)."},"lockout":{"type":"integer","description":"Specifies whether the user account is locked out (1) or available (0)."},"uuid_id":{"type":"string","description":"The unique UUID for the user."}}},"examples":{"response":{"value":{"users":[{"id":2,"user_name":"admin@example.com","username":"admin@example.com","email":"admin@example.com","name":"Admin Example","type":"local","permissions":64,"login_fail_count":0,"login_fail_total":0,"enabled":true,"uuid":"7a676323-47bb-4838-9cec-c9f01448bb2d","container_uuid":"36f234c4-4ae3-4353-9324-8ad3dcc7fcc5","lastlogin":1544477990398,"uuid_id":"7a676323-47bb-4838-9cec-c9f01448bb2d"},{"id":4,"user_name":"user3@example.com","username":"user3@example.com","email":"user3@example.com","name":"User Sample 3rd","type":"local","permissions":32,"login_fail_count":0,"login_fail_total":0,"enabled":true,"uuid":"802ea9fe-701a-4c80-b001-59c252a178cb","container_uuid":"36f234c4-4ae3-4353-9324-8ad3dcc7fcc5","uuid_id":"802ea9fe-701a-4c80-b001-59c252a178cb"},{"id":5,"user_name":"user4@example.com","username":"user4@example.com","email":"user4@example.com","name":"User Test","type":"local","permissions":32,"login_fail_count":0,"login_fail_total":0,"enabled":true,"uuid":"ed6fd6a6-9d02-4178-8a71-7dd8b000e526","container_uuid":"36f234c4-4ae3-4353-9324-8ad3dcc7fcc5","uuid_id":"ed6fd6a6-9d02-4178-8a71-7dd8b000e526"}]}}}}}},"403":{"description":"Returned if you do not have permission to view the list of users."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/users/{user_id}":{"get":{"summary":"Get user details","description":"Returns details for a specific user.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-details","tags":["Users"],"parameters":[{"description":"The unique ID of the user.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the user details.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the user."},"username":{"type":"string","description":"The username for the user."},"name":{"type":"string","description":"The name of the user (for example, first and last name)."},"email":{"type":"string","description":"The email address for the user."},"permissions":{"type":"integer","description":"The user permissions for the user as described in Permissions.","format":"int32"},"lastlogin":{"type":"integer","description":"The last time the user logged in to Tenable.io in the Unix time format."},"type":{"type":"string","description":"The type of user. The only supported type is `local`."},"login_fail_count":{"type":"integer","description":"The number of failed login attempts for the user since the last successful login."},"login_fail_total":{"type":"integer","description":"The total number of failed login attempts for the user."},"last_login_attempt":{"type":"integer","description":"The timestamp of the last failed login attempt for the user."},"enabled":{"type":"boolean","description":"Specifies whether the user account is enabled (true) or disabled (false)."},"lockout":{"type":"integer","description":"Specifies whether the user account is locked out (1) or available (0)."},"uuid_id":{"type":"string","description":"The unique UUID for the user."}}},"examples":{"response":{"value":{"id":4,"user_name":"user3@example.com","username":"user3@example.com","email":"user3@example.com","name":"Test User","type":"local","permissions":32,"login_fail_count":0,"login_fail_total":0,"enabled":true,"uuid":"802ea9fe-701a-4c80-b001-59c252a178cb","container_uuid":"36f234c4-4ae3-4353-9324-8ad3dcc7fcc5","uuid_id":"802ea9fe-701a-4c80-b001-59c252a178cb"}}}}}},"403":{"description":"Returned if you do not have permission to view the given user details."},"404":{"description":"Returned if the user specified in the request does not exist."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"put":{"summary":"Update user","description":"Updates an existing user account.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-edit","tags":["Users"],"parameters":[{"description":"The unique ID of the user.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"permissions":{"type":"integer","description":"The user permissions for the user as described in Permissions.","format":"int32"},"name":{"type":"string","description":"The name of the user (for example, first and last name)."},"email":{"type":"string","description":"The email address of the user."},"enabled":{"type":"boolean","description":"Specifies whether the user's account is enabled (true) or disabled (false)."}},"required":["permissions"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully updates the user.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the user."},"username":{"type":"string","description":"The username for the user."},"name":{"type":"string","description":"The name of the user (for example, first and last name)."},"email":{"type":"string","description":"The email address for the user."},"permissions":{"type":"integer","description":"The user permissions for the user as described in Permissions.","format":"int32"},"lastlogin":{"type":"integer","description":"The last time the user logged in to Tenable.io in the Unix time format."},"type":{"type":"string","description":"The type of user. The only supported type is `local`."},"login_fail_count":{"type":"integer","description":"The number of failed login attempts for the user since the last successful login."},"login_fail_total":{"type":"integer","description":"The total number of failed login attempts for the user."},"last_login_attempt":{"type":"integer","description":"The timestamp of the last failed login attempt for the user."},"enabled":{"type":"boolean","description":"Specifies whether the user account is enabled (true) or disabled (false)."},"lockout":{"type":"integer","description":"Specifies whether the user account is locked out (1) or available (0)."},"uuid_id":{"type":"string","description":"The unique UUID for the user."}}},"examples":{"response":{"value":{"id":4,"user_name":"user3@example.com","username":"user3@example.com","email":"user3@example.com","name":"Test User","type":"local","whatsnew_version":"","aggregate":true,"permissions":32,"login_fail_count":0,"login_fail_total":0,"enabled":false,"uuid":"802ea9fe-701a-4c80-b001-59c252a178cb","container_uuid":"36f234c4-4ae3-4353-9324-8ad3dcc7fcc5","uuid_id":"802ea9fe-701a-4c80-b001-59c252a178cb"}}}}}},"400":{"description":"Returned if a field in the request is invalid."},"403":{"description":"Returned if you do not have permission to update a user."},"404":{"description":"Returned if the specified user does not exist."},"409":{"description":"Returned if you attempt to change your own account's enabled or disabled status."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete user","description":"Deletes a user.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-delete","tags":["Users"],"parameters":[{"description":"The unique ID of the user.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if Tenable.io deleted the user.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"403":{"description":"Returned if you do not have permission to delete the user."},"404":{"description":"Returned if the user you attempted to delete does not exist."},"409":{"description":"Returned if you tried to delete your own account."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io failed to delete the user.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/users/{user_id}/chpasswd":{"put":{"summary":"Change password","description":"Changes the password for a user.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-password","tags":["Users"],"parameters":[{"description":"The unique ID of the user whose password you want to change.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"current_password":{"type":"string","description":"The current password for the user.","format":"password"},"password":{"type":"string","description":"The new password for the user.","format":"password"}},"required":["current_password","password"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully changed the user password.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"400":{"description":"Returned if Tenable.io cannot change the user password, because the new password is too short."},"403":{"description":"Returned if you do not have permission to change the user's password."},"404":{"description":"Returned if Tenable.io cannot find the specified user."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io failed to change the password.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/users/{user_id}/enabled":{"put":{"summary":"Enable user account","description":"Enables or disables an existing user account.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-enabled","tags":["Users"],"parameters":[{"description":"The unique ID of the user.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"The user's enabled or disabled status to be set (`true` to enable or `false` to disable)."}},"required":["enabled"]}}}},"responses":{"200":{"description":"Returns an array of user objects.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the user."},"username":{"type":"string","description":"The username for the user."},"name":{"type":"string","description":"The name of the user (for example, first and last name)."},"email":{"type":"string","description":"The email address for the user."},"permissions":{"type":"integer","description":"The user permissions for the user as described in Permissions.","format":"int32"},"lastlogin":{"type":"integer","description":"The last time the user logged in to Tenable.io in the Unix time format."},"type":{"type":"string","description":"The type of user. The only supported type is `local`."},"login_fail_count":{"type":"integer","description":"The number of failed login attempts for the user since the last successful login."},"login_fail_total":{"type":"integer","description":"The total number of failed login attempts for the user."},"last_login_attempt":{"type":"integer","description":"The timestamp of the last failed login attempt for the user."},"enabled":{"type":"boolean","description":"Specifies whether the user account is enabled (true) or disabled (false)."},"lockout":{"type":"integer","description":"Specifies whether the user account is locked out (1) or available (0)."},"uuid_id":{"type":"string","description":"The unique UUID for the user."}}},"examples":{"response":{"value":{"object":"user"}}}}}},"403":{"description":"Returned if you do not have permission to update a user."},"404":{"description":"Returned if the user that the request specified does not exist."},"409":{"description":"Returned if you tried to change your own permissions."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/users/{user_id}/authorizations":{"get":{"summary":"Get user authorizations","description":"Returns user authorizations for accessing a Tenable.io instance. Access methods include user name and password, single sign-on (SSO) with SAML, and API.\n**Note:** All access methods are authorized by default.\n\nFor background information about managing user authorizations, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/Content/Settings/ManageUserAccessAuthorizations.htm).

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-list-auths","tags":["Users"],"parameters":[{"description":"The UUID of the user. You can find the user UUID by examining the output of the [GET /users](/reference#users-list) endpoint.","required":true,"name":"user_id","in":"path","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Returns authorizations for the user.","content":{"application/json":{"schema":{"type":"object","properties":{"account_uuid":{"type":"string","description":"The UUID of the container.","format":"uuid"},"user_uuid":{"type":"string","description":"The UUID of the user.","format":"uuid"},"api_permitted":{"type":"boolean","description":"Indicates whether API access is authorized for the user."},"password_permitted":{"type":"boolean","description":"Indicates whether user name and password login is authorized for the user."},"saml_permitted":{"type":"boolean","description":"Indicates whether SSO with SAML is authorized for the user."}}},"examples":{"response":{"value":{"account_uuid":"40ac4662-6af3-4a0b-b422-93387ec0f298","user_uuid":"1e623352-a68b-42e0-8af8-f1b7c10a2b72","api_permitted":true,"password_permitted":false,"saml_permitted":true}}}}}},"404":{"description":"Returned if Tenable.io cannot find the specified user.","content":{"application/json":{"schema":{"type":"object","description":"Tenable.io API error response.","properties":{"error":{"type":"string","description":"The extended description of the cause of the Tenable.io API error."}}},"examples":{"response":{"value":{"error":"User[UUID=b6a6900e-a616-4266-b2be-765de43348dd] not found."}}}}}},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"put":{"summary":"Update user authorizations","description":"Updates user authorizations for accessing a Tenable.io instance. Use the endpoint to grant and revoke authorizations.\n\n**Note:** You cannot update authorizations for the current user.\n\nFor background information about managing user authorizations, see [Tenable.io Vulnerability Management User Guide](https://docs.tenable.com/cloud/Content/Settings/ManageUserAccessAuthorizations.htm).

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-update-auths","tags":["Users"],"parameters":[{"description":"The UUID of the user. You can find the user UUID by examining the output of the [GET /users](/reference#users-list) endpoint.","required":true,"name":"user_id","in":"path","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Specify `true` or `false` to grant or revoke authorizations.","properties":{"api_permitted":{"type":"boolean","description":"Indicates whether API access is authorized for the user."},"password_permitted":{"type":"boolean","description":"Indicates whether user name and password login is authorized for the user."},"saml_permitted":{"type":"boolean","description":"Indicates whether SSO with SAML is authorized for the user."}},"required":["api_permitted","password_permitted","saml_permitted"]}}}},"responses":{"204":{"description":"Returned if the user's authorizations have been updated.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"400":{"description":"Returned if you specify invalid input parameters.","content":{"application/json":{"schema":{"type":"object","description":"Tenable.io API error response.","properties":{"error":{"type":"string","description":"The extended description of the cause of the Tenable.io API error."}}},"examples":{"response":{"value":{"error":"Unexpected character ('}' (code 125)): was expecting double-quote to start field name\n at [(String)\"{\r\n\"api_permitted\" : true,\r\n}\"; line: 3, column: 2]"}}}}}},"404":{"description":"Returned if Tenable.io cannot find the specified user.","content":{"application/json":{"schema":{"type":"object","description":"Tenable.io API error response.","properties":{"error":{"type":"string","description":"The extended description of the cause of the Tenable.io API error."}}},"examples":{"response":{"value":{"error":"User[UUID=b6a6900e-a616-4266-b2be-765de43348dd] not found."}}}}}},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/users/{user_id}/keys":{"put":{"summary":"Generate API keys","description":"Generates the API keys for a user.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-keys","tags":["Users"],"parameters":[{"description":"The unique ID of the user.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if Tenable.io successfully generated the API keys for the user.","content":{"application/json":{"schema":{"type":"object","properties":{"accessKey":{"type":"string","description":"The access key for the user account in Tenable.io. Use this key in combination with the user's secret key to submit authorized API requests to Tenable.io."},"secretKey":{"type":"string","description":"The secret key for the user account in Tenable.io. Use this key in combination with the user's access key to submit authorized API requests to Tenable.io."}}},"examples":{"response":{"value":{"accessKey":"26e07fb07181cf86e1bc7a240ce398645cf2bb80bbbefc178f100d6f5ffc067d","secretKey":"4be00decc6ea29e65d2910f1d54d23c14190a267285de4b05a481b1e6d3f0fd6"}}}}}},"403":{"description":"Returned if you do not have permission to generate API keys for the user."},"404":{"description":"Returned if Tenable.io cannot find the specified user."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io failed to generate the keys.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/users/{user_id}/impersonate":{"post":{"summary":"Impersonate user","description":"Allows the current administrator to impersonate the given user.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-impersonate","tags":["Users"],"parameters":[{"description":"The unique ID of the user you want to impersonate.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if the impersonation was successful.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"404":{"description":"Returned if Tenable.io cannot find the specified user."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/users/{user_id}/two-factor/send-verification":{"post":{"summary":"Send verification code","description":"Sends a one-time verification code to the user's phone number to start the process of enabling two-factor authentication.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-two-factor-enable","tags":["Users"],"parameters":[{"description":"The unique ID of the user.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sms_phone":{"type":"string","description":"The phone number where Tenable.io sends the one-time verification code."}},"required":["sms_phone"]}}}},"responses":{"200":{"description":"Returned if Tenable.io sent the one-time verification code successfully to the specified phone number.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"400":{"description":"Returned if Tenable.io cannot send the verification code."},"404":{"description":"Returned if Tenable.io cannot find the specified user."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/users/{user_id}/two-factor/verify-code":{"post":{"summary":"Validate verification code","description":"Validate the verification code sent to a phone number. If this request is successful, it enables two-factor authentication for the specified user.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-two-factor-enable-verify","tags":["Users"],"parameters":[{"description":"The unique ID of the user.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"verification_code":{"type":"string","description":"The verification code sent in the send-verification request."}},"required":["verification_code"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully validated the verification code and enabled two-factor authentication.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"400":{"description":"Returned if Tenable.io failed to validate the verification code because the verification code was empty, incorrect, or expired."},"404":{"description":"Returned if the user specified in the request does not exist."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/users/{user_id}/two-factor":{"put":{"summary":"Configure two-factor authentication ","description":"Enables or disables a user's two-factor authentication settings.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"users-two-factor","tags":["Users"],"parameters":[{"description":"The unique ID of the user.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email_enabled":{"type":"boolean","description":"Specifies whether backup notification for two-factor authentication is enabled. If enabled, Tenable.io sends the two-factor verification code via e-mail, as well as via the default SMS message."},"sms_enabled":{"type":"boolean","description":"Specifies whether two-factor authentication is enabled. If enabled, Tenable.io sends the verification code via an SMS message. This parameter must be enabled to enable two-factor verification for the user."},"sms_phone":{"type":"string","description":"The phone number to use for two-factor authentication. Must begin with the `+` sign. This field is required when sms\\_enabled is set to `true`.","example":"+155555555555"}},"required":["email_enabled","sms_enabled","sms_phone"]}}}},"responses":{"200":{"description":"Returned if the two-factor authentication settings update was successful.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"404":{"description":"Returned if the user that the request specified does not exist."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/groups":{"post":{"summary":"Create group","description":"Create a group.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"groups-create","tags":["Groups"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the group."}},"required":["name"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully creates the user group.","content":{"application/json":{"schema":{"type":"object","properties":{"permissions":{"type":"integer","description":"The permissions for the group."},"name":{"type":"string","description":"The name of the group."},"uuid":{"type":"string","description":"The UUID for the group."},"id":{"type":"integer","description":"The unique ID of the group."}}},"examples":{"response":{"value":{"uuid":"59ec5f27-8206-48e7-aa6c-d8ce18fd0f73","name":"Read Only","permissions":0,"container_uuid":"f4fbe518-e648-49dd-b6a4-e80c1ff12805","id":2}}}}}},"400":{"description":"Returned if your request message contains an invalid parameter."},"403":{"description":"Returned if you do not have permission to create a group."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to add the group.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"List groups","description":"Returns the group list.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"groups-list","tags":["Groups"],"responses":{"200":{"description":"Returns the groups list.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"user_count":{"type":"integer","description":"The number of users in the group."},"permissions":{"type":"integer","description":"The permissions for the group."},"name":{"type":"string","description":"The name of the group."},"uuid":{"type":"string","description":"The UUID for the group."},"id":{"type":"integer","description":"The unique ID of the group."}}}},"examples":{"response":{"value":{"groups":[{"uuid":"3a0fb06a-ed61-45e0-84d8-8e4e2da586ca","name":"admins","permissions":0,"container_uuid":"f4fbe518-e648-49dd-b6a4-e80c1ff12805","user_count":0,"id":1},{"uuid":"59ec5f27-8206-48e7-aa6c-d8ce18fd0f73","name":"Read Only","permissions":0,"container_uuid":"f4fbe518-e648-49dd-b6a4-e80c1ff12805","user_count":0,"id":2}]}}}}}},"403":{"description":"Returned if you do not have permission to view the list."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/groups/{group_id}":{"put":{"summary":"Update group","description":"Edit a group.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"groups-edit","tags":["Groups"],"parameters":[{"description":"The unique ID of the group.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the group."}},"required":["name"]}}}},"responses":{"200":{"description":"Returned if Tenable.io updates the user group.","content":{"application/json":{"schema":{"type":"object","properties":{"user_count":{"type":"integer","description":"The number of users in the group."},"permissions":{"type":"integer","description":"The permissions for the group."},"name":{"type":"string","description":"The name of the group."},"uuid":{"type":"string","description":"The UUID for the group."},"id":{"type":"integer","description":"The unique ID of the group."}}},"examples":{"response":{"value":{"uuid":"59ec5f27-8206-48e7-aa6c-d8ce18fd0f73","name":"Read Only Users","permissions":0,"container_uuid":"f4fbe518-e648-49dd-b6a4-e80c1ff12805","user_count":0,"id":2}}}}}},"400":{"description":"Returned if your request message contains an invalid parameter."},"403":{"description":"Returned if you do not have permission to edit a group."},"404":{"description":"Returned if Tenable.io cannot find the specified group."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to edit the group.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete group","description":"Delete a group.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"groups-delete","tags":["Groups"],"parameters":[{"description":"The unique ID of the group.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if Tenable.io successfully deletes the specified user group.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"400":{"description":"Returned if Tenable.io cannot find the specified user group."},"403":{"description":"Returned if you do not have permission to delete the group."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to delete the group.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/groups/{group_id}/users":{"get":{"summary":"List users in group","description":"Return the group user list.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"groups-list-users","tags":["Groups"],"parameters":[{"description":"The unique ID of the group.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns if the group user list.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the user."},"username":{"type":"string","description":"The username for the user."},"name":{"type":"string","description":"The name of the user (for example, first and last name)."},"email":{"type":"string","description":"The email address for the user."},"permissions":{"type":"integer","description":"The user permissions for the user as described in Permissions.","format":"int32"},"lastlogin":{"type":"integer","description":"The last time the user logged in to Tenable.io in the Unix time format."},"type":{"type":"string","description":"The type of user. The only supported type is `local`."},"login_fail_count":{"type":"integer","description":"The number of failed login attempts for the user since the last successful login."},"login_fail_total":{"type":"integer","description":"The total number of failed login attempts for the user."},"last_login_attempt":{"type":"integer","description":"The timestamp of the last failed login attempt for the user."},"enabled":{"type":"boolean","description":"Specifies whether the user account is enabled (true) or disabled (false)."},"lockout":{"type":"integer","description":"Specifies whether the user account is locked out (1) or available (0)."},"uuid_id":{"type":"string","description":"The unique UUID for the user."}}}},"examples":{"response":{"value":{"users":[{"id":1,"user_name":"nessus_ms_agent","username":"nessus_ms_agent","name":"system","type":"local","permissions":128,"last_login_attempt":0,"login_fail_count":0,"login_fail_total":0,"enabled":false,"uuid":"47e6b2ea-4e3c-4c09-b137-72e9f53b97f6","container_uuid":"f4fbe518-e648-49dd-b6a4-e80c1ff12805","uuid_id":"47e6b2ea-4e3c-4c09-b137-72e9f53b97f6"},{"id":20,"user_name":"user2@example.com","username":"user2@example.com","email":"user2@example.com","name":"Sample User","type":"local","permissions":64,"last_login_attempt":0,"login_fail_count":0,"login_fail_total":0,"enabled":false,"uuid":"001e849b-16ca-4233-b1fe-b785b534c7b0","container_uuid":"f4fbe518-e648-49dd-b6a4-e80c1ff12805","uuid_id":"001e849b-16ca-4233-b1fe-b785b534c7b0"},{"id":2,"user_name":"user3@example.com","username":"user3@example.com","email":"user3@example.com","name":"user3@example.com","type":"local","permissions":64,"last_login_attempt":0,"login_fail_count":0,"login_fail_total":0,"enabled":false,"uuid":"e6b5cd6d-1e03-4697-8f81-33277a85f175","container_uuid":"f4fbe518-e648-49dd-b6a4-e80c1ff12805","uuid_id":"e6b5cd6d-1e03-4697-8f81-33277a85f175"}]}}}}}},"403":{"description":"Returned if you do not have permission to list a group's users."},"404":{"description":"Returned if Tenable.io cannot find the specified group."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/groups/{group_id}/users/{user_id}":{"post":{"summary":"Add user to group","description":"Add a user to the group.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"groups-add-user","tags":["Groups"],"parameters":[{"description":"The unique ID of the group.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The unique ID of the user.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if Tenable.io successfully added the user to the group.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"403":{"description":"Returned if you do not have permission to add users to a group."},"404":{"description":"Returned if Tenable.io cannot find the specified group or user."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to add the user to the group.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete user from group","description":"Deletes a user from the group.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"groups-delete-user","tags":["Groups"],"parameters":[{"description":"The unique ID of the group.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The unique ID of the user.","required":true,"name":"user_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if Tenable.io removes the user from the group.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"403":{"description":"Returned if you do not have permission to delete users from the group."},"404":{"description":"Returned if Tenable.io cannot find the specified group or user."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to remove the user from the group.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/settings/connectors":{"post":{"summary":"Create connector","description":"Creates a connector.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"connectors-create-connector","tags":["Connectors"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the connector. The name can contain only alphanumeric characters and comma (`,`), dot (`.`), dash (`-`), at sign (`@`), and underscore (`_`) characters."},"type":{"type":"string","description":"The type of the connector. Types include: \n* aws \n* aws_keyless \n* azure\n* gcp","enum":["aws","aws_keyless","azure"]},"network_uuid":{"type":"string","description":"The UUID of the [network](https://developer.tenable.com/docs/manage-networks-tio) to associate with the connector. You can find the UUID using the [GET /networks](/reference#networks-list) endpoint. If you do not specify a network, Tenable.io automatically associates the connector with the default network (UUID `00000000-0000-0000-0000-000000000000`).\n**Note**: Tenable recommends creating a network for each connector type in use to prevent asset records in different cloud environments from overwriting each other. For more information, see [Managing Networks](https://developer.tenable.com/docs/manage-networks-tio).","format":"UUID","default":"00000000-0000-0000-0000-000000000000"},"params":{"type":"object","description":"The connector parameters: \n* For AWS connectors, the parameters include the access key, secret key, associated accounts, and cloudtrails. \n* For keyless AWS connectors, the parameters include associated AWS accounts (sub-accounts) and cloudtrails. \n* For Azure connectors, the parameters include the application ID, tenant ID, client secret key, and an optional list of subscription IDs. If you don't provide subscription IDs, Tenable.io automatically discovers them.\n* For GCP connectors, the service account key.","properties":{"access_key":{"description":"The AWS access key.\nNote: The access key is not included in the keyless AWS connector parameters.","type":"string"},"secret_key":{"description":"For AWS connectors, the AWS secret key.","type":"string"},"trails":{"description":"For AWS connectors, a list of AWS cloudtrails associated with the connector. The trails must be available to be used by the connector. Use the [POST /settings/connectors/aws/cloudtrails](/reference#connectors-get-aws-cloudtrails) endpoint to check the `availability` property of cloudtrail objects.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"sub_accounts":{"description":"For AWS connectors, a list of AWS accounts associated with the connector.","type":"array","items":{"type":"object","properties":{"role_arn":{"type":"string","description":"The Amazon Resource Name (ARN) of the role generated based on the associated account ID."},"external_id":{"description":"The UUID of your Tenable.io instance used by AWS to identify it as a client application. You can obtain the UUID of your Tenable.io account using the GET /session endpoint. The UUID corresponds to the container_uuid attribute of the response message for that endpoint.","type":"string"},"trails":{"description":"For keyless AWS connectors, a list of AWS cloudtrails associated with the account.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on events instead of enumerating all assets in the account every single time."}}}},"application_id":{"description":"For Azure connectors, Azure application ID.","type":"string"},"tenant_id":{"type":"string","description":"For Azure connectors, Azure tenant ID."},"subscription_id":{"type":"string","description":"For Azure connectors, Azure subscription ID. If you do not provide subscription IDs, Tenable.io automatically discovers them."},"service_account_key":{"type":"string","description":"For GCP connectors, Base64-encoded string value of the service account key JSON file. For more information, see [GCP documentation](https://cloud.google.com/iam/docs/creating-managing-service-account-keys).\n\n**Important!** The `service_account_key` value must include only the literal encoded string. Do not include the `data:application/json;base64` prefix."}}},"schedule":{"type":"object","description":"The data import schedule.","properties":{"units":{"type":"string","description":"The units of time for the import interval. Units can include:\n - days\n - hours\n - minutes\n - weeks"},"value":{"type":"integer","description":"The number of units between import intervals."}}}},"required":["name","type","params"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully creates a connector.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"The type of the connector. Types include:\n - aws\n - aws_keyless\n - azure\n - gcp"},"human_type":{"type":"string","description":"The human-readable connector type."},"data_type":{"type":"string","description":"The data type imported by the connector. For Azure and AWS connectors, the value is always `assets`."},"name":{"type":"string","description":"The name of the connector. The name must be unique within a Tenable.io instance."},"network_uuid":{"type":"string","format":"UUID","description":"The UUID of the [network](https://developer.tenable.com/docs/manage-networks-tio) associated with the connector."},"status":{"type":"string","description":"The import status of the connector. Status values can include:\n - Completed—Tenable.io successfully used the connector to import assets (no imports scheduled)\n - Scheduled—Imports using the connector are scheduled for future dates\n - Saved—Tenable.io saved the connector configuration, but did not import assets at this time (no imports scheduled)\n - Error—Tenable.io failed to import assets using the connector"},"status_message":{"type":"string","description":"Extended description of the connector status. For information about connector error codes, see Connectors."},"schedule":{"type":"object","properties":{}},"date_created":{"type":"string","description":"An ISO timestamp indicating the date and time on which the connector was created, for example, `2018-08-09T13:51:17.243Z`."},"date_modified":{"type":"string","description":"An ISO timestamp indicating the date and time on which the connector was last modified or new records were imported, for example, `2018-08-09T13:51:17.243Z`."},"id":{"type":"string","description":"The UUID of the connector."},"container_uuid":{"type":"string","description":"The UUID of the Tenable.io instance."},"expired":{"type":"boolean","description":"Indicates whether the Vulnerability Management license for the Tenable.io instance associated with the connector is expired."},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on on the service provider event stream instead of enumerating all assets in the account every single time."},"last_sync_time":{"type":"string","description":"An ISO timestamp indicating the date and time of the last successful import, for example, `2018-08-09T13:51:17.243Z`."},"params":{"type":"object","description":"The connector parameters: \n* For AWS connectors, the parameters include the access key, secret key, associated accounts, and cloudtrails. \n* For keyless AWS connectors, the parameters include associated AWS accounts (sub-accounts) and cloudtrails. \n* For Azure connectors, the parameters include the application ID, tenant ID, client secret key, and an optional list of subscription IDs. If you don't provide subscription IDs, Tenable.io automatically discovers them.","properties":{"access_key":{"description":"For AWS connectors, the AWS access key.\nNote: The access key is not included in the keyless AWS connector parameters.","type":"string"},"trails":{"description":"For AWS connectors, a list of AWS cloudtrails associated with the connector.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"sub_accounts":{"description":"For AWS connectors, a list of AWS accounts associated with the connector.","type":"array","items":{"type":"object","properties":{"role_arn":{"type":"string","description":"The Amazon Resource Name (ARN) of the role generated based on the associated account ID."},"external_id":{"description":"The UUID of your Tenable.io instance used by AWS to identify it as a client application. You can obtain the UUID of your Tenable.io account using the GET /session endpoint. The UUID corresponds to the container_uuid attribute of the response message for that endpoint.","type":"string"},"trails":{"description":"For keyless AWS connectors, a list of AWS cloudtrails associated with the account.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on events instead of enumerating all assets in the account every single time."}}}},"status":{"description":"For Azure connectors, a list of import status records.","type":"array","items":{"type":"object","properties":{"last_event_seen":{"type":"string","description":"An ISO timestamp indicating the last time the connector found new or changed records and successfully imported them."},"release_timestamp":{"description":"An ISO timestamp indicating the last time the connector successfully completed an import (regardless of whether it found any changes).","type":"string"},"message":{"type":"string","description":"The extended import status message."}}}},"application_id":{"description":"For Azure connectors, Azure application ID.","type":"string"},"tenant_id":{"type":"string","description":"For Azure connectors, Azure tenant ID."},"subscription_id":{"type":"string","description":"For Azure connectors, Azure subscription ID. If you do not provide subscription IDs, Tenable.io automatically discovers them."},"service":{"description":"The service targeted by the connector. Values include:\n* aws \n* aws_keyless \n* azure\n* gcp","type":"string"}}}}},"examples":{"response":{"value":{"connector":{"type":"aws","human_type":"AWS","data_type":"assets","name":"AWS Connector - New","status":"Scheduled","status_message":"","schedule":{"units":"days","value":1},"schedule_full":{"units":"days","value":1},"date_created":"2019-03-24T20:50:23.635Z","id":"f2506bed-bffa-442b-bfde-506c52306111","container_uuid":"gdf930d-7e3d-452c-82e8-494c1be98ef19","expired":false,"incremental_mode":false,"params":{"access_key":"AJIAJLRNVRLZRDZLVBXR","trails":[{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":""}],"service":"aws"},"network_uuid":"11f04eb9-7c78-46c8-9025-fae048390f59"}}}}}}},"400":{"description":"Returned if you specify invalid input parameters."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"List connectors","description":"Returns a list of connectors.

For information about connector error codes, see Connectors.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"connectors-list-connectors","tags":["Connectors"],"parameters":[{"description":"Maximum number of records requested (or service imposed limit if not in request). Must be in the int32 format. Default is 1000.","required":false,"name":"limit","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The number of records to skip in the returned result set. Must be in the int32 format. Default is 0.","required":false,"name":"offset","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The fields to sort on, for example, `sort=date_created:desc`. If you specify multiple fields, fields must be separated by commas. Sortable fields include: \n* date_created \n* name","required":false,"name":"sort","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns a list of connectors with pagination information.","content":{"application/json":{"schema":{"type":"object","properties":{"connectors":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of the connector. Types include:\n - aws\n - aws_keyless\n - azure\n - gcp"},"human_type":{"type":"string","description":"The human-readable connector type."},"data_type":{"type":"string","description":"The data type imported by the connector. For Azure and AWS connectors, the value is always `assets`."},"name":{"type":"string","description":"The name of the connector. The name must be unique within a Tenable.io instance."},"network_uuid":{"type":"string","format":"UUID","description":"The UUID of the [network](https://developer.tenable.com/docs/manage-networks-tio) associated with the connector."},"status":{"type":"string","description":"The import status of the connector. Status values can include:\n - Completed—Tenable.io successfully used the connector to import assets (no imports scheduled)\n - Scheduled—Imports using the connector are scheduled for future dates\n - Saved—Tenable.io saved the connector configuration, but did not import assets at this time (no imports scheduled)\n - Error—Tenable.io failed to import assets using the connector"},"status_message":{"type":"string","description":"Extended description of the connector status. For information about connector error codes, see Connectors."},"schedule":{"type":"object","properties":{}},"date_created":{"type":"string","description":"An ISO timestamp indicating the date and time on which the connector was created, for example, `2018-08-09T13:51:17.243Z`."},"date_modified":{"type":"string","description":"An ISO timestamp indicating the date and time on which the connector was last modified or new records were imported, for example, `2018-08-09T13:51:17.243Z`."},"id":{"type":"string","description":"The UUID of the connector."},"container_uuid":{"type":"string","description":"The UUID of the Tenable.io instance."},"expired":{"type":"boolean","description":"Indicates whether the Vulnerability Management license for the Tenable.io instance associated with the connector is expired."},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on on the service provider event stream instead of enumerating all assets in the account every single time."},"last_sync_time":{"type":"string","description":"An ISO timestamp indicating the date and time of the last successful import, for example, `2018-08-09T13:51:17.243Z`."},"params":{"type":"object","description":"The connector parameters: \n* For AWS connectors, the parameters include the access key, secret key, associated accounts, and cloudtrails. \n* For keyless AWS connectors, the parameters include associated AWS accounts (sub-accounts) and cloudtrails. \n* For Azure connectors, the parameters include the application ID, tenant ID, client secret key, and an optional list of subscription IDs. If you don't provide subscription IDs, Tenable.io automatically discovers them.","properties":{"access_key":{"description":"For AWS connectors, the AWS access key.\nNote: The access key is not included in the keyless AWS connector parameters.","type":"string"},"trails":{"description":"For AWS connectors, a list of AWS cloudtrails associated with the connector.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"sub_accounts":{"description":"For AWS connectors, a list of AWS accounts associated with the connector.","type":"array","items":{"type":"object","properties":{"role_arn":{"type":"string","description":"The Amazon Resource Name (ARN) of the role generated based on the associated account ID."},"external_id":{"description":"The UUID of your Tenable.io instance used by AWS to identify it as a client application. You can obtain the UUID of your Tenable.io account using the GET /session endpoint. The UUID corresponds to the container_uuid attribute of the response message for that endpoint.","type":"string"},"trails":{"description":"For keyless AWS connectors, a list of AWS cloudtrails associated with the account.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on events instead of enumerating all assets in the account every single time."}}}},"status":{"description":"For Azure connectors, a list of import status records.","type":"array","items":{"type":"object","properties":{"last_event_seen":{"type":"string","description":"An ISO timestamp indicating the last time the connector found new or changed records and successfully imported them."},"release_timestamp":{"description":"An ISO timestamp indicating the last time the connector successfully completed an import (regardless of whether it found any changes).","type":"string"},"message":{"type":"string","description":"The extended import status message."}}}},"application_id":{"description":"For Azure connectors, Azure application ID.","type":"string"},"tenant_id":{"type":"string","description":"For Azure connectors, Azure tenant ID."},"subscription_id":{"type":"string","description":"For Azure connectors, Azure subscription ID. If you do not provide subscription IDs, Tenable.io automatically discovers them."},"service":{"description":"The service targeted by the connector. Values include:\n* aws \n* aws_keyless \n* azure\n* gcp","type":"string"}}}}}},"pagination":{"type":"object","properties":{"total":{"type":"integer","description":"The total number of records matching your search criteria. Must be in the int32 format."},"limit":{"type":"integer","description":"Maximum number of records requested (or service imposed limit if not in request). Must be in the int32 format."},"offset":{"type":"integer","description":"The number of skipped records in the returned result set. Must be in the int32 format."},"sort":{"description":"An array of the fields you specified as sort fields in the request, which Tenable.io uses to sort the returned data.","type":"array","items":{"type":"string"}}}}}},"examples":{"response":{"value":{"connectors":[{"type":"aws","human_type":"AWS","data_type":"assets","name":"AWS Connector","status":"Saved","status_message":"","date_created":"2019-03-21T20:18:59.509Z","id":"e5cc1ab0-e64a-4636-8676-95d79a5a3c40","container_uuid":"gdf930d-7e3d-452c-82e8-494c1be98ef19","expired":false,"incremental_mode":false,"params":{"access_key":"AJIAJLRNVRLZRDZLVBXR","trails":[{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"}],"sub_accounts":[],"service":"aws"},"network_uuid":"11f04eb9-7c78-46c8-9025-fae048390f59"},{"type":"azure","human_type":"Azure","data_type":"assets","name":"Azure Connector","status":"Completed","status_message":"Import completed successfully","date_created":"2019-03-21T19:56:23.713Z","date_modified":"2019-03-21T20:09:01.241Z","id":"ec58a94d-31f5-42e7-b5be-2fef687c7fad","container_uuid":"gdf930d-7e3d-452c-82e8-494c1be98ef19","expired":false,"incremental_mode":false,"last_sync_time":"2019-03-21T20:09:01.241Z","params":{"status":{"c2fa7307-c53b-5ce0-a772-2ec880e85759":{"last_event_seen":"2019-03-21T20:08:59.190Z","release_timestamp":"2019-03-21T20:09:00.315Z","message":"Import completed successfully","state":"SUCCESS"},"a90ae1b5-20e2-4bf9-82b3-0082159365ea":{"last_event_seen":"2019-03-21T20:09:01.241Z","release_timestamp":"2019-03-21T20:09:01.504Z","message":"Import completed successfully","state":"SUCCESS"}},"application_id":"559829df-59ba-49e4-94a0-6e5af2b508di","tenant_id":"5a2b8079-0320-405f-ad21-17a3103014f7","subscription_id":[],"service":"azure"},"network_uuid":"00000000-0000-0000-0000-000000000000"},{"type":"aws_keyless","human_type":"AWS","data_type":"assets","name":"AWS Keyless Connector","status":"Saved","status_message":"","date_created":"2019-03-20T14:18:30.350Z","id":"cee93baa-ec30-4ccc-ab81-80719ba629ff","container_uuid":"gdf930d-7e3d-452c-82e8-494c1be98ef19","expired":false,"incremental_mode":false,"params":{"sub_accounts":[{"role_arn":"arn:aws:iam::795163652895:role/tenableio-connector","external_id":"gdf930d-7e3d-452c-82e8-494c1be98ef19","trails":[{"arn":"arn:aws:cloudtrail:us-east-1:795163652895:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"}],"incremental_mode":false,"account_id":"795163652895"}],"service":"aws"},"network_uuid":"13f04eb9-7c78-36c8-9025-fae048390f57"}],"pagination":{"total":3,"offset":0,"limit":50,"sort":[{"name":"date_created","order":"desc"}]}}}}}}},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"put":{"summary":"Update connector","description":"Updates the specified connector. You can change the connector name, associated service accounts, and schedule. You cannot change the connector type for an existing connector.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"connectors-update-connector","tags":["Connectors"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the connector."},"network_uuid":{"type":"string","description":"The UUID of the [network](https://developer.tenable.com/docs/manage-networks-tio) to associate with the connector. You can find the UUID using the [GET /networks](/reference#networks-list) endpoint. If you do not specify a network, Tenable.io automatically associates the connector with the default network (UUID `00000000-0000-0000-0000-000000000000`).\n**Note**: Tenable recommends creating a network for each connector type in use to prevent asset records in different cloud environments from overwriting each other. For more information, see [Managing Networks](https://developer.tenable.com/docs/manage-networks-tio).","format":"UUID","example":"00000000-0000-0000-0000-000000000000"},"params":{"type":"object","description":"The connector parameters: \n* For AWS connectors, the parameters include the access key, secret key, associated accounts, and cloudtrails. \n* For keyless AWS connectors, the parameters include associated AWS accounts (sub-accounts) and cloudtrails. \n* For Azure connectors, the parameters include the application ID, tenant ID, client secret key, and an optional list of subscription IDs. If you don't provide subscription IDs, Tenable.io automatically discovers them.\n* For GCP connectors, the service account key.","properties":{"access_key":{"description":"The AWS access key.\nNote: The access key is not included in the keyless AWS connector parameters.","type":"string"},"secret_key":{"description":"For AWS connectors, the AWS secret key.","type":"string"},"trails":{"description":"For AWS connectors, a list of AWS cloudtrails associated with the connector. The trails must be available to be used by the connector. Use the [POST /settings/connectors/aws/cloudtrails](/reference#connectors-get-aws-cloudtrails) endpoint to check the `availability` property of cloudtrail objects.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"sub_accounts":{"description":"For AWS connectors, a list of AWS accounts associated with the connector.","type":"array","items":{"type":"object","properties":{"role_arn":{"type":"string","description":"The Amazon Resource Name (ARN) of the role generated based on the associated account ID."},"external_id":{"description":"The UUID of your Tenable.io instance used by AWS to identify it as a client application. You can obtain the UUID of your Tenable.io account using the GET /session endpoint. The UUID corresponds to the container_uuid attribute of the response message for that endpoint.","type":"string"},"trails":{"description":"For keyless AWS connectors, a list of AWS cloudtrails associated with the account.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on events instead of enumerating all assets in the account every single time."}}}},"application_id":{"description":"For Azure connectors, Azure application ID.","type":"string"},"tenant_id":{"type":"string","description":"For Azure connectors, Azure tenant ID."},"subscription_id":{"type":"string","description":"For Azure connectors, Azure subscription ID. If you do not provide subscription IDs, Tenable.io automatically discovers them."},"service_account_key":{"type":"string","description":"For GCP connectors, Base64-encoded string value of the service account key JSON file. For more information, see [GCP documentation](https://cloud.google.com/iam/docs/creating-managing-service-account-keys).\n\n**Important!** The `service_account_key` value must include only the literal encoded string. Do not include the `data:application/json;base64` prefix."}}},"schedule":{"type":"object","description":"The data import schedule.","properties":{"units":{"type":"string","description":"The units of time for the import interval. Units can include:\n - days\n - hours\n - minutes\n - weeks"},"value":{"type":"integer","description":"The number of units between import intervals."}}}},"required":["name","params"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully updates a connector.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"The type of the connector. Types include:\n - aws\n - aws_keyless\n - azure\n - gcp"},"human_type":{"type":"string","description":"The human-readable connector type."},"data_type":{"type":"string","description":"The data type imported by the connector. For Azure and AWS connectors, the value is always `assets`."},"name":{"type":"string","description":"The name of the connector. The name must be unique within a Tenable.io instance."},"network_uuid":{"type":"string","format":"UUID","description":"The UUID of the [network](https://developer.tenable.com/docs/manage-networks-tio) associated with the connector."},"status":{"type":"string","description":"The import status of the connector. Status values can include:\n - Completed—Tenable.io successfully used the connector to import assets (no imports scheduled)\n - Scheduled—Imports using the connector are scheduled for future dates\n - Saved—Tenable.io saved the connector configuration, but did not import assets at this time (no imports scheduled)\n - Error—Tenable.io failed to import assets using the connector"},"status_message":{"type":"string","description":"Extended description of the connector status. For information about connector error codes, see Connectors."},"schedule":{"type":"object","properties":{}},"date_created":{"type":"string","description":"An ISO timestamp indicating the date and time on which the connector was created, for example, `2018-08-09T13:51:17.243Z`."},"date_modified":{"type":"string","description":"An ISO timestamp indicating the date and time on which the connector was last modified or new records were imported, for example, `2018-08-09T13:51:17.243Z`."},"id":{"type":"string","description":"The UUID of the connector."},"container_uuid":{"type":"string","description":"The UUID of the Tenable.io instance."},"expired":{"type":"boolean","description":"Indicates whether the Vulnerability Management license for the Tenable.io instance associated with the connector is expired."},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on on the service provider event stream instead of enumerating all assets in the account every single time."},"last_sync_time":{"type":"string","description":"An ISO timestamp indicating the date and time of the last successful import, for example, `2018-08-09T13:51:17.243Z`."},"params":{"type":"object","description":"The connector parameters: \n* For AWS connectors, the parameters include the access key, secret key, associated accounts, and cloudtrails. \n* For keyless AWS connectors, the parameters include associated AWS accounts (sub-accounts) and cloudtrails. \n* For Azure connectors, the parameters include the application ID, tenant ID, client secret key, and an optional list of subscription IDs. If you don't provide subscription IDs, Tenable.io automatically discovers them.","properties":{"access_key":{"description":"For AWS connectors, the AWS access key.\nNote: The access key is not included in the keyless AWS connector parameters.","type":"string"},"trails":{"description":"For AWS connectors, a list of AWS cloudtrails associated with the connector.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"sub_accounts":{"description":"For AWS connectors, a list of AWS accounts associated with the connector.","type":"array","items":{"type":"object","properties":{"role_arn":{"type":"string","description":"The Amazon Resource Name (ARN) of the role generated based on the associated account ID."},"external_id":{"description":"The UUID of your Tenable.io instance used by AWS to identify it as a client application. You can obtain the UUID of your Tenable.io account using the GET /session endpoint. The UUID corresponds to the container_uuid attribute of the response message for that endpoint.","type":"string"},"trails":{"description":"For keyless AWS connectors, a list of AWS cloudtrails associated with the account.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on events instead of enumerating all assets in the account every single time."}}}},"status":{"description":"For Azure connectors, a list of import status records.","type":"array","items":{"type":"object","properties":{"last_event_seen":{"type":"string","description":"An ISO timestamp indicating the last time the connector found new or changed records and successfully imported them."},"release_timestamp":{"description":"An ISO timestamp indicating the last time the connector successfully completed an import (regardless of whether it found any changes).","type":"string"},"message":{"type":"string","description":"The extended import status message."}}}},"application_id":{"description":"For Azure connectors, Azure application ID.","type":"string"},"tenant_id":{"type":"string","description":"For Azure connectors, Azure tenant ID."},"subscription_id":{"type":"string","description":"For Azure connectors, Azure subscription ID. If you do not provide subscription IDs, Tenable.io automatically discovers them."},"service":{"description":"The service targeted by the connector. Values include:\n* aws \n* aws_keyless \n* azure\n* gcp","type":"string"}}}}},"examples":{"response":{"value":{"connector":{"type":"azure","human_type":"Azure","data_type":"assets","name":"Azure Connector - Updated","status":"Scheduled","status_message":"","schedule":{"units":"days","value":1},"schedule_full":{"units":"days","value":1},"date_created":"2019-03-24T23:21:42.898Z","id":"bc312ad1-6039-406b-b0a9-c0e311b05dc1","container_uuid":"gdf930d-7e3d-452c-82e8-494c1be98ef19","expired":false,"incremental_mode":false,"params":{"application_id":"559829df-59ba-49e4-94a0-6e5af2b508di","tenant_id":"5a2b8079-0320-405f-ad21-17a3103014f7","subscription_id":["a90ae1b5-20e2-4bf9-82b3-0082159365ea","c2fa7307-c53b-5ce0-a772-2ec880e85759"],"service":"azure"},"network_uuid":"13f04eb9-7c78-36c8-9025-fae048390f57"}}}}}}},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/settings/connectors{connector_id}":{"get":{"summary":"Get connector details","description":"Returns the details for the specified connector.

For information about connector error codes, see Connectors.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"connectors-connector-details","tags":["Connectors"],"parameters":[{"description":"The UUID of the connector to return details for.","required":true,"name":"connector_id","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the connector details.","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"The type of the connector. Types include:\n - aws\n - aws_keyless\n - azure\n - gcp"},"human_type":{"type":"string","description":"The human-readable connector type."},"data_type":{"type":"string","description":"The data type imported by the connector. For Azure and AWS connectors, the value is always `assets`."},"name":{"type":"string","description":"The name of the connector. The name must be unique within a Tenable.io instance."},"network_uuid":{"type":"string","format":"UUID","description":"The UUID of the [network](https://developer.tenable.com/docs/manage-networks-tio) associated with the connector."},"status":{"type":"string","description":"The import status of the connector. Status values can include:\n - Completed—Tenable.io successfully used the connector to import assets (no imports scheduled)\n - Scheduled—Imports using the connector are scheduled for future dates\n - Saved—Tenable.io saved the connector configuration, but did not import assets at this time (no imports scheduled)\n - Error—Tenable.io failed to import assets using the connector"},"status_message":{"type":"string","description":"Extended description of the connector status. For information about connector error codes, see Connectors."},"schedule":{"type":"object","properties":{}},"date_created":{"type":"string","description":"An ISO timestamp indicating the date and time on which the connector was created, for example, `2018-08-09T13:51:17.243Z`."},"date_modified":{"type":"string","description":"An ISO timestamp indicating the date and time on which the connector was last modified or new records were imported, for example, `2018-08-09T13:51:17.243Z`."},"id":{"type":"string","description":"The UUID of the connector."},"container_uuid":{"type":"string","description":"The UUID of the Tenable.io instance."},"expired":{"type":"boolean","description":"Indicates whether the Vulnerability Management license for the Tenable.io instance associated with the connector is expired."},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on on the service provider event stream instead of enumerating all assets in the account every single time."},"last_sync_time":{"type":"string","description":"An ISO timestamp indicating the date and time of the last successful import, for example, `2018-08-09T13:51:17.243Z`."},"params":{"type":"object","description":"The connector parameters: \n* For AWS connectors, the parameters include the access key, secret key, associated accounts, and cloudtrails. \n* For keyless AWS connectors, the parameters include associated AWS accounts (sub-accounts) and cloudtrails. \n* For Azure connectors, the parameters include the application ID, tenant ID, client secret key, and an optional list of subscription IDs. If you don't provide subscription IDs, Tenable.io automatically discovers them.","properties":{"access_key":{"description":"For AWS connectors, the AWS access key.\nNote: The access key is not included in the keyless AWS connector parameters.","type":"string"},"trails":{"description":"For AWS connectors, a list of AWS cloudtrails associated with the connector.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"sub_accounts":{"description":"For AWS connectors, a list of AWS accounts associated with the connector.","type":"array","items":{"type":"object","properties":{"role_arn":{"type":"string","description":"The Amazon Resource Name (ARN) of the role generated based on the associated account ID."},"external_id":{"description":"The UUID of your Tenable.io instance used by AWS to identify it as a client application. You can obtain the UUID of your Tenable.io account using the GET /session endpoint. The UUID corresponds to the container_uuid attribute of the response message for that endpoint.","type":"string"},"trails":{"description":"For keyless AWS connectors, a list of AWS cloudtrails associated with the account.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on events instead of enumerating all assets in the account every single time."}}}},"status":{"description":"For Azure connectors, a list of import status records.","type":"array","items":{"type":"object","properties":{"last_event_seen":{"type":"string","description":"An ISO timestamp indicating the last time the connector found new or changed records and successfully imported them."},"release_timestamp":{"description":"An ISO timestamp indicating the last time the connector successfully completed an import (regardless of whether it found any changes).","type":"string"},"message":{"type":"string","description":"The extended import status message."}}}},"application_id":{"description":"For Azure connectors, Azure application ID.","type":"string"},"tenant_id":{"type":"string","description":"For Azure connectors, Azure tenant ID."},"subscription_id":{"type":"string","description":"For Azure connectors, Azure subscription ID. If you do not provide subscription IDs, Tenable.io automatically discovers them."},"service":{"description":"The service targeted by the connector. Values include:\n* aws \n* aws_keyless \n* azure\n* gcp","type":"string"}}}}},"examples":{"response":{"value":{"connector":{"type":"aws","human_type":"AWS","data_type":"assets","name":"AWS Keyless Connector","status":"Scheduled","status_message":"","schedule":{"units":"days","value":1},"schedule_full":{"units":"days","value":1},"date_created":"2019-03-24T20:50:23.635Z","id":"f2506bed-bffa-442b-bfde-506c52306111","container_uuid":"gdf930d-7e3d-452c-82e8-494c1be98ef19","expired":false,"incremental_mode":false,"params":{"access_key":"AJIAJLRNVRLZRDZLVBXR","trails":[{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":""}],"service":"aws"},"network_uuid":"13f04eb9-7c78-36c8-9025-fae048390f57"}}}}}}},"404":{"description":"Returned if Tenable.io cannot not find the specified connector."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete connector","description":"Deletes the specified connector.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"connectors-delete-connector","tags":["Connectors"],"parameters":[{"description":"The UUID of the connector to delete.","required":true,"name":"connector_id","in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":"Returned if Tenable.io successfully deleted the specified connector.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"404":{"description":"Returned if Tenable.io cannot find the specified connector."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/settings/connectors/aws/cloudtrails":{"post":{"summary":"List AWS cloudtrails","description":"Returns a list of available AWS cloudtrails. You can then use the cloudtrails to [create an AWS connector](#connectors-create-connector).

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"connectors-get-aws-cloudtrails","tags":["Connectors"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"type":"array","description":"A complete list of available AWS regions as shown in the following example.","items":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}}},"credentials":{"type":"object","description":"For AWS connectors, the credentials object, including access key and secret key.","properties":{"access_key":{"type":"string","description":"The AWS access key."},"secret_key":{"type":"string","description":"The AWS secret key."}}},"account_id":{"type":"string","description":"For keyless AWS connectors, the AWS account ID."}},"required":["regions"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully retrieves the list of cloudtrails.","content":{"application/json":{"schema":{"type":"object","properties":{"trails":{"type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}}}},"examples":{"response":{"value":{"trails":[{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/TenableAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"},{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":"success"}]}}}}}},"400":{"description":"Returned if you specify invalid input parameters."},"403":{"description":"Returned if you specify invalid AWS credentials or account ID."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/settings/connectors/{connector_id}/import":{"post":{"summary":"Import data","description":"Imports data using a connector. This creates an asynchronous import job in Tenable.io. You can check the import status by examining the `status_message` property in [connector details](#connectors-connector-details).

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"connectors-import-assets-connector","tags":["Connectors"],"parameters":[{"description":"The UUID of the connector for which to import the data.","required":true,"name":"connector_id","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returned if Tenable.io successfully schedules the connector for import.","content":{"application/json":{"schema":{"type":"object","properties":{"connector":{"type":"object","properties":{"type":{"type":"string","description":"The type of the connector. Types include:\n - aws\n - aws_keyless\n - azure\n - gcp"},"human_type":{"type":"string","description":"The human-readable connector type."},"data_type":{"type":"string","description":"The data type imported by the connector. For Azure and AWS connectors, the value is always `assets`."},"name":{"type":"string","description":"The name of the connector. The name must be unique within a Tenable.io instance."},"network_uuid":{"type":"string","format":"UUID","description":"The UUID of the [network](https://developer.tenable.com/docs/manage-networks-tio) associated with the connector."},"status":{"type":"string","description":"The import status of the connector. Status values can include:\n - Completed—Tenable.io successfully used the connector to import assets (no imports scheduled)\n - Scheduled—Imports using the connector are scheduled for future dates\n - Saved—Tenable.io saved the connector configuration, but did not import assets at this time (no imports scheduled)\n - Error—Tenable.io failed to import assets using the connector"},"status_message":{"type":"string","description":"Extended description of the connector status. For information about connector error codes, see Connectors."},"schedule":{"type":"object","properties":{}},"date_created":{"type":"string","description":"An ISO timestamp indicating the date and time on which the connector was created, for example, `2018-08-09T13:51:17.243Z`."},"date_modified":{"type":"string","description":"An ISO timestamp indicating the date and time on which the connector was last modified or new records were imported, for example, `2018-08-09T13:51:17.243Z`."},"id":{"type":"string","description":"The UUID of the connector."},"container_uuid":{"type":"string","description":"The UUID of the Tenable.io instance."},"expired":{"type":"boolean","description":"Indicates whether the Vulnerability Management license for the Tenable.io instance associated with the connector is expired."},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on on the service provider event stream instead of enumerating all assets in the account every single time."},"last_sync_time":{"type":"string","description":"An ISO timestamp indicating the date and time of the last successful import, for example, `2018-08-09T13:51:17.243Z`."},"params":{"type":"object","description":"The connector parameters: \n* For AWS connectors, the parameters include the access key, secret key, associated accounts, and cloudtrails. \n* For keyless AWS connectors, the parameters include associated AWS accounts (sub-accounts) and cloudtrails. \n* For Azure connectors, the parameters include the application ID, tenant ID, client secret key, and an optional list of subscription IDs. If you don't provide subscription IDs, Tenable.io automatically discovers them.","properties":{"access_key":{"description":"For AWS connectors, the AWS access key.\nNote: The access key is not included in the keyless AWS connector parameters.","type":"string"},"trails":{"description":"For AWS connectors, a list of AWS cloudtrails associated with the connector.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"sub_accounts":{"description":"For AWS connectors, a list of AWS accounts associated with the connector.","type":"array","items":{"type":"object","properties":{"role_arn":{"type":"string","description":"The Amazon Resource Name (ARN) of the role generated based on the associated account ID."},"external_id":{"description":"The UUID of your Tenable.io instance used by AWS to identify it as a client application. You can obtain the UUID of your Tenable.io account using the GET /session endpoint. The UUID corresponds to the container_uuid attribute of the response message for that endpoint.","type":"string"},"trails":{"description":"For keyless AWS connectors, a list of AWS cloudtrails associated with the account.","type":"array","items":{"type":"object","properties":{"arn":{"type":"string","description":"Amazon Resource Name (ARN) of the cloudtrail."},"name":{"type":"string","description":"The name of the cloudtrail."},"region":{"type":"object","properties":{"name":{"type":"string","description":"The AWS region code, for example, `us-east-1`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions."},"friendly_name":{"description":"The AWS region name, for example, `US East (N. Virginia)`. The value of `All` indicates that the cloudtrail is associated with all AWS available regions.","type":"string"}}},"availability":{"description":"Indicates whether a cloudtrail is available to be used by a connector (logging is turned on in AWS, or it has at least one EventSelector with IncludeManagementEvents). Values include:\n - `success`—The cloudtrail is available.\n - `error`—The cloudtrail is not available.","type":"string","enum":["success","error"]}}}},"incremental_mode":{"type":"boolean","description":"Indicates whether a connector has completed the initial full import successfully. If the value is `true`, then the connector is in incremental mode where it imports assets based on events instead of enumerating all assets in the account every single time."}}}},"status":{"description":"For Azure connectors, a list of import status records.","type":"array","items":{"type":"object","properties":{"last_event_seen":{"type":"string","description":"An ISO timestamp indicating the last time the connector found new or changed records and successfully imported them."},"release_timestamp":{"description":"An ISO timestamp indicating the last time the connector successfully completed an import (regardless of whether it found any changes).","type":"string"},"message":{"type":"string","description":"The extended import status message."}}}},"application_id":{"description":"For Azure connectors, Azure application ID.","type":"string"},"tenant_id":{"type":"string","description":"For Azure connectors, Azure tenant ID."},"subscription_id":{"type":"string","description":"For Azure connectors, Azure subscription ID. If you do not provide subscription IDs, Tenable.io automatically discovers them."},"service":{"description":"The service targeted by the connector. Values include:\n* aws \n* aws_keyless \n* azure\n* gcp","type":"string"}}}}}}},"examples":{"response":{"value":{"connector":{"type":"aws","human_type":"AWS","data_type":"assets","name":"AWS Connector","status":"Scheduled","status_message":"Import completed successfully","date_created":"2019-03-25T17:21:19.495Z","date_modified":"2019-03-25T17:21:28.457Z","id":"8d70056d-eee5-4ef5-a5b2-0acc0262c59d","container_uuid":"gdf930d-7e3d-452c-82e8-494c1be98ef19","expired":false,"incremental_mode":false,"last_sync_time":"2019-03-25T17:21:28.457Z","params":{"access_key":"AJIAJLRNVRLZRDZLVBXR","trails":[{"arn":"arn:aws:cloudtrail:us-east-1:069647819620:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"All","friendly_name":"All"},"availability":""}],"sub_accounts":[{"role_arn":"arn:aws:iam::795163652895:role/tenableio-connector","external_id":"gdf930d-7e3d-452c-82e8-494c1be98ef19","trails":[{"arn":"arn:aws:cloudtrail:us-east-1:795163652895:trail/ExampleAWSTrail","name":"ExampleAWSTrail","region":{"name":"us-west-1","friendly_name":"us-west-1"},"availability":""}],"incremental_mode":false,"account_id":"795163652895"}],"service":"aws"},"network_uuid":"13f04eb9-7c78-36c8-9025-fae048390f57"}}}}}}},"404":{"description":"Returned if Tenable.io cannot find the connector you specified."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}}},"x-explorer-enabled":true,"x-proxy-enabled":true,"x-samples-enabled":true} \ No newline at end of file diff --git a/app_gen/openapi-parsers/other/TIO-API-Vulnerability-Management.json b/app_gen/openapi-parsers/other/TIO-API-Vulnerability-Management.json new file mode 100644 index 00000000..b36e2970 --- /dev/null +++ b/app_gen/openapi-parsers/other/TIO-API-Vulnerability-Management.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"title":"Vulnerability Management","version":"1.0.0"},"security":[{"cloud":[]}],"servers":[{"url":"https://cloud.tenable.com"}],"components":{"securitySchemes":{"cloud":{"type":"apiKey","in":"header","name":"X-ApiKeys","description":"Format - accessKey=ACCESS_KEY;secretKey=SECRET_KEY"}}},"x-samples-languages":["python","curl","node","powershell","ruby","javascript","objectivec","java","php","csharp","go","swift","kotlin"],"paths":{"/access-groups":{"post":{"summary":"Create access group","description":"Creates an access group.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"access-groups-create","tags":["Access Groups"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"The name of the access group you want to create. This name must be: \n* Unique within your Tenable.io instance. \n* A maximum of 255 characters. \n* Alphanumeric, but can include limited special characters (underscore, dash, parenthesis, brackets, colon). \n \n**Note:** You can add a maximum of 5,000 access groups to an individual container.","type":"string"},"all_assets":{"description":"This parameter must always be `false` or omitted from create requests to specify that the access group is a user-created group. If you submit a create request with this parameter set to `true`, the create request fails.","type":"boolean"},"all_users":{"description":"Specifies whether assets in the access group can be viewed by all or only some users in your organization: \n* If `true`, all users in your organization have Can View access to the assets defined in the rules parameter. Tenable.io ignores any principal parameters in your request. \n* If `false`, only specified users have Can View access to the assets defined in the rules parameter. You define which users or user groups have access in the principals parameter of the request. \n \nIf you omit this parameter, Tenable.io sets the parameter to `false` by default.","type":"boolean"},"rules":{"items":{"type":"object","properties":{"type":{"type":"string","description":"The type of asset rule. The asset rule type corresponds to the type of data you can specifiy in the terms parameter. For a complete list of supported rule types, use the GET /access-groups/filters endpoint."},"operator":{"type":"string","description":"The operator that specifies how Tenable.io matches the terms value to asset data. \n\nPossible operators include: \n - eq—Tenable.io matches the rule to assets based on an exact match of the specified term. Note: Tenable.io interprets the operator as `equals` for ipv4 rules that specify a single IP address, but interprets the operator as `contains` for ipv4 rules that specify an IP range or CIDR range.\n - match—Tenable.io matches the rule to assets based a partial match of the specified term.\n - starts—Tenable.io matches the rule to assets that start with the specified term.\n - ends—Tenable.io matches the rule to assets that end with the specified term.\n\nFor a complete list of operators by rule type, use the GET /access-groups/rules/filters endpoint."},"terms":{"description":"The values that Tenable.io uses to match an asset to the rule. A term must correspond to the rule type.\n\nFor example:\n - If the rule type is `aws_account`, the term is an AWS account ID.\n - If the rule type is `fqdn`, the term is a hostname or a fully-qualified domain name (FQDN).\n - If the rule type is `ipv4`, the term is an individual IPv4 address, a range of IPv4 addresses (for example, 172.204.81.57-172.204.81.60), or a CIDR range (for example, 172.204.81.57/24). \n\nFor a complete list of supported values by rule type, use the GET /access-groups/rules/filters endpoint. \n\nIf you specify multiple terms values, Tenable.io includes an asset in the access group if the asset's attributes match any of the terms in the rule.\n
You can specify up to 100,000 terms per asset rule.","type":"array","items":{"type":"string"}}}},"description":"An array of asset rules. Tenable.io uses these rules to assign assets to the access group. You can specify a maximum of 1,000 rules for an individual access group. If you specify multiple rules for an access group, Tenable.io assigns an asset to the access group if the asset matches any of the rules. You can only add rules to access groups if the all\\_assets parameter is set to `false`.","type":"array"},"principals":{"items":{"type":"object","properties":{"type":{"type":"string","description":"(Required) The type of principal. Valid values include:\n - user—Grants access to the user you specify.\n - group—Grants access to all users assigned to the user group you specify."},"principal_id":{"type":"string","description":"The UUID of a user or user group. This parameter is required if the request omits the `principal_name` parameter."},"principal_name":{"type":"string","description":"The name of the user or user group. This parameter is required if the request omits the `principal_id` parameter. If a request includes both `principal_id` and `principal_name`, Tenable.io assigns the user or user group to the access group based on the `principal_id` parameter, and ignores the `principal_name` parameter in the request. "}}},"description":"An array of principals. Each principal represents a user or user group assigned to the access group. You cannot add an access group as a principal to another access group. \n \nTenable.io handles data in this array based on the all\\_users parameter of the request: \n* If all\\_users is `true`, Tenable.io ignores any principal data in the request. You can omit this parameter from the request. \n* If all\\_users is `false`, Tenable.io adds the principal data to the access group.","type":"array"}},"required":["name","rules"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully creates an access group.","content":{"application/json":{"schema":{"type":"object","properties":{"container_uuid":{"type":"string","description":"The UUID of your Tenable.io instance."},"created_at":{"type":"string","description":"An ISO timestamp indicating the date and time on which the access group was created."},"updated_at":{"type":"string","description":"An ISO timestamp indicating the time and date on which the access group was last modified."},"id":{"type":"string","description":"The UUID of the access group."},"name":{"type":"string","description":"The name of the access group. This name must be: \n* Unique within your Tenable.io instance. \n* A maximum of 255 characters. \n* Alphanumeric, but can include limited special characters (underscore, dash, parenthesis, brackets, colon)."},"all_assets":{"type":"boolean","description":"Specifies whether the access group is the system-provided All Assets access group: \n - If `true`, the access group is the All Assets access group. The only change you can make to this access group is to refine user membership in the group. For more information, see descriptions of the all_users and principals parameters for the PUT /access-groups/{id} endpoint.\n - If `false`, the access group is a user-defined access group, and you can change all parameters for the group. This parameter is `false` for all access groups you create."},"all_users":{"type":"boolean","description":"Specifies whether assets in the access group can be viewed by all or only some users in your organization:\n - If `true`, all users in your organization have Can View access to the assets defined in the rules parameter. If `true` in a POST /access-groups or PUT /access-groups/{id} request, Tenable.io ignores any principal parameters in the request. \n - If `false`, only specified users have Can View access to the assets defined in the rules parameter. You define which users or user groups have access in the principals parameter of a POST /access-groups or PUT /access-groups/{id} request. \n\n**Note:** If a PUT /access-groups/{id} endpoint request sets this parameter to `true` for an access group where the parameter was previously set to `false`, Tenable.io removes all principal data previously associated with the access group."},"status":{"type":"string","description":"The status of the process evaluating and assigning assets to the access group. Possible values are: \n - PROCESSING—Tenable.io is currently evaluating assets against the asset rules for the access group. For an indication of evaluation progress, see the `processing_percent_complete` attribute for the access group.\n - COMPLETED—Tenable.io has successfully completed its evaluation of assets against the asset rules for the group.\n - ERROR—Tenable.io encountered an error while evaluating assets against asset rules for the access group. Rule validation typically prevents this status from occurring. However, if you encounter an ERROR status, Tenable recommends that you delete the existing asset rules, then recreate the rules after a short time has elapsed."},"created_by_uuid":{"type":"string","description":"The UUID of the user who created the access group."},"created_by_name":{"type":"string","description":"The name of the user who created the access group."},"updated_by_uuid":{"type":"string","description":"The UUID of the user who last modified the access group."},"updated_by_name":{"type":"string","description":"The name of the user who last modified the access group."},"processing_percent_complete":{"type":"integer","description":"The percentage of assets that Tenable.io has evaluated against the asset rules for the access group."}}},"examples":{"response":{"value":{"container_uuid":"8f9d0b84-ede2-4954-a0c9-0bde292ac38e","created_at":"2018-08-15T18:17:04.827Z","updated_at":"2018-08-15T18:17:04.827Z","id":"385f4765-cd32-4191-b6ae-d0d4522e073f","name":"Headquarters","all_assets":false,"all_users":false,"status":"COMPLETED","rules":[{"type":"aws_account","operator":"eq","terms":["123456789012"]},{"type":"fqdn","operator":"eq","terms":["www.example.com"]},{"type":"ipv4","operator":"eq","terms":["172.204.81.57"]}],"principals":[{"type":"user","principal_id":"085abc65-d709-44b2-ad04-bfd2862ad5a1","principal_name":"user1@example.com"},{"type":"user","principal_id":"b1219ca2-2578-49ac-88db-8a35dd02cc7d","principal_name":"user2@example.com"}],"created_by_uuid":"b1219ca2-2578-49ac-88db-8a35dd02cc7d","updated_by_uuid":"b1219ca2-2578-49ac-88db-8a35dd02cc7d","updated_by_name":"user3@example.com","created_by_name":"user3@example.com","processing_percent_complete":100}}}}}},"400":{"description":"Returned if Tenable.io encountered any of the following error conditions:\n - max_entries—your request exceeds the maximum number of 5,000 access groups.\n - duplicate—an access group with the name you specified already exists.\n - protected—you attempted to set the all_assets parameter to `true`, and you cannot create the system-provided access group, All Assets."},"403":{"description":"Returned if you do not have permission to create access groups."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"List access groups","description":"Lists access groups without associated rules.

Requires BASIC [16] user permissions to list access groups to which you are assigned. Requires ADMINISTRATOR [64] permissions to list all access groups for your organization. See Permissions.

","operationId":"access-groups-list","tags":["Access Groups"],"parameters":[{"description":"A filter condition in the following format: `field:operator:value`. For a list of possible fields and operators, use the GET /access-groups/filters endpoint. You can specify multiple `f` parameters, separated by ampersand (&) characters. If you specify multiple `f` parameters, use the `ft` parameter to specify how Tenable.io applies the multiple filter conditions.","name":"f","in":"query","schema":{"type":"string"}},{"description":"If multiple \\`f\\` parameters are present, specifies whether Tenable.io applies \\`AND\\` or \\`OR\\` to conditions. Supported values are `and` and `or`. If you omit this parameter when using multiple `f` parameters, Tenable.io applies `AND` by default.","name":"ft","in":"query","schema":{"type":"string"}},{"description":"The search value that Tenable.io applies across the wildcard fields. Wildcard fields are specified in the `wf` parameter.","name":"w","in":"query","schema":{"type":"string"}},{"description":"A comma-separated list of fields where Tenable.io applies the search value specified in the `w` parameter. For a list of supported wildcard fields, use the GET /access-groups/filters endpoint.","name":"wf","in":"query","schema":{"type":"string"}},{"description":"Maximum number of records requested (or service imposed limit if not in request).","name":"limit","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"Offset from request (or zero).","name":"offset","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The field or fields on which Tenable.io sorts the results. If you specify multiple fields, fields must be separated by commas. For a list of supported sort fields, use the GET /access-groups/filters endpoint.","name":"sort","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns a list of access groups that you have permission to view.","content":{"application/json":{"schema":{"type":"object","properties":{"access_groups":{"type":"object","properties":{"container_uuid":{"type":"string","description":"The UUID of your Tenable.io instance."},"created_at":{"type":"string","description":"An ISO timestamp indicating the date and time on which the access group was created."},"updated_at":{"type":"string","description":"An ISO timestamp indicating the time and date on which the access group was last modified."},"id":{"type":"string","description":"The UUID of the access group."},"name":{"type":"string","description":"The name of the access group. This name must be: \n* Unique within your Tenable.io instance. \n* A maximum of 255 characters. \n* Alphanumeric, but can include limited special characters (underscore, dash, parenthesis, brackets, colon)."},"all_assets":{"type":"boolean","description":"Specifies whether the access group is the system-provided All Assets access group: \n - If `true`, the access group is the All Assets access group. The only change you can make to this access group is to refine user membership in the group. For more information, see descriptions of the all_users and principals parameters for the PUT /access-groups/{id} endpoint.\n - If `false`, the access group is a user-defined access group, and you can change all parameters for the group. This parameter is `false` for all access groups you create."},"all_users":{"type":"boolean","description":"Specifies whether assets in the access group can be viewed by all or only some users in your organization:\n - If `true`, all users in your organization have Can View access to the assets defined in the rules parameter. If `true` in a POST /access-groups or PUT /access-groups/{id} request, Tenable.io ignores any principal parameters in the request. \n - If `false`, only specified users have Can View access to the assets defined in the rules parameter. You define which users or user groups have access in the principals parameter of a POST /access-groups or PUT /access-groups/{id} request. \n\n**Note:** If a PUT /access-groups/{id} endpoint request sets this parameter to `true` for an access group where the parameter was previously set to `false`, Tenable.io removes all principal data previously associated with the access group."},"status":{"type":"string","description":"The status of the process evaluating and assigning assets to the access group. Possible values are: \n - PROCESSING—Tenable.io is currently evaluating assets against the asset rules for the access group. For an indication of evaluation progress, see the `processing_percent_complete` attribute for the access group.\n - COMPLETED—Tenable.io has successfully completed its evaluation of assets against the asset rules for the group.\n - ERROR—Tenable.io encountered an error while evaluating assets against asset rules for the access group. Rule validation typically prevents this status from occurring. However, if you encounter an ERROR status, Tenable recommends that you delete the existing asset rules, then recreate the rules after a short time has elapsed."},"created_by_uuid":{"type":"string","description":"The UUID of the user who created the access group."},"created_by_name":{"type":"string","description":"The name of the user who created the access group."},"updated_by_uuid":{"type":"string","description":"The UUID of the user who last modified the access group."},"updated_by_name":{"type":"string","description":"The name of the user who last modified the access group."},"processing_percent_complete":{"type":"integer","description":"The percentage of assets that Tenable.io has evaluated against the asset rules for the access group."}}},"pagination":{"type":"object","properties":{"total":{"type":"integer","description":"The total number of records matching your search criteria.","format":"int32"},"limit":{"type":"integer","description":"Maximum number of records requested (or service imposed limit if not in request).","format":"int32"},"offset":{"type":"integer","description":"Offset from request (or zero).","format":"int32"},"sort":{"description":"The fields you specified as sort fields in the request, which Tenable.io uses to sort the returned data.","type":"array","items":{"type":"object","properties":{"name":{"description":"The name of the field on which Tenable.io sorted the results.","type":"string"},"order":{"description":"The order in which Tenable.io sorted the results. Possible values are ascending (`asc`) or descending (`desc`).","type":"string"}}}}}}}},"examples":{"response":{"value":{"access_groups":[{"container_uuid":"8f9d0b84-ede2-4954-a0c9-0bde292ac38e","created_at":"2018-08-09T21:26:00.397Z","updated_at":"2018-08-09T21:26:00.397Z","id":"529d57cf-bbc6-435f-9b57-896bb40bba8c","name":"Atlanta Office","all_assets":false,"all_users":false,"status":"COMLETED","created_by_uuid":"b1219ca2-2578-49ac-88db-8a35dd02cc7d","updated_by_uuid":"b1219ca2-2578-49ac-88db-8a35dd02cc7d","updated_by_name":"user@example.com","created_by_name":"user@example.com","processing_percent_complete":100}],"pagination":{"offset":0,"limit":2,"total":7,"sort":[{"name":"allAssets","order":"desc"},{"name":"updatedAt","order":"asc"}]}}}}}}},"403":{"description":"Returned if you do not have permission to view access groups."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/access-groups/{id}":{"put":{"summary":"Update access group","description":"Modifies an access group. This method overwrites the existing data.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"access-groups-edit","tags":["Access Groups"],"parameters":[{"description":"The UUID for the access group you want to modify.","required":true,"name":"id","in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"The name of the access group you want to modify.","type":"string"},"all_assets":{"description":"Specifies whether the access group you want to modify is the All Assets group or a user-defined group: \n* If you want to refine membership in the All Assets access group (the only change you can make to the All Assets group), this parameter must be `true`. Tenable.io ignores any rules parameters in your request, but overwrrites existing principals parameters with those in the request based on the all\\_users and principals parameters in the request. \n* If you want to modify a user-defined access group, this parameter must be `false`. Tenable.io overwrites the existing rules parameters with the rules parameters you specify in this request, and overwrites existing principals parameters based on the all\\_users and principals parameters in the request.","type":"boolean"},"all_users":{"description":"Specifies whether assets in the access group can be viewed by all or only some users in your organization: \n* If `true`, all users in your organization have Can View access to the assets defined in the rules parameter. Tenable.io ignores any principal parameters in your request. \n* If `false`, only specified users have Can View access to the assets defined in the rules parameter. You define which users or user groups have access in the principals parameter of the request. \n \nIf you omit this parameter, Tenable.io sets the parameter to `false` by default.","type":"boolean"},"rules":{"items":{"type":"object","properties":{"type":{"type":"string","description":"The type of asset rule. The asset rule type corresponds to the type of data you can specifiy in the terms parameter. For a complete list of supported rule types, use the GET /access-groups/filters endpoint."},"operator":{"type":"string","description":"The operator that specifies how Tenable.io matches the terms value to asset data. \n\nPossible operators include: \n - eq—Tenable.io matches the rule to assets based on an exact match of the specified term. Note: Tenable.io interprets the operator as `equals` for ipv4 rules that specify a single IP address, but interprets the operator as `contains` for ipv4 rules that specify an IP range or CIDR range.\n - match—Tenable.io matches the rule to assets based a partial match of the specified term.\n - starts—Tenable.io matches the rule to assets that start with the specified term.\n - ends—Tenable.io matches the rule to assets that end with the specified term.\n\nFor a complete list of operators by rule type, use the GET /access-groups/rules/filters endpoint."},"terms":{"description":"The values that Tenable.io uses to match an asset to the rule. A term must correspond to the rule type.\n\nFor example:\n - If the rule type is `aws_account`, the term is an AWS account ID.\n - If the rule type is `fqdn`, the term is a hostname or a fully-qualified domain name (FQDN).\n - If the rule type is `ipv4`, the term is an individual IPv4 address, a range of IPv4 addresses (for example, 172.204.81.57-172.204.81.60), or a CIDR range (for example, 172.204.81.57/24). \n\nFor a complete list of supported values by rule type, use the GET /access-groups/rules/filters endpoint. \n\nIf you specify multiple terms values, Tenable.io includes an asset in the access group if the asset's attributes match any of the terms in the rule.\n
You can specify up to 100,000 terms per asset rule.","type":"array","items":{"type":"string"}}}},"description":"An array of asset rules. Tenable.io uses these rules to assign assets to the access group. You can specify a maximum of 1,000 rules for an individual access group. If you specify multiple rules for an access group, Tenable.io assigns an asset to the access group if the asset matches any of the rules. You can only add rules to access groups if the all\\_assets parameter is set to `false`.","type":"array"},"principals":{"items":{"type":"object","properties":{"type":{"type":"string","description":"(Required) The type of principal. Valid values include:\n - user—Grants access to the user you specify.\n - group—Grants access to all users assigned to the user group you specify."},"principal_id":{"type":"string","description":"The UUID of a user or user group. This parameter is required if the request omits the `principal_name` parameter."},"principal_name":{"type":"string","description":"The name of the user or user group. This parameter is required if the request omits the `principal_id` parameter. If a request includes both `principal_id` and `principal_name`, Tenable.io assigns the user or user group to the access group based on the `principal_id` parameter, and ignores the `principal_name` parameter in the request. "}}},"description":"An array of principals. Each principal represents a user or user group assigned to the access group. You cannot add an access group as a principal to another access group.","type":"array"}},"required":["name","rules"]}}}},"responses":{"200":{"description":"Returned if Tenable.io has either modified the existing access group successfully or created a new access group because it could not find an existing access group with the specified UUID.","content":{"application/json":{"schema":{"type":"object","properties":{"container_uuid":{"type":"string","description":"The UUID of your Tenable.io instance."},"created_at":{"type":"string","description":"An ISO timestamp indicating the date and time on which the access group was created."},"updated_at":{"type":"string","description":"An ISO timestamp indicating the time and date on which the access group was last modified."},"id":{"type":"string","description":"The UUID of the access group."},"name":{"type":"string","description":"The name of the access group. This name must be: \n* Unique within your Tenable.io instance. \n* A maximum of 255 characters. \n* Alphanumeric, but can include limited special characters (underscore, dash, parenthesis, brackets, colon)."},"all_assets":{"type":"boolean","description":"Specifies whether the access group is the system-provided All Assets access group: \n - If `true`, the access group is the All Assets access group. The only change you can make to this access group is to refine user membership in the group. For more information, see descriptions of the all_users and principals parameters for the PUT /access-groups/{id} endpoint.\n - If `false`, the access group is a user-defined access group, and you can change all parameters for the group. This parameter is `false` for all access groups you create."},"all_users":{"type":"boolean","description":"Specifies whether assets in the access group can be viewed by all or only some users in your organization:\n - If `true`, all users in your organization have Can View access to the assets defined in the rules parameter. If `true` in a POST /access-groups or PUT /access-groups/{id} request, Tenable.io ignores any principal parameters in the request. \n - If `false`, only specified users have Can View access to the assets defined in the rules parameter. You define which users or user groups have access in the principals parameter of a POST /access-groups or PUT /access-groups/{id} request. \n\n**Note:** If a PUT /access-groups/{id} endpoint request sets this parameter to `true` for an access group where the parameter was previously set to `false`, Tenable.io removes all principal data previously associated with the access group."},"status":{"type":"string","description":"The status of the process evaluating and assigning assets to the access group. Possible values are: \n - PROCESSING—Tenable.io is currently evaluating assets against the asset rules for the access group. For an indication of evaluation progress, see the `processing_percent_complete` attribute for the access group.\n - COMPLETED—Tenable.io has successfully completed its evaluation of assets against the asset rules for the group.\n - ERROR—Tenable.io encountered an error while evaluating assets against asset rules for the access group. Rule validation typically prevents this status from occurring. However, if you encounter an ERROR status, Tenable recommends that you delete the existing asset rules, then recreate the rules after a short time has elapsed."},"rules":{"description":"An array of asset rules. Tenable.io uses these rules to assign assets to the access group. You can specify a maximum of 1,000 rules for an individual access group. If you specify multiple rules for an access group, Tenable.io assigns an asset to the access group if the asset matches any of the rules. You can only add rules to access groups if the all\\_assets parameter is set to `false`.","type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of asset rule. The asset rule type corresponds to the type of data you can specifiy in the terms parameter. For a complete list of supported rule types, use the GET /access-groups/filters endpoint."},"operator":{"type":"string","description":"The operator that specifies how Tenable.io matches the terms value to asset data. \n\nPossible operators include: \n - eq—Tenable.io matches the rule to assets based on an exact match of the specified term. Note: Tenable.io interprets the operator as `equals` for ipv4 rules that specify a single IP address, but interprets the operator as `contains` for ipv4 rules that specify an IP range or CIDR range.\n - match—Tenable.io matches the rule to assets based a partial match of the specified term.\n - starts—Tenable.io matches the rule to assets that start with the specified term.\n - ends—Tenable.io matches the rule to assets that end with the specified term.\n\nFor a complete list of operators by rule type, use the GET /access-groups/rules/filters endpoint."},"terms":{"description":"The values that Tenable.io uses to match an asset to the rule. A term must correspond to the rule type.\n\nFor example:\n - If the rule type is `aws_account`, the term is an AWS account ID.\n - If the rule type is `fqdn`, the term is a hostname or a fully-qualified domain name (FQDN).\n - If the rule type is `ipv4`, the term is an individual IPv4 address, a range of IPv4 addresses (for example, 172.204.81.57-172.204.81.60), or a CIDR range (for example, 172.204.81.57/24). \n\nFor a complete list of supported values by rule type, use the GET /access-groups/rules/filters endpoint. \n\nIf you specify multiple terms values, Tenable.io includes an asset in the access group if the asset's attributes match any of the terms in the rule.\n
You can specify up to 100,000 terms per asset rule.","type":"array","items":{"type":"string"}}}}},"principals":{"description":"An array of principals. Each principal represents a user or user group assigned to the access group. You cannot add an access group as a principal to another access group.","type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"(Required) The type of principal. Valid values include:\n - user—Grants access to the user you specify.\n - group—Grants access to all users assigned to the user group you specify."},"principal_id":{"type":"string","description":"The UUID of a user or user group. This parameter is required if the request omits the `principal_name` parameter."},"principal_name":{"type":"string","description":"The name of the user or user group. This parameter is required if the request omits the `principal_id` parameter. If a request includes both `principal_id` and `principal_name`, Tenable.io assigns the user or user group to the access group based on the `principal_id` parameter, and ignores the `principal_name` parameter in the request. "}}}},"created_by_uuid":{"type":"string","description":"The UUID of the user who created the access group."},"created_by_name":{"type":"string","description":"The name of the user who created the access group."},"updated_by_uuid":{"type":"string","description":"The UUID of the user who last modified the access group."},"updated_by_name":{"type":"string","description":"The name of the user who last modified the access group."},"processing_percent_complete":{"type":"integer","description":"The percentage of assets that Tenable.io has evaluated against the asset rules for the access group."}}},"examples":{"response":{"value":{"container_uuid":"8f9d0b84-ede2-4954-a0c9-0bde292ac38e","created_at":"2018-08-15T18:17:04.827Z","updated_at":"2018-08-15T18:17:04.827Z","id":"385f4765-cd32-4191-b6ae-d0d4522e073f","name":"Headquarters","all_assets":false,"all_users":false,"status":"COMPLETED","rules":[{"type":"aws_account","operator":"eq","terms":["123456789012"]},{"type":"fqdn","operator":"eq","terms":["www.example.com"]},{"type":"ipv4","operator":"eq","terms":["172.204.81.57"]}],"principals":[{"type":"user","principal_id":"085abc65-d709-44b2-ad04-bfd2862ad5a1","principal_name":"user1@example.com"},{"type":"user","principal_id":"b1219ca2-2578-49ac-88db-8a35dd02cc7d","principal_name":"user2@example.com"}],"created_by_uuid":"b1219ca2-2578-49ac-88db-8a35dd02cc7d","updated_by_uuid":"b1219ca2-2578-49ac-88db-8a35dd02cc7d","updated_by_name":"user3@example.com","created_by_name":"user3@example.com","processing_percent_complete":100}}}}}},"400":{"description":"Returned if Tenable.io encountered any of the following error conditions:\n - incomplete—the body of your request did not include the required fields.\n - duplicate—an access group with the name you specified already exists.\n - protected—you attempted to update an access group where the `all_assets` parameter is set to `true`, and you cannot update the system-provided `All Assets` access group."},"403":{"description":"Returned if you do not have sufficient permissions to modify access groups."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete access group","description":"Deletes an access group.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"access-groups-delete","tags":["Access Groups"],"parameters":[{"description":"The UUID for the access group you want to delete.","required":true,"name":"id","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returned if Tenable.io successfully deleted the access group you specified."},"403":{"description":"Returned if you do not have sufficient permissions to delete an access group."},"404":{"description":"Returned if Tenable.io could not find the access group you specified."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"Get access group details","description":"Returns details for a specific access group.

Requires BASIC [16] user permissions to view details for an access group to which you are assigned; however, details do not include principals information. Requires ADMINISTRATOR [64] to view details for any access group in your organization; in this case, details include principals information. See Permissions.

","operationId":"access-groups-details","tags":["Access Groups"],"parameters":[{"description":"The UUID of the access group where you want to view details.","required":true,"name":"id","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the access group details.","content":{"application/json":{"schema":{"type":"object","properties":{"container_uuid":{"type":"string","description":"The UUID of your Tenable.io instance."},"created_at":{"type":"string","description":"An ISO timestamp indicating the date and time on which the access group was created."},"updated_at":{"type":"string","description":"An ISO timestamp indicating the time and date on which the access group was last modified."},"id":{"type":"string","description":"The UUID of the access group."},"name":{"type":"string","description":"The name of the access group. This name must be: \n* Unique within your Tenable.io instance. \n* A maximum of 255 characters. \n* Alphanumeric, but can include limited special characters (underscore, dash, parenthesis, brackets, colon)."},"all_assets":{"type":"boolean","description":"Specifies whether the access group is the system-provided All Assets access group: \n - If `true`, the access group is the All Assets access group. The only change you can make to this access group is to refine user membership in the group. For more information, see descriptions of the all_users and principals parameters for the PUT /access-groups/{id} endpoint.\n - If `false`, the access group is a user-defined access group, and you can change all parameters for the group. This parameter is `false` for all access groups you create."},"all_users":{"type":"boolean","description":"Specifies whether assets in the access group can be viewed by all or only some users in your organization:\n - If `true`, all users in your organization have Can View access to the assets defined in the rules parameter. If `true` in a POST /access-groups or PUT /access-groups/{id} request, Tenable.io ignores any principal parameters in the request. \n - If `false`, only specified users have Can View access to the assets defined in the rules parameter. You define which users or user groups have access in the principals parameter of a POST /access-groups or PUT /access-groups/{id} request. \n\n**Note:** If a PUT /access-groups/{id} endpoint request sets this parameter to `true` for an access group where the parameter was previously set to `false`, Tenable.io removes all principal data previously associated with the access group."},"status":{"type":"string","description":"The status of the process evaluating and assigning assets to the access group. Possible values are: \n - PROCESSING—Tenable.io is currently evaluating assets against the asset rules for the access group. For an indication of evaluation progress, see the `processing_percent_complete` attribute for the access group.\n - COMPLETED—Tenable.io has successfully completed its evaluation of assets against the asset rules for the group.\n - ERROR—Tenable.io encountered an error while evaluating assets against asset rules for the access group. Rule validation typically prevents this status from occurring. However, if you encounter an ERROR status, Tenable recommends that you delete the existing asset rules, then recreate the rules after a short time has elapsed."},"rules":{"description":"An array of asset rules. Tenable.io uses these rules to assign assets to the access group. You can specify a maximum of 1,000 rules for an individual access group. If you specify multiple rules for an access group, Tenable.io assigns an asset to the access group if the asset matches any of the rules. You can only add rules to access groups if the all\\_assets parameter is set to `false`.","type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of asset rule. The asset rule type corresponds to the type of data you can specifiy in the terms parameter. For a complete list of supported rule types, use the GET /access-groups/filters endpoint."},"operator":{"type":"string","description":"The operator that specifies how Tenable.io matches the terms value to asset data. \n\nPossible operators include: \n - eq—Tenable.io matches the rule to assets based on an exact match of the specified term. Note: Tenable.io interprets the operator as `equals` for ipv4 rules that specify a single IP address, but interprets the operator as `contains` for ipv4 rules that specify an IP range or CIDR range.\n - match—Tenable.io matches the rule to assets based a partial match of the specified term.\n - starts—Tenable.io matches the rule to assets that start with the specified term.\n - ends—Tenable.io matches the rule to assets that end with the specified term.\n\nFor a complete list of operators by rule type, use the GET /access-groups/rules/filters endpoint."},"terms":{"description":"The values that Tenable.io uses to match an asset to the rule. A term must correspond to the rule type.\n\nFor example:\n - If the rule type is `aws_account`, the term is an AWS account ID.\n - If the rule type is `fqdn`, the term is a hostname or a fully-qualified domain name (FQDN).\n - If the rule type is `ipv4`, the term is an individual IPv4 address, a range of IPv4 addresses (for example, 172.204.81.57-172.204.81.60), or a CIDR range (for example, 172.204.81.57/24). \n\nFor a complete list of supported values by rule type, use the GET /access-groups/rules/filters endpoint. \n\nIf you specify multiple terms values, Tenable.io includes an asset in the access group if the asset's attributes match any of the terms in the rule.\n
You can specify up to 100,000 terms per asset rule.","type":"array","items":{"type":"string"}}}}},"principals":{"description":"An array of principals. Each principal represents a user or user group assigned to the access group. You cannot add an access group as a principal to another access group.","type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"(Required) The type of principal. Valid values include:\n - user—Grants access to the user you specify.\n - group—Grants access to all users assigned to the user group you specify."},"principal_id":{"type":"string","description":"The UUID of a user or user group. This parameter is required if the request omits the `principal_name` parameter."},"principal_name":{"type":"string","description":"The name of the user or user group. This parameter is required if the request omits the `principal_id` parameter. If a request includes both `principal_id` and `principal_name`, Tenable.io assigns the user or user group to the access group based on the `principal_id` parameter, and ignores the `principal_name` parameter in the request. "}}}},"created_by_uuid":{"type":"string","description":"The UUID of the user who created the access group."},"created_by_name":{"type":"string","description":"The name of the user who created the access group."},"updated_by_uuid":{"type":"string","description":"The UUID of the user who last modified the access group."},"updated_by_name":{"type":"string","description":"The name of the user who last modified the access group."},"processing_percent_complete":{"type":"integer","description":"The percentage of assets that Tenable.io has evaluated against the asset rules for the access group."}}},"examples":{"response":{"value":{"container_uuid":"7a818eb1-8351-4795-99b0-9610c8954cb3","created_at":"2018-11-27T21:17:18.883Z","updated_at":"2018-11-27T22:12:02.414Z","id":"d30542aa-84d4-4b38-9a74-6a4c665532b1","name":"Western Region","all_assets":false,"all_users":false,"version":2,"status":"COMPLETED","rules":[{"type":"ipv4","operator":"eq","terms":["172.204.81.57"],"principals":[{"type":"user","principal_id":"e7ecb50b-1330-4a8c-b8e5-ee00ec8c46f7","principal_name":"user1@example.com"},{"type":"user","principal_id":"a7162cb4-ebf7-4103-a250-34b1777cfbd0","principal_name":"user2@example.com"}],"created_by_uuid":"f3eda8e9-11f5-4ac8-966f-b758eed531c4","updated_by_uuid":"f3eda8e9-11f5-4ac8-966f-b758eed531c4","updated_by_name":"administrator@example.com","created_by_name":"administrator@example.com","processing_percent_complete":100}]}}}}}},"403":{"description":"Returned if you do not have permissions to view the access group details."},"404":{"description":"Returned if Tenable.io could not find the access group you specified."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/access-groups/filters":{"get":{"summary":"List access group filters","description":"Lists available filters for access groups.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"access-groups-list-filters","tags":["Access Groups"],"responses":{"200":{"description":"Returns a list of available filters for access groups. The response includes supported filter operators for each filter. Filter operators can include:\n - eq—filters on exact matches of the specified value\n - match—filters on partial matches of the specified value\n - date-lt —filters on dates earlier than the specified date\n - date-gt—filters on dates later than the specified date\n - date-eq—filters on dates equal to the specified date.\n\nThe sample below does not represent a complete list of supported filters.","content":{"application/json":{"schema":{"type":"object","properties":{"wildcard_fields":{"description":"The fields you can use as a wildcard (`wf` parameter) value in the GET /access-groups endpoint.","type":"array","items":{"type":"string"}},"filters":{"description":"The filters and operators for each field you can use when constructing filter (`f` parameter) values in the GET /access-groups endpoint.","type":"array","items":{"type":"object","properties":{"operators":{"description":"Corresponds to the operator component of the `f` parameter.","type":"array","items":{"type":"string"}},"control":{"description":"Indicates how the parameter appears in the Tenable.io user interface.","type":"string"},"name":{"description":"Corresponds to the field component of the `f` parameter.","type":"string"},"readable_name":{"description":"The name of the parameter as it appears in the Tenable.io user interface.","type":"string"}}}},"sort":{"description":"The fields you can use when constructing `sort` parameter values for the GET /access-groups endpoint.","type":"array","items":{"type":"object","properties":{"sortable_fields":{"description":"The names of the fields you can use when constructing `sort` parameter values for the GET /access-groups endpoint.","type":"string"}}}}}},"examples":{"response":{"value":{"wildcard_fields":["name","created_by_name","updated_by_name"],"filters":[{"operators":["eq","match"],"control":{"type":"entry"},"name":"name","readable_name":"Access Group Name"}],"sort":{"sortable_fields":["name","created_at","created_by_name","updated_at","updated_by_name"]}}}}}}},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/access-groups/rules/filters":{"get":{"summary":"List asset rule filters","description":"Lists available filters for asset rules.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"access-groups-list-rule-filters","tags":["Access Groups"],"responses":{"200":{"description":"Returns a list of filters. The sample below does not represent a complete list of supported filters.","content":{"application/json":{"schema":{"type":"object","properties":{"filters":{"description":"An array specifying values to use when constructing an asset rule for the POST /access-groups and PUT /access-groups/{id} methods.","type":"array","items":{"type":"object","properties":{"operators":{"description":"The operator that specifies how Tenable.io matches the terms value to asset data. Corresponds to the operator component of the rules parameter. Possible operators include: \n*eq—Tenable.io matches the rule to assets based on an exact match of the specified term. Note: Tenable.io interprets the operator as `equals` for ipv4 rules that specify a single IP address, but interprets the operator as `contains` for ipv4 rules that specify an IP range or CIDR range. \n* match—Tenable.io matches the rule to assets based a partial match of the specified term. \n* starts—Tenable.io matches the rule to assets that start with the specified term. \n* ends—Tenable.io matches the rule to assets that end with the specified term. For a complete list of operators by rule type, use the GET /access-groups/filters endpoint.","type":"array","items":{"type":"string"}},"control":{"description":"Indicates how the field appears in the Tenable.io user interface.","type":"string"},"name":{"description":"The name of the filter parameter. Corresponds to the asset rule type.","type":"string"},"readable_name":{"description":"The name of the field as it appears in the Tenable.io user interface.","type":"string"}}}}}},"examples":{"response":{"value":{"rules":[{"operators":["eq"],"name":"aws_account","readable_name":"AWS Account ID","placeholder":"Ex: 12345","control":{"type":"tag","regex":"^\\d+$"}},{"operators":["eq"],"name":"ipv4","readable_name":"IPv4 Address","placeholder":"Ex: 172.204.81.57","control":{"type":"tag","regex":"^(?=\\d+\\.\\d+\\.\\d+\\.\\d+(($|\\/)|($|-)))(([1-9]?\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.?){4}((\\/([0-9]|[1-2][0-9]|3[0-2]))|(-(([1-9]?\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.?){4}))?$"}},{"operators":["eq","match","starts","ends"],"name":"fqdn","readable_name":"FQDN/Hostname","placeholder":"Ex: company.com","control":{"type":"tag","regex":"^[a-zA-Z0-9-.*]+$"}}]}}}}}},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agents/config":{"get":{"summary":"Get agent configuration","description":"Returns the configuration of agents associated with a specific scanner. Agent configuration controls agent settings for global agent software update enablement and agent auto-expiration.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-config-details","tags":["Agent Config"],"parameters":[{"description":"The ID of the scanner.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the agent configuration.","content":{"application/json":{"schema":{"type":"object","properties":{"auto_unlink":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If true, agent auto-unlink is enabled. Enabling auto-unlink causes it to take effect against all agents retroactively."},"expiration":{"type":"integer","description":"The expiration time for agents, in days. If an agent has not communicated in the specified number of days, Tenable.io classifies the agent as expired and auto-unlinks the agent if auto_unlink.enabled is `true`. Valid values are 1-365.","format":"int32"}}},"software_update":{"type":"boolean","description":"If true, software updates are enabled for agents pursuant to any agent exclusions that are in effect. If false, software updates are disabled for all agents, even if no agent exclusions are in effect."}}},"examples":{"response":{"value":{"auto_unlink":{"expiration":"30","enabled":"false"},"software_update":"true"}}}}}},"403":{"description":"Returned if you do not have permission to view the agent configuration."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"put":{"summary":"Update agent configuration","description":"Updates the configuration of agents associated with a specific scanner.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-config-edit","tags":["Agent Config"],"parameters":[{"description":"The ID of the scanner.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"software_update":{"type":"boolean","description":"If true, software updates are enabled for agents pursuant to any agent exclusions that are in effect. If false, software updates are disabled for all agents, even if no agent exclusions are in effect."},"auto_unlink":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If true, agent auto-unlink is enabled. Enabling auto-unlink causes it to take effect against all agents retroactively."},"expiration":{"type":"integer","description":"The expiration time for agents, in days. If an agent has not communicated in this number of days, it will be considered `expired` and auto-unlinked if auto\\_unlink.enabled is `true`. Valid values are 1-365.","format":"int32"}}}}}}}},"responses":{"200":{"description":"Returned if the agent configuration has been updated.","content":{"application/json":{"schema":{"type":"object","properties":{"auto_unlink":{"type":"object","properties":{"enabled":{"type":"boolean","description":"If true, agent auto-unlink is enabled. Enabling auto-unlink causes it to take effect against all agents retroactively."},"expiration":{"type":"integer","description":"The expiration time for agents, in days. If an agent has not communicated in the specified number of days, Tenable.io classifies the agent as expired and auto-unlinks the agent if auto_unlink.enabled is `true`. Valid values are 1-365.","format":"int32"}}},"software_update":{"type":"boolean","description":"If true, software updates are enabled for agents pursuant to any agent exclusions that are in effect. If false, software updates are disabled for all agents, even if no agent exclusions are in effect."}}},"examples":{"response":{"value":{"auto_unlink":{"expiration":"30","enabled":"false"},"software_update":"true"}}}}}},"403":{"description":"Returned if you do not have permission to update the agent config."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to update the agent configuration.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agents/exclusions":{"post":{"summary":"Create agent exclusion","description":"Creates a new agent exclusion.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-exclusions-create","tags":["Agent Exclusions"],"parameters":[{"description":"The ID of the scanner","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the exclusion."},"description":{"type":"string","description":"The description of the exclusion."},"schedule":{"type":"object","required":["starttime","rrules","timezone"],"properties":{"enabled":{"type":"boolean","description":"If true, the exclusion is scheduled."},"starttime":{"type":"string","description":"The start time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"endtime":{"type":"string","description":"The end time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"timezone":{"type":"string","description":"The timezone for the exclusion as returned by [scans: timezones](/reference#scans-timezones)."},"rrules":{"type":"object","required":["freq"],"properties":{"freq":{"type":"string","description":"The frequency of the rule (ONETIME, DAILY, WEEKLY, MONTHLY, YEARLY).","enum":["ONETIME","DAILY","WEEKLY","MONTHLY","YEARLY"]},"interval":{"type":"integer","description":"The interval of the rule."},"byweekday":{"type":"string","description":"A comma separated string of days to repeat a WEEKLY freq rule on (SU,MO,TU,WE,TH,FR, or SA)."},"bymonthday":{"type":"integer","description":"The day of the month to repeat a MONTHLY freq rule on."}}}}}},"required":["name","schedule"]}}}},"responses":{"200":{"description":"Returned if the agent exclusion has been created.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the exclusion."},"name":{"type":"string","description":"The name of the exclusion."},"description":{"type":"string","description":"The description of the exclusion."},"creation_date":{"type":"integer","description":"The creation date of the exclusion in unixtime."},"last_modification_date":{"type":"integer","description":"The last modification date for the exclusion in unixtime."},"schedule":{"type":"object","required":["starttime","rrules","timezone"],"properties":{"enabled":{"type":"boolean","description":"If true, the exclusion is scheduled."},"starttime":{"type":"string","description":"The start time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"endtime":{"type":"string","description":"The end time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"timezone":{"type":"string","description":"The timezone for the exclusion as returned by [scans: timezones](/reference#scans-timezones)."},"rrules":{"type":"object","required":["freq"],"properties":{"freq":{"type":"string","description":"The frequency of the rule (ONETIME, DAILY, WEEKLY, MONTHLY, YEARLY).","enum":["ONETIME","DAILY","WEEKLY","MONTHLY","YEARLY"]},"interval":{"type":"integer","description":"The interval of the rule."},"byweekday":{"type":"string","description":"A comma separated string of days to repeat a WEEKLY freq rule on (SU,MO,TU,WE,TH,FR, or SA)."},"bymonthday":{"type":"integer","description":"The day of the month to repeat a MONTHLY freq rule on."}}}}}}},"examples":{"response":{"value":{"schedule":{"endtime":"2019-11-29 19:35:00","enabled":true,"rrules":{"freq":"DAILY","interval":8,"byweekday":"SU,MO","bymonthday":9},"timezone":"US/Pacific","starttime":"2018-11-29 19:35:00"},"last_modification_date":1543541807,"creation_date":1543541807,"description":"Router scan exclusion","name":"Routers","id":124234}}}}}},"400":{"description":"Returned if an argument is missing or invalid."},"403":{"description":"Returned if you do not have permission to create an exclusion."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to create the exclusion.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"List agent exclusions","description":"Returns the list of current agent exclusions.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-exclusions-list","tags":["Agent Exclusions"],"parameters":[{"description":"The ID of the scanner","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the exclusions.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the exclusion."},"name":{"type":"string","description":"The name of the exclusion."},"description":{"type":"string","description":"The description of the exclusion."},"creation_date":{"type":"integer","description":"The creation date of the exclusion in unixtime."},"last_modification_date":{"type":"integer","description":"The last modification date for the exclusion in unixtime."},"schedule":{"type":"object","required":["starttime","rrules","timezone"],"properties":{"enabled":{"type":"boolean","description":"If true, the exclusion is scheduled."},"starttime":{"type":"string","description":"The start time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"endtime":{"type":"string","description":"The end time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"timezone":{"type":"string","description":"The timezone for the exclusion as returned by [scans: timezones](/reference#scans-timezones)."},"rrules":{"type":"object","required":["freq"],"properties":{"freq":{"type":"string","description":"The frequency of the rule (ONETIME, DAILY, WEEKLY, MONTHLY, YEARLY).","enum":["ONETIME","DAILY","WEEKLY","MONTHLY","YEARLY"]},"interval":{"type":"integer","description":"The interval of the rule."},"byweekday":{"type":"string","description":"A comma separated string of days to repeat a WEEKLY freq rule on (SU,MO,TU,WE,TH,FR, or SA)."},"bymonthday":{"type":"integer","description":"The day of the month to repeat a MONTHLY freq rule on."}}}}}}}},"examples":{"response":{"value":{"exclusions":[{"schedule":{"endtime":"2019-11-29 19:35:00","enabled":true,"rrules":{"freq":"DAILY","interval":8,"byweekday":"SU,MO","bymonthday":9},"timezone":"US/Pacific","starttime":"2018-11-29 19:35:00"},"last_modification_date":1543541807,"creation_date":1543541807,"description":"Router scan exclusion","name":"Routers","id":124234},{"schedule":{"endtime":"2019-11-29 19:35:00","enabled":true,"rrules":{"freq":"DAILY","interval":8,"byweekday":"TU","bymonthday":11},"timezone":"US/Central","starttime":"2018-11-29 19:35:00"},"last_modification_date":2543541809,"creation_date":2543541809,"description":"Workstation scan exclusion","name":"Workstation","id":222456}]}}}}}},"403":{"description":"Returned if you do not have permission to view the exclusions."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agents/exclusions/{exclusion_id}":{"put":{"summary":"Update agent exclusion","description":"Updates an agent exclusion.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-exclusions-edit","tags":["Agent Exclusions"],"parameters":[{"description":"The ID of the exclusion to edit.","required":true,"name":"exclusion_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the scanner","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the exclusion."},"description":{"type":"string","description":"The description of the exclusion."},"schedule":{"type":"object","required":["starttime","rrules","timezone"],"properties":{"enabled":{"type":"boolean","description":"If true, the exclusion is scheduled."},"starttime":{"type":"string","description":"The start time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"endtime":{"type":"string","description":"The end time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"timezone":{"type":"string","description":"The timezone for the exclusion as returned by [scans: timezones](/reference#scans-timezones)."},"rrules":{"type":"object","required":["freq"],"properties":{"freq":{"type":"string","description":"The frequency of the rule (ONETIME, DAILY, WEEKLY, MONTHLY, YEARLY).","enum":["ONETIME","DAILY","WEEKLY","MONTHLY","YEARLY"]},"interval":{"type":"integer","description":"The interval of the rule."},"byweekday":{"type":"string","description":"A comma separated string of days to repeat a WEEKLY freq rule on (SU,MO,TU,WE,TH,FR, or SA)."},"bymonthday":{"type":"integer","description":"The day of the month to repeat a MONTHLY freq rule on."}}}}}},"required":["schedule"]}}}},"responses":{"200":{"description":"Returned if the exclusion has been modified.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{"schedule":{"endtime":"2019-11-29 19:35:00","enabled":true,"rrules":{"freq":"DAILY","interval":8,"byweekday":"SU,MO","bymonthday":9},"timezone":"US/Pacific","starttime":"2018-11-29 19:35:00"},"last_modification_date":1543541807,"creation_date":1543541807,"description":"Router scan exclusion","name":"Routers","id":124234}}}}}},"403":{"description":"Returned if you do not have permission to modify the exclusion."},"404":{"description":"Returned if Tenable.io cannot find the specified exclusion."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to change the exclusion.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete agent exclusion","description":"Deletes an agent exclusion.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-exclusions-delete","tags":["Agent Exclusions"],"parameters":[{"description":"The ID of the exclusion to delete.","required":true,"name":"exclusion_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the scanner","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if the exclusion has been successfully deleted.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"403":{"description":"Returned if you do not have permission to delete the exclusion."},"404":{"description":"Returned if Tenable.io cannot find the specified exclusion."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"Get agent exclusion details","description":"Returns details for the specified agent exclusion.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-exclusions-details","tags":["Agent Exclusions"],"parameters":[{"description":"The ID of the exclusion.","required":true,"name":"exclusion_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the scanner","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the exclusion details.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the exclusion."},"name":{"type":"string","description":"The name of the exclusion."},"description":{"type":"string","description":"The description of the exclusion."},"creation_date":{"type":"integer","description":"The creation date of the exclusion in unixtime."},"last_modification_date":{"type":"integer","description":"The last modification date for the exclusion in unixtime."},"schedule":{"type":"object","required":["starttime","rrules","timezone"],"properties":{"enabled":{"type":"boolean","description":"If true, the exclusion is scheduled."},"starttime":{"type":"string","description":"The start time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"endtime":{"type":"string","description":"The end time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"timezone":{"type":"string","description":"The timezone for the exclusion as returned by [scans: timezones](/reference#scans-timezones)."},"rrules":{"type":"object","required":["freq"],"properties":{"freq":{"type":"string","description":"The frequency of the rule (ONETIME, DAILY, WEEKLY, MONTHLY, YEARLY).","enum":["ONETIME","DAILY","WEEKLY","MONTHLY","YEARLY"]},"interval":{"type":"integer","description":"The interval of the rule."},"byweekday":{"type":"string","description":"A comma separated string of days to repeat a WEEKLY freq rule on (SU,MO,TU,WE,TH,FR, or SA)."},"bymonthday":{"type":"integer","description":"The day of the month to repeat a MONTHLY freq rule on."}}}}}}},"examples":{"response":{"value":{"schedule":{"endtime":"2019-11-29 19:35:00","enabled":true,"rrules":{"freq":"DAILY","interval":8,"byweekday":"SU,MO","bymonthday":9},"timezone":"US/Pacific","starttime":"2018-11-29 19:35:00"},"last_modification_date":1543541807,"creation_date":1543541807,"description":"Router scan exclusion","name":"Routers","id":124234}}}}}},"403":{"description":"Returned if you do not have permission to view the exclusion."},"404":{"description":"Returned if Tenable.io cannot find the specified exclusion."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agent-groups":{"post":{"summary":"Create agent group on scanner","description":"Creates an agent group on the scanner.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-groups-create","tags":["Agent Groups"],"parameters":[{"description":"The ID of the scanner to add the agent group to.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the agent group."}},"required":["name"]}}}},"responses":{"200":{"description":"Returned if the agent group has been created.","content":{"application/json":{"schema":{"type":"object","properties":{"agents":{"description":"The agents in the group. The agent records can be filtered, sorted, and paginated.","type":"array","items":{"type":"string"}},"creation_date":{"type":"integer","description":"The creation date of the agent group in unixtime."},"id":{"type":"integer","description":"The unique ID of the agent group."},"last_modification_date":{"type":"integer","description":"The last modification date for the agent group in unixtime."},"name":{"type":"string","description":"The name of the agent group."},"owner":{"type":"string","description":"The username for the owner of the agent group."},"owner_id":{"type":"string","description":"The unique ID of the owner of the agent group."},"owner_name":{"type":"string","description":"The name for the owner of the agent group."},"owner_uuid":{"type":"string","description":"The UUID of the owner of the agent group."},"pagination":{"type":"object","properties":{}},"shared":{"type":"integer","description":"The shared status of the agent group."},"user_permissions":{"type":"integer","description":"The sharing permissions for the agent group."},"uuid":{"type":"string","description":"The UUID of the agent group."}}},"examples":{"response":{"value":{"id":106592,"uuid":"8b05bd55-9105-48ec-9da1-2e10a2c9a4e0","name":"Western Region","creation_date":1544455100,"last_modification_date":1544455100,"timestamp":1544455100,"shared":0,"owner":"system","owner_id":1,"owner_name":"system","owner_uuid":"fe2e8b99-791a-429a-ab84-4226e62306ff","user_permissions":0,"agents_count":0}}}}}},"400":{"description":"Returned if your request message contains an invalid parameter."},"403":{"description":"Returned if you do not have permission to create an agent group."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to add the agent group.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"List agent groups for scanner","description":"Lists the agent groups for the scanner.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-groups-list","tags":["Agent Groups"],"parameters":[{"description":"The ID of the scanner to query for agent groups.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the agent groups list.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"agents":{"description":"The agents in the group. The agent records can be filtered, sorted, and paginated.","type":"array","items":{"type":"string"}},"creation_date":{"type":"integer","description":"The creation date of the agent group in unixtime."},"id":{"type":"integer","description":"The unique ID of the agent group."},"last_modification_date":{"type":"integer","description":"The last modification date for the agent group in unixtime."},"name":{"type":"string","description":"The name of the agent group."},"owner":{"type":"string","description":"The username for the owner of the agent group."},"owner_id":{"type":"string","description":"The unique ID of the owner of the agent group."},"owner_name":{"type":"string","description":"The name for the owner of the agent group."},"owner_uuid":{"type":"string","description":"The UUID of the owner of the agent group."},"pagination":{"type":"object","properties":{}},"shared":{"type":"integer","description":"The shared status of the agent group."},"user_permissions":{"type":"integer","description":"The sharing permissions for the agent group."},"uuid":{"type":"string","description":"The UUID of the agent group."}}}},"examples":{"response":{"value":{"groups":[{"id":106592,"uuid":"8b05bd55-9105-48ec-9da1-2e10a2c9a4e0","name":"slibs","creation_date":1544455100,"last_modification_date":1544455100,"timestamp":1544455100,"shared":1,"owner":"system","owner_id":1,"owner_name":"system","owner_uuid":"fe2e8b99-791a-429a-ab84-4226e62306ff","user_permissions":128,"agents_count":0}]}}}}}},"403":{"description":"Returned if you do not have permission to view the list."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agent-groups/{group_id}":{"get":{"summary":"Get details for agent group","description":"Gets details for the agent group. Agent records which belong to this group will also be returned. You can apply filtering, sorting, or pagination to the agent records.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-groups-details","tags":["Agent Groups"],"parameters":[{"description":"The ID of the scanner.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the agent group to query.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The starting record to retrieve. If this parameter is not supplied, the default value is 0.","required":false,"name":"offset","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The number of records to retrieve. If this parameter is not supplied, a default of 50 records is used. The minimum supported limit is 1, and the maximum supported limit is 5000.","required":false,"name":"limit","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The sort order of the returned records. Sort can only be applied to the sortable\\_fields specified by the filter capabilities. There may be no more than max\\_sort\\_fields number of columns used in the sort, as specified by the filter capabilities. Sort is applied, in order, in the following format: `:\\[asc|desc\\],:\\[asc|desc\\]`. For example, `sort=field1:asc,field2:desc` would first sort by field1, ascending, then sort by field2, descending.","required":false,"name":"sort","in":"query","schema":{"type":"string"}},{"description":"Apply a filter in the format `::`. For example, `field1:match:sometext` would match any records where the value of field1 contains `sometext`. You can use multiple query filters.","required":false,"name":"f","in":"query","schema":{"type":"string"}},{"description":"Filter type. If the filter type is `and`, the record is only returned if all filters match. If the filter type is `or`, the record is returned if any of the filters match.","required":false,"name":"ft","in":"query","schema":{"type":"string"}},{"description":"Wildcard filter text. Wildcard search is a mechanism where multiple fields of a record are filtered against one specific filter string. If any one of the wildcard\\_fields' values matches against the filter string, then the record matches the wildcard filter. For a record to be returned, it must pass the wildcard filter (if there is one) AND the set of standard filters. For example, if `w=wild&f=field1:match:one&f=field2:match:two&ft=or`, the record would match if the value of any supported wildcard\\_fields contained `wild`, AND either field1's value contained `one` or field2's value contained `two`.","required":false,"name":"w","in":"query","schema":{"type":"string"}},{"description":"A comma delimited subset of wildcard\\_fields to search when applying the wildcard filter. For example, `field1,field2`. If `w` is provided, but `wf` is not, then all wildcard\\_fields' values are searched against the wildcard filter text.","required":false,"name":"wf","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the agent group details.","content":{"application/json":{"schema":{"type":"object","properties":{"agents":{"description":"The agents in the group. The agent records can be filtered, sorted, and paginated.","type":"array","items":{"type":"string"}},"creation_date":{"type":"integer","description":"The creation date of the agent group in unixtime."},"id":{"type":"integer","description":"The unique ID of the agent group."},"last_modification_date":{"type":"integer","description":"The last modification date for the agent group in unixtime."},"name":{"type":"string","description":"The name of the agent group."},"owner":{"type":"string","description":"The username for the owner of the agent group."},"owner_id":{"type":"string","description":"The unique ID of the owner of the agent group."},"owner_name":{"type":"string","description":"The name for the owner of the agent group."},"owner_uuid":{"type":"string","description":"The UUID of the owner of the agent group."},"pagination":{"type":"object","properties":{}},"shared":{"type":"integer","description":"The shared status of the agent group."},"user_permissions":{"type":"integer","description":"The sharing permissions for the agent group."},"uuid":{"type":"string","description":"The UUID of the agent group."}}},"examples":{"response":{"value":{"id":106592,"uuid":"8b05bd55-9105-48ec-9da1-2e10a2c9a4e0","name":"Western Region","creation_date":1544455100,"last_modification_date":1544455100,"timestamp":1544455100,"shared":1,"owner":"system","owner_id":1,"owner_name":"system","owner_uuid":"fe2e8b99-791a-429a-ab84-4226e62306ff","user_permissions":128,"agents_count":0,"agents":[],"pagination":{"total":0,"limit":50,"offset":0,"sort":[{"name":"name","order":"asc"}]}}}}}}},"403":{"description":"Returned if you do not have permission to view the agent group."},"404":{"description":"Returned if Tenable.io cannot find the specified agent group."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"put":{"summary":"Update name of agent group","description":"Changes the name of the agent group.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-groups-configure","tags":["Agent Groups"],"parameters":[{"description":"The ID of the scanner.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the agent group to change.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name for the agent group."}},"required":["name"]}}}},"responses":{"200":{"description":"Returned if the configuration was changed.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{"To do":"Add response sample here"}}}}}},"404":{"description":"Returned if Tenable.io cannot find the specified agent group."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if an error occurred while saving the configuration.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete agent group from scanner","description":"Deletes an agent group from the scanner.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-groups-delete","tags":["Agent Groups"],"parameters":[{"description":"The ID of the scanner.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the agent group to delete.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if the agent group has been successfully deleted.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"404":{"description":"Returned if Tenable.io cannot find the specified agent group."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to delete the agent group.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agent-groups/{group_id}/agents/{agent_id}":{"put":{"summary":"Add agent to agent group","description":"Adds an agent to the agent group.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-groups-add-agent","tags":["Agent Groups"],"parameters":[{"description":"The ID of the scanner.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the agent group.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the agent to add.","required":true,"name":"agent_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if the agent was added to the group.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{"To do":"Add response sample here"}}}}}},"404":{"description":"Returned if Tenable.io cannot find the specified agent group."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if an error occurred while attempting to add the agent.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete agent from agent group","description":"Deletes an agent from the agent group.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-groups-delete-agent","tags":["Agent Groups"],"parameters":[{"description":"The ID of the scanner.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the agent group.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the agent to remove.","required":true,"name":"agent_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if the agent has been successfully removed from the agent group.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"404":{"description":"Returned if Tenable.io cannot find the specified agent."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to remove the agent from the agent group.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agents":{"get":{"summary":"List agents for scanner","description":"Returns a list of agents for the specified scanner.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agents-list","tags":["Agents"],"parameters":[{"description":"The ID of the scanner to query for agents.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The starting record to retrieve. If you omit this parameter, Tenable.io uses the default value of 0.","required":false,"name":"offset","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The number of records to retrieve. If you omit this parameter, Tenable.io uses a default of 50 records. The minimum supported limit is 1, and the maximum supported limit is 5,000.","required":false,"name":"limit","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The sort order of the returned records. Sort can only be applied to the sortable\\_fields specified by the filter capabilities. There may be no more than max\\_sort\\_fields number of columns used in the sort, as specified by the filter capabilities. Sort is applied, in order, in the following format: `:\\[asc|desc\\],:\\[asc|desc\\]`. For example, `sort=field1:asc,field2:desc` would first sort by field1, ascending, then sort by field2, descending.","required":false,"name":"sort","in":"query","schema":{"type":"string"}},{"description":"Apply a filter in the format `::`. For example, `field1:match:sometext` would match any records where the value of field1 contains `sometext`. You can use multiple query filters.","required":false,"name":"f","in":"query","schema":{"type":"string"}},{"description":"Filter type. If the filter type is `and`, the record is only returned if all filters match. If the filter type is `or`, the record is returned if any of the filters match.","required":false,"name":"ft","in":"query","schema":{"type":"string"}},{"description":"Wildcard filter text. Wildcard search is a mechanism where multiple fields of a record are filtered against one specific filter string. If any one of the wildcard\\_fields' values matches against the filter string, then the record matches the wildcard filter. For a record to be returned, it must pass the wildcard filter (if there is one) AND the set of standard filters. For example, if `w=wild&f=field1:match:one&f=field2:match:two&ft=or`, the record would match if the value of any supported wildcard\\_fields contained `wild`, AND either field1's value contained `one` or field2's value contained `two`.","required":false,"name":"w","in":"query","schema":{"type":"string"}},{"description":"A comma-delimited subset of wildcard\\_fields to search when applying the wildcard filter. For example, `field1,field2`. If `w` is provided, but `wf` is not, then all wildcard\\_fields' values are searched against the wildcard filter text.","required":false,"name":"wf","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns a list of agents.","content":{"application/json":{"schema":{"type":"object","properties":{"agents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the agent."},"uuid":{"type":"string","description":"The UUID of the agent. Note: This value corresponds to the ID of the asset where the agent is installed. You can use this attribute to match agent data to asset data."},"name":{"type":"string","description":"The name of the agent."},"platform":{"type":"string","description":"The platform of the agent."},"distro":{"type":"string","description":"The agent software distribution."},"ip":{"type":"string","description":"The IP address of the agent."},"last_scanned":{"type":"integer","description":"The Unix timestamp when the agent last scanned the asset."},"plugin_feed_id":{"type":"string","description":"The currently loaded plugin set of the agent (null if the agent has no plugin set loaded)."},"core_build":{"type":"string","description":"Build number for the agent."},"core_version":{"type":"string","description":"Build version for the agent."},"linked_on":{"type":"integer","description":"The Unix timestamp when the link from Tenable.io to the agent was established."},"last_connect":{"type":"integer","description":"The Unix timestamp when the agent last communicated with Tenable.io."},"status":{"type":"string","description":"\"on\", \"off\", or \"init\". \"on\" means that the agent has connected recently, and is therefore likely ready to scan. \"off\" means that the agent has not been seen recently and should be considered offline. \"init\" means that the agent is online, but it is still processing plugin updates and is not ready to scan.","enum":["on","off","init"]},"groups":{"description":"Array of groups to which the agent belongs. Groups are returned in the form {\"name\": \"group name\", \"id\": \"group id\"}.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the agent group to which the agent belongs."},"id":{"type":"integer","description":"The unique ID of the agent group to which the agent belongs."}}}}}}},"pagination":{"type":"object","properties":{"total":{"type":"integer","description":"The total number of records which match any applied filters. This number may be approximate."},"offset":{"type":"integer","description":"The index of the first record retrieved."},"limit":{"type":"integer","description":"The number of records returned with this response."},"sort":{"description":"The sorting parameters applied to response, in order of application.","type":"array","items":{"type":"string"}}}}}},"examples":{"response":{"value":{"agents":[{"id":157,"uuid":"c6ce4255-b386-4e71-be64-0d06434bac5d","name":"GRD-LPTP","platform":"WINDOWS","distro":"win-x86-64","ip":"172.204.81.57","last_scanned":1515620036,"plugin_feed_id":"201801081515","core_build":"106","core_version":"7.0.0","linked_on":1456775443,"last_connect":1515674073,"status":"off","groups":[{"name":"CodyAgents","id":8},{"name":"Agent Group A","id":3316}]},{"id":14569,"uuid":"bce54c02-392d-4305-bc83-e1e1d8130afd","name":"scr-lce.lab.tenablesecurity.com","platform":"LINUX","distro":"es7-x86-64","ip":"172.204.81.57","plugin_feed_id":"201805161620","core_build":"13","core_version":"7.0.3","linked_on":1508329832,"last_connect":1526565530,"status":"off","groups":[{"name":"SC Research","id":1167}]},{"id":14570,"uuid":"0657efe4-0ba0-423a-ac5f-52a6e23d2e11","name":"scr-sc5.lab.tenablesecurity.com","platform":"LINUX","distro":"es7-x86-64","ip":"172.204.81.57","plugin_feed_id":"201805161620","core_build":"13","core_version":"7.0.3","linked_on":1508329886,"last_connect":1526565624,"status":"off","groups":[{"name":"SC Research","id":1167}]}],"pagination":{"total":3,"limit":50,"offset":0,"sort":[{"name":"name","order":"asc"}]}}}}}}},"403":{"description":"Returned if you do not have permission to view the list."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agent-groups/{agent_group_id}/agents":{"get":{"summary":"List agents for agent group","description":"Returns a list of agents for the specified agent group.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agent-group-list-agents","tags":["Agents"],"parameters":[{"description":"The ID of the scanner to query for agents. You can find the ID by using the [GET /scanners](/reference#scanners-list) endpoint.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the agent group to query for agents. You can find the ID by using the [GET /scanners/{scanner_id}/agent-groups](/reference#agent-groups-list) endpoint.","required":true,"name":"agent_group_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The starting record to retrieve. If you omit this parameter, Tenable.io uses the default value of 0.","required":false,"name":"offset","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The number of records to retrieve. If you omit this parameter, Tenable.io uses a default of 50 records. The minimum supported limit is 1, and the maximum supported limit is 5,000.","required":false,"name":"limit","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"The sort order of the returned records. Sort can only be applied to the sortable\\_fields specified by the filter capabilities. There may be no more than max\\_sort\\_fields number of columns used in the sort, as specified by the filter capabilities. Sort is applied, in order, in the following format: `:\\[asc|desc\\],:\\[asc|desc\\]`. For example, `sort=field1:asc,field2:desc` would first sort by field1, ascending, then sort by field2, descending.","required":false,"name":"sort","in":"query","schema":{"type":"string"}},{"description":"Apply a filter in the format `::`. For example, `field1:match:sometext` would match any records where the value of field1 contains `sometext`. You can use multiple query filters.","required":false,"name":"f","in":"query","schema":{"type":"string"}},{"description":"Filter type. If the filter type is `and`, the record is only returned if all filters match. If the filter type is `or`, the record is returned if any of the filters match.","required":false,"name":"ft","in":"query","schema":{"type":"string"}},{"description":"Wildcard filter text. Wildcard search is a mechanism where multiple fields of a record are filtered against one specific filter string. If any one of the wildcard\\_fields' values matches against the filter string, then the record matches the wildcard filter. For a record to be returned, it must pass the wildcard filter (if there is one) AND the set of standard filters. For example, if `w=wild&f=field1:match:one&f=field2:match:two&ft=or`, the record would match if the value of any supported wildcard\\_fields contained `wild`, AND either field1's value contained `one` or field2's value contained `two`.","required":false,"name":"w","in":"query","schema":{"type":"string"}},{"description":"A comma-delimited subset of wildcard\\_fields to search when applying the wildcard filter. For example, `field1,field2`. If `w` is provided, but `wf` is not, then all wildcard\\_fields' values are searched against the wildcard filter text.","required":false,"name":"wf","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns a list of agents for an agent group.","content":{"application/json":{"schema":{"type":"object","properties":{"agents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the agent."},"uuid":{"type":"string","description":"The UUID of the agent. Note: This value corresponds to the ID of the asset where the agent is installed. You can use this attribute to match agent data to asset data."},"name":{"type":"string","description":"The name of the agent."},"platform":{"type":"string","description":"The platform of the agent."},"distro":{"type":"string","description":"The agent software distribution."},"ip":{"type":"string","description":"The IP address of the agent."},"last_scanned":{"type":"integer","description":"The Unix timestamp when the agent last scanned the asset."},"plugin_feed_id":{"type":"string","description":"The currently loaded plugin set of the agent (null if the agent has no plugin set loaded)."},"core_build":{"type":"string","description":"Build number for the agent."},"core_version":{"type":"string","description":"Build version for the agent."},"linked_on":{"type":"integer","description":"The Unix timestamp when the link from Tenable.io to the agent was established."},"last_connect":{"type":"integer","description":"The Unix timestamp when the agent last communicated with Tenable.io."},"status":{"type":"string","description":"\"on\", \"off\", or \"init\". \"on\" means that the agent has connected recently, and is therefore likely ready to scan. \"off\" means that the agent has not been seen recently and should be considered offline. \"init\" means that the agent is online, but it is still processing plugin updates and is not ready to scan.","enum":["on","off","init"]},"groups":{"description":"Array of groups to which the agent belongs. Groups are returned in the form {\"name\": \"group name\", \"id\": \"group id\"}.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the agent group to which the agent belongs."},"id":{"type":"integer","description":"The unique ID of the agent group to which the agent belongs."}}}}}}},"pagination":{"type":"object","properties":{"total":{"type":"integer","description":"The total number of records which match any applied filters. This number may be approximate."},"offset":{"type":"integer","description":"The index of the first record retrieved."},"limit":{"type":"integer","description":"The number of records returned with this response."},"sort":{"description":"The sorting parameters applied to response, in order of application.","type":"array","items":{"type":"string"}}}}}},"examples":{"response":{"value":{"agents":[{"id":20,"uuid":"07e496f5-d2dc-4232-9733-12e5f7d05ae3","name":"Codys-MacBook-Pro.local","platform":"DARWIN","distro":"macosx","ip":"10.31.100.110","last_scanned":1545272687,"plugin_feed_id":"201812281741","core_build":"1","core_version":"7.2.1","linked_on":1452106253,"last_connect":1546264939,"status":"off","groups":[{"name":"Agent Group A","id":8},{"name":"Agent Group B","id":31},{"name":"Agent Group C","id":3315}],"supports_remote_logs":false},{"id":65,"uuid":"22f00428-3095-d55f-e620-aa7392c862757b06b5e32a5e47a1","name":"DC02","platform":"WINDOWS","distro":"win-x86-64","ip":"10.31.114.10","last_scanned":1478743235,"plugin_feed_id":"0","linked_on":1453821446,"status":"off","groups":[{"name":"Agent Group A","id":8},{"name":"Agent Group B","id":31},{"name":"Agent Group C","id":3316}],"supports_remote_logs":false},{"id":643,"uuid":"84b8e813-fad6-d1a5-e9f6-ac641d3b0b012596d192e3cf57f8","name":"DESKTOP-PSNDJQ6","platform":"WINDOWS","distro":"win-x86-64","ip":"172.16.0.3","last_scanned":1477011651,"plugin_feed_id":"0","linked_on":1468619962,"status":"off","groups":[{"name":"Agent Group A","id":8},{"name":"Agent Group C","id":3316}],"supports_remote_logs":false}],"pagination":{"total":3,"limit":50,"offset":0,"sort":[{"name":"name","order":"asc"}]}}}}}}},"400":{"description":"Returned if you specify invalid query parameters, for example:\n- invalid filter field name\n- invalid filter operator\n- invalid filter value\n- invalid wildcard filter field name\n- invalid filter type\n- invalid sort parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"The description of the cause of the Tenable.io error."}}},"examples":{"response":{"value":{"error":"Bad value for date filter"}}}}}},"403":{"description":"Returned if you do not have permission to view the list."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agents/{agent_id}":{"get":{"summary":"Get agent details","description":"Returns the specified agent details for the specified scanner.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agents-get","tags":["Agents"],"parameters":[{"description":"The ID of the scanner to query for agents.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the agent to query.","required":true,"name":"agent_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the agent details.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"The unique ID of the agent."},"uuid":{"type":"string","description":"The UUID of the agent. Note: This value corresponds to the ID of the asset where the agent is installed. You can use this attribute to match agent data to asset data."},"name":{"type":"string","description":"The name of the agent."},"platform":{"type":"string","description":"The platform of the agent."},"distro":{"type":"string","description":"The agent software distribution."},"ip":{"type":"string","description":"The IP address of the agent."},"last_scanned":{"type":"integer","description":"The Unix timestamp when the agent last scanned the asset."},"plugin_feed_id":{"type":"string","description":"The currently loaded plugin set of the agent (null if the agent has no plugin set loaded)."},"core_build":{"type":"string","description":"Build number for the agent."},"core_version":{"type":"string","description":"Build version for the agent."},"linked_on":{"type":"integer","description":"The Unix timestamp when the link from Tenable.io to the agent was established."},"last_connect":{"type":"integer","description":"The Unix timestamp when the agent last communicated with Tenable.io."},"status":{"type":"string","description":"\"on\", \"off\", or \"init\". \"on\" means that the agent has connected recently, and is therefore likely ready to scan. \"off\" means that the agent has not been seen recently and should be considered offline. \"init\" means that the agent is online, but it is still processing plugin updates and is not ready to scan.","enum":["on","off","init"]},"groups":{"description":"Array of groups to which the agent belongs. Groups are returned in the form {\"name\": \"group name\", \"id\": \"group id\"}.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the agent group to which the agent belongs."},"id":{"type":"integer","description":"The unique ID of the agent group to which the agent belongs."}}}}}},"examples":{"response":{"value":{"id":643,"uuid":"84b8e813-fad6-d1a5-e9f6-ac641d3b0b012596d192e3cf57f8","name":"DESKTOP-PSNDJQ6","platform":"WINDOWS","distro":"win-x86-64","ip":"172.204.81.57","last_scanned":1477011651,"plugin_feed_id":"0","linked_on":1468619962,"status":"off","groups":[{"name":"CodyAgents","id":8},{"name":"Agent Group A","id":3316}]}}}}}},"403":{"description":"Returned if you do not have permission to view the agent."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete agent","description":"Deletes an agent.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"agents-delete","tags":["Agents"],"parameters":[{"description":"The ID of the scanner.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the agent to delete.","required":true,"name":"agent_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if Tenable.io succesfully deleted the agent.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"404":{"description":"Returned if Tenable.io cannot find the specified agent."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to delete the agent.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agent-groups/{group_id}/agents/_bulk/add":{"post":{"summary":"Add agents to group","description":"Creates a bulk operation task to add agents to a group.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"bulk-add-agents","tags":["Agent Bulk Operations"],"parameters":[{"description":"The ID of the scanner for the agent group.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID or UUID of the agent group.","required":true,"name":"group_id","in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"items":{"type":"string"},"description":"Array of agent IDs or UUIDs to add to the group","type":"array"}},"required":["items"]},"example":{"items":[20,10,65]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully creates the bulk operation task.","content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"type":"string","description":"The UUID of the task."},"container_uuid":{"type":"string","description":"The UUID of the container where the task is operating."},"status":{"type":"string","description":"State of the task. \"NEW\" means that the task was created, but has not yet started running. \"RUNNING\" means that the task is in progress. \"COMPLETED\" means that the task is done. \"FAILED\" means that there was an error completing the task. \"STALE\" means that the task has not been updated in a long time.","enum":["NEW","RUNNING","COMPLETED","FAILED","STALE"]},"message":{"type":"string","description":"An informative, human-readable message about the state of the task."},"start_time":{"type":"integer","description":"Start time of the task in unix time milliseconds."},"end_time":{"type":"integer","description":"End time of the task in unix time milliseconds, if the task is finished."},"last_update_time":{"type":"integer","description":"Last time progress was made on executing the task in unix time milliseconds."},"total_work_units":{"type":"integer","description":"Total amount of work which the task will attempt to complete."},"total_work_units_completed":{"type":"integer","description":"Total amount of work that the task has completed."},"completion_percentage":{"type":"integer","description":"total_work_units_completed divided by total_work_units."}}},"examples":{"response":{"value":{"task_id":"14a27fad-8a0e-4769-ac87-4da6370a871a","container_uuid":"5043dfa2-7864-4785-aff7-80026f36efcb","status":"RUNNING","message":"Starting...","start_time":1544032287496,"last_update_time":1544032287501,"total_work_units":3,"total_work_units_completed":0,"completion_percentage":0}}}}}},"400":{"description":"Returned if your request message contains an invalid parameter."},"403":{"description":"Returned if you do not have permission to create a bulk operation task."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to create the bulk operation task.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agent-groups/{group_id}/agents/_bulk/{task_uuid}":{"get":{"summary":"Check agent group operation status","description":"Check the status of a bulk operation on an agent group.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"bulk-task-agent-group-status","tags":["Agent Bulk Operations"],"parameters":[{"description":"The ID of the scanner for the agent group.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID or UUID of the agent group.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The UUID of the task","required":true,"name":"task_uuid","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the bulk operation task status information.","content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"type":"string","description":"The UUID of the task."},"container_uuid":{"type":"string","description":"The UUID of the container where the task is operating."},"status":{"type":"string","description":"State of the task. \"NEW\" means that the task was created, but has not yet started running. \"RUNNING\" means that the task is in progress. \"COMPLETED\" means that the task is done. \"FAILED\" means that there was an error completing the task. \"STALE\" means that the task has not been updated in a long time.","enum":["NEW","RUNNING","COMPLETED","FAILED","STALE"]},"message":{"type":"string","description":"An informative, human-readable message about the state of the task."},"start_time":{"type":"integer","description":"Start time of the task in unix time milliseconds."},"end_time":{"type":"integer","description":"End time of the task in unix time milliseconds, if the task is finished."},"last_update_time":{"type":"integer","description":"Last time progress was made on executing the task in unix time milliseconds."},"total_work_units":{"type":"integer","description":"Total amount of work which the task will attempt to complete."},"total_work_units_completed":{"type":"integer","description":"Total amount of work that the task has completed."},"completion_percentage":{"type":"integer","description":"total_work_units_completed divided by total_work_units."}}},"examples":{"response":{"value":{"task_id":"14a27fad-8a0e-4769-ac87-4da6370a871a","container_uuid":"5043dfa2-7864-4785-aff7-80026f36efcb","status":"COMPLETED","message":"3 items completed, 0 failed.","start_time":1544032287496,"last_update_time":1544032287521,"end_time":1544032287521,"total_work_units":3,"total_work_units_completed":3,"completion_percentage":100}}}}}},"403":{"description":"Returned if you do not have permission to view the bulk operation task."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agents/_bulk/{task_uuid}":{"get":{"summary":"Check agent operation status","description":"Check the status of a bulk operation on agents.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"bulk-task-agent-status","tags":["Agent Bulk Operations"],"parameters":[{"description":"The ID of the scanner for the agent group.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The UUID of the task","required":true,"name":"task_uuid","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the bulk operation task status information.","content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"type":"string","description":"The UUID of the task."},"container_uuid":{"type":"string","description":"The UUID of the container where the task is operating."},"status":{"type":"string","description":"State of the task. \"NEW\" means that the task was created, but has not yet started running. \"RUNNING\" means that the task is in progress. \"COMPLETED\" means that the task is done. \"FAILED\" means that there was an error completing the task. \"STALE\" means that the task has not been updated in a long time.","enum":["NEW","RUNNING","COMPLETED","FAILED","STALE"]},"message":{"type":"string","description":"An informative, human-readable message about the state of the task."},"start_time":{"type":"integer","description":"Start time of the task in unix time milliseconds."},"end_time":{"type":"integer","description":"End time of the task in unix time milliseconds, if the task is finished."},"last_update_time":{"type":"integer","description":"Last time progress was made on executing the task in unix time milliseconds."},"total_work_units":{"type":"integer","description":"Total amount of work which the task will attempt to complete."},"total_work_units_completed":{"type":"integer","description":"Total amount of work that the task has completed."},"completion_percentage":{"type":"integer","description":"total_work_units_completed divided by total_work_units."}}},"examples":{"response":{"value":{"task_id":"14a27fad-8a0e-4769-ac87-4da6370a871a","container_uuid":"5043dfa2-7864-4785-aff7-80026f36efcb","status":"COMPLETED","message":"3 items completed, 0 failed.","start_time":1544032287496,"last_update_time":1544032287521,"end_time":1544032287521,"total_work_units":3,"total_work_units_completed":3,"completion_percentage":100}}}}}},"403":{"description":"Returned if you do not have permission to view the bulk operation task."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agent-groups/{group_id}/agents/_bulk/remove":{"post":{"summary":"Remove agents from group","description":"Creates a bulk operation task to remove agents from a group.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"bulk-remove-agents","tags":["Agent Bulk Operations"],"parameters":[{"description":"The ID of the scanner for the agent group.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID or UUID of the agent group.","required":true,"name":"group_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"items":{"type":"string"},"description":"Array of agent IDs or UUIDs to remove from the group","type":"array"}},"required":["items"]},"example":{"items":[20,10,65]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully creates the bulk operation task.","content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"type":"string","description":"The UUID of the task."},"container_uuid":{"type":"string","description":"The UUID of the container where the task is operating."},"status":{"type":"string","description":"State of the task. \"NEW\" means that the task was created, but has not yet started running. \"RUNNING\" means that the task is in progress. \"COMPLETED\" means that the task is done. \"FAILED\" means that there was an error completing the task. \"STALE\" means that the task has not been updated in a long time.","enum":["NEW","RUNNING","COMPLETED","FAILED","STALE"]},"message":{"type":"string","description":"An informative, human-readable message about the state of the task."},"start_time":{"type":"integer","description":"Start time of the task in unix time milliseconds."},"end_time":{"type":"integer","description":"End time of the task in unix time milliseconds, if the task is finished."},"last_update_time":{"type":"integer","description":"Last time progress was made on executing the task in unix time milliseconds."},"total_work_units":{"type":"integer","description":"Total amount of work which the task will attempt to complete."},"total_work_units_completed":{"type":"integer","description":"Total amount of work that the task has completed."},"completion_percentage":{"type":"integer","description":"total_work_units_completed divided by total_work_units."}}},"examples":{"response":{"value":{"task_id":"de5a64f6-b391-4aef-b0bc-1249fdb9750d","container_uuid":"5043dfa2-7864-4785-aff7-80026f36efcb","status":"RUNNING","start_time":1544032937522,"last_update_time":1544032937522}}}}}},"400":{"description":"Returned if your request message contains an invalid parameter."},"403":{"description":"Returned if you do not have permission to create a bulk operation task."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to create the bulk operation task.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/scanners/{scanner_id}/agents/_bulk/unlink":{"post":{"summary":"Delete agents","description":"Creates a bulk operation task to unlink (delete) agents.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"bulk-unlink-agents","tags":["Agent Bulk Operations"],"parameters":[{"description":"The ID of the scanner to remove the agents from.","required":true,"name":"scanner_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"items":{"type":"string"},"description":"Array of agent IDs or UUIDs to unlink (delete).","type":"array"}},"required":["items"]},"example":{"items":[20,10,65]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully creates the bulk operation task.","content":{"application/json":{"schema":{"type":"object","properties":{"task_id":{"type":"string","description":"The UUID of the task."},"container_uuid":{"type":"string","description":"The UUID of the container where the task is operating."},"status":{"type":"string","description":"State of the task. \"NEW\" means that the task was created, but has not yet started running. \"RUNNING\" means that the task is in progress. \"COMPLETED\" means that the task is done. \"FAILED\" means that there was an error completing the task. \"STALE\" means that the task has not been updated in a long time.","enum":["NEW","RUNNING","COMPLETED","FAILED","STALE"]},"message":{"type":"string","description":"An informative, human-readable message about the state of the task."},"start_time":{"type":"integer","description":"Start time of the task in unix time milliseconds."},"end_time":{"type":"integer","description":"End time of the task in unix time milliseconds, if the task is finished."},"last_update_time":{"type":"integer","description":"Last time progress was made on executing the task in unix time milliseconds."},"total_work_units":{"type":"integer","description":"Total amount of work which the task will attempt to complete."},"total_work_units_completed":{"type":"integer","description":"Total amount of work that the task has completed."},"completion_percentage":{"type":"integer","description":"total_work_units_completed divided by total_work_units."}}},"examples":{"response":{"value":{"task_id":"aed90273-b535-438e-9d85-30899636bbdd","container_uuid":"5043dfa2-7864-4785-aff7-80026f36efcb","status":"NEW"}}}}}},"400":{"description":"Returned if your request message contains an invalid parameter."},"403":{"description":"Returned if you do not have permission create a bulk operation task."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to create the bulk operation task.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/assets":{"get":{"summary":"List assets","description":"Lists up to 5,000 assets.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"assets-list-assets","tags":["Assets"],"responses":{"200":{"description":"Returns a list of assets.","content":{"application/json":{"schema":{"type":"object","description":"The list of assets with details, and the total assets count.","properties":{"assets":{"type":"array","description":"A list of assets with details.","items":{"type":"object","properties":{"id":{"type":"string","description":"The UUID of the asset."},"has_agent":{"type":"boolean","description":"A value specifying whether a Nessus agent scan detected the asset (`true`)."},"last_seen":{"type":"string","description":"The ISO timestamp of the scan that most recently detected the asset."},"last_scan_target":{"type":"string","description":"The IPv4 address, IPv6 address, or FQDN that the scanner last used to evaluate the asset."},"sources":{"type":"array","description":"The sources of the scans that identified the asset.","items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the entity that reported the asset details. Sources can include sensors, connectors, and API imports. Source names can be customized by your organization (for example, you specify a name when you import asset records). If your organization does not customize source names, system-generated names include:\n - AWS—You obtained the asset data from an Amazon Web Services connector.\n - NESSUS_AGENT—You obtained the asset data obtained from a Nessus agent scan.\n - PVS—You obtained the asset data from a Nessus Network Monitor (NNM) scan.\n - NESSUS_SCAN—You obtained the asset data from a Nessus scan.\n - WAS—You obtained the asset data from a Web Application Scanning scan."},"first_seen":{"type":"string","description":"The ISO timestamp when the source first reported the asset."},"last_seen":{"type":"string","description":"The ISO timestamp when the source last reported the asset."}}}}},"acr_score":{"type":"integer","description":"The Asset Criticality Rating (ACR) for the asset. Tenable assigns an ACR to each asset on your network to represent the asset's relative risk as an integer from 1 to 10. This attribute is only present in assets if Lumin is added to your Tenable.io instance. For more information, see [Lumin Metrics](https://docs.tenble.com/Content/Analysis/LuminMetrics.htm) in the *Tenable.io Vulnerability Management User Guide*."},"acr_drivers":{"type":"array","description":"The key drivers that Tenable uses to calculate an asset's Tenable-provided ACR. This attribute is only present in assets if Lumin is added to your Tenable.io instance. For more information, see [Lumin Metrics](https://docs.tenble.com/Content/Analysis/LuminMetrics.htm) in the *Tenable.io Vulnerability Management User Guide*.","items":{"type":"object","description":"Information about an asset characteristic that factored into the ACR score calculation.","properties":{"driver_name":{"type":"string","description":"The type of characteristic."},"driver_value":{"type":"array","description":"The characteristic value.","items":{"type":"string"}}}}},"exposure_score":{"type":"integer","description":"The Asset Exposure Score (AES) for the asset. This attribute is only present in assets if Lumin is added to your Tenable.io instance. For more information, see [Lumin Metrics](https://docs.tenble.com/Content/Analysis/LuminMetrics.htm) in the *Tenable.io Vulnerability Management User Guide*."},"scan_frequency":{"type":"array","description":"Information about how often scans ran against the asset during specified intervals. This attribute is only present in assets if Lumin is added to your Tenable.io instance.","items":{"type":"object","description":"Information about how often scans ran against asset during a specified interval.","properties":{"interval":{"type":"integer","description":"The number of days over which Tenable searches for scans involving the asset."},"frequency":{"type":"integer","description":"The number of times that a scan ran against the asset during the specified interval."},"licensed":{"type":"boolean","description":"Indicates whether the asset was licensed at the time of the identified scans."}}}},"ipv4":{"description":"A list of IPv4 addresses for the asset.","type":"array","items":{"type":"string"}},"ipv6":{"description":"A list of IPv6 addresses for the asset.","type":"array","items":{"type":"string"}},"fqdn":{"description":"A list of fully-qualified domain names (FQDNs) for the asset.","type":"array","items":{"type":"string"}},"netbios_name":{"type":"array","description":"The NetBIOS name for the asset.","items":{"type":"string"}},"operating_system":{"type":"array","description":"The operating system installed on the asset.","items":{"type":"string"}},"agent_name":{"type":"array","description":"The names of any Nessus agents that scanned and identified the asset.","items":{"type":"string"}},"aws_ec2_name":{"type":"array","description":"The name of the virtual machine instance in AWS EC2.","items":{"type":"string"}},"mac_address":{"type":"array","description":"A list of MAC addresses for the asset.","items":{"type":"string"}}}}},"total":{"type":"integer","description":"The total number of assets in your Tenable.io instance."}}},"examples":{"response":{"value":{"assets":[{"id":"f56168ed-b719-4273-b58c-a340a09ffbce","has_agent":false,"last_seen":"2018-11-28T15:00:57.000Z","last_scan_target":"172.204.81.57","sources":[{"name":"NESSUS_SCAN","first_seen":"2018-11-28T15:00:57.000Z","last_seen":"2018-11-28T15:00:57.000Z"}],"acr_score":8,"acr_drivers":[{"driver_name":"device_type","driver_value":["general_purpose"]},{"driver_name":"device_capability","driver_value":["pci"]},{"driver_name":"internet_exposure","driver_value":["internal"]}],"exposure_score":753,"scan_frequency":[{"interval":90,"frequency":3,"licensed":false},{"interval":30,"frequency":1,"licensed":false},{"interval":60,"frequency":1,"licensed":false}],"ipv4":["172.204.81.57"],"ipv6":[],"fqdn":["kubernetes.ad.demo.io"],"netbios_name":["kubernetes.ad.demo.io"],"operating_system":["Linux Kernel 3.10.0-862.14.4.el7.x86_64 on CentOS Linux release 7.5.1804 (Core)"],"agent_name":[],"aws_ec2_name":[],"mac_address":[]},{"id":"ed1c8fb3-68be-4c98-b5ef-88dd30f18ee9","has_agent":false,"last_seen":"2018-11-28T15:00:57.000Z","last_scan_target":"172.204.81.58","sources":[{"name":"NESSUS_SCAN","first_seen":"2018-11-28T14:59:23.000Z","last_seen":"2018-11-28T15:00:57.000Z"}],"ipv4":["172.204.81.58"],"ipv6":[],"fqdn":["scanner.ad.demo.io"],"netbios_name":["scanner"],"operating_system":["Linux Kernel 4.4.0-104-generic on Ubuntu 16.04"],"agent_name":[],"aws_ec2_name":[],"mac_address":[]},{"id":"ee094cf6-e352-4f34-a65d-a3503b0ad199","has_agent":false,"last_seen":"2018-11-28T15:00:57.000Z","last_scan_target":"172.204.81.59","sources":[{"name":"NESSUS_SCAN","first_seen":"2018-11-28T14:59:23.000Z","last_seen":"2018-11-28T15:00:57.000Z"}],"ipv4":["172.204.81.59"],"ipv6":[],"fqdn":["shane.ad.demo.io"],"netbios_name":["SHANE"],"operating_system":["Microsoft Windows 10 Pro"],"agent_name":[],"aws_ec2_name":[],"mac_address":[]},{"id":"33e32354-7f48-488c-88a5-49a63550b62a","has_agent":false,"last_seen":"2018-11-28T15:00:57.000Z","last_scan_target":"172.204.81.60","sources":[{"name":"NESSUS_SCAN","first_seen":"2018-11-28T14:59:23.000Z","last_seen":"2018-11-28T15:00:57.000Z"}],"ipv4":["172.204.81.60"],"ipv6":[],"fqdn":["archie.ad.demo.io"],"netbios_name":["ARCHIE"],"operating_system":["Microsoft Windows 10 Pro"],"agent_name":[],"aws_ec2_name":[],"mac_address":[]}],"total":4}}}}}},"403":{"description":"Returned if you do not have permission to list assets."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/assets/{asset_uuid}":{"get":{"summary":"Get asset details","description":"Returns details of the specified asset.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"assets-asset-info","tags":["Assets"],"parameters":[{"description":"The UUID of the asset.","required":true,"name":"asset_uuid","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns details of the specified asset.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The UUID of the asset."},"has_agent":{"type":"boolean","description":"A value specifying whether a Nessus agent scan detected the asset."},"created_at":{"type":"string","description":"The time and date when Tenable.io created the asset record."},"updated_at":{"type":"string","description":"The time and date when the asset record was last updated."},"first_seen":{"type":"string","description":"The time and date when a scan first identified the asset."},"last_seen":{"type":"string","description":"The time and date of the scan that most recently identified the asset."},"last_scan_target":{"type":"string","description":"The IPv4 address, IPv6 address, or FQDN that the scanner last used to evaluate the asset."},"last_authenticated_scan_date":{"type":"string","description":"The time and date of the last credentialed scan run on the asset."},"last_licensed_scan_date":{"type":"string","description":"The time and date of the last scan that identified the asset as licensed. Tenable.io categorizes an asset as licensed if a scan of that asset has returned results from a non-discovery plugin within the last 90 days."},"sources":{"type":"array","description":"The sources of the scans that identified the asset.","items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The name of the entity that reported the asset details. Sources can include sensors, connectors, and API imports. Source names can be customized by your organization (for example, you specify a name when you import asset records). If your organization does not customize source names, system-generated names include:\n - AWS—You obtained the asset data from an Amazon Web Services connector.\n - NESSUS_AGENT—You obtained the asset data obtained from a Nessus agent scan.\n - PVS—You obtained the asset data from a Nessus Network Monitor (NNM) scan.\n - NESSUS_SCAN—You obtained the asset data from a Nessus scan.\n - WAS—You obtained the asset data from a Web Application Scanning scan."},"first_seen":{"type":"string","description":"The ISO timestamp when the source first reported the asset."},"last_seen":{"type":"string","description":"The ISO timestamp when the source last reported the asset."}}}}},"tags":{"type":"array","description":"Category tags assigned to the asset in Tenable.io.","items":{"type":"object","properties":{"tag_uuid":{"type":"string","description":"The UUID of the tag."},"tag_key":{"type":"string","description":"The tag category (the first half of the category:value pair)."},"tag_value":{"type":"string","description":"The tag value (the second half of the category:value pair)."},"added_by":{"type":"string","description":"The UUID of the user who assigned the tag to the asset."},"added_at":{"type":"string","description":"The ISO timestamp when the tag was assigned to the asset."}}}},"acr_score":{"type":"integer","description":"The Asset Criticality Rating (ACR) for the asset. Tenable assigns an ACR to each asset on your network to represent the asset's relative risk as an integer from 1 to 10. For more information, see [Lumin Metrics](https://docs.tenble.com/Content/Analysis/LuminMetrics.htm) in the *Tenable.io Vulnerability Management User Guide*."},"acr_drivers":{"type":"array","description":"The key drivers that Tenable uses to calculate an asset's Tenable-provided ACR. For more information, see [Lumin Metrics](https://docs.tenble.com/Content/Analysis/LuminMetrics.htm) in the *Tenable.io Vulnerability Management User Guide*.","items":{"type":"object","description":"Information about an asset characteristic that factored into the ACR score calculation.","properties":{"driver_name":{"type":"string","description":"The type of characteristic."},"driver_value":{"type":"array","description":"The characteristic value.","items":{"type":"string"}}}}},"exposure_score":{"type":"integer","description":"The Asset Exposure Score (AES) for the asset. For more information, see [Lumin Metrics](https://docs.tenble.com/Content/Analysis/LuminMetrics.htm) in the *Tenable.io Vulnerability Management User Guide*."},"scan_frequency":{"type":"array","description":"Information about how often scans ran against the asset during specified intervals.","items":{"type":"object","description":"Information about how often scans ran against asset during a specified interval.","properties":{"interval":{"type":"integer","description":"The number of days over which Tenable searches for scans involving the asset."},"frequency":{"type":"integer","description":"The number of times that a scan ran against the asset during the specified interval."},"licensed":{"type":"boolean","description":"Indicates whether the asset was licensed at the time of the identified scans."}}}},"network_id":{"type":"array","description":"The ID of the network object to which the asset belongs. For more information, see [Manage Networks](/docs/manage-networks-tio).","items":{"type":"string"}},"ipv4":{"type":"array","description":"The IPv4 addresses that scans have associated with the asset record.","items":{"type":"string"}},"ipv6":{"type":"array","description":"The IPv6 addresses that scans have associated with the asset record.","items":{"type":"string"}},"fqdn":{"type":"array","description":"The fully-qualified domain names that scans have associated with the asset record.","items":{"type":"string"}},"mac_address":{"type":"array","description":"The MAC addresses that scans have associated with the asset record.","items":{"type":"string"}},"netbios_name":{"type":"array","description":"The NetBIOS names that scans have associated with the asset record.","items":{"type":"string"}},"operating_system":{"type":"array","description":"The operating systems that scans have associated with the asset record.","items":{"type":"string"}},"system_type":{"type":"array","description":"The system types as reported by Plugin ID 54615. Possible values include `router`, `general-purpose`, `scan-host`, and `embedded`.","items":{"type":"string"}},"hostname":{"type":"array","description":"The hostnames that scans have associated with the asset record.","items":{"type":"string"}},"agent_name":{"type":"array","description":"The names of any Nessus agents that scanned and identified the asset.","items":{"type":"string"}},"bios_uuid":{"type":"array","description":"The BIOS UUID that scans have associated with the asset.","items":{"type":"string"}},"aws_ec2_instance_id":{"type":"array","description":"The unique identifier of the Linux instance in Amazon EC2. For more information, see the Amazon Elastic Compute Cloud Documentation.","items":{"type":"string"}},"aws_ec2_instance_ami_id":{"type":"array","description":"The unique identifier of the Linux AMI image in Amazon Elastic Compute Cloud (Amazon EC2). For more information, see the Amazon Elastic Compute Cloud Documentation.","items":{"type":"string"}},"aws_owner_id":{"type":"array","description":"The canonical user identifier for the AWS account associated with the virtual machine instance. For example, `79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be`. For more information, see AWS Account Identifiers in the AWS documentation.","items":{"type":"string"}},"aws_availability_zone":{"type":"array","description":"The availability zone where Amazon Web Services hosts the virtual machine instance, for example, `us-east-1a`. Availability zones are subdivisions of AWS regions. For more information, see Regions and Availability Zones in the AWS documentation.","items":{"type":"string"}},"aws_region":{"type":"array","description":"The region where AWS hosts the virtual machine instance, for example, `us-east-1`. For more information, see Regions and Availability Zones in the AWS documentation.","items":{"type":"string"}},"aws_vpc_id":{"type":"array","description":"The unique identifier for the public cloud that hosts the AWS virtual machine instance. For more information, see the Amazon Virtual Private Cloud User Guide.","items":{"type":"string"}},"aws_ec2_instance_group_name":{"type":"array","description":"The virtual machine instance's group in AWS.","items":{"type":"string"}},"aws_ec2_instance_state_name":{"type":"array","description":"The state of the virtual machine instance in AWS at the time of the scan.","items":{"type":"string"}},"aws_ec2_instance_type":{"type":"array","description":"The type of instance in AWS EC2.","items":{"type":"string"}},"aws_subnet_id":{"type":"array","description":"The unique identifier of the AWS subnet where the virtual machine instance was running at the time of the scan.","items":{"type":"string"}},"aws_ec2_product_code":{"type":"array","description":"The product code associated with the AMI used to launch the virtual machine instance in AWS EC2.","items":{"type":"string"}},"aws_ec2_name":{"type":"array","description":"The name of the virtual machine instance in AWS EC2.","items":{"type":"string"}},"azure_vm_id":{"type":"array","description":"The unique identifier of the Microsoft Azure virtual machine instance. For more information, see \"Accessing and Using Azure VM Unique ID\" in the Microsoft Azure documentation.","items":{"type":"string"}},"azure_resource_id":{"type":"array","description":"The unique identifier of the resource in the Azure Resource Manager. For more information, see the Azure Resource Manager Documentation.","items":{"type":"string"}},"gcp_project_id":{"type":"array","description":"The customized name of the project to which the virtual machine instance belongs in Google Cloud Platform (GCP). For more information, see \"Creating and Managing Projects\" in the GCP documentation.","items":{"type":"string"}},"gcp_zone":{"type":"array","description":"The zone where the virtual machine instance runs in GCP. For more information, see \"Regions and Zones\" in the GCP documentation.","items":{"type":"string"}},"gcp_instance_id":{"type":"array","description":"The unique identifier of the virtual machine instance in GCP.","items":{"type":"string"}},"ssh_fingerprint":{"type":"array","description":"The SSH key fingerprints that scans have associated with the asset record.","items":{"type":"string"}},"mcafee_epo_guid":{"type":"array","description":"The unique identifier of the asset in McAfee ePolicy Orchestrator (ePO). For more information, see the McAfee documentation.","items":{"type":"string"}},"mcafee_epo_agent_guid":{"type":"array","description":"The unique identifier of the McAfee ePO agent that identified the asset. For more information, see the McAfee documentation.","items":{"type":"string"}},"qualys_asset_id":{"type":"array","description":"The Asset ID of the asset in Qualys. For more information, see the Qualys documentation.","items":{"type":"string"}},"qualys_host_id":{"type":"array","description":"The Host ID of the asset in Qualys. For more information, see the Qualys documentation.","items":{"type":"string"}},"servicenow_sysid":{"type":"array","description":"The unique record identifier of the asset in ServiceNow. For more information, see the ServiceNow documentation.","items":{"type":"string"}},"installed_software":{"type":"array","description":"A list of Common Platform Enumeration (CPE) values that represent software applications a scan identified as present on an asset. This attribute supports the CPE 2.2 format. For more information, see the \"Component Syntax\" section of the [CPE Specification, Version 2.2](https://cpe.mitre.org/files/cpe-specification_2.2.pdf). For assets identified in Tenable scans, this attribute contains data only if a scan using [Nessus Plugin ID 45590](https://www.tenable.com/plugins/nessus/45590) has evaluated the asset.\n\n**Note:** If no scan detects an application within 30 days of the scan that originally detected the application, Tenable.io considers the detection of that application expired. As a result, the next time a scan evaluates the asset, Tenable.io removes the expired application from the installed_software attribute. This activity is logged as a `remove` type of `attribute_change` update in the asset activity log.","items":{"type":"string"}}}},"examples":{"response":{"value":{"id":"e60cf974-5b18-4ad1-aa1e-c897e46bd683","has_agent":false,"created_at":"2018-11-28T15:00:42.659Z","updated_at":"2018-11-28T17:28:46.984Z","first_seen":"2018-11-28T15:00:25.000Z","last_seen":"2018-11-28T17:28:28.000Z","last_scan_target":"172.204.81.57","last_authenticated_scan_date":null,"last_licensed_scan_date":"2018-11-28T17:28:28.000Z","sources":[{"name":"NESSUS_SCAN","first_seen":"2018-11-28T15:00:25.000Z","last_seen":"2018-11-28T17:28:28.000Z"}],"tags":[],"acr_score":8,"acr_drivers":[{"driver_name":"device_type","driver_value":["general_purpose"]},{"driver_name":"device_capability","driver_value":["pci"]},{"driver_name":"internet_exposure","driver_value":["internal"]}],"exposure_score":753,"scan_frequency":[{"interval":90,"frequency":3,"licensed":false},{"interval":30,"frequency":1,"licensed":false},{"interval":60,"frequency":1,"licensed":false}],"network_id":["00000000-0000-0000-0000-000000000000"],"ipv4":["172.204.81.57"],"ipv6":[],"fqdn":[],"mac_address":["00:50:56:a6:4c:0a"],"netbios_name":[],"operating_system":["Linux Kernel 3.10, Linux Kernel 3.5, Linux Kernel 3.8, Linux Kernel 3.9"],"system_type":["general-purpose"],"tenable_uuid":[],"hostname":[],"agent_name":[],"bios_uuid":[],"aws_ec2_instance_id":[],"aws_ec2_instance_ami_id":[],"aws_owner_id":[],"aws_availability_zone":[],"aws_region":[],"aws_vpc_id":[],"aws_ec2_instance_group_name":[],"aws_ec2_instance_state_name":[],"aws_ec2_instance_type":[],"aws_subnet_id":[],"aws_ec2_product_code":[],"aws_ec2_name":[],"azure_vm_id":[],"azure_resource_id":[],"gcp_project_id":[],"gcp_zone":[],"gcp_instance_id":[],"ssh_fingerprint":[],"mcafee_epo_guid":[],"mcafee_epo_agent_guid":[],"qualys_asset_id":[],"qualys_host_id":[],"servicenow_sysid":[],"installed_software":["cpe:/a:apple:itunes:12.8","cpe:/a:apple:quicktime:7.7.3","cpe:/a:openbsd:openssh:6.9","cpe:/a:google:chrome"],"bigfix_asset_id":[]}}}}}},"403":{"description":"Returned if you do not have permission to view information about an asset."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/api/v2/assets/bulk-jobs/acr":{"post":{"summary":"Update ACR","description":"Overwrites the Tenable-provided Asset Criticality Rating (ACR) for the specified assets. Tenable assigns an ACR to each asset on your network to represent the asset's relative risk as an integer from 1 to 10. For more information about ACR, see [Lumin metrics](http://docs.tenable.com/cloud/Content/Analysis/LuminMetrics.htm) in the *Tenable.io Vulnerability Management User Guide*.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"assets-bulk-update-acr","tags":["Assets"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"type":"object","required":["acr_score","asset"],"description":"Parameters to update the ACR for an asset. For a request body example, see \"Update ACR for assets\" in [Bulk Asset Operations](/docs/bulk-asset-operations).","properties":{"acr_score":{"type":"integer","description":"The ACR score you want to assign to the asset. The ACR must be an integer from 1 to 10. "},"reason":{"type":"array","description":"The reasons you are updating the ACR for the assets. Supported values include:\n\n - Business Critical\n - In Scope For Compliance\n - Existing Mitigation Control\n - Dev only \n - Key drivers does not match \n - Other\n\nThis parameter corresponds to the **Overwrite Reasoning** parameter when editing an ACR in the Tenable.io Lumin user interface. For more information, see [Edit an ACR](https://docs.tenable.com/cloud/Content/Analysis/LuminEditACR.htm).","items":{"type":"string","enum":["Business Critical","In Scope For Compliance","Existing Mitigation Control","Dev only","Key drivers does not match","Other"]}},"note":{"type":"string","description":"Any notes you want to add to clarify the circumstances behind the update. This parameter corresponds to the **Note** parameter when editing an ACR in the Tenable.io Lumin user interface. For more information, see [Edit an ACR](https://docs.tenable.com/cloud/Content/Analysis/LuminEditACR.htm). "},"asset":{"type":"array","description":"The identifiers of the assets to update to the specified ACR. At least one asset object is required in this array.","items":{"type":"object","description":"Each object can contain a single instance of the properties described below. You can combine multiple instances of this object, each containing a different single property.","properties":{"id":{"type":"string","description":"The UUID for a specific asset."},"fqdn":{"type":"array","description":"Fully-qualified domain names (FQDNs) associated with the asset or assets.","items":{"type":"string"}},"mac_address":{"type":"array","description":"MAC addresses associated with the asset or assets.","items":{"type":"string"}},"netbios_name":{"type":"string","description":"The NetBIOS name for the asset."},"ipv4":{"type":"array","description":"IPv4 addresses associated with the asset or assets.","items":{"type":"string"}}}}}}}}}}},"responses":{"202":{"description":"Returned if Tenable.io successfully queues the update request."},"404":{"description":"Returned if your request is improperly formatted."}},"security":[{"cloud":[]}]}},"/api/v2/assets/bulk-jobs/move-to-network":{"post":{"summary":"Move assets","description":"Moves assets from the specified network to another network. You can use this endpoint to move assets from the default network to a user-defined network, from a user-defined network to the default network, and from one user-defined network to another user-defined network. This request creates an asynchronous job in Tenable.io.\n\nFor information about the assets move workflow and payload examples, see [Bulk Asset Operations](/docs/bulk-asset-operations).

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"assets-bulk-move","tags":["Assets"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["source","destination","targets"],"description":"The parameters for moving assets from one network to another.","properties":{"source":{"type":"string","example":"00000000-0000-0000-0000-000000000000","description":"The UUID of the network currently associated with the assets. Use the [GET /networks](/reference#networks-list) endpoint with the name attribute as filter to find the UUID of the network."},"destination":{"type":"string","description":"The UUID of the network to associate with the specified assets. Use the [GET /networks](/reference#networks-list) endpoint with the name filter to find the UUID of the network. ","example":"11f04eb9-7c78-46c8-9025-fae048390f59"},"targets":{"type":"string","description":"The IPv4 addresses of the assets to move. The addresses can be represented as a comma-separated list, a range, or CIDR, for example `1.1.1.1, 2.2.2.2-2.2.2.200, 3.3.3.0/24`.","example":"172.204.81.57-172.204.81.69"}}}}}},"responses":{"202":{"description":"Returns the number of moved assets.","content":{"application/json":{"schema":{"type":"object","description":"Bulk operations results. Contains the number of assets affected by the operation (moved or deleted).","properties":{"asset_count":{"type":"integer","description":"The number of assets affected by the operation. "}}},"examples":{"response":{"value":{"data":{"asset_count":512}}}}}}},"400":{"description":"Returned if Tenable.io cannot find the specified assets."},"403":{"description":"Returned if you do not have permission to move assets."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/api/v2/assets/bulk-jobs/delete":{"post":{"summary":"Bulk delete assets","description":"Deletes the specified assets. This request creates an asynchronous delete job in Tenable.io.\n\nFor information about the assets bulk delete workflow and payload examples, see [Bulk Asset Operations](/docs/bulk-asset-operations).

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"assets-bulk-delete","tags":["Assets"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"The query for selecting the assets to delete. Must include one or more filters. A filter must include an asset attribute, an operator, and a value. To get the list of supported filters, use the [GET /filters/workbenches/assets](/reference#filters-assets-filter) endpoint. Sets of multiple filters must be specified inside `and` or `or` arrays.\n\n**Note:** You can also nest conditions, for example, specify a set of `or` sub-conditions for a condition inside the `and` array.","properties":{"field":{"type":"string","description":"The name of the asset attribute to match. Asset attributes can include tags, for example, `tag.city`."},"operator":{"type":"string","description":"The operator to apply to the matched value, for example, `eq` (equals), `neq` (does not equal), or `contains`."},"value":{"type":"string","description":"The asset attribute value to match."},"and":{"type":"array","description":"To select assets that match all of multiple conditions, specify the conditions inside the `and` array.","items":{"type":"object","description":"The query for selecting the assets to delete. Includes an asset attribute, an operator, and a value. To get the list of supported filters, use the [GET /filters/workbenches/assets](/reference#filters-assets-filter) endpoint.","properties":{"field":{"type":"string","description":"The name of the asset attribute to match. Asset attributes can include tags, for example, `tag.city`."},"operator":{"type":"string","description":"The operator to apply to the matched value, for example, `eq` (equals), `neq` (does not equal), or `contains`."},"value":{"type":"string","description":"The asset attribute value to match."}}}},"or":{"type":"array","description":"To select assets that match any of multiple conditions, specify the conditions inside the `or` array.","items":{"type":"object","description":"The query for selecting the assets to delete. Includes an asset attribute, an operator, and a value. To get the list of supported filters, use the [GET /filters/workbenches/assets](/reference#filters-assets-filter) endpoint.","properties":{"field":{"type":"string","description":"The name of the asset attribute to match. Asset attributes can include tags, for example, `tag.city`."},"operator":{"type":"string","description":"The operator to apply to the matched value, for example, `eq` (equals), `neq` (does not equal), or `contains`."},"value":{"type":"string","description":"The asset attribute value to match."}}}}}}}}},"responses":{"202":{"description":"Returns the number of deleted assets.","content":{"application/json":{"schema":{"type":"object","description":"Bulk operations results. Contains the number of assets affected by the operation (moved or deleted).","properties":{"asset_count":{"type":"integer","description":"The number of assets affected by the operation. "}}},"examples":{"response":{"value":{"data":{"asset_count":512}}}}}}},"400":{"description":"Returned if you specify an invalid asset query, for example, using a malformed IPv4 address."},"403":{"description":"Returned if you do not have permission to delete assets in bulk."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"503":{"description":"Returned if Tenable.io is unavailable or not ready to process the request. Wait a moment and try your request again."}},"security":[{"cloud":[]}]}},"/import/assets":{"post":{"summary":"Import assets","description":"Imports asset data in JSON format.\n\nThe request size cannot exceed 5 MB. For example, if the average asset record you want to import is about 2 KB, you can import approximately 2,500 assets in a single request.\n\n**Note:** This endpoint does not support the network_id attribute in asset objects for import. Tenable.io automatically assigns imported assets to the default network object. For more information about network objects, see [Manage Networks](/docs/manage-networks-tio).

Requires SCAN OPERATOR [24] user permissions and CAN CONFIGURE [64] scan permissions. See Permissions.

","operationId":"assets-import","tags":["Assets"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assets":{"type":"array","description":"An array of asset objects to import. Each asset object requires a value for at least one of the following properties: fqdn, ipv4, netbios\\_name, mac\\_address.\n\nFor an example of this request body, see [Add Asset Data to Tenable.io](/docs/add-asset-data-to-tenableio). For the complete list of importable asset attributes, see [Common Asset Attributes](/docs/common-asset-attributes#section-asset-attribute-definitions).","example":"[{\"ipv4\":\"172.204.81.57\",\"operating_system\":\"Windows 7 x64\"}]","items":{"type":"object","properties":{"mac_address":{"type":"array","description":"A list of MAC addresses for the asset.","items":{"type":"string"}},"netbios_name":{"type":"string","description":"The NetBIOS name for the asset."},"fqdn":{"type":"array","description":"A list of FQDNs for the asset.","items":{"type":"string"}},"ip_address":{"type":"array","description":"A list of IPv4 addresses for the asset. Tenable.io supports this legacy field for backwards compatibility, but for new requests, this field should be replaced by the ipv4 field.","items":{"type":"string"}},"ipv4":{"type":"array","description":"A list of IPv4 addresses for the asset.","items":{"type":"string"}},"ipv6":{"type":"array","description":"A list of IPv6 addresses for the asset.","items":{"type":"string"}},"hostname":{"type":"array","description":"A list of hostnames for the asset.","items":{"type":"string"}},"operating_system":{"type":"string","description":"The operating system installed on the asset."},"ssh_fingerprint":{"type":"string","description":"The SSH key fingerprints that scans have associated with the asset record."},"bios_uuid":{"type":"string","description":"The BIOS UUID of the asset."},"manufacturer_tpm_id":{"type":"string","description":"The manufacturer's unique identifier of the Trusted Platform Module (TPM) associated with the asset."},"mcafee_epo_guid":{"type":"string","description":"The unique identifier of the asset in McAfee ePolicy Orchestrator (ePO). For more information, see the McAfee documentation."},"mcafee_epo_agent_guid":{"type":"string","description":"The unique identifier of the McAfee ePO agent that identified the asset. For more information, see the McAfee documentation."},"symantec_ep_hardware_key":{"type":"string","description":"The hardware key for the asset in Symantec Endpoint Protection."},"qualys_asset_id":{"type":"string","description":"The Asset ID of the asset in Qualys. For more information, see the Qualys documentation."},"qualys_host_id":{"type":"string","description":"The Host ID of the asset in Qualys. For more information, see the Qualys documentation."},"servicenow_sys_id":{"type":"string","description":"The unique record identifier of the asset in ServiceNow. For more information, see the ServiceNow documentation."},"gcp_project_id":{"type":"string","description":"The customized name of the project to which the virtual machine instance belongs in Google Cloud Platform (GCP). For more information see \"Creating and Managing Projects\" in the GCP documentation."},"gcp_zone":{"type":"string","description":"The zone where the virtual machine instance runs in GCP. For more information, see \"Regions and Zones\" in the GCP documentation."},"gcp_instance_id":{"type":"string","description":"The unique identifier of the virtual machine instance in GCP."},"azure_vm_id":{"type":"string","description":"The unique identifier of the Microsoft Azure virtual machine instance. For more information, see \"Accessing and Using Azure VM Unique ID\" in the Microsoft Azure documentation."},"azure_resource_id":{"type":"string","description":"The unique identifier of the resource in the Azure Resource Manager. For more information, see the Azure Resource Manager Documentation."},"aws_availability_zone":{"type":"string","description":"The availability zone where Amazon Web Services hosts the virtual machine instance, for example, `us-east-1a`. Availability zones are subdivisions of AWS regions. For more information, see \"Regions and Availability Zones\" in the AWS documentation."},"aws_ec2_instance_id":{"type":"string","description":"The unique identifier of the Linux instance in Amazon EC2. For more information, see the Amazon Elastic Compute Cloud Documentation."},"aws_ec2_instance_ami_id":{"type":"string","description":"The unique identifier of the Linux AMI image in Amazon Elastic Compute Cloud (Amazon EC2). For more information, see the Amazon Elastic Compute Cloud Documentation."},"aws_ec2_instance_group_name":{"type":"string","description":"The virtual machine instance's group in AWS."},"aws_ec2_instance_state_name":{"type":"string","description":"The state of the virtual machine instance in AWS at the time of the scan."},"aws_ec2_instance_type":{"type":"string","description":"The type of instance in AWS EC2."},"aws_ec2_name":{"type":"string","description":"The name of the virtual machine instance in AWS EC2."},"aws_ec2_product_code":{"type":"string","description":"The product code associated with the AMI used to launch the virtual machine instance in AWS EC2."},"aws_owner_id":{"type":"string","description":"The canonical user identifier for the AWS account associated with the asset. For more information, see \"AWS Account Identifiers\" in the AWS documentation."},"aws_region":{"type":"string","description":"The region where AWS hosts the virtual machine instance, for example, `us-east-1`. For more information, see \"Regions and Availability Zones\" in the AWS documentation."},"aws_subnet_id":{"type":"string","description":"The unique identifier of the AWS subnet where the virtual machine instance was running at the time of the scan."},"aws_vpc_id":{"type":"string","description":"The unique identifier of the public cloud that hosts the AWS virtual machine instance. For more information, see the Amazon Virtual Private Cloud User Guide."},"installed_software":{"type":"array","description":"A list of Common Platform Enumeration (CPE) values that represent software applications a scan identified as present on an asset. The strings in this array must be valid CPE 2.2 values. For more information, see the \"Component Syntax\" section of the [CPE Specification, Version 2.2](https://cpe.mitre.org/files/cpe-specification_2.2.pdf).\n\n**Note:** If no scan detects an application within 30 days of the scan that originally detected the application, Tenable.io considers the detection of that application expired. As a result, the next time a scan evaluates the asset, Tenable.io removes the expired application from the installed_software attribute. This activity is logged as a `remove` type of `attribute_change` update in the asset activity log.","items":{"type":"string"}},"bigfix_asset_id":{"type":"array","items":{"type":"string"},"description":"The unique identifiers of the asset in IBM BigFix. For more information, see the IBM BigFix documentation."}}}},"source":{"type":"string","description":"A user-defined name for the source of the asset records you want to import.","example":"Custom Import"}},"required":["assets","source"]}}}},"responses":{"200":{"description":"Returns the import job UUID.","content":{"application/json":{"schema":{"type":"object","properties":{"asset_import_job_uuid":{"type":"string","description":"The asset import job UUID."}}},"examples":{"response":{"value":{"asset_import_job_uuid":"a90cf974-7b14-4ad1-aa1e-b897e46af689"}}}}}},"400":{"description":"Returned if you submitted a bad request."},"403":{"description":"Returned if you do not have permission to import assets."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/import/asset-jobs":{"get":{"summary":"List asset import jobs","description":"Lists asset import jobs.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"assets-list-import-jobs","tags":["Assets"],"responses":{"200":{"description":"Returns a list of asset import jobs.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"job_id":{"type":"string","description":"The UUID of the asset import job."},"container_id":{"type":"string","description":"The UUID of your Tenable.io container."},"source":{"type":"string","description":"A name for the source of the asset records that you define in the asset import request."},"batches":{"type":"integer","description":"The number of batches in the asset import job.","format":"int32"},"uploaded_assets":{"type":"integer","description":"The number of assets from the import job that Tenable.io successfully imported.","format":"int32"},"failed_assets":{"type":"integer","description":"The number of assets from the import job that Tenable.io failed to import."},"start_time":{"type":"integer","description":"The Unix timestamp when Tenable.io started processing the import job.","format":"int32"},"last_update_time":{"type":"integer","description":"The Unix timestamp when Tenable.io performed an action on the import job.","format":"int32"},"end_time":{"type":"integer","description":"The Unix timestamp when Tenable.io completed processing the import job.","format":"int32"},"status":{"type":"string","description":"The status of the import job. Possible values include: COMPLETED, ERROR."},"status_message":{"type":"string","description":"The description of why a job failed."}}}},"examples":{"response":{"value":{"asset_import_jobs":[{"job_id":"fd7646b5-2c7a-433e-8f2b-f3281b7726ef","container_id":"36f234c4-4ae3-4353-9324-8ad3dcc7fcc5","source":"test1","batches":1,"uploaded_assets":0,"failed_assets":0,"start_time":1544480303548,"last_update_time":1544484511492,"end_time":1544484511492,"status":"ERROR","status_message":"Job failed by exceeding time limit"},{"job_id":"15759fd1-3483-4467-b04f-1bff11141c37","container_id":"36f234c4-4ae3-4353-9324-8ad3dcc7fcc5","source":"test2","batches":1,"uploaded_assets":0,"failed_assets":0,"start_time":1544480429785,"last_update_time":1544484511496,"end_time":1544484511496,"status":"ERROR","status_message":"Job failed by exceeding time limit"}]}}}}}},"403":{"description":"Returned if you do not have permission to list asset import jobs."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/import/asset-jobs/{asset_import_job_uuid}":{"get":{"summary":"Get import job information","description":"Gets information about the specified import job.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"assets-import-job-info","tags":["Assets"],"parameters":[{"description":"The UUID of the asset import job.","required":true,"name":"asset_import_job_uuid","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns information about the specified import job.","content":{"application/json":{"schema":{"type":"object","properties":{"job_id":{"type":"string","description":"The UUID of the asset import job."},"container_id":{"type":"string","description":"The UUID of your Tenable.io container."},"source":{"type":"string","description":"A name for the source of the asset records that you define in the asset import request."},"batches":{"type":"integer","description":"The number of batches in the asset import job.","format":"int32"},"uploaded_assets":{"type":"integer","description":"The number of assets from the import job that Tenable.io successfully imported.","format":"int32"},"failed_assets":{"type":"integer","description":"The number of assets from the import job that Tenable.io failed to import."},"start_time":{"type":"integer","description":"The Unix timestamp when Tenable.io started processing the import job.","format":"int32"},"last_update_time":{"type":"integer","description":"The Unix timestamp when Tenable.io performed an action on the import job.","format":"int32"},"end_time":{"type":"integer","description":"The Unix timestamp when Tenable.io completed processing the import job.","format":"int32"},"status":{"type":"string","description":"The status of the import job. Possible values include: COMPLETED, ERROR."},"status_message":{"type":"string","description":"The description of why a job failed."}}},"examples":{"response":{"value":{"job_id":"fd7646b5-2c7a-433e-8f2b-f3281b7726ef","container_id":"36f234c4-4ae3-4353-9324-8ad3dcc7fcc5","source":"test","batches":1,"uploaded_assets":0,"failed_assets":0,"start_time":1544480303548,"last_update_time":1544480303569,"end_time":1544480303548,"status":"IN_PROGRESS","status_message":"Example message."}}}}}},"403":{"description":"Returned if you do not have permission to list asset import jobs."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/audit-log/v1/events":{"get":{"summary":"View audit log","description":"This endpoint requests a list of events. Events can include the following:\n - audit.log.view—The system received and processed an audit-log request.\n - session.create—The system created a session for the user. This event can be triggered by user login or authentication using an API key.\n - session.delete—The session expired, or the user ended the session.\n - session.impersonation.end—An administrator ended a session where they impersonated another user.\n - session.impersonation.start—An administrator started a session where they impersonated another user.\n - user.authenticate.api-keys—The user authenticated a session start using an API key.\n - user.authenticate.mfa—The two-factor authentication challenge was successful, and login allowed.\n - user.authenticate.password—The user authenticated a session start using a password.\n - user.create—An administrator created a new user account.\n - user.delete—An administrator deleted the user account.\n - user.impersonation.end—An administrator stopped impersonating another user.\n - user.impersonation.start—An administrator started impersonating another user.\n - user.logout—The user logged out of the session.\n - user.update—Either an administrator or the user updated the user account.\n\nYou can specify various filters to limit the events that are returned, as well as the number of events. By default, a maximum of 50 events is returned.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"audit-log-events","tags":["Audit Log"],"parameters":[{"description":"A filter condition in the `field.operator:value` format. Filter conditions can include:\n* date.gt:<YYYY-MM-DD>—Tenable.io returns events only if the date when the events occurred is after the date you specify. For example: `f=date.gt:2017-12-31`\n* date.lt:<YYYY-MM-DD>—Tenable.io returns events only if the date when the events occurred is before the date you specify. For example: `f=date.lt:2017-12-31`\n* actor_id.match:<UUID>—Tenable.io returns only the events with a matching actor UUID. For example: `f=actor_id.match:6000a811-8422-4096-83d3-e4d44f44b97d`\n* target_id.match:<UUID>—Tenable.io returns only the events with a matching target UUID. For example: `f=target_id.match:6000a811-8422-4096-83d3-e4d44f44b97d`\n\nYou can specify multiple `f` parameters, separated by ampersand (&) characters. For example: `?f=date.gt:2018-12-31&f=date.lt:2019-06-01&f=actor_id.match:50f84b7f-d1d3-4182-bb46-79cf5c51812e&limit=5000`","required":false,"name":"f","in":"query","schema":{"type":"string"}},{"description":"Sets the limit for how many events Tenable.io should return by the call. By default, this value is 50. For example: `limit=5000`","required":false,"name":"limit","in":"query","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the audit log.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The unique ID of the event."},"action":{"type":"string","description":"The action that was taken by the user."},"crud":{"type":"string","description":"Indicates whether the action taken was creating (c), reading (r), updating (u), or deleting (d) an entity."},"is_failure":{"type":"boolean","description":"Indicates whether the action the user took succeeded or failed. Tenable.io logs an event regardless of whether a user action succeeds."},"received":{"type":"string","description":"The date and time the event occured in ISO 8601 format."},"description":{"type":"string","description":"A description of the event."},"actor":{"type":"object","properties":{"id":{"type":"string","description":"The UUID of the user that took the action."},"name":{"type":"string","description":"The username of the user that took the action."}}},"is_anonymous":{"type":"boolean","description":"Indicates whether the action was performed anonymously."},"target":{"type":"object","properties":{"id":{"type":"string","description":"The UUID of the target entity. For example, a user UUID."},"name":{"type":"string","description":"The name of the target entity. For example, a username."},"type":{"type":"string","description":"The type of entity that was the target of the action. For example, a user."}}},"fields":{"type":"object","properties":{"pair":{"type":"object","properties":{"key":{"type":"string","description":"A key. The exact string varies based on the action that was taken."},"value":{"type":"string","description":"A value that corresponds to a key. The value varies based on the request of the action that was taken."}}}}}}}},"examples":{"response":{"value":{"events":[{"id":"a4e9177aa45c48c9d46a2f24c5f97b24","action":"user.authenticate.password","crud":"u","is_failure":true,"received":"2018-08-06T23:09:40Z","description":null,"actor":{"id":"50f84b7f-d1d3-4182-bb46-79cf5c51806e","name":"user2@example.com"},"is_anonymous":null,"target":{"id":"50f84b7f-d1d3-4182-bb46-79cf5c51806e","name":"user2@example.com","type":"User"},"fields":[{"key":"message","value":"Invalid credentials."},{"key":"sessionToken","value":"-"},{"key":"X-Forwarded-For","value":"172.204.81.57, 172.204.81.57"},{"key":"X-Request-Uuid","value":"71a6630e83148694260ad838ddff5dce:dd19f39e7ec84ba80dec:8d7f958f8c3b770767af"}]},{"id":"9ed34e87d3474ff985759d14ss703e4c","action":"session.create","crud":"c","is_failure":false,"received":"2018-08-06T23:33:01Z","description":null,"actor":{"id":null,"name":null},"is_anonymous":true,"target":{"id":"50f84b7f-d1d3-4182-bb46-79cf5c51816e","name":"user2@example.com","type":"User"},"fields":[{"key":"X-Access-Type","value":"Created by username"}]},{"id":"dca7681afaf24048baff7b4e90b668d7","action":"session.delete","crud":"d","is_failure":false,"received":"2018-08-06T23:40:57Z","description":null,"actor":{"id":"50f84b7f-d1d3-4182-bb46-79cf5c51816e","name":"user2@example.com"},"is_anonymous":null,"target":{"id":"bcce340","name":null,"type":"Session"},"fields":[{"key":"message","value":"session timeout"}]},{"id":"a2498a85cb5740a28e532814c0ba8369","action":"user.impersonation.start","crud":"u","is_failure":false,"received":"2018-08-14T09:23:12Z","description":null,"actor":{"id":"92907192-57db-407e-98ff-053de7f12bab","name":"monitoring@example.com"},"is_anonymous":null,"target":{"id":"50f84b7f-d1d3-4182-bb46-79cd5c51806e","name":"user2@example.com","type":"User"},"fields":[{"key":"sessionToken","value":"-"},{"key":"X-Access-Type","value":"apikey"},{"key":"X-Forwarded-For","value":"172.204.81.57"},{"key":"X-Request-Uuid","value":"63e024e7fe25ed24ce1c7142781527ac:43cf99b77f783a962a1a"}]},{"id":"eaac53481de04f67bc7eeea07d2fb0f5","action":"session.delete","crud":"d","is_failure":false,"received":"2018-08-08T01:40:07Z","description":null,"actor":{"id":"50f84b7f-d1d3-4182-bb46-79cf9c51806e","name":"user2@example.com"},"is_anonymous":null,"target":{"id":"12d024e","name":null,"type":"Session"},"fields":[{"key":"message","value":"session timeout"}]}],"pagination":{"total":5,"limit":50}}}}}}},"403":{"description":"Returned if you do not have permission to view the audit log."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/credentials":{"post":{"summary":"Create managed credential","description":"Creates a managed credential object that you can use when configuring and running scans. You can grant other users the permission to use the managed credential object in scans and to edit the managed credential configuration.

Requires BASIC [16] user permissions. See Permissions.

","operationId":"credentials-create","tags":["Credentials"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"The name of the managed credential. This name must be unique within your Tenable.io instance.","type":"string"},"description":{"description":"The description of the managed credential object.","type":"string"},"type":{"description":"The type of credential object. For a list of supported credential types, use the GET /credentials/types endpoint.","type":"string"},"settings":{"description":"The configuration settings for the credential. The parameters of this object vary depending on the credential type. For more information, see [Determine Settings for a Credential Type](/docs/determine-settings-for-credential-type).","type":"object","properties":{}},"permissions":{"description":"A list of user permissions for the managed credential.","type":"array","items":{"type":"object","properties":{"grantee_uuid":{"type":"string","description":"The UUID of the user or user group granted permissions for the managed credential. \n\nThis parameter is required when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential."},"type":{"type":"string","description":"A value specifying whether the grantee is a user (`user`) or a user group (`group`). \n\nThis parameter is required when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential.","enum":["user","group"]},"permissions":{"type":"integer","description":"A value specifying the permissions granted to the user or user group for the credential. Possible values are:\n - 32—The user can view credential information and use the credential in scans. Corresponds to the **Can Use** permission in the user interface.\n - 64—The user can view and edit credential settings, delete the credential, and use the credential in scans. Corresponds to the **Can Edit** permission in the user interface. \n\nThis parameter is required when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential."},"name":{"type":"string","description":"The name of the user or user group that you want to grant permissions for the managed credential. \n\nThis parameter is optional when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential."}}}}},"required":["name","type","settings","permissions"]},"example":{"name":"Windows devices (Headquarters)","description":"Use for scans of Windows devices located at headquarters.","type":"Windows","settings":{"domain":"","username":"user@example.com","auth_method":"Password","password":"aJ^deq34Rc"},"permissions":[{"grantee_uuid":"08d242c3-9553-4ccc-835d-0c17ed942cdq","type":"user","permissions":64,"name":"user@example.com"}]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully creates a managed credential object.","content":{"application/json":{"schema":{"type":"object","properties":{"uuid":{"type":"string","description":"The UUID of the new managed credential object."}}},"examples":{"response":{"value":{"uuid":"cc43b17c-ee05-4369-95f7-af8f9bd8cad1"}}}}}},"400":{"description":"Returned if Tenable.io encounters invalid JSON in request body."},"401":{"description":"Returned if Tenable.io cannot authenticate the user account that submitted the request."},"403":{"description":"Returned if you do not have permission to create managed credential objects."},"409":{"description":"Returned if a managed credential object with the same name already exists."},"415":{"description":"Returned if the request payload is in an unsupported format."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io encountered an internal server error. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}},"503":{"description":"Returned if a Tenable.io service is unavailable. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":503,"error":"Service Unavailable","message":"Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"List managed credentials","description":"Lists managed credentials where you have been assigned at least CAN USE (32) permissions. \n\n**Note:** This endpoint does not list scan-specific or policy-specific credentials (that is, credentials stored in either a scan or a policy). To view a list of scan-specific or policy-specific credentials, use the editor details endpoint (GET /editor/{type}/{id}).

Requires CAN USE [32] credential permissions. See Permissions.

","operationId":"credentials-list","tags":["Credentials"],"parameters":[{"description":"A filter condition in the following format: `field:operator:value`. For managed credentials, you can only filter on the `name` field, using the following operators: \n* eq—The name of the returned credential is equal to the text you specify. \n* neq—The returned list of managed credentials excludes the credential object where the name is equal to the text you specify. \n* match—The returned list includes managed credentials where the name contains the text you specify at least partially.\n\nYou can specify multiple `f` parameters, separated by ampersand (&) characters. If you specify multiple `f` parameters, use the `ft` parameter to specify how Tenable.io applies the multiple filter conditions.","required":false,"name":"f","in":"query","schema":{"type":"string"}},{"description":"The operator that Tenable.io applies if multiple \\`f\\` parameters are present. The `OR` operator is the only supported value. If you omit this parameter and multiple `f` parameters are present, Tenable.io applies the `OR` operator by default.","required":false,"name":"ft","in":"query","schema":{"type":"string"}},{"description":"Maximum number of objects requested (or service imposed limit if not in request). Must be in the int32 format.","required":false,"name":"limit","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"Offset from request (or zero). Must be in the int32 format.","required":false,"name":"offset","in":"query","schema":{"type":"integer","format":"int32"}},{"description":"An array of objects specifyfing the sort order for the returned data.","required":false,"name":"sort","in":"query","schema":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The field on which Tenable.io sorts the results."},"order":{"type":"string","description":"The direction of the sort order. Supported values are `asc` (ascending) and `desc` (descending)."}}}}},{"description":"The UUID of a scan owner. This parameter limits the returned data to managed credentials assigned to scans owned by the specified user.","name":"referrer_owner_uuid","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns a list of managed credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","description":"The UUID of the managed credential object."},"name":{"type":"string","description":"The name of the managed credential object. You specify the name when you create or update the managed credential."},"description":{"type":"string","description":"The definition of the managed credential object. You can specify the description when you create or update the managed credential."},"category":{"type":"object","properties":{"id":{"type":"string","description":"The system name that uniquely identifies the credential category."},"name":{"type":"string","description":"The display name for the credential category in the user interface."}}},"type":{"type":"object","properties":{"id":{"type":"string","description":"The system name that uniquely identifies the credential type."},"name":{"type":"string","description":"The display name for the credential type in the user interface."}}},"created_date":{"type":"string","description":"The date (in Unix time) when the managed credential object was created."},"created_by":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the user who created the credential."},"display_name":{"type":"string","description":"The name of the user who created the credential."}}},"last_used_by":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the user who last used the credential in a scan."},"display_name":{"type":"string","description":"The name of the user who last used the credential in a scan."}}},"permissions":{"type":"integer","description":"A value specifying the permissions granted to the user or user group for the credential. For possible values, see \"Credential Roles\" in Permissions."},"user_permissions":{"type":"integer","description":"The permissions for the managed credential that are assigned to the user account submitting the API request. For possible values, see \"Credential Roles\" in Permissions."}}}},"pagination":{"type":"object","properties":{"total":{"type":"integer","description":"The total number of objects matching your search criteria. Must be in the int32 format."},"limit":{"type":"integer","description":"Maximum number of objects requested (or service imposed limit if not in request). Must be in the int32 format."},"offset":{"type":"integer","description":"Offset from request (or zero). Must be in the int32 format."},"sort":{"description":"An array of objects representing the fields you specified as sort fields in the request message, which Tenable.io uses to sort the returned data.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The field on which Tenable.io sorts the results."},"order":{"type":"string","description":"The direction of the sort order. Supported values are `asc` (ascending) and `desc` (descending)."}}}}}}}},"examples":{"response":{"value":{"credentials":[{"uuid":"aa43b17c-ee05-4369-95f7-af8f9bd8cad0","name":"Windows devices (Headquarters)","description":"Use for scans of Windows devices located at headquarters.","category":{"id":"Host","name":"Host"},"type":{"id":"Windows","name":"Windows"},"created_date":1551295980,"created_by":{"id":15,"display_name":"user@example.com"},"last_used_by":{"id":null,"display_name":null},"permission":32,"user_permissions":32}],"pagination":{"total":1,"limit":50,"offset":0,"sort":[{"name":"created_date","order":"desc"}]}}}}}}},"400":{"description":"Returned if the query parameters in your request were invalid."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"503":{"description":"Returned if a Tenable.io service is unavailable. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":503,"error":"Service Unavailable","message":"Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/credentials/{uuid}":{"get":{"summary":"Get managed credential details","description":"Returns details of the specified managed credential object.

Requires CAN USE [32] credential permissions. See Permissions.

","operationId":"credentials-details","tags":["Credentials"],"parameters":[{"description":"The UUID of the managed credential for which you want to view details.","required":true,"name":"uuid","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the details of the specified managed credential object.","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the managed credential object. You specify the name when you create or update the managed credential."},"description":{"type":"string","description":"The definition of the managed credential object. You specify the description when you create or update the managed credential."},"category":{"type":"object","properties":{"id":{"type":"string","description":"The system name that uniquely identifies the credential category."},"name":{"type":"string","description":"The display name for the credential category in the user interface."}}},"type":{"type":"object","properties":{"id":{"type":"string","description":"The system name that uniquely identifies the credential type."},"name":{"type":"string","description":"The display name for the credential type in the user interface."}}},"ad_hoc":{"type":"boolean","description":"A value specifying how a user creates a managed credential in the user interface. If `true`, the user created the credential during the scan configuration. If `false`, the user created the credential independently from scan configuration."},"user_permissions":{"type":"integer","description":"The permissions for the managed credential that are assigned to the user account submitting the API request. For possible values, see \"Credential Roles\" in Permissions."},"settings":{"description":"The configuration settings for the credential. The parameters of this object vary depending on the credential type. For more information, see [Determine Settings for a Credential Type](/docs/determine-settings-for-credential-type).","type":"object","properties":{}},"permissions":{"type":"array","items":{"type":"object","properties":{"grantee_uuid":{"type":"string","description":"The UUID of the user or user group granted permissions for the managed credential. \n\nThis parameter is required when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential."},"type":{"type":"string","description":"A value specifying whether the grantee is a user (`user`) or a user group (`group`). \n\nThis parameter is required when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential.","enum":["user","group"]},"permissions":{"type":"integer","description":"A value specifying the permissions granted to the user or user group for the credential. Possible values are:\n - 32—The user can view credential information and use the credential in scans. Corresponds to the **Can Use** permission in the user interface.\n - 64—The user can view and edit credential settings, delete the credential, and use the credential in scans. Corresponds to the **Can Edit** permission in the user interface. \n\nThis parameter is required when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential."},"name":{"type":"string","description":"The name of the user or user group that you want to grant permissions for the managed credential. \n\nThis parameter is optional when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential."}}}}}},"examples":{"response":{"value":{"name":"Windows devices (Headquarters)","description":"Use for scans of Windows devices located at headquarters.","category":{"id":"Host","name":"Host"},"type":{"id":"Windows","name":"Windows"},"ad_hoc":false,"user_permissions":64,"settings":{"domain":"","username":"user@example.com","auth_method":"Password","password":"********"},"permissions":[{"grantee_uuid":"e7fcb50b-1330-4a8c-b8e5-ee00ec8c56f8","type":"user","permissions":64,"name":"user1@tenable.com"},{"grantee_uuid":"08d242c3-9557-4ccc-835d-0c17ed942cde","type":"user","permissions":64,"name":"user2@example.com"},{"grantee_uuid":"9be14fe3-16f4-49e3-a015-234b8918b8de","type":"user","permissions":32,"name":"user3@example.com"}]}}}}}},"403":{"description":"Returned if you do not have sufficient permissions to view the specified managed credential object."},"404":{"description":"Returned if Tenable.io cannot find a managed credential object with the specified UUID."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"503":{"description":"Returned if a Tenable.io service is unavailable. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":503,"error":"Service Unavailable","message":"Please wait a moment and try your request again."}}}}}},"504":{"description":"Returned if Tenable.io is unavailable. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":504,"error":"Gateway Timeout","message":"Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"put":{"summary":"Update managed credential","description":"Updates a managed credential object. \n\n**Note:** You cannot use this endpoint to update the credential type. If you create a managed credential with the incorrect type, create a new managed credential with the correct credential type, and delete the incorrect managed credential.

Requires CAN EDIT [64] credential permissions. See Permissions.

","operationId":"credentials-update","tags":["Credentials"],"parameters":[{"description":"The UUID of the managed credential object you want to update.","required":true,"name":"uuid","in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"The new name of the managed credential object. This name must be unique within your Tenable.io instance.","type":"string"},"description":{"description":"The new description of the managed credential object.","type":"string"},"ad_hoc":{"description":"A value specifying if the credential is managed (`false`) versus stored in a scan or policy configuration (`true`). You can only set this parameter from `true` to `false`. You cannot set this parameter to `true`. If you omit this parameter, the value defaults to `false`.","type":"boolean"},"settings":{"description":"The configuration settings for the credential. The parameters of this object vary depending on the credential type. For more information, see [Determine Settings for a Credential Type](/docs/determine-settings-for-credential-type).","type":"object","properties":{}},"permissions":{"description":"User permissions for the managed credential.","type":"array","items":{"type":"object","properties":{"grantee_uuid":{"type":"string","description":"The UUID of the user or user group granted permissions for the managed credential. \n\nThis parameter is required when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential."},"type":{"type":"string","description":"A value specifying whether the grantee is a user (`user`) or a user group (`group`). \n\nThis parameter is required when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential.","enum":["user","group"]},"permissions":{"type":"integer","description":"A value specifying the permissions granted to the user or user group for the credential. Possible values are:\n - 32—The user can view credential information and use the credential in scans. Corresponds to the **Can Use** permission in the user interface.\n - 64—The user can view and edit credential settings, delete the credential, and use the credential in scans. Corresponds to the **Can Edit** permission in the user interface. \n\nThis parameter is required when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential."},"name":{"type":"string","description":"The name of the user or user group that you want to grant permissions for the managed credential. \n\nThis parameter is optional when assigning CAN USE (32) or CAN EDIT (64) permissions for a managed credential."}}}}},"required":["settings","permissions"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully updates the managed credential object.","content":{"application/json":{"schema":{"type":"object","properties":{"updated":{"type":"boolean"}}},"examples":{"response":{"value":{"updated":true}}}}}},"400":{"description":"Returned if Tenable.io encounters invalid JSON in the request body."},"401":{"description":"Returned if Tenable.io cannot authenticate the user account that submitted the request."},"403":{"description":"Returned if you do not have permission to update the specified managed credential object."},"404":{"description":"Returned if Tenable.io could not find the specified managed credential object, either because the object does not exist or because the object has been deleted."},"409":{"description":"Returned if a managed credential object with the same name already exists."},"415":{"description":"Returned if the request payload is in an unsupported format."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io encountered an internal server error. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}},"503":{"description":"Returned if a Tenable.io service is unavailable. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":503,"error":"Service Unavailable","message":"Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete managed credential","description":"Deletes the specified managed credential object. When you delete a managed credential object, Tenable.io also removes the credential from any scan that uses the credential.

Requires CAN EDIT [64] credential permissions. See Permissions.

","operationId":"credentials-delete","tags":["Credentials"],"parameters":[{"description":"The UUID for the managed credential object you want to delete.","required":true,"name":"uuid","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returned if Tenable.io successfully deletes the specified managed credential object.","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean"}}},"examples":{"response":{"value":{"deleted":true}}}}}},"401":{"description":"Returned if Tenable.io cannot authenticate the user account that submitted the request."},"403":{"description":"Returned if you do not have sufficient permissions to delete the specified managed credential object."},"404":{"description":"Returned if Tenable.io could not find the managed credential object you specified."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io encountered an internal server error. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}},"503":{"description":"Returned if a Tenable.io service is unavailable. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":503,"error":"Service Unavailable","message":"Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/credentials/types":{"get":{"summary":"List credential types","description":"Lists all credential types supported for managed credentials in Tenable.io. For more information about using the data returned by this endpoint to create managed credentials, see [Determine Settings for a Credential Type](/docs/determine-settings-for-credential-type).

Requires BASIC [16] user permissions. See Permissions.

","operationId":"credentials-list-credential-types","tags":["Credentials"],"responses":{"200":{"description":"Returns a list of supported credential types and associated settings.","content":{"application/json":{"schema":{"type":"object","properties":{"credentials":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The system name that uniquely identifies the category in Tenable.io."},"category":{"type":"string","description":"The display name for the category in the user interface."},"default_expand":{"type":"boolean","description":"A value specifying whether the list of credential types in the category appears as expanded by default in the user interface."},"types":{"description":"Supported configuration settings for an individual credential type.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The system name that uniquely identifies the credential type."},"name":{"type":"string","description":"The display name for the credential type in the user interface."},"max":{"type":"integer","description":"The maximum number of instances of this credential type that Tenable.io supports for an individual scan or policy."},"configuration":{"description":"The configuration settings for a credential type. For a definition of object attributes, see [Determine Settings for a Credential Type](docs/determine-settings-for-credential-type).","type":"array","items":{"type":"object","description":"The configuration settings for the credential. The parameters of this object vary depending on the credential type. For a list of possible configuration parameters, use the GET /credentials/types endpoint.","properties":{"type":{"type":"string","description":"The parameter input type. This attribute reflects how the user interface prompts for parameter input. Possible values include: \n - password—Prompts for input via text box.\n - text—Prompts for input via text box.\n - select—Prompts for input via selectable options.\n - file—Prompts user to upload file of input data.\n - toggle—Prompts user to toggle an option on or off.\n - checkbox—Prompts user to select options via checkboxes. Checkboxes can represent enabling a single option or can allow users to select from multiple, mutually-exclusive options."},"name":{"type":"string","description":"The display name for the credential configuration in the user interface."},"required":{"type":"boolean","description":"A value specifying whether the configuration parameter is required (`true`) or optional (`false`). If this attribute is absent, the parameter is optional."},"id":{"type":"string","description":"The system name for the credential parameter. Use this value as the parameter name in request messages configuring credentials."},"placeholder":{"type":"string","description":"An example of the parameter value. This value appears as example text in the user interface. \n\nThis attribute is only present for credential parameters that require text input in the user interface."},"options":{"description":"The supported options for the credential parameter.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The display name of the option in the user interface."},"id":{"type":"string","description":"The system name for the option."},"inputs":{"type":"array","description":"The additional inputs that are required if the user selects this option in the user interface. If the inputs parameter is empty (`\\[\\]`), selecting the option does not require additional user input.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of input prompt in the user interface. Possible values include:\n - password—Prompts for input via text box.\n - text—Prompts for input via text box.\n - select—Prompts for input via selectable options.\n - file—Prompts user to upload file of input data.\n - toggle—Prompts user to select one of two mutually-exclusive options in toggle format.\n - checkbox—Prompts user to select options via checkboxes. Checkboxes can represent enabling a single option or can allow users to select from multiple, mutually-exclusive options.\n - key-value— Prompts for text entry of a key-value pair via two text boxes."},"name":{"type":"string","description":"The display name of the option in the user interface."},"required":{"type":"boolean","description":"A value specifying whether the input is required (`true`) or optional (`false`)."},"placeholder":{"type":"string","description":"An example of the input value. This value appears as example text in the user interface. \n\nThis attribute is only present for credential parameters that require text input in the interface. \n\nIn cases where the input type is `key-value`, this attribute can be an array of strings."},"regex":{"type":"string","description":"A regular expression defining the valid input for the parameter in the user interface."},"hint":{"type":"string","description":"Helpful information about the input required, for example, \"PEM formatted certificate\". Hints appear in the user interface, but can contain information that is relevant to API requests."},"callback":{"type":"string","description":"Not supported as a parameter in managed credentials."},"default-row-count":{"type":"integer","description":"The number of text box rows that appear by default when the input type is `key-value`."},"hide-values":{"type":"boolean","description":"A value specifying whether the user interface hides the value by default when the input type is `key-value`. If `true`, dots appear instead of characters as you type the value in the user interface."},"id":{"type":"string","description":"The system name for the input. Use this value as the input name in request messages when configuring credentials."}}}}}}},"default":{"type":"string","description":"The option that appears as selected by default in the user interface."},"alt_ids":{"type":"string","description":"Not supported as a parameter in managed credentials."},"preferences":{"description":"Not supported as a parameter in managed credentials.","type":"array","items":{"type":"string"}}}}},"expand_settings":{"type":"boolean","description":"A value specifying whether the configuration settings appear expanded by default in the user interface."}}}}}}}}},"examples":{"response":{"value":{"credentials":[{"id":"Cloud Services","category":"Cloud Services","default_expand":false,"types":[{"id":"Amazon AWS","name":"Amazon AWS","max":1,"configuration":[{"type":"password","name":"AWS Access Key ID","required":true,"id":"access_key_id"},{"type":"password","name":"AWS Secret Key","required":true,"id":"secret_key"}],"expand_settings":true},{"id":"Microsoft Azure","name":"Microsoft Azure","max":1,"configuration":[{"type":"text","name":"Username","required":true,"id":"username"},{"type":"password","name":"Password","required":true,"id":"password"},{"type":"text","name":"Client Id","required":true,"id":"client_id"}],"expand_settings":true},{"id":"Office 365","name":"Office 365","max":1,"configuration":[{"type":"text","name":"Username","required":true,"id":"username"},{"type":"password","name":"Password","required":true,"id":"password"},{"type":"text","name":"Client Id","required":true,"id":"client_id"},{"type":"password","name":"Client Secret","required":true,"id":"client_secret"}]}]}]}}}}}},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io encountered an internal server error. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}},"503":{"description":"Returned if a Tenable.io service is unavailable. Wait a moment, and try your request again.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":503,"error":"Service Unavailable","message":"Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/credentials/file":{"post":{"summary":"Upload credentials file","description":"Uploads a file for use with a managed credential (for example, as a private key file for an SSH credential). For more information about using this file, see [Create a Managed Credential](https://developer.tenable.com/docs/create-managed-credential).

Requires BASIC [16] user permissions. See Permissions.

","operationId":"credentials-file-upload","tags":["Credentials"],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"Filedata":{"type":"string","description":"The file to upload.","format":"binary"}}}}}},"responses":{"200":{"description":"Returns the name of the successfully uploaded file.","content":{"application/json":{"schema":{"type":"object","properties":{"fileuploaded":{"type":"string","description":"The name of the uploaded file. If the file with the same name already exists, Tenable.io appends an underscore with a number, for example ssh_private_key_1.txt. Use this attribute value when referencing the file for subsequent requests."}}},"examples":{"response":{"value":{"fileuploaded":"ssh_private_key_1.txt"}}}}}},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io cannot upload the file.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/editor/{type}/{id}":{"get":{"summary":"Get configuration details","description":"Gets the configuration details for the scan or policy.

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"editor-details","tags":["Editor"],"parameters":[{"description":"The type of object (scan or policy).","required":true,"name":"type","in":"path","schema":{"type":"string","enum":["scan","policy"]}},{"description":"The unique ID of the object.","required":true,"name":"id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the object data. Note that the fields can vary depending on the template used for the scan or policy.","content":{"application/json":{"schema":{"type":"object","properties":{"uuid":{"type":"string"},"user_permissions":{"type":"integer"},"filter_attributes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The short name of the filter."},"readable_name":{"type":"string","description":"The long name of the filter."},"operators":{"description":"The comparison options for the filter.","type":"array","items":{"type":"object"}},"control":{"type":"object","properties":{"type":{"type":"string","description":"The input type (entry or dropdown)."},"readable_regest":{"type":"string","description":"The placeholder for the input."},"regex":{"type":"string","description":"A regex for checking the value of the input."},"options":{"description":"A list of options if the input is a dropdown.","type":"array","items":{"type":"object"}}}}}}},"settings":{"description":"Scan or policy settings organized into the Basic, Discovery, Assessment, Report, and Advanced configuration categories.","type":"object","properties":{"basic":{"type":"object","description":"The Basic scan settings are used to specify certain organizational and security-related aspects of the scan or policy, including the name of the scan, its targets, whether the scan is scheduled, and who has access to the scan, among other settings."},"discovery":{"type":"object","description":"The Discovery settings relate to discovery and port scanning, including port ranges and methods."},"assessment":{"type":"object","description":"You can use Assessment settings to configure how a scan identifies vulnerabilities, as well as what vulnerabilities are identified. This includes identifying malware, assessing the vulnerability of a system to brute force attacks, and the susceptibility of web applications."},"advanced":{"type":"object","description":"The Advanced settings provide increased control over scan efficiency and the operations of a scan, as well as the ability to enabled plugin debugging."}}},"credentials":{"description":"Credentials that grant the scanner access to the target system without requiring an agent. Credentialed scans can perform a wider variety of checks than non-credentialed scans, which can result in more accurate scan results. This facilitates scanning of a very large network to determine local exposures or compliance violations. You can configure credentials for Cloud Services, Database, Host, Miscellaneous, Mobile Device Management, and Plaintext Authentication.","type":"object","properties":{}},"compliance":{"description":"Plugins options enables you to select security checks by Plugin Family or individual plugins checks.","type":"object","properties":{}},"plugins":{"description":"The settings for compliance audit checks.","type":"object","properties":{}}}},"examples":{"response":{"value":{"is_was":null,"user_permissions":128,"owner":"user2@example.com","title":"Custom Scan","is_agent":null,"uuid":"ab4bacd2-05f6-425c-9d79-3ba3940ad1c24e51e1f403febe40","settings":{"basic":{"inputs":[{"type":"entry","name":"Name","id":"name","default":"KitchenSinkScan","required":true},{"type":"textarea","name":"Description","id":"description","default":null},{"type":"select","id":"include_aggregate","name":"Scan results","default":true,"options":[{"name":"Show in dashboard","value":"true"}]},{"type":"select","id":"folder_id","name":"Folder","default":9,"options":[{"name":"My Scans","id":9},{"name":"Trash","id":8}]},{"type":"select","id":"use_dashboard","name":"Dashboard","default":false,"options":[{"name":"Enabled","value":"true"},{"name":"Disabled","value":"false"}]}],"title":"Basic","groups":[{"title":"Permissions","name":"permissions","acls":[{"permissions":0,"owner":null,"display_name":null,"name":null,"id":null,"type":"default"},{"permissions":128,"owner":1,"display_name":"user2@example.com","name":"user2@example.com","id":2,"type":"user"}]}],"sections":[]}},"filter_attributes":[{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"NUMBER","type":"entry","regex":"^[0-9]+$","maxlength":18},"name":"bid","readable_name":"Bugtraq ID"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_framework_canvas","readable_name":"CANVAS Exploit Framework"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["CANVAS","D2ExploitPack","White_Phosphorus"]},"name":"canvas_package","readable_name":"CANVAS Package"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"Cert VU reference (ie: 10031)","type":"entry","regex":"^[0-9]+$","maxlength":18},"name":"cert","readable_name":"CERT Vulnerability ID"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_framework_core","readable_name":"CORE Exploit Framework"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"cpe","readable_name":"CPE"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"CVE-YYYY-ID (ie: CVE-2011-0018)","type":"entry","regex":"^(CVE|CAN)-(1999|20[01][0-9])-[0-9]{4,}$"},"name":"cve","readable_name":"CVE"},{"operators":["lt","gt","eq","neq","match","nmatch"],"control":{"readable_regex":"7.5","type":"entry","regex":"^[0-9]+(\\.[0-9]+)?$"},"name":"cvss_base_score","readable_name":"CVSS Base Score"},{"operators":["lt","gt","eq","neq","match","nmatch"],"control":{"readable_regex":"4.2","type":"entry","regex":"^[0-9]+(\\.[0-9]+)$"},"name":"cvss_temporal_score","readable_name":"CVSS Temporal Score"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":"^CVSS2#E:(U|POC|F|H|ND)/RL:(OF|T|W|U|ND)/RC:(UC|UR|C|ND)$"},"name":"cvss_temporal_vector","readable_name":"CVSS Temporal Vector"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":"^CVSS2#AV:(L|A|N)/AC:(H|M|L)/Au:(N|S|M)/C:(N|P|C)/I:(N|P|C)/A:(N|P|C)$"},"name":"cvss_vector","readable_name":"CVSS Vector"},{"operators":["lt","gt","eq","neq","match","nmatch"],"control":{"readable_regex":"7.5","type":"entry","regex":"^[0-9]+(\\.[0-9]+)?$"},"name":"cvss3_base_score","readable_name":"CVSS v3.0 Base Score"},{"operators":["lt","gt","eq","neq","match","nmatch"],"control":{"readable_regex":"4.2","type":"entry","regex":"^[0-9]+(\\.[0-9]+)$"},"name":"cvss3_temporal_score","readable_name":"CVSS v3.0 Temporal Score"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":"^CVSS:3.0/E:(U|POC|F|H|ND)/RL:(OF|T|W|U|ND)/RC:(UC|UR|C|ND)$"},"name":"cvss3_temporal_vector","readable_name":"CVSS v3.0 Temporal Vector"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":"^CVSS:3.0/AV:(N|A|L|P)/AC:(L|H)/PR:(N,L,H)/UI:(N|R)/S:(U|C)/C:(H|L|N)/I:(H|L|N)/A:(H|L|N)$"},"name":"cvss3_vector","readable_name":"CVSS v3.0 Vector"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"CWE reference (ie: 200)","type":"entry","regex":"^([0-9]+)$"},"name":"cwe","readable_name":"CWE"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"default_account","readable_name":"Default/Known Accounts"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_framework_d2_elliot","readable_name":"Elliot Exploit Framework"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"d2_elliot_name","readable_name":"Elliot Exploit Name"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_available","readable_name":"Exploit Available"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"NUMBER","type":"entry","regex":"^[0-9]+$","maxlength":18},"name":"edb-id","readable_name":"Exploit Database ID"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_framework_exploithub","readable_name":"ExploitHub"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["Exploits are available","No exploit is required","No known exploits are available"]},"name":"exploitability_ease","readable_name":"Exploitability Ease"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploited_by_malware","readable_name":"Exploited By Malware"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploited_by_nessus","readable_name":"Exploited By Nessus"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"IAVA reference (ie: 2011-A-0151)","type":"entry","regex":"^[0-9]+-[A-Za-z]-[0-9]+$"},"name":"iava","readable_name":"IAVA ID"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"IAVB reference (ie: 2011-B-0151)","type":"entry","regex":"^[0-9]+-[A-Za-z]-[0-9]+$"},"name":"iavb","readable_name":"IAVB ID"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"IAVM Severity (ie: IV)","type":"entry","regex":"^[ivIV]+"},"name":"stig_severity","readable_name":"IAVM Severity"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"IAVT reference (ie: 2011-A-0151)","type":"entry","regex":"^[0-9]+-[A-Za-z]-[0-9]+$"},"name":"iavt","readable_name":"IAVT ID"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"in_the_news","readable_name":"In The News"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"malware","readable_name":"Malware"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_framework_metasploit","readable_name":"Metasploit Exploit Framework"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"metasploit_name","readable_name":"Metasploit Name"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"MS0X-YZT","type":"entry","regex":"^MS[0-9]+-[0-9]+$"},"name":"msft","readable_name":"Microsoft Bulletin"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"NUMBER","type":"entry","regex":"^[0-9]+$","maxlength":18},"name":"osvdb","readable_name":"OSVDB ID"},{"operators":["date-lt","date-gt","date-eq","date-neq"],"control":{"readable_regex":"YYYY/MM/DD","type":"datefield","regex":"^[0-9]{4}/[0-9]{2}/[0-9]{2}$"},"name":"patch_publication_date","readable_name":"Patch Publication Date"},{"operators":["match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"description","readable_name":"Plugin Description"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"NUMBER","type":"entry","regex":"^[0-9, ]+$","maxlength":9},"name":"plugin_id","readable_name":"Plugin ID"},{"operators":["date-lt","date-gt","date-eq","date-neq"],"control":{"readable_regex":"YYYY/MM/DD","type":"datefield","regex":"^[0-9]{4}/[0-9]{2}/[0-9]{2}$"},"name":"plugin_modification_date","readable_name":"Plugin Modification Date"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"plugin_name","readable_name":"Plugin Name"},{"operators":["date-lt","date-gt","date-eq","date-neq"],"control":{"readable_regex":"YYYY/MM/DD","type":"datefield","regex":"^[0-9]{4}/[0-9]{2}/[0-9]{2}$"},"name":"plugin_publication_date","readable_name":"Plugin Publication Date"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["local","remote"]},"name":"plugin_type","readable_name":"Plugin Type"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["None","Low","Medium","High","Critical"]},"name":"risk_factor","readable_name":"Risk Factor"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"NUMBER","type":"entry","regex":"^[0-9]+$","maxlength":18},"name":"secunia","readable_name":"Secunia ID"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"see_also","readable_name":"See Also"},{"operators":["match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"solution","readable_name":"Solution"},{"operators":["match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"synopsis","readable_name":"Synopsis"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"unsupported_by_vendor","readable_name":"Unsupported By Vendor"},{"operators":["date-lt","date-gt","date-eq","date-neq"],"control":{"readable_regex":"YYYY/MM/DD","type":"datefield","regex":"^[0-9]{4}/[0-9]{2}/[0-9]{2}$"},"name":"vuln_publication_date","readable_name":"Vulnerability Publication Date"}],"name":"custom"}}}}}},"403":{"description":"Returned if you do not have permission to open the object."},"404":{"description":"Returned if Tenable.io cannot find the specified object."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/editor/{type}/templates":{"get":{"summary":"List templates","description":"Lists scan or policy templates.

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"editor-list-templates","tags":["Editor"],"parameters":[{"description":"The type of templates to retrieve (scan or policy).","required":true,"name":"type","in":"path","schema":{"type":"string","enum":["scan","policy"]}}],"responses":{"200":{"description":"Returns the template list.","content":{"application/json":{"schema":{"type":"array","description":"The list of available templates.","items":{"type":"object","description":"Templates are used to create scans or policies with predefined parameters.","properties":{"unsupported":{"type":"boolean","description":"If true, template is not supported."},"cloud_only":{"type":"boolean","description":"If true, template is only available on the cloud."},"desc":{"type":"string","description":"The description of the template."},"subscription_only":{"type":"boolean","description":"If true, the template is only available for subscribers."},"is_was":{"type":"boolean","description":"If true, the template is for Web Application Scanning."},"title":{"type":"string","description":"The long name of the template."},"is_agent":{"type":"boolean","description":"If true, the template is for agent scans."},"uuid":{"type":"string","description":"The UUID for the template."},"manager_only":{"type":"boolean","description":"If true, can only be used by manager."},"name":{"type":"string","description":"The short name of the template."}}}},"examples":{"response":{"value":{"templates":[{"unsupported":false,"cloud_only":false,"desc":"A full system scan suitable for any host.","order":null,"subscription_only":false,"is_was":null,"title":"Basic Network Scan","is_agent":null,"uuid":"731a8e52-3ea6-a291-ec0a-d2ff0619c19d7bd788d6be818b65","manager_only":false,"name":"basic"},{"unsupported":false,"cloud_only":false,"desc":"Audit systems connected via Nessus Agents.","order":null,"subscription_only":false,"is_was":null,"title":"Policy Compliance Auditing","is_agent":true,"uuid":"523c833f-e434-a05f-5a52-0c0c2c160b7cd9c901634c382c2d","manager_only":false,"name":"agent_compliance"},{"unsupported":false,"cloud_only":false,"desc":"Scan for malware on systems connected via Nessus Agents.","order":null,"subscription_only":false,"is_was":null,"title":"Malware Scan","is_agent":true,"uuid":"fc2fa8b3-028b-83e8-2ebd-4705d0de38bc621fbb0e783517bc","manager_only":false,"name":"agent_malware"}]}}}}}},"403":{"description":"Returned if you do not have permission to view the list."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/editor/{type}/templates/{template_uuid}":{"get":{"summary":"Get template details","description":"Gets details for the specified template.

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"editor-template-details","tags":["Editor"],"parameters":[{"description":"The type of template to retrieve (scan or policy).","required":true,"name":"type","in":"path","schema":{"type":"string","enum":["scan","policy"]}},{"description":"The UUID for the template.","required":true,"name":"template_uuid","in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Returns the template details. Note that the fields can vary for different template types.","content":{"application/json":{"schema":{"type":"object","properties":{"is_was":{"type":"boolean","description":"If `true`, the template is for Web Application Scanning. For Vulnerability Management, this value is always `null`."},"title":{"type":"string","description":"The long name of the template."},"name":{"type":"string","description":"The short name of the template."},"is_agent":{"type":"boolean","description":"If `true`, the template is for agent scans."},"filter_attributes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The short name of the filter."},"readable_name":{"type":"string","description":"The long name of the filter."},"operators":{"description":"The comparison options for the filter.","type":"array","items":{"type":"object"}},"control":{"type":"object","properties":{"type":{"type":"string","description":"The input type (entry or dropdown)."},"readable_regest":{"type":"string","description":"The placeholder for the input."},"regex":{"type":"string","description":"A regex for checking the value of the input."},"options":{"description":"A list of options if the input is a dropdown.","type":"array","items":{"type":"object"}}}}}}},"settings":{"description":"Scan or policy settings organized into the Basic, Discovery, Assessment, Report, and Advanced configuration categories.","type":"object","properties":{"basic":{"type":"object","description":"The Basic scan settings are used to specify certain organizational and security-related aspects of the scan or policy, including the name of the scan, its targets, whether the scan is scheduled, and who has access to the scan, among other settings."},"discovery":{"type":"object","description":"The Discovery settings relate to discovery and port scanning, including port ranges and methods."},"assessment":{"type":"object","description":"You can use Assessment settings to configure how a scan identifies vulnerabilities, as well as what vulnerabilities are identified. This includes identifying malware, assessing the vulnerability of a system to brute force attacks, and the susceptibility of web applications."},"advanced":{"type":"object","description":"The Advanced settings provide increased control over scan efficiency and the operations of a scan, as well as the ability to enabled plugin debugging."}}},"credentials":{"description":"Credentials that grant the scanner access to the target system without requiring an agent. Credentialed scans can perform a wider variety of checks than non-credentialed scans, which can result in more accurate scan results. This facilitates scanning of a very large network to determine local exposures or compliance violations. You can configure credentials for Cloud Services, Database, Host, Miscellaneous, Mobile Device Management, and Plaintext Authentication.","type":"object","properties":{}},"compliance":{"description":"Plugins options enables you to select security checks by Plugin Family or individual plugins checks.","type":"object","properties":{}},"plugins":{"description":"The settings for compliance audit checks.","type":"object","properties":{}}}},"examples":{"response":{"value":{"is_was":null,"user_permissions":null,"owner":null,"title":"Host Discovery","is_agent":null,"uuid":"bbd4f805-3966-d464-b2d1-0079eb89d69708c3a05ec2812bcf","settings":{"basic":{"inputs":[{"type":"entry","name":"Name","id":"name","required":true},{"type":"textarea","name":"Description","id":"description"},{"type":"select","id":"include_aggregate","name":"Scan results","default":true,"options":[{"name":"Keep private","value":"false"},{"name":"Show in dashboard","value":"true"}]},{"type":"select","id":"folder_id","name":"Folder","options":[{"name":"My Scans","id":9},{"name":"Trash","id":8}]},{"type":"select","id":"use_dashboard","name":"Dashboard","default":false,"options":[{"name":"Enabled","value":"true"},{"name":"Disabled","value":"false"}]},{"type":"select","id":"scanner_id","name":"Scanner","default":null,"options":[{"id":"00000000-0000-0000-0000-00000000000000000000000000001","name":"US Cloud Scanner","type":"local","network_name":"Default","linked":true,"status":"on"},{"id":"1b895828-62a9-5084-8bc5-d4864a927fb10523d1e84e3fef44","name":"AP Singapore Cloud Scanners","type":"local","network_name":"Default","linked":true,"status":"on"},{"id":"cdf44a84-b547-b66c-d997-920aa1e897cc7165fe2e344196bb","name":"Demo Scanner","type":"local","network_name":"Default","linked":true,"status":"on"},{"id":"06ab826a-301d-7829-d2c4-37f400c0f949ea8cce60f523eeef","name":"EU Frankfurt Cloud Scanners","type":"local","network_name":"Default","linked":true,"status":"on"},{"id":"15e29fb5-c378-4803-37f7-67752912247e812e6cf942b4fd2e","name":"US East Cloud Scanners","type":"local","network_name":"Default","linked":true,"status":"on"},{"id":"37b315c1-f31f-cc8e-7e78-585c609fc1d7eba88f8d1e7d24b3","name":"US West Cloud Scanners","type":"local","network_name":"Default","linked":true,"status":"on"}]},{"type":"multi_select","deprecated_by":"target_groups","id":"asset_lists","name":"Target Groups","default":[],"options":[{"acls":[{"permissions":64,"owner":null,"display_name":null,"name":null,"id":null,"type":"default"},{"permissions":128,"owner":1,"display_name":"system","name":"nessus_ms_agent","id":1,"type":"user"},{"permissions":64,"owner":0,"display_name":"user@example.com","name":"user@example.com","id":2,"type":"user"}],"default_list":0,"type":"system","members":"host.domain.com, host1.domain.com","name":"modified_test_group_yet_again_and-again","owner":"nessus_ms_agent","shared":1,"user_permissions":64,"last_modification_date":1533583518,"creation_date":1533577166,"owner_id":1,"id":13},{"acls":[{"permissions":64,"owner":null,"display_name":null,"name":null,"id":null,"type":"default"},{"permissions":128,"owner":1,"display_name":"system","name":"nessus_ms_agent","id":1,"type":"user"},{"permissions":64,"owner":0,"display_name":"user@example.com","name":"user@example.com","id":2,"type":"user"}],"default_list":0,"type":"system","members":"testtest1","name":"test group","owner":"nessus_ms_agent","shared":1,"user_permissions":64,"last_modification_date":1533580228,"creation_date":1533246042,"owner_id":1,"id":12}]},{"type":"textarea","id":"text_targets","name":"Targets","placeholder":"Example: 172.204.81.57-172.204.81.60, 172.156.65.8/24, test.com","required":true},{"type":"file","id":"file_targets","name":"Upload Targets"}],"title":"Basic","groups":[{"title":"Schedule","name":"schedule"},{"inputs":[{"type":"textarea","name":"Email Recipient(s)","placeholder":"Example: me@example.com, you@example.com"}],"title":"Notifications","name":"email","filters":[]},{"title":"Permissions","name":"permissions","acls":null}],"sections":[]},"discovery":{"inputs":null,"modes":{"id":"discovery_mode","name":"mode","type":"ui_radio","default":"Host enumeration","options":[{"desc":"","name":"Host enumeration"},{"desc":"","name":"OS Identification"},{"desc":"","name":"Port scan (common ports)"},{"desc":"","name":"Port scan (all ports)"},{"desc":"","name":"Custom"}]},"title":"Discovery","groups":[{"inputs":[{"type":"ui_checkbox","name":"Ping the remote host","id":"ping_the_remote_host","default":"yes","options":[{"inputs":null,"name":"no"},{"inputs":null,"name":"yes","sections":[{"inputs":[{"type":"checkbox","id":"fast_network_discovery","label":"Use fast network discovery","default":"no","hint":"If a host responds to ping, Nessus attempts to avoid false positives, performing additional tests to verify the response did not come from a proxy or load balancer. Fast network discovery bypasses those additional tests."}],"title":"General Settings","name":"general"},{"inputs":[{"type":"checkbox","id":"arp_ping","label":"ARP","default":"yes"},{"name":"TCP","inputs":[{"type":"medium-entry","name":"Destination ports","id":"tcp_ping_dest_ports","default":"built-in"}],"type":"ui_group","id":"tcp_ping","default":"yes"},{"name":"ICMP","inputs":[{"type":"checkbox","id":"icmp_unreach_means_host_down","label":"Assume ICMP unreachable from the gateway means the host is down","default":"no"},{"type":"medium-entry","name":"Maximum number of retries","id":"icmp_ping_retries","default":"2","regex":"^\\d+$"}],"type":"ui_group","id":"icmp_ping","default":"yes"},{"type":"checkbox","id":"udp_ping","label":"UDP","default":"no"}],"title":"Ping Methods","name":"protocols"}]}]}],"title":"Host Discovery","name":"host_discovery","sections":[{"inputs":[{"type":"checkbox","id":"scan_network_printers","label":"Scan Network Printers","default":"no"},{"type":"checkbox","id":"scan_netware_hosts","label":"Scan Novell Netware hosts","default":"no"},{"type":"checkbox","id":"scan_ot_devices","label":"Scan Operational Technology devices","default":"no"}],"title":"Fragile Devices","name":"fragile_devices"},{"inputs":[{"type":"file","name":"List of MAC addresses","id":"wol_mac_addresses","callback":"wol_mac_upload"},{"type":"medium-entry","name":"Boot time wait (in minutes)","id":"wol_wait_time","default":"5","regex":"^\\d+$"}],"title":"Wake-on-LAN","name":"wol"},{"inputs":[{"type":"radio","name":"Network Type","id":"network_type","options":["Mixed (use RFC 1918)","Private LAN","Public WAN (Internet)"],"default":"Mixed (use RFC 1918)"}],"title":"Network Type","name":"network_type"}]},{"inputs":null,"title":"Port Scanning","name":"network_discovery","sections":[{"inputs":[{"type":"checkbox","id":"unscanned_closed","label":"Consider unscanned ports as closed","default":"no"},{"type":"medium-entry","id":"portscan_range","label":"Port scan range:","default":"default"}],"title":"Ports","name":"ports"},{"inputs":[{"id":"tcp_scanner","type":"ui_group","inputs":[{"type":"radio-group","id":"tcp_firewall_detection","label":"Override automatic firewall detection","default":"Automatic (normal)","options":["Automatic (normal)","Do not detect RST rate limitation (soft)","Ignore closed ports (aggressive)","Disabled (softer)"],"optionsLabels":["","Use soft detection","Use aggressive detection","Disable detection"]}],"no_windows":true,"no_darwin":true,"default":"no","name":"TCP"},{"name":"SYN","inputs":[{"type":"radio-group","id":"syn_firewall_detection","label":"Override automatic firewall detection","default":"Automatic (normal)","options":["Automatic (normal)","Do not detect RST rate limitation (soft)","Ignore closed ports (aggressive)","Disabled (softer)"],"optionsLabels":["","Use soft detection","Use aggressive detection","Disable detection"]}],"type":"ui_group","id":"syn_scanner","default":"yes"},{"type":"checkbox","id":"udp_scanner","label":"UDP","default":"no","hint":"Due to the nature of the protocol, it is generally not possible for a port scanner to tell the difference between open and filtered UDP ports. Enabling the UDP port scanner may dramatically increase the scan time and produce unreliable results. Consider using the netstat or SNMP port enumeration options instead if possible."}],"title":"Network Port Scanners","name":"network_scanners"}]}],"sections":[]},"report":{"inputs":null,"modes":[{"desc":"","id":"default","name":"Default","default":true},{"desc":"","id":"default_output","name":"Default","default":true},{"desc":"","custom":true,"id":"custom","name":"Custom"}],"title":"Report","groups":[],"sections":[{"inputs":[{"type":"checkbox","id":"reverse_lookup","label":"Designate hosts by their DNS name","default":"no"},{"type":"checkbox","id":"log_live_hosts","label":"Display hosts that respond to ping","default":"yes"},{"type":"checkbox","id":"display_unreachable_hosts","label":"Display unreachable hosts","default":"no"}],"title":"Output","name":"report_output"}]}},"filter_attributes":[{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"NUMBER","type":"entry","regex":"^[0-9]+$","maxlength":18},"name":"bid","readable_name":"Bugtraq ID"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_framework_canvas","readable_name":"CANVAS Exploit Framework"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["CANVAS","D2ExploitPack","White_Phosphorus"]},"name":"canvas_package","readable_name":"CANVAS Package"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"Cert VU reference (ie: 10031)","type":"entry","regex":"^[0-9]+$","maxlength":18},"name":"cert","readable_name":"CERT Vulnerability ID"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_framework_core","readable_name":"CORE Exploit Framework"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"cpe","readable_name":"CPE"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"CVE-YYYY-ID (ie: CVE-2011-0018)","type":"entry","regex":"^(CVE|CAN)-(1999|20[01][0-9])-[0-9]{4,}$"},"name":"cve","readable_name":"CVE"},{"operators":["lt","gt","eq","neq","match","nmatch"],"control":{"readable_regex":"7.5","type":"entry","regex":"^[0-9]+(\\.[0-9]+)?$"},"name":"cvss_base_score","readable_name":"CVSS Base Score"},{"operators":["lt","gt","eq","neq","match","nmatch"],"control":{"readable_regex":"4.2","type":"entry","regex":"^[0-9]+(\\.[0-9]+)$"},"name":"cvss_temporal_score","readable_name":"CVSS Temporal Score"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":"^CVSS2#E:(U|POC|F|H|ND)/RL:(OF|T|W|U|ND)/RC:(UC|UR|C|ND)$"},"name":"cvss_temporal_vector","readable_name":"CVSS Temporal Vector"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":"^CVSS2#AV:(L|A|N)/AC:(H|M|L)/Au:(N|S|M)/C:(N|P|C)/I:(N|P|C)/A:(N|P|C)$"},"name":"cvss_vector","readable_name":"CVSS Vector"},{"operators":["lt","gt","eq","neq","match","nmatch"],"control":{"readable_regex":"7.5","type":"entry","regex":"^[0-9]+(\\.[0-9]+)?$"},"name":"cvss3_base_score","readable_name":"CVSS v3.0 Base Score"},{"operators":["lt","gt","eq","neq","match","nmatch"],"control":{"readable_regex":"4.2","type":"entry","regex":"^[0-9]+(\\.[0-9]+)$"},"name":"cvss3_temporal_score","readable_name":"CVSS v3.0 Temporal Score"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":"^CVSS:3.0/E:(U|POC|F|H|ND)/RL:(OF|T|W|U|ND)/RC:(UC|UR|C|ND)$"},"name":"cvss3_temporal_vector","readable_name":"CVSS v3.0 Temporal Vector"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":"^CVSS:3.0/AV:(N|A|L|P)/AC:(L|H)/PR:(N,L,H)/UI:(N|R)/S:(U|C)/C:(H|L|N)/I:(H|L|N)/A:(H|L|N)$"},"name":"cvss3_vector","readable_name":"CVSS v3.0 Vector"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"CWE reference (ie: 200)","type":"entry","regex":"^([0-9]+)$"},"name":"cwe","readable_name":"CWE"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"default_account","readable_name":"Default/Known Accounts"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_framework_d2_elliot","readable_name":"Elliot Exploit Framework"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"d2_elliot_name","readable_name":"Elliot Exploit Name"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_available","readable_name":"Exploit Available"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"NUMBER","type":"entry","regex":"^[0-9]+$","maxlength":18},"name":"edb-id","readable_name":"Exploit Database ID"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_framework_exploithub","readable_name":"ExploitHub"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["Exploits are available","No exploit is required","No known exploits are available"]},"name":"exploitability_ease","readable_name":"Exploitability Ease"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploited_by_malware","readable_name":"Exploited By Malware"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploited_by_nessus","readable_name":"Exploited By Nessus"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"IAVA reference (ie: 2011-A-0151)","type":"entry","regex":"^[0-9]+-[A-Za-z]-[0-9]+$"},"name":"iava","readable_name":"IAVA ID"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"IAVB reference (ie: 2011-B-0151)","type":"entry","regex":"^[0-9]+-[A-Za-z]-[0-9]+$"},"name":"iavb","readable_name":"IAVB ID"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"IAVM Severity (ie: IV)","type":"entry","regex":"^[ivIV]+"},"name":"stig_severity","readable_name":"IAVM Severity"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"IAVT reference (ie: 2011-A-0151)","type":"entry","regex":"^[0-9]+-[A-Za-z]-[0-9]+$"},"name":"iavt","readable_name":"IAVT ID"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"in_the_news","readable_name":"In The News"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"malware","readable_name":"Malware"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"exploit_framework_metasploit","readable_name":"Metasploit Exploit Framework"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"metasploit_name","readable_name":"Metasploit Name"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"MS0X-YZT","type":"entry","regex":"^MS[0-9]+-[0-9]+$"},"name":"msft","readable_name":"Microsoft Bulletin"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"NUMBER","type":"entry","regex":"^[0-9]+$","maxlength":18},"name":"osvdb","readable_name":"OSVDB ID"},{"operators":["date-lt","date-gt","date-eq","date-neq"],"control":{"readable_regex":"YYYY/MM/DD","type":"datefield","regex":"^[0-9]{4}/[0-9]{2}/[0-9]{2}$"},"name":"patch_publication_date","readable_name":"Patch Publication Date"},{"operators":["match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"description","readable_name":"Plugin Description"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"NUMBER","type":"entry","regex":"^[0-9, ]+$","maxlength":9},"name":"plugin_id","readable_name":"Plugin ID"},{"operators":["date-lt","date-gt","date-eq","date-neq"],"control":{"readable_regex":"YYYY/MM/DD","type":"datefield","regex":"^[0-9]{4}/[0-9]{2}/[0-9]{2}$"},"name":"plugin_modification_date","readable_name":"Plugin Modification Date"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"plugin_name","readable_name":"Plugin Name"},{"operators":["date-lt","date-gt","date-eq","date-neq"],"control":{"readable_regex":"YYYY/MM/DD","type":"datefield","regex":"^[0-9]{4}/[0-9]{2}/[0-9]{2}$"},"name":"plugin_publication_date","readable_name":"Plugin Publication Date"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["local","remote"]},"name":"plugin_type","readable_name":"Plugin Type"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["None","Low","Medium","High","Critical"]},"name":"risk_factor","readable_name":"Risk Factor"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"NUMBER","type":"entry","regex":"^[0-9]+$","maxlength":18},"name":"secunia","readable_name":"Secunia ID"},{"operators":["eq","neq","match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"see_also","readable_name":"See Also"},{"operators":["match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"solution","readable_name":"Solution"},{"operators":["match","nmatch"],"control":{"readable_regex":"TEXT","type":"entry","regex":".*"},"name":"synopsis","readable_name":"Synopsis"},{"operators":["eq","neq"],"control":{"type":"dropdown","list":["true","false"]},"name":"unsupported_by_vendor","readable_name":"Unsupported By Vendor"},{"operators":["date-lt","date-gt","date-eq","date-neq"],"control":{"readable_regex":"YYYY/MM/DD","type":"datefield","regex":"^[0-9]{4}/[0-9]{2}/[0-9]{2}$"},"name":"vuln_publication_date","readable_name":"Vulnerability Publication Date"}],"name":"discovery"}}}}}},"403":{"description":"Returned if you do not have permission to open the template."},"404":{"description":"Returned if Tenable.io cannot find the specified template."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/editor/policy/{policy_id}/families/{family_id}/plugins/{plugin_id}":{"get":{"summary":"Get plugin details","description":"Gets the details of the plugin associated with the scan or policy.

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"editor-plugin-description","tags":["Editor"],"parameters":[{"description":"The ID of the policy to look up.","required":true,"name":"policy_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the family to lookup within the policy.","required":true,"name":"family_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the plugin to lookup within the family.","required":true,"name":"plugin_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the plugin output.","content":{"application/json":{"schema":{"type":"object","properties":{"plugindescription":{"description":"The detailed information for a Tenable.io plugin.","type":"object","properties":{"severity":{"type":"string","description":"The severity level of the vulnerabilities targeted by the plugin"},"pluginname":{"type":"string","description":"The name of the plugin."},"pluginattributes":{"type":"object","description":"The attributes of the plugin, including synopsis, description, solution, and risk information."},"pluginfamily":{"type":"string","description":"The name of the plugin family."},"pluginid":{"type":"integer","description":"The ID of the plugin."}}}}},"examples":{"response":{"value":{"plugindescription":{"severity":null,"pluginname":"Ubuntu 10.04 LTS / 10.10 / 11.04 / 11.10 : clamav vulnerability (USN-1258-1)","pluginattributes":{"synopsis":"The remote Ubuntu host is missing a security-related patch.","description":"Stephane Chazelas discovered the bytecode engine of ClamAV improperly handled recursion under certain circumstances. This could allow a remote attacker to craft a file that could cause ClamAV to crash, resulting in a denial of service.\n\nNote that Tenable Network Security has extracted the preceding description block directly from the Ubuntu security advisory. Tenable has attempted to automatically clean and format it as much as possible without introducing additional issues.","risk_information":{"cvss_vector":"CVSS2#AV:N/AC:M/Au:N/C:N/I:N/A:P","risk_factor":"Medium","cvss_base_score":"4.3","cvss_temporal_score":"3.2","cvss_temporal_vector":"CVSS2#E:U/RL:OF/RC:C"},"ref_information":{"ref":[{"name":"bid","values":{"value":["50183"]},"url":"http://www.securityfocus.com/bid/"},{"name":"usn","values":{"value":["1258-1"]},"ext":"/","url":"http://www.ubuntu.com/usn/usn-"},{"name":"cve","values":{"value":["CVE-2011-3627"]},"url":"http://web.nvd.nist.gov/view/vuln/detail?vulnId="}]},"plugin_name":"Ubuntu 10.04 LTS / 10.10 / 11.04 / 11.10 : clamav vulnerability (USN-1258-1)","see_also":["https://usn.ubuntu.com/1258-1/"],"fname":"ubuntu_USN-1258-1.nasl","usn":"1258-1","plugin_information":{"plugin_version":"1.8","plugin_id":56777,"plugin_type":"local","plugin_publication_date":"2011/11/11","plugin_family":"Ubuntu Local Security Checks","plugin_modification_date":"2018/12/01"},"solution":"Update the affected libclamav6 package.","vuln_information":{"cpe":"cpe:/o:canonical:ubuntu_linux:10.04:-:lts\ncpe:/o:canonical:ubuntu_linux:10.10\ncpe:/o:canonical:ubuntu_linux:11.04\ncpe:/o:canonical:ubuntu_linux:11.10","exploitability_ease":"No known exploits are available","exploit_available":"false","patch_publication_date":"2011/11/10"}},"pluginfamily":"Ubuntu Local Security Checks","pluginid":"56777"}}}}}}},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/editor/{type}/{object_id}/audits/{file_id}":{"get":{"summary":"Download audit file","description":"Downloads the specified custom audit file associated with the scan or policy. The file ID can be found in the scan or policy details using the /editor/{type}/{object_id} endpoint.

Requires CAN EDIT [32] policy permissions. See Permissions.

","operationId":"editor-audits","tags":["Editor"],"parameters":[{"description":"The type of template to retrieve (scan or policy).","required":true,"name":"type","in":"path","schema":{"type":"string","enum":["scan","policy"]}},{"description":"The unique ID of the object.","required":true,"name":"object_id","in":"path","schema":{"type":"integer","format":"int32"}},{"description":"The ID of the file to export.","required":true,"name":"file_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the audit file.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"},"examples":{"response":{"value":"#\r\n# (C) 2013-2017 Tenable, Inc.\r\n#\r\n# This script is released under the Tenable Subscription License and\r\n# may not be used from within scripts released under another license\r\n# without authorization from Tenable Network Security, Inc.\r\n#\r\n# See the following licenses for details:\r\n#\r\n# http://static.tenable.com/prod_docs/Nessus_6_SLA_and_Subscription_Agreement.pdf\r\n#\r\n# @PROFESSIONALFEED@\r\n# $Revision: 1.0 $\r\n# $Date: 2018/01/02 $\r\n#\r\n# Description:\r\n#\r\n# This document consists of a list of general Red Hat Linux best practices as suggested by the IT-Grundschutz BSI-Standard 100-2.\r\n# Tenable has made a best effort to map the settings specified in the standard to a proprietary\r\n# .audit format that will be used by the Unix compliance module to perform the audit.\r\n#\r\n# See Also :\r\n# https://www.bsi.bund.de/cae/servlet/contentblob/471430/publicationFile/28223/standard_100-2_e_pdf.pdf\r\n# https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Grundschutz/download/it-grundschutz-kataloge_2005_pdf_en_zip.zip?__blob=publicationFile\r\n#\r\n#\r\n#BSI-100-2 Red Hat Linux 2005\r\n# [the rest of the audit spec file]..."}}}}},"403":{"description":"Returned if you do not have permission to export the audit file."},"404":{"description":"Returned if Tenable.io cannot find the specified audit file."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/exclusions":{"post":{"summary":"Create exclusion","description":"Creates a new exclusion.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"exclusions-create","tags":["Exclusions"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the exclusion."},"description":{"type":"string","description":"The description of the exclusion."},"members":{"type":"string","description":"The targets that you want excluded from scans. Specify multiple targets as a comma-separated string. Targets can be in the following formats:\n - an individual IPv4 address (192.168.1.1)\n - a range of IPv4 addresses (192.168.1.1-192.168.1.255)\n - CIDR notation (192.168.2.0/24)\n - a fully-qualified domain name (FQDN) (host.domain.com)"},"schedule":{"type":"object","description":"The schedule parameters for the exclusion.","properties":{"enabled":{"type":"boolean","description":"If `true`, the exclusion schedule is active."},"starttime":{"type":"string","description":"The start time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"endtime":{"type":"string","description":"The end time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"timezone":{"type":"string","description":"The timezone for the exclusion as returned by [scans: timezones](/reference#scans-timezones)."},"rrules":{"type":"object","description":"The recurrence rules for the exclusion.","properties":{"freq":{"type":"string","description":"The frequency of the rule (ONETIME, DAILY, WEEKLY, MONTHLY, YEARLY)."},"interval":{"type":"integer","description":"The interval of the rule."},"byweekday":{"type":"string","description":"A comma-separated string of days to repeat a WEEKLY freq rule on (SU,MO,TU,WE,TH,FR, or SA)."},"bymonthday":{"type":"integer","description":"The day of the month to repeat a MONTHLY freq rule on."}}}}},"network_id":{"type":"string","description":"The ID of the network object associated with scanners where Tenable.io applies the exclusion. The default network ID is `00000000-0000-0000-0000-000000000000`. To determine the ID of a custom network, use the [GET /networks](/reference#networks-list) endpoint. If you omit this parameter from the request message, Tenable.io automatically assigns the exclusion to the default network. For more information about network objects, see [Manage Networks](/docs/manage-networks-tio)."}},"required":["name","members"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully creates the exclusion.","content":{"application/json":{"schema":{"type":"object","properties":{"schedule":{"type":"object","description":"The schedule parameters for the exclusion.","properties":{"enabled":{"type":"boolean","description":"If `true`, the exclusion schedule is active."},"starttime":{"type":"string","description":"The start time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"endtime":{"type":"string","description":"The end time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"timezone":{"type":"string","description":"The timezone for the exclusion as returned by [scans: timezones](/reference#scans-timezones)."},"rrules":{"type":"object","description":"The recurrence rules for the exclusion.","properties":{"freq":{"type":"string","description":"The frequency of the rule (ONETIME, DAILY, WEEKLY, MONTHLY, YEARLY)."},"interval":{"type":"integer","description":"The interval of the rule."},"byweekday":{"type":"string","description":"A comma-separated string of days to repeat a WEEKLY freq rule on (SU,MO,TU,WE,TH,FR, or SA)."},"bymonthday":{"type":"integer","description":"The day of the month to repeat a MONTHLY freq rule on."}}}}},"id":{"type":"integer","description":"The unique ID of the exclusion."},"name":{"type":"string","description":"The name of the exclusion."},"description":{"type":"string","description":"The description of the exclusion."},"members":{"type":"string","description":"The targets that you want excluded from scans. Specify multiple targets as a comma-separated string. Targets can be in the following formats:\n - an individual IPv4 address (192.168.1.1)\n - a range of IPv4 addresses (192.168.1.1-192.168.1.255)\n - CIDR notation (192.168.2.0/24)\n - a fully-qualified domain name (FQDN) (host.domain.com)"},"creation_date":{"type":"integer","description":"The creation date of the exclusion in Unix time."},"network_id":{"type":"string","description":"The ID of the network object associated with scanners where Tenable.io applies the exclusion. The default network ID is `00000000-0000-0000-0000-000000000000`. For more information about network objects, see [Manage Networks](/docs/manage-networks-tio)."},"last_modification_date":{"type":"integer","description":"The last modification date for the exclusion in Unix time."}}},"examples":{"response":{"value":{"schedule":{"endtime":null,"enabled":false,"rrules":null,"timezone":null,"starttime":null},"network_id":"00000000-0000-0000-0000-000000000000","last_modification_date":1544459404,"creation_date":1544459404,"members":"192.168.1.1-192.168.1.255,192.168.2.0/24,host.domain.com","description":null,"name":"Western Region","id":1}}}}}},"400":{"description":"Returned if your request message contains invalid parameters."},"403":{"description":"Returned if you do not have permission to create an exclusion."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to create the exclusion.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"get":{"summary":"List exclusions","description":"Lists exclusions for your Tenable.io scans.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"exclusions-list","tags":["Exclusions"],"responses":{"200":{"description":"Returns the exclusions.","content":{"application/json":{"schema":{"type":"array","description":"A list of exclusion objects.","items":{"type":"object","properties":{"schedule":{"type":"object","description":"The schedule parameters for the exclusion.","properties":{"enabled":{"type":"boolean","description":"If `true`, the exclusion schedule is active."},"starttime":{"type":"string","description":"The start time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"endtime":{"type":"string","description":"The end time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"timezone":{"type":"string","description":"The timezone for the exclusion as returned by [scans: timezones](/reference#scans-timezones)."},"rrules":{"type":"object","description":"The recurrence rules for the exclusion.","properties":{"freq":{"type":"string","description":"The frequency of the rule (ONETIME, DAILY, WEEKLY, MONTHLY, YEARLY)."},"interval":{"type":"integer","description":"The interval of the rule."},"byweekday":{"type":"string","description":"A comma-separated string of days to repeat a WEEKLY freq rule on (SU,MO,TU,WE,TH,FR, or SA)."},"bymonthday":{"type":"integer","description":"The day of the month to repeat a MONTHLY freq rule on."}}}}},"id":{"type":"integer","description":"The unique ID of the exclusion."},"name":{"type":"string","description":"The name of the exclusion."},"description":{"type":"string","description":"The description of the exclusion."},"members":{"type":"string","description":"The targets that you want excluded from scans. Specify multiple targets as a comma-separated string. Targets can be in the following formats:\n - an individual IPv4 address (192.168.1.1)\n - a range of IPv4 addresses (192.168.1.1-192.168.1.255)\n - CIDR notation (192.168.2.0/24)\n - a fully-qualified domain name (FQDN) (host.domain.com)"},"creation_date":{"type":"integer","description":"The creation date of the exclusion in Unix time."},"network_id":{"type":"string","description":"The ID of the network object associated with scanners where Tenable.io applies the exclusion. The default network ID is `00000000-0000-0000-0000-000000000000`. For more information about network objects, see [Manage Networks](/docs/manage-networks-tio)."},"last_modification_date":{"type":"integer","description":"The last modification date for the exclusion in Unix time."}}}},"examples":{"response":{"value":{"exclusions":[{"schedule":{"endtime":null,"enabled":false,"rrules":null,"timezone":null,"starttime":null},"network_id":"00000000-0000-0000-0000-000000000000","last_modification_date":1544459404,"creation_date":1544459404,"members":"192.168.1.1-192.168.1.255,192.168.2.0/24,host.domain.com","description":null,"name":"Western Region","id":1}]}}}}}},"403":{"description":"Returned if you do not have permission to view the exclusions."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/exclusions/import":{"post":{"summary":"Import exclusion","description":"Import exclusions from an [exclusion import file](/docs/import-file-formats) that you have previously uploaded via the [POST /file/upload](/reference#file-upload) endpoint.\n\n**Note:** This endpoint does not support the network_id attribute in exclusion objects for import. Tenable.io automatically assigns imported exclusions to the default network object. To assign imported exclusions to a custom network, use the [PUT /exclusions/exclusion_id](/reference#exclusions-edit) endpoint after import. For more information about network objects, see [Manage Networks](/docs/manage-networks-tio).

Requires STANDARD [32] user permissions. See Permissions.

","operationId":"exclusions-import","tags":["Exclusions"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","description":"The name of the file to import as provided by the response from file: upload."}},"required":["file"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully imports the exclusion file.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to import the exclusion.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]}},"/exclusions/{exclusion_id}":{"get":{"summary":"Get exclusion details","description":"Returns exclusion details.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"exclusions-details","tags":["Exclusions"],"parameters":[{"description":"The ID of the exclusion.","required":true,"name":"exclusion_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returns the exclusion details.","content":{"application/json":{"schema":{"type":"object","properties":{"schedule":{"type":"object","description":"The schedule parameters for the exclusion.","properties":{"enabled":{"type":"boolean","description":"If `true`, the exclusion schedule is active."},"starttime":{"type":"string","description":"The start time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"endtime":{"type":"string","description":"The end time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"timezone":{"type":"string","description":"The timezone for the exclusion as returned by [scans: timezones](/reference#scans-timezones)."},"rrules":{"type":"object","description":"The recurrence rules for the exclusion.","properties":{"freq":{"type":"string","description":"The frequency of the rule (ONETIME, DAILY, WEEKLY, MONTHLY, YEARLY)."},"interval":{"type":"integer","description":"The interval of the rule."},"byweekday":{"type":"string","description":"A comma-separated string of days to repeat a WEEKLY freq rule on (SU,MO,TU,WE,TH,FR, or SA)."},"bymonthday":{"type":"integer","description":"The day of the month to repeat a MONTHLY freq rule on."}}}}},"id":{"type":"integer","description":"The unique ID of the exclusion."},"name":{"type":"string","description":"The name of the exclusion."},"description":{"type":"string","description":"The description of the exclusion."},"members":{"type":"string","description":"The targets that you want excluded from scans. Specify multiple targets as a comma-separated string. Targets can be in the following formats:\n - an individual IPv4 address (192.168.1.1)\n - a range of IPv4 addresses (192.168.1.1-192.168.1.255)\n - CIDR notation (192.168.2.0/24)\n - a fully-qualified domain name (FQDN) (host.domain.com)"},"creation_date":{"type":"integer","description":"The creation date of the exclusion in Unix time."},"network_id":{"type":"string","description":"The ID of the network object associated with scanners where Tenable.io applies the exclusion. The default network ID is `00000000-0000-0000-0000-000000000000`. For more information about network objects, see [Manage Networks](/docs/manage-networks-tio)."},"last_modification_date":{"type":"integer","description":"The last modification date for the exclusion in Unix time."}}},"examples":{"response":{"value":{"schedule":{"endtime":null,"enabled":false,"rrules":null,"timezone":null,"starttime":null},"network_id":"00000000-0000-0000-0000-000000000000","last_modification_date":1544459404,"creation_date":1544459404,"members":"192.168.1.1-192.168.1.255,192.168.2.0/24,host.domain.com","description":null,"name":"Western Region","id":1}}}}}},"403":{"description":"Returned if you do not have permission to view the exclusion."},"404":{"description":"Returned if Tenable.io cannot find the specified exclusion."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]},"put":{"summary":"Update an exclusion","description":"Updates an exclusion.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"exclusions-edit","tags":["Exclusions"],"parameters":[{"description":"The ID of the exclusion to update.","required":true,"name":"exclusion_id","in":"path","schema":{"type":"integer","format":"int32"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the exclusion."},"description":{"type":"string","description":"The description of the exclusion."},"members":{"type":"string","description":"The targets that you want excluded from scans. Specify multiple targets as a comma-separated string. Targets can be in the following formats:\n - an individual IPv4 address (192.168.1.1)\n - a range of IPv4 addresses (192.168.1.1-192.168.1.255)\n - CIDR notation (192.168.2.0/24)\n - a fully-qualified domain name (FQDN) (host.domain.com)"},"schedule":{"type":"object","description":"The schedule parameters for the exclusion.","properties":{"enabled":{"type":"boolean","description":"If `true`, the exclusion schedule is active."},"starttime":{"type":"string","description":"The start time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"endtime":{"type":"string","description":"The end time of the exclusion formatted as `YYYY-MM-DD HH:MM:SS`."},"timezone":{"type":"string","description":"The timezone for the exclusion as returned by [scans: timezones](/reference#scans-timezones)."},"rrules":{"type":"object","description":"The recurrence rules for the exclusion.","properties":{"freq":{"type":"string","description":"The frequency of the rule (ONETIME, DAILY, WEEKLY, MONTHLY, YEARLY)."},"interval":{"type":"integer","description":"The interval of the rule."},"byweekday":{"type":"string","description":"A comma-separated string of days to repeat a WEEKLY freq rule on (SU,MO,TU,WE,TH,FR, or SA)."},"bymonthday":{"type":"integer","description":"The day of the month to repeat a MONTHLY freq rule on."}}}}},"network_id":{"type":"string","description":"The ID of the network object associated with scanners where Tenable.io applies the exclusion. The default network ID is `00000000-0000-0000-0000-000000000000`. To determine the ID of a custom network, use the [GET /networks](/reference#networks-list) endpoint. For more information about network objects, see [Manage Networks](/docs/manage-networks-tio)."}}}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully modifies the exclusion.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"403":{"description":"Returned if you do not have permission to modify the exclusion."},"404":{"description":"Returned if Tenable.io cannot find the specified exclusion."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}},"500":{"description":"Returned if Tenable.io fails to change the exclusion.","content":{"application/json":{"examples":{"response":{"value":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred. Please wait a moment and try your request again."}}}}}}},"security":[{"cloud":[]}]},"delete":{"summary":"Delete an exclusion","description":"Deletes an exclusion.

Requires SCAN MANAGER [40] user permissions. See Permissions.

","operationId":"exclusions-delete","tags":["Exclusions"],"parameters":[{"description":"The ID of the exclusion to delete.","required":true,"name":"exclusion_id","in":"path","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"Returned if Tenable.io successfully deletes the exclusion.","content":{"application/json":{"schema":{},"examples":{"response":{"value":{}}}}}},"403":{"description":"Returned if you do not have permission to delete the exclusion."},"404":{"description":"Returned if Tenable.io cannot find the specified exclusion."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/vulns/export":{"post":{"summary":"Export vulnerabilities","description":"Exports vulnerabilities that match the request criteria. \n\n**Important!**\nFor more information on using this endpoint, see guidelines and limitations described in [Retrieve Vulnerability Data from Tenable.io](/docs/retrieve-vulnerability-data-from-tenableio).

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"exports-vulns-request-export","tags":["Exports"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"num_assets":{"type":"integer","description":"The maximum number of vulnerabilities per exported chunk. Note that this number does not represent the number of assets per chunk. Instead, it is equal to the number of assets times the number of vulnerabilities on each asset. The range of supported chunk sizes is a minimum of 50 (the default size) to a maximum of 5,000. If you specify a value outside this range, the system uses the upper- or lower-bound value.","format":"int32"},"filters":{"type":"object","description":"Specifies filters for exported vulnerabilities. For example filters, see Refine Vulnerability Export Requests.","properties":{"cidr_range":{"description":"Restricts search for vulnerabilities to assets assigned an IP address within the specified CIDR range. For example, 0.0.0.0/0 restricts the search to 0.0.0.1 and 255.255.255.254.","type":"string"},"first_found":{"type":"integer","description":"Returns vulnerabilities that were first found between the specified date (in Unix time) and now.","format":"int64"},"last_found":{"type":"integer","description":"Returns vulnerabilities that were last found between the specified date (in Unix time) and now.","format":"int64"},"last_fixed":{"type":"integer","description":"Returns vulnerabilities that were fixed between the specified date (in Unix time) and now.","format":"int64"},"plugin_family":{"items":{"type":"string"},"description":"The plugin family of the exported vulnerabilities. This filter is case-sensitive. If your request omits this parameter, the export includes all vulnerabilities, regardless of plugin family. For a list of supported plugin family values, use the /plugins/families endpoint.","type":"array"},"network_id":{"type":"string","description":"The ID of the network object associated with scanners that detected the vulnerabilities you want to export. The default network ID is `00000000-0000-0000-0000-000000000000`. To determine the ID of a custom network, use the [GET /networks](/reference#networks-list) endpoint. For more information about network objects, see [Manage Networks](/docs/manage-networks-tio)."},"severity":{"items":{"type":"string"},"description":"The severity of the vulnerabilities to include in the export. Defaults to all severity levels. The severity of a vulnerability is defined using the Common Vulnerability Scoring System (CVSS) base score. Supported array values are:\n - info—The vulnerability has a CVSS score of 0.\n - low—The vulnerability has a CVSS score between 0.1 and 3.9.\n - medium—The vulnerability has a CVSS score between 4.0 and 6.9.\n - high—The vulnerability has a CVSS score between 7.0 and 9.9.\n - critical—The vulnerability has a CVSS score of 10.0.","type":"array"},"since":{"type":"integer","description":"The start date (in Unix time) for the range of data you want to export. Use this filter in conjunction with the state filter as follows:\n - If the state filter is set to `open`, the export includes data for vulnerabilities that were first seen on or after the since date you specify.\n - If the state filter is set to `reopened`, the export includes data for vulnerabilities that were last seen on or after the since date you specify.\n - If the state filter is set to `fixed`, the export includes data for vulnerabilities that were fixed on or after the since date you specify.\n - If you do not include the state filter in your request, the export includes data for open vulnerabilities that were first seen on or after the since date you specify, AND reopened vulnerabilities that were last seen on or after the since date you specify.\n**Note:** This filter cannot be used in conjunction with the `first_found`, `last_found`, or `last_fixed` filters.","format":"int64"},"state":{"items":{"type":"string"},"description":"The state of the vulnerabilities you want the export to include. Supported, case-insensitive values are:\n - open—The vulnerability is currently present on a host.\n - reopened—The vulnerability was previously marked as fixed on a host, but has returned.\n - fixed—The vulnerability was present on a host, but is no longer detected.\n\nThis parameter is required if your request includes `first_found`, `last_found`, or `last_fixed` parameters. If your request omits this parameter, the export includes default states `open` and `reopened` only.","type":"array"},"tag.":{"items":{"type":"string"},"description":"Returns vulnerabilities on assets with the specified asset tags. The filter is defined as \"tag\", a period (\".\"), and the tag category name. The value of the filter is an array of tag values. For more information about tags, see the Tenable.io Vulnerability Management User Guide.","type":"array"},"vpr_score":{"description":"Returns vulnerabilities with the specified Vulnerability Priority Rating (VPR) score or scores. You can combine properties in this object to specify VPR ranges. For example, to export vulnerabilities greater than or equal to 9.0 but lesser than or equal to 9.9, the object would contain a `gte` property of 9.0 and an `lte` property of 9.9. \n\nFor more information about VPR, see Severity vs. VPR in the Tenable.io Vulnerability Management User Guide.","type":"object","properties":{"eq":{"type":"array","items":{"type":"integer"},"description":"Returns vulnerabilities with a VPR equal to the specified score or scores. This property cannot be combined with the following range operators: `lt`, `gt`, `lte`, or `gte`."},"neq":{"type":"array","items":{"type":"integer"},"description":"Returns vulnerabilities with a VPR not equal to the specified score or scores. This property can be combined with the `eq` property."},"gt":{"type":"integer","description":"Returns vulnerabilities with a VPR greater than the specified score. This property cannot be combined with the `eq` property."},"gte":{"type":"integer","description":"Returns vulnerabilities with a VPR greater than or equal to the specified score. This property cannot be combined with the `eq` property."},"lt":{"type":"integer","description":"Returns vulnerabilities with a VPR lesser than the specified score. This property cannot be combined with the `eq` property."},"lte":{"type":"integer","description":"Returns vulnerabilities with a VPR lesser than or equal to the specified score. This property cannot be combined with the `eq` property."}}}}}},"required":["num_assets"]}}}},"responses":{"200":{"description":"Returned if Tenable.io successfully queues an export request.","content":{"application/json":{"schema":{"type":"object","properties":{"export_uuid":{"type":"string","description":"The UUID of the vulnerabilities export job."}}},"examples":{"response":{"value":{"export_uuid":"73376c41-1508-46b7-8587-483d159cd956"}}}}}},"400":{"description":"Returned if your request message contains an invalid filter."},"403":{"description":"Returned if you do not have permission to export vulnerabilities."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/vulns/export/{export_uuid}/status":{"get":{"summary":"Get vulnerabilities export status","description":"Returns the status of a vulnerability export request. Tenable.io processes the chunks in parallel, so the chunks may not complete in order.

Requires ADMINISTRATOR [64] user permissions. See Permissions.

","operationId":"exports-vulns-export-status","tags":["Exports"],"parameters":[{"description":"The UUID for the export request.","required":true,"name":"export_uuid","in":"path","schema":{"type":"string","description":"The unique identifier of an export request. This value corresponds to the value returned in the /vulns/export response message."}}],"responses":{"200":{"description":"Returns the status of the specified export job.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","description":"The status of the export request. Possible values include:\n - QUEUED—Tenable.io has queued the export request until it completes other requests currently in process.\n - PROCESSING—Tenable.io has started processing the export request.\n - FINISHED—Tenable.io has completed processing the export request. The list of chunks is complete.\n - CANCELLED—An administrator has cancelled the export request.\n - ERROR—Tenable.io encountered an error while processing the export request. Tenable recommends that you retry the request. If the status persists on retry, contact Support."},"chunks_available":{"type":"array","description":"A list of completed chunks available for download.","items":{"type":"integer","format":"int32"}},"chunks_failed":{"type":"array","description":"A list of chunks for which the export process failed. If a chunk fails processing, submit the export request again. If the chunk continues to fail, contact Support.","items":{"type":"integer","format":"int32"}},"chunks_cancelled":{"type":"array","description":"A list of chunks for which the export process was cancelled. If a chunk fails processing, Tenable.io automatically cancels all subsequent chunks queued for export in the same request. ","items":{"type":"integer","format":"int32"}}}},"examples":{"response":{"value":{"status":"PROCESSING","chunks_available":[1,2,3,4,5,6,8],"chunks_failed":[],"chunks_cancelled":[]}}}}}},"403":{"description":"Returned if you do not have permission to view the export status."},"404":{"description":"Returned if Tenable.io cannot find an export job with the specified UUID."},"429":{"description":"Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](/docs/rate-limiting).","content":{"text/html":{"examples":{"response":{"value":"\n\n\n 429 Too Many Requests\n\n\n\n
\n

429 Too Many Requests

\n
\n
\n
nginx
\n\n\n"}}}}}},"security":[{"cloud":[]}]}},"/vulns/export/{export_uuid}/chunks/{chunk_id}":{"get":{"summary":"Download vulnerabilities chunk","description":"Downloads exported vulnerabilities chunk by ID as a JSON file. The response content type is `application/octet-stream`.\nChunks are available for download for up to 24 hours after they have been created. Tenable.io returns a 404 message for expired chunks.\nExport chunks do not include an attribute if that attribute is empty in the vulnerability record.