Download OpenAPI specification:
The Scenario API drives the full lifecycle of a M&NTIS lab: browse the catalog (scenarios, unit attacks, topologies, baseboxes), create and run a lab, follow its execution, and retrieve remote access to the deployed machines.
All paths below are relative to the /lab mount of the Scenario service:
https://app.<your-domain>/api/scenario/lab
Pick your domain from the Servers selector above (defaults to
mantis-platform.io).
Every request requires an OpenID Connect access token, passed as a
Authorization: Bearer <token> header. Most calls also expect a
X-Workspace-Id (and optionally X-Organization-Id) header to resolve your
lab quota and permissions. Use the Authorize button above to try calls from
this page.
See the Authentication guide for how to obtain a token, and the Quickstart for a complete "launch a lab" walkthrough in cURL and Python.
Errors use standard HTTP status codes and a JSON body of the form
{ "detail": "<human-readable message>" }. Common codes: 401 (missing/invalid
token), 403 (not permitted / quota exceeded), 404 (unknown resource),
5xx (upstream error).
Get all available scenarios and previews of public non-free scenarios.
scenario_preview_list is only populated for users on a free or trial plan, to avoid duplicates with scenario_list for users who already have full access.
curl "https://app.mantis-platform.io/api/scenario/lab/scenario/" \ -H "Authorization: Bearer $TOKEN" \ -H "X-Workspace-Id: $WORKSPACE_ID"
{- "scenario_list": [
- {
- "name": "my-scenario",
- "keywords": [ ],
- "description": "",
- "description_fr": "",
- "long_description": [ ],
- "long_description_fr": [ ],
- "unit_attacks": [ ],
- "attacks": [ ],
- "mitre_tags": [ ],
- "steps": {
- "skip_deploy": false,
- "skip_all_preparations": false,
- "skip_provisioning_os_set_time": false,
- "skip_provisioning_os_set_hostname": false,
- "skip_provisioning_ad_join_domain": false,
- "skip_provisioning_assign_users": false,
- "skip_provisioning_open_user_sessions": false,
- "skip_provisioning_populate_user_profiles": false,
- "skip_provisioning_attack": false,
- "skip_provisioning_os_monitoring": false,
- "skip_user_activity": false,
- "skip_compromise": false,
- "skip_attack": false,
- "skip_create_dataset": false
}, - "timestamps": {
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "duration": 0
}, - "scenario_profiles": [ ],
- "creation_date": "2019-08-24T14:15:22Z",
- "last_update": "2019-08-24T14:15:22Z",
- "learning_context": "",
- "metadata": {
- "estimated_analysis_time": 0,
- "difficulty_score": 0,
- "estimated_content_duration": 0,
- "required_skills": [
- "phishing_analysis"
], - "learned_skills": [
- "phishing_analysis"
]
}, - "scenario_params_schema": [ ],
- "documentation_link": "string"
}
], - "scenario_preview_list": [
- {
- "name": "string",
- "learning_context": "",
- "metadata": {
- "estimated_analysis_time": 0,
- "difficulty_score": 0,
- "estimated_content_duration": 0,
- "required_skills": [
- "phishing_analysis"
], - "learned_skills": [
- "phishing_analysis"
]
}, - "creation_date": "2019-08-24T14:15:22Z",
- "last_update": "2019-08-24T14:15:22Z"
}
]
}Get a specific scenario.
| scenario_name required | string (Scenario Name) Name of the scenario. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/scenario/<scenario_name>" \ -H "Authorization: Bearer $TOKEN"
{- "name": "my-scenario",
- "keywords": [ ],
- "description": "",
- "description_fr": "",
- "long_description": [ ],
- "long_description_fr": [ ],
- "unit_attacks": [ ],
- "attacks": [ ],
- "mitre_tags": [ ],
- "steps": {
- "skip_deploy": false,
- "skip_all_preparations": false,
- "skip_provisioning_os_set_time": false,
- "skip_provisioning_os_set_hostname": false,
- "skip_provisioning_ad_join_domain": false,
- "skip_provisioning_assign_users": false,
- "skip_provisioning_open_user_sessions": false,
- "skip_provisioning_populate_user_profiles": false,
- "skip_provisioning_attack": false,
- "skip_provisioning_os_monitoring": false,
- "skip_user_activity": false,
- "skip_compromise": false,
- "skip_attack": false,
- "skip_create_dataset": false
}, - "timestamps": {
- "start_time": "2019-08-24T14:15:22Z",
- "end_time": "2019-08-24T14:15:22Z",
- "duration": 0
}, - "scenario_profiles": [ ],
- "creation_date": "2019-08-24T14:15:22Z",
- "last_update": "2019-08-24T14:15:22Z",
- "learning_context": "",
- "metadata": {
- "estimated_analysis_time": 0,
- "difficulty_score": 0,
- "estimated_content_duration": 0,
- "required_skills": [
- "phishing_analysis"
], - "learned_skills": [
- "phishing_analysis"
]
}, - "scenario_params_schema": [ ],
- "documentation_link": "string"
}Create a lab associated with a given scenario, in a CREATED state, so that it can later be run.
| workspace_id required | string (Workspace Id) Identifier of the workspace the operation applies to. |
required | object (LabConfig) Configuration describing a lab to create or run. This is the body of every |
PublicAccessConfig (object) or null |
{- "lab_config": {
- "content_name": "my-scenario",
- "content_type": "KILLCHAIN",
- "create_dataset": true,
- "max_duration": 3600,
- "scenario_profile": "default"
}, - "public_access_config": {
- "access_token": "string",
- "refresh_token": "string",
- "base_url": "string"
}
}"string"Create a lab associated with a given scenario, and run it.
| workspace_id required | string (Workspace Id) Identifier of the workspace the operation applies to. |
required | object (LabConfig) Configuration describing a lab to create or run. This is the body of every |
PublicAccessConfig (object) or null |
{- "lab_config": {
- "content_name": "my-scenario",
- "content_type": "KILLCHAIN",
- "create_dataset": true,
- "max_duration": 3600,
- "scenario_profile": "default"
}, - "public_access_config": {
- "access_token": "string",
- "refresh_token": "string",
- "base_url": "string"
}
}"string"curl -X GET "https://app.mantis-platform.io/api/scenario/lab/topology/" \ -H "Authorization: Bearer $TOKEN"
[- {
- "metadata": {
- "resource_name": "string",
- "resource_type": "topology"
}, - "content": {
- "name": "",
- "nodes": [
- {
- "type": "virtual_machine",
- "name": "string",
- "active": true,
- "hidden": false,
- "basebox_id": "string",
- "basebox_vagrant": "string",
- "memory_size": 1024,
- "nb_proc": 1,
- "roles": [
- "client"
]
}
], - "links": [
- {
- "switch": {
- "type": "virtual_machine",
- "name": "string",
- "active": true,
- "hidden": false
}, - "node": {
- "type": "virtual_machine",
- "name": "string",
- "active": true,
- "hidden": false
}, - "params": {
- "ip": "string",
- "mac": "string",
- "dhcp": true,
- "dhcp_nameserver": "string",
- "dhcp_lease": 0,
- "dhcp_router": "string"
}
}
]
}, - "resource_access": {
- "access_visibility": "private",
- "access_status": "free"
}
}
]Get a specific topology.
| topology_name required | string (Topology Name) Name of the topology. |
Workspace Id (string) or Workspace Id (null) (Workspace Id) Identifier of the workspace the operation applies to. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/topology/info?topology_name=<topology_name>" \ -H "Authorization: Bearer $TOKEN"
{- "metadata": {
- "resource_name": "string",
- "resource_type": "topology"
}, - "content": {
- "name": "",
- "nodes": [
- {
- "type": "virtual_machine",
- "name": "string",
- "active": true,
- "hidden": false,
- "basebox_id": "string",
- "basebox_vagrant": "string",
- "memory_size": 1024,
- "nb_proc": 1,
- "roles": [
- "client"
]
}
], - "links": [
- {
- "switch": {
- "type": "virtual_machine",
- "name": "string",
- "active": true,
- "hidden": false
}, - "node": {
- "type": "virtual_machine",
- "name": "string",
- "active": true,
- "hidden": false
}, - "params": {
- "ip": "string",
- "mac": "string",
- "dhcp": true,
- "dhcp_nameserver": "string",
- "dhcp_lease": 0,
- "dhcp_router": "string"
}
}
]
}, - "resource_access": {
- "access_visibility": "private",
- "access_status": "free"
}
}Create a lab associated with a given topology, in a CREATED state, so that it can later be run.
| workspace_id required | string (Workspace Id) Identifier of the workspace the operation applies to. |
required | object (LabConfig) Configuration describing a lab to create or run. This is the body of every |
PublicAccessConfig (object) or null |
{- "lab_config": {
- "content_name": "my-scenario",
- "content_type": "KILLCHAIN",
- "create_dataset": true,
- "max_duration": 3600,
- "scenario_profile": "default"
}, - "public_access_config": {
- "access_token": "string",
- "refresh_token": "string",
- "base_url": "string"
}
}"string"Create a lab associated with a given topology, and run it.
| workspace_id required | string (Workspace Id) Identifier of the workspace the operation applies to. |
required | object (LabConfig) Configuration describing a lab to create or run. This is the body of every |
PublicAccessConfig (object) or null |
{- "lab_config": {
- "content_name": "my-scenario",
- "content_type": "KILLCHAIN",
- "create_dataset": true,
- "max_duration": 3600,
- "scenario_profile": "default"
}, - "public_access_config": {
- "access_token": "string",
- "refresh_token": "string",
- "base_url": "string"
}
}"string"curl -X GET "https://app.mantis-platform.io/api/scenario/lab/basebox/" \ -H "Authorization: Bearer $TOKEN"
[- {
- "id": "ubuntu_22_04",
- "description": "string",
- "operating_system": "Ubuntu 22.04",
- "system_type": "linux",
- "language": "english",
- "installation_date": "2019-08-24T14:15:22Z",
- "role": "client",
- "username": "string",
- "password": "string",
- "admin_username": "string",
- "admin_password": "string",
- "nb_proc": 2,
- "memory_size": 4096,
- "cpes": {
- "cpeItems": [
- {
- "cpe_version": "string",
- "part": "string",
- "vendor": "string",
- "product": "string",
- "version": "string",
- "update": "string",
- "edition": "string",
- "language": "string",
- "sw_edition": "string",
- "target_sw": "string",
- "target_hw": "string",
- "other": "string"
}
]
}, - "sha256sum": "string",
- "changelog": [
- {
- "property1": "string",
- "property2": "string"
}
], - "storage_bus": "string",
- "credentials": [
- {
- "property1": "string",
- "property2": "string"
}
], - "active": true,
- "hostname": "string",
- "depends_on": [
- "string"
]
}
]Get a specific basebox.
| basebox_id required | string (Basebox Id) Identifier of the basebox. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/basebox/<basebox_id>" \ -H "Authorization: Bearer $TOKEN"
{- "id": "ubuntu_22_04",
- "description": "string",
- "operating_system": "Ubuntu 22.04",
- "system_type": "linux",
- "language": "english",
- "installation_date": "2019-08-24T14:15:22Z",
- "role": "client",
- "username": "string",
- "password": "string",
- "admin_username": "string",
- "admin_password": "string",
- "nb_proc": 2,
- "memory_size": 4096,
- "cpes": {
- "cpeItems": [
- {
- "cpe_version": "string",
- "part": "string",
- "vendor": "string",
- "product": "string",
- "version": "string",
- "update": "string",
- "edition": "string",
- "language": "string",
- "sw_edition": "string",
- "target_sw": "string",
- "target_hw": "string",
- "other": "string"
}
]
}, - "sha256sum": "string",
- "changelog": [
- {
- "property1": "string",
- "property2": "string"
}
], - "storage_bus": "string",
- "credentials": [
- {
- "property1": "string",
- "property2": "string"
}
], - "active": true,
- "hostname": "string",
- "depends_on": [
- "string"
]
}Create a lab associated with a given basebox, in a CREATED state, so that it can later be run.
| workspace_id required | string (Workspace Id) Identifier of the workspace the operation applies to. |
required | object (LabConfig) Configuration describing a lab to create or run. This is the body of every |
PublicAccessConfig (object) or null |
{- "lab_config": {
- "content_name": "my-scenario",
- "content_type": "KILLCHAIN",
- "create_dataset": true,
- "max_duration": 3600,
- "scenario_profile": "default"
}, - "public_access_config": {
- "access_token": "string",
- "refresh_token": "string",
- "base_url": "string"
}
}"string"Create a lab associated with a given basebox, and run it.
| workspace_id required | string (Workspace Id) Identifier of the workspace the operation applies to. |
required | object (LabConfig) Configuration describing a lab to create or run. This is the body of every |
PublicAccessConfig (object) or null |
{- "lab_config": {
- "content_name": "my-scenario",
- "content_type": "KILLCHAIN",
- "create_dataset": true,
- "max_duration": 3600,
- "scenario_profile": "default"
}, - "public_access_config": {
- "access_token": "string",
- "refresh_token": "string",
- "base_url": "string"
}
}"string"Control and inspect running labs: status, run/stop/pause, nodes, assets, attack results, remote access.
List the labs accessible to the caller, filtered and paginated.
By default only active labs are returned; set all_labs to also include
stopped and terminated ones.
| all_labs | boolean (All Labs) Default: false If true, also include stopped and terminated labs. |
Owner (string) or Owner (null) (Owner) Filter labs by the user who created them. | |
Type (string) or Type (null) (Type) Filter labs by content type (e.g. KILLCHAIN, ATTACK, TOPOLOGY). | |
Status (string) or Status (null) (Status) Filter labs by execution status. | |
| page | integer (Page) > 0 Default: 1 Page number (1-based) for pagination. |
| limit | integer (Limit) ( 0 .. 100 ] Default: 10 Maximum number of items to return per page. |
Order By (string) or Order By (null) (Order By) Name of the field to sort the results by. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/" \ -H "Authorization: Bearer $TOKEN"
{- "pagination": {
- "current_offset": 0,
- "records": 0,
- "total_records": 0
}, - "data": [ ]
}Get lab status from its ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl "https://app.mantis-platform.io/api/scenario/lab/runner/$LAB_ID" \ -H "Authorization: Bearer $TOKEN"
{- "runner_id": "string",
- "status": "CREATED",
- "lab_creation_timestamp": 0,
- "lab_start_timestamp": 0,
- "lab_content_end_timestamp": 0,
- "lab_end_timestamp": 0,
- "content_type": "KILLCHAIN",
- "name": "string",
- "created_by": "string",
- "organization_id": "string",
- "workspace_id": "string",
- "worker_id": "string",
- "public_access": {
- "access_token": "string",
- "refresh_token": "string",
- "base_url": "string"
}
}Delete lab from its ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X DELETE "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>" \ -H "Authorization: Bearer $TOKEN"
nullRun a lab based on its ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/run" \ -H "Authorization: Bearer $TOKEN"
nullStop a lab based on its ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/stop" \ -H "Authorization: Bearer $TOKEN"
nullStop the user activity (life) orchestrator on a running lab, without stopping the lab itself.
This sets a 'stop_orchestrator' metadata variable in REDIS, which is polled by scenario_runner. When detected, scenario_runner issues the actual call to the user_activity API to stop the orchestrator.
stopping the orchestrator.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
| close_session | boolean (Close Session) Default: false If true, also close the open remote sessions when stopping. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/stop_orchestrator" \ -H "Authorization: Bearer $TOKEN"
nullPause a lab based on its ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/pause" \ -H "Authorization: Bearer $TOKEN"
nullResume a lab based on its ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/resume" \ -H "Authorization: Bearer $TOKEN"
nullResume the current paused status if lab is in pause, based on the lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/paused_status" \ -H "Authorization: Bearer $TOKEN"
{- "step": "string",
- "is_before_step": true
}Get current scenario topology from its lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
| hide_redteam | boolean (Hide Redteam) Default: false If true, omit red-team-only nodes/assets from the response. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/topology" \ -H "Authorization: Bearer $TOKEN"
{- "name": "",
- "nodes": [
- {
- "type": "virtual_machine",
- "name": "string",
- "active": true,
- "hidden": false,
- "basebox_id": "string",
- "basebox_vagrant": "string",
- "memory_size": 1024,
- "nb_proc": 1,
- "roles": [
- "client"
]
}
], - "links": [
- {
- "switch": {
- "type": "virtual_machine",
- "name": "string",
- "active": true,
- "hidden": false
}, - "node": {
- "type": "virtual_machine",
- "name": "string",
- "active": true,
- "hidden": false
}, - "params": {
- "ip": "string",
- "mac": "string",
- "dhcp": true,
- "dhcp_nameserver": "string",
- "dhcp_lease": 0,
- "dhcp_router": "string"
}
}
]
}Get current scenario nodes from its lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
| hide_redteam | boolean (Hide Redteam) Default: false If true, omit red-team-only nodes/assets from the response. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/nodes" \ -H "Authorization: Bearer $TOKEN"
[- {
- "name": "string",
- "type": "string",
- "roles": [
- "string"
], - "compute_server_host": "string",
- "spice_port": 0,
- "vnc_websocket_port": 0,
- "remote_password": "string",
- "admin_username": "string",
- "admin_password": "string",
- "username": "string",
- "password": "string",
- "domain_username": "string",
- "domain_password": "string"
}
]Get current scenario assets from its lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
| hide_redteam | boolean (Hide Redteam) Default: false If true, omit red-team-only nodes/assets from the response. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/assets" \ -H "Authorization: Bearer $TOKEN"
[- {
- "name": "string",
- "type": "string",
- "roles": [
- "string"
], - "compute_server_host": "string",
- "spice_port": 0,
- "vnc_websocket_port": 0,
- "remote_password": "string",
- "admin_username": "string",
- "admin_password": "string",
- "username": "string",
- "password": "string",
- "domain_username": "string",
- "domain_password": "string"
}
]Get current scenario attack report from its lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl "https://app.mantis-platform.io/api/scenario/lab/runner/$LAB_ID/attack_report" \ -H "Authorization: Bearer $TOKEN"
[- {
- "id": 0,
- "source_ids": [
- 0
], - "attack_type": "ATTACK_REPORT",
- "status": "string",
- "started_date": "string",
- "last_update": "string",
- "target_nodes": [
- {
- "node_type": "TARGET_NODE",
- "node_info": {
- "ip": "string",
- "type_session": "string",
- "privilege_level": "string",
- "session_id": "string",
- "username": "string"
}, - "attack_process_graph": [
- {
- "powershell": {
- "encoded_command": "string",
- "decoded_command": "string",
- "binary": [
- "string"
]
}, - "sh": {
- "encoded_command": "string",
- "decoded_command": "string",
- "binary": [
- "string"
]
}, - "download": "string"
}
]
}
], - "output": [
- { }
], - "iocs": [
- {
- "type": "ip_address",
- "value": "string",
- "description_fr": "string",
- "description_en": "string"
}
], - "worker": {
- "id": "string",
- "name": "string",
- "title": "string",
- "title_fr": "string",
- "description": "string",
- "cve": [
- {
- "property1": "string",
- "property2": "string"
}
], - "version": "string",
- "side_effects": "string",
- "topics": "string",
- "repeatable": true,
- "mitre_data": {
- "technique": {
- "id": "string",
- "name": "string"
}, - "subtechnique": {
- "id": "string",
- "name": "string"
}, - "tactics": [
- {
- "id": "string",
- "name": "string"
}
], - "implementation": {
- "id": "string"
}
}, - "attack_mode": "string",
- "bas_compat": false,
- "options": [ ],
- "destination_port": 0
}
}
]Get current scenario attack infras from its lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/attack_infras" \ -H "Authorization: Bearer $TOKEN"
[- {
- "idInfrastructure": 0,
- "attack_source": 0,
- "public_ip": "string",
- "private_ip": "string",
- "domain_name": "string",
- "type": "string",
- "token": "string"
}
]Get current scenario attack sessions from its lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/attack_sessions" \ -H "Authorization: Bearer $TOKEN"
[- {
- "idAttackSession": 0,
- "attack_source": 0,
- "source": "string",
- "username": "string",
- "type": "string",
- "identifier": "string",
- "privilege_level": 0,
- "direct_access": true,
- "port": 0,
- "is_up": true,
- "parent_id": 0,
- "idHost": 0,
- "target": {
- "idNetworkInterface": 0,
- "ip": "string",
- "mac": "string",
- "subnet": "string",
- "internet_access": true,
- "host": {
- "idHost": 0,
- "attack_source": 0,
- "hostname": "string",
- "netbios_name": "string",
- "domain": "string"
}
}
}
]Get current scenario attack knowledge from its lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/attack_knowledge" \ -H "Authorization: Bearer $TOKEN"
{- "hosts": [
- {
- "idHost": 0,
- "attack_source": 0,
- "hostname": "string",
- "netbios_name": "string",
- "domain": "string",
- "network_interfaces": [
- {
- "idNetworkInterface": 0,
- "ip": "string",
- "mac": "string",
- "subnet": "string",
- "internet_access": true
}
], - "roles": [
- {
- "idRole": 0,
- "name": "string"
}
], - "files": [
- {
- "idFile": 0,
- "name": "string",
- "path": "string"
}
]
}
], - "network_interfaces": [
- {
- "idNetworkInterface": 0,
- "ip": "string",
- "mac": "string",
- "subnet": "string",
- "internet_access": true
}
], - "services": [
- {
- "idService": 0,
- "vendor": "string",
- "product": "string",
- "version": "string",
- "status": "string",
- "credentials": [
- {
- "idCredential": 0,
- "username": "string",
- "password": "string",
- "domain": "string",
- "type": "string"
}
]
}
], - "softwares": [
- {
- "idSoftware": 0,
- "vendor": "string",
- "product": "string",
- "version": "string",
- "path": "string",
- "status": "string",
- "credentials": [
- {
- "idCredential": 0,
- "username": "string",
- "password": "string",
- "domain": "string",
- "type": "string"
}
]
}
], - "credentials": [
- {
- "idCredential": 0,
- "username": "string",
- "password": "string",
- "domain": "string",
- "type": "string"
}
], - "payloads": [
- {
- "idPayload": 0,
- "name": "string",
- "url": "string",
- "payload_type": "string",
- "payload_os": "string"
}
], - "files": [
- {
- "idFile": 0,
- "name": "string",
- "path": "string"
}
], - "ad_groups": [
- {
- "idADGroup": 0,
- "name": "string",
- "credentials": [
- {
- "idCredential": 0,
- "username": "string",
- "password": "string",
- "domain": "string",
- "type": "string"
}
], - "gpos": [
- {
- "idGPO": 0,
- "name": "string"
}
], - "hosts": [
- {
- "idHost": 0,
- "attack_source": 0,
- "hostname": "string",
- "netbios_name": "string",
- "domain": "string"
}
]
}
]
}Get current scenario notifications from its lab ID. Filters out the RedTeam notifications if the user doesn't have the LAB_ATTACK_INFO permission.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/notifications" \ -H "Authorization: Bearer $TOKEN"
[- "string"
]Get current scenario run config from its lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/lab_config" \ -H "Authorization: Bearer $TOKEN"
{- "content_name": "my-scenario",
- "content_type": "KILLCHAIN",
- "create_dataset": true,
- "max_duration": 3600,
- "scenario_profile": "default"
}Get current security alerts its lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl "https://app.mantis-platform.io/api/scenario/lab/runner/$LAB_ID/security_alerts" \ -H "Authorization: Bearer $TOKEN"
{- "property1": [
- {
- "alert_id": "string",
- "alert_name": "string",
- "alert_status": "NEW",
- "alert_logs": [ ],
- "signature_id": "string",
- "signature_name": "string",
- "mitre_data": {
- "technique": {
- "id": "string",
- "name": "string"
}, - "subtechnique": {
- "id": "string",
- "name": "string"
}, - "tactics": [
- {
- "id": "string",
- "name": "string"
}
], - "implementation": {
- "id": "string"
}
}, - "asset_ip": "string",
- "asset_hostname": "string",
- "start_time": "string",
- "end_time": "string",
- "correlated_attacks": [ ]
}
], - "property2": [
- {
- "alert_id": "string",
- "alert_name": "string",
- "alert_status": "NEW",
- "alert_logs": [ ],
- "signature_id": "string",
- "signature_name": "string",
- "mitre_data": {
- "technique": {
- "id": "string",
- "name": "string"
}, - "subtechnique": {
- "id": "string",
- "name": "string"
}, - "tactics": [
- {
- "id": "string",
- "name": "string"
}
], - "implementation": {
- "id": "string"
}
}, - "asset_ip": "string",
- "asset_hostname": "string",
- "start_time": "string",
- "end_time": "string",
- "correlated_attacks": [ ]
}
]
}Get info to remotly access the VM from its lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl "https://app.mantis-platform.io/api/scenario/lab/runner/$LAB_ID/remote_access" \ -H "Authorization: Bearer $TOKEN"
{- "nodes": [ ]
}Get the user test corresponding to the given lab ID.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
| with_answer | boolean (With Answer) Default: false If true, include the expected answers in the evaluation test. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/assessment/test" \ -H "Authorization: Bearer $TOKEN"
{- "identifier": "string",
- "title": "string",
- "tool_name": "M&NTIS Platform",
- "tool_version": "string",
- "test_parts": [
- {
- "identifier": "string",
- "title": "string",
- "navigation_mode": "linear",
- "submission_mode": "individual",
- "assessment_sections": [
- {
- "identifier": "string",
- "required": false,
- "fixed": false,
- "title": "string",
- "assessment_items": [
- {
- "identifier": "string",
- "title": "string",
- "label": "string",
- "language": "string",
- "response_declarations": [
- {
- "identifier": "string",
- "cardinality": "single",
- "base_type": "boolean",
- "correct_response": {
- "value": null
}
}
], - "outcome_declaration": [
- {
- "identifier": "string",
- "cardinality": "single",
- "base_type": "boolean",
- "normal_maximum": 0,
- "normal_minimum": 0,
- "default_value": {
- "value": null
}
}
], - "item_body": {
- "prompt": "string",
- "interaction": {
- "max_choices": 0,
- "min_choices": 0,
- "response_identifier": "string",
- "simple_choice": [
- null
]
}, - "interaction_type": "choice",
- "end_attempt_interaction": {
- "response_identifier": "string"
}, - "feedback_blocks": [
- {
- "identifier": null,
- "content": null
}
]
}
}
]
}
]
}
]
}Receive the user answers of the previously sent test.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
| identifier required | string (Identifier) |
required | Array of objects (Test Parts) |
| name required | string (Name) |
{- "identifier": "string",
- "test_parts": [
- {
- "identifier": "string",
- "assessment_sections": [
- {
- "identifier": "string",
- "assessment_items": [
- {
- "identifier": "string",
- "submitted_response": "string"
}
]
}
]
}
], - "name": "string"
}{- "identifier": "string",
- "test_parts": [
- {
- "identifier": "string",
- "assessment_sections": [
- {
- "identifier": "string",
- "assessment_items": [
- {
- "identifier": "string",
- "result": true,
- "submitted_response": "string"
}
]
}
]
}
], - "submission_id": "string",
- "score": 0,
- "name": "string",
- "submission_date": "string"
}Get all identifiers of previously stored assessment results for the lab.
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/assessment/result" \ -H "Authorization: Bearer $TOKEN"
[- {
- "identifier": "string",
- "submission_id": "string",
- "name": "string",
- "submission_date": "string",
- "score": 0
}
]Retrieve a specific assessment result for the lab by its submission identifier.
| submission_id required | string (Submission Id) Identifier of the evaluation submission. |
| runner_id required | string (Runner Id) Identifier of the lab (runner) to act on. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/runner/<runner_id>/assessment/result/<submission_id>" \ -H "Authorization: Bearer $TOKEN"
{- "identifier": "string",
- "test_parts": [
- {
- "identifier": "string",
- "assessment_sections": [
- {
- "identifier": "string",
- "assessment_items": [
- {
- "identifier": "string",
- "result": true,
- "submitted_response": "string"
}
]
}
]
}
], - "submission_id": "string",
- "score": 0,
- "name": "string",
- "submission_date": "string"
}curl -X GET "https://app.mantis-platform.io/api/scenario/lab/signature/" \ -H "Authorization: Bearer $TOKEN"
{- "property1": {
- "attack_reference_id": "registry_run",
- "implementations": [
- {
- "id": "string",
- "implementation_type": "sh",
- "signatures": [
- {
- "signature_type": "elk_lucene",
- "signature": "string"
}
], - "log_collectors_required": [
- "string"
]
}
]
}, - "property2": {
- "attack_reference_id": "registry_run",
- "implementations": [
- {
- "id": "string",
- "implementation_type": "sh",
- "signatures": [
- {
- "signature_type": "elk_lucene",
- "signature": "string"
}
], - "log_collectors_required": [
- "string"
]
}
]
}
}Get a specific signature.
| signature_id required | string (Signature Id) Identifier of the signature (or its attack reference id). |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/signature/attack/info?signature_id=<signature_id>" \ -H "Authorization: Bearer $TOKEN"
{- "attack_reference_id": "registry_run",
- "implementations": [
- {
- "id": "string",
- "implementation_type": "sh",
- "signatures": [
- {
- "signature_type": "elk_lucene",
- "signature": "string"
}
], - "log_collectors_required": [
- "string"
]
}
]
}Get the signatures for a given scenario.
| scenario_id required | string (Scenario Id) Identifier of the scenario. |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/signature/scenario/info?scenario_id=<scenario_id>" \ -H "Authorization: Bearer $TOKEN"
[- {
- "attack_reference_id": "registry_run",
- "implementations": [
- {
- "id": "string",
- "implementation_type": "sh",
- "signatures": [
- {
- "signature_type": "elk_lucene",
- "signature": "string"
}
], - "log_collectors_required": [
- "string"
]
}
]
}
]Get a specific signature.
| signature_id required | string (Signature Id) Identifier of the signature (or its attack reference id). |
curl -X GET "https://app.mantis-platform.io/api/scenario/lab/signature/info?signature_id=<signature_id>" \ -H "Authorization: Bearer $TOKEN"
{- "attack_reference_id": "registry_run",
- "implementations": [
- {
- "id": "string",
- "implementation_type": "sh",
- "signatures": [
- {
- "signature_type": "elk_lucene",
- "signature": "string"
}
], - "log_collectors_required": [
- "string"
]
}
]
}curl "https://app.mantis-platform.io/api/scenario/lab/log_collector" \ -H "Authorization: Bearer $TOKEN" \ -H "X-Workspace-Id: $WORKSPACE_ID"
[- {
- "collector_name": "string",
- "displayed_name": "string",
- "collector_type": "agent",
- "description": "string",
- "documentation_link": "string",
- "status": "development",
- "available_locations": [
- "node_name"
], - "available_output_collectors": [
- "string"
], - "mandatory_inputs": [
- "string"
], - "allow_investigation": true,
- "cpe_os_constraints": {
- "cpeItems": [
- {
- "cpe_version": "string",
- "part": "string",
- "vendor": "string",
- "product": "string",
- "version": "string",
- "update": "string",
- "edition": "string",
- "language": "string",
- "sw_edition": "string",
- "target_sw": "string",
- "target_hw": "string",
- "other": "string"
}
]
}, - "user_config": [
- {
- "name": "string",
- "description": "string",
- "type": "string",
- "constraints": {
- "min_value": 0,
- "max_value": 0
}, - "default": "string",
- "required": true
}
], - "user_config_expert_mode": [
- {
- "name": "string",
- "description": "string",
- "type": "string",
- "constraints": {
- "min_value": 0,
- "max_value": 0
}, - "default": "string",
- "required": true
}
], - "login": "string",
- "password": "string"
}
]Check that a set of log-collector instances satisfies its input/output requirements (e.g. every shipper has a reachable aggregator).
| instance_name required | string (Instance Name) |
| collector_name required | string (Collector Name) |
| collector_type required | string (LogCollectorType) Enum: "agent" "aggregator" "probe" "visualization" "external" "collaborative" |
required | Array of objects (Location) |
Array of objects (Output) Default: [] | |
object (User Config) Default: {} | |
object (User Config Expert Mode) Default: {} | |
| cpe_os_constraints | Array of strings (Cpe Os Constraints) Default: [] |
[- {
- "instance_name": "string",
- "collector_name": "string",
- "collector_type": "agent",
- "location": [
- {
- "location_type": "node_name",
- "value": "string"
}
], - "output": [ ],
- "user_config": { },
- "user_config_expert_mode": { },
- "cpe_os_constraints": [ ]
}
]{- "requirements_met": true,
- "errors": {
- "mandatory_output_missing": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}, - "mandatory_input_missing": {
- "property1": [
- "string"
], - "property2": [
- "string"
]
}
}
}