Endpoints in the REST API
This version of BMC Discovery supports versions 1.9 of the REST API and earlier. Higher versions are always backwards compatible with earlier versions.
The base URL for the latest API version is:
https://appliance_name/api/v1.9
{ "openapi": "3.0.1", "tags": [ { "name": "admin", "description": "Manage the BMC Helix Discovery instance" }, { "name": "credentials", "description": "Manage credentials. Index is used to order credentials, lower to higher." }, { "name": "data", "description": "Read and import data" }, { "name": "discovery", "description": "Control scanning and view results" }, { "name": "events", "description": "Push events" }, { "name": "knowledge", "description": "Upload new TKUs and pattern modules" }, { "name": "models", "description": "Manage service and application models" }, { "name": "taxonomy", "description": "Retrieve taxonomy data" }, { "name": "topology", "description": "Retrieve topology data from the datastore" } ], "paths": { "/admin/about": { "get": { "tags": [ "admin" ], "summary": "Get basic information about the instance", "description": "Get information about the instance, like its version and versions of the installed packages.\n\n`New in version 1.1`", "operationId": "getAboutInfo", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/about" } } } } } } }, "/admin/licensing": { "get": { "tags": [ "admin" ], "summary": "Get the latest signed licensing report in plain text", "description": "`New in version 1.1`", "parameters": [ { "name": "type", "in": "query", "description": "License report type (available from version 1.8)", "schema": { "type": "string", "default": "discovery" } } ], "responses": { "200": { "description": "successful operation", "content": { "text/plain": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/admin/licensing/csv": { "get": { "tags": [ "admin" ], "summary": "Get (anonymized) license data in csv format as a zip file", "description": "Download raw license data in CSV format as a zip file for offline analysis.\n\n`New in version 1.1`", "parameters": [ { "name": "type", "in": "query", "description": "License report type (available from version 1.8)", "schema": { "type": "string", "default": "discovery" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/zip": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/admin/licensing/raw": { "get": { "tags": [ "admin" ], "summary": "Get encrypted raw license data as a zip file", "description": "Download the encrypted raw license data on this instance for import on another instance.\n\n`New in version 1.1`", "parameters": [ { "name": "type", "in": "query", "description": "License report type (available from version 1.8)", "schema": { "type": "string", "default": "discovery" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/zip": { "schema": { "type": "string", "format": "binary" } } } } } } }, "/admin/preferences": { "get": { "tags": [ "admin" ], "summary": "Get the application preferences", "description": "Get the application preferences for the authenticated user.\n\n`New in version 1.6`", "operationId": "getApplicationPreferences", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/applicationPreferences" } } } } } }, "patch": { "summary": "Change the application preferences", "description": "Change the application preferences for the authenticated user.\n\n`New in version 1.9`", "operationId": "patchApplicationPreferences", "tags": [ "admin" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/applicationPreferences" } } }, "required": true }, "responses": { "200": { "description": "successful operation" } }, "x-codegen-request-body-name": "body" } }, "/data/search": { "get": { "tags": [ "data" ], "summary": "Search the data", "description": "Run a search query, receiving paginated results.", "operationId": "search", "parameters": [ { "name": "query", "in": "query", "description": "The search query to run, in BMC Discovery query language. If your query is too long to fit in a url, use `POST /data/search`", "required": true, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "The offset of the first item to return in this page of results.\n\nCan only be supplied if requesting results from an existing results set (by supplying a results_id).\n\nIf you want to retrieve all items in order, this field should usually take the value of the 'next_offset' from the previous page of results.", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "description": "Limits how many items to return in this page of results. Further items can be retrieved by making another request with a different offset.\n\nUse 0 to request the maximum allowed limit.\n\nCan vary from page to page.", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "description": "An opaque id that can be used to access a result set that has already been generated via a previous search request. Must be supplied if requesting an offset greater than 0.\n\nNote that even if retrieving results from an existing results set, the original query must be supplied in case the result set has timed out and the query needs to be re-run.\n\nThe results_id can be found in any page of results apart from the last one.", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "description": "Controls whether the result set is deleted or not before results are returned.\n\nResult sets are deleted automatically before the last page of results are returned, but setting this field to true on any page will delete the result set immediately.\n\nThis is an optimization to free resources if you don't plan on accessing any further pages of data. Alternatively, if set to false, automatic deletion of the result set will not happen (for this request).", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "As a search query may return multiple results sets of different kinds, the response is a list of results objects - one per kind", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResults" } } } } } } }, "post": { "tags": [ "data" ], "summary": "Search the data", "description": "An alternative to `GET /data/search`, for search queries which are too long for URLs.", "operationId": "searchByPost", "parameters": [ { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/searchQuery" } } }, "required": true }, "responses": { "200": { "description": "See notes on GET endpoint results", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResults" } } } } } }, "x-codegen-request-body-name": "body" } }, "/data/search?format=object": { "get": { "tags": [ "data" ], "summary": "Search the data", "description": "As `/data/search` but returns results as objects instead of rows of values.", "operationId": "search_asObject", "parameters": [ { "name": "query", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "As a search query may return multiple results sets of different kinds, the response is a list of results objects - one per kind", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResultsAsObjects" } } } } } } }, "post": { "tags": [ "data" ], "summary": "Search the data", "description": "An alternative to `GET /data/search?format=object`, for search queries which are too long for urls.", "operationId": "searchByPost_asObject", "parameters": [ { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/searchQuery" } } }, "required": true }, "responses": { "200": { "description": "See notes on GET endpoint results", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResultsAsObjects" } } } } } }, "x-codegen-request-body-name": "body" } }, "/data/search?format=tree": { "get": { "tags": [ "data" ], "summary": "Search the data", "description": "As `/data/search` but returns results as a tree of objects.\n\nIf actual_spec is true, wildcard traversals are expanded to include the full traversed spec, in the form @label.spec.\n\n`New in version 1.2; actual_spec added in version 1.8`", "operationId": "search_asTree", "parameters": [ { "name": "query", "in": "query", "required": true, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "actual_spec", "in": "query", "schema": { "type": "boolean" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "As a search query may return multiple results sets of different kinds, the response is a list of results objects - one per kind", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResultsAsObjects" } } } } } } }, "post": { "tags": [ "data" ], "summary": "Search the data", "description": "An alternative to `GET /data/search?format=tree`, for search queries which are too long for urls.", "operationId": "searchByPost_asTree", "parameters": [ { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "actual_spec", "in": "query", "schema": { "type": "boolean" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/searchQuery" } } }, "required": true }, "responses": { "200": { "description": "See notes on GET endpoint results", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResultsAsObjects" } } } } } }, "x-codegen-request-body-name": "body" } }, "/data/condition": { "post": { "tags": [ "data" ], "summary": "Search using a condition, retrieving tabular data as arrays", "description": "`New in version 1.4`", "operationId": "searchCondition", "parameters": [ { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/searchConditions" } } }, "required": true }, "responses": { "200": { "description": "See notes on GET endpoint results", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResults" } } } } } }, "x-codegen-request-body-name": "body" } }, "/data/condition?format=object": { "post": { "tags": [ "data" ], "summary": "Search using a condition, returning results as objects", "description": "`New in version 1.4`", "operationId": "searchCondition_asObject", "parameters": [ { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/searchConditions" } } }, "required": true }, "responses": { "200": { "description": "See notes on GET endpoint results", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResultsAsObjects" } } } } } }, "x-codegen-request-body-name": "body" } }, "/data/condition?format=tree": { "post": { "tags": [ "data" ], "summary": "Search using a condition, returning results as a tree of objects", "description": "`New in version 1.4; actual_spec added in version 1.8`", "operationId": "searchCondition_asTree", "parameters": [ { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "actual_spec", "in": "query", "schema": { "type": "boolean" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/searchConditions" } } }, "required": true }, "responses": { "200": { "description": "See notes on GET endpoint results", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResultsAsObjects" } } } } } }, "x-codegen-request-body-name": "body" } }, "/data/condition/param_values": { "post": { "tags": [ "data" ], "summary": "Get possible parameter values for a condition", "description": "`New in version 1.4`", "operationId": "getParamValues", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/getParamValues" } } }, "required": true }, "responses": { "200": { "description": "Values and counts", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/getParamValuesResult" } } } } } }, "x-codegen-request-body-name": "body" } }, "/data/condition/templates": { "get": { "tags": [ "data" ], "summary": "Get a list of all templates", "description": "Get a list of all available templates.\n\n`New in version 1.5`", "operationId": "getTemplates", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/templatesResponse" } } } } } } }, "/data/condition/templates/{template_id}": { "get": { "tags": [ "data" ], "summary": "Get the properties of a specific template", "description": "Get the properties of a specific template.\n\n`New in version 1.5`", "operationId": "getTemplate", "parameters": [ { "name": "template_id", "in": "path", "description": "The id of the template", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/templateNode" } } } } } } }, "/data/candidate": { "post": { "tags": [ "data" ], "summary": "Search for the best candidate node", "description": "`New in version 1.2 - added support for best candidate search.`", "operationId": "candidateByPost", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/candidateInput" } } }, "required": true }, "responses": { "200": { "description": "The node object of the best candidate based on the provided parameters.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/candidateResult" } } } } }, "x-codegen-request-body-name": "body" } }, "/data/candidates": { "post": { "tags": [ "data" ], "summary": "Search for the top candidate nodes", "description": "`New in version 1.2 - added support for top candidates search.`", "operationId": "candidatesByPost", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/candidateInput" } } }, "required": true }, "responses": { "200": { "description": "Enter parameters to identify a device, the response is a list of candidate nodes ordered by descending score", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/candidateResults" } } } } } }, "x-codegen-request-body-name": "body" } }, "/data/nodes/{node_id}": { "get": { "tags": [ "data" ], "summary": "Find a single node", "description": "Get the state of a node with specified id", "operationId": "getNode", "parameters": [ { "name": "node_id", "in": "path", "description": "ID of node to find", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/nodeResults" } } } } } } }, "/data/nodes/{node_id}?relationships=true": { "get": { "tags": [ "data" ], "summary": "Find a single node and its relationships", "description": "Get the state of a node with specified id, along with the traversal specs of all current relationships it has.", "operationId": "getNodeAndRelationships", "parameters": [ { "name": "node_id", "in": "path", "description": "ID of node to find", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/nodeResultsRels" } } } } } } }, "/data/nodes/{node_id}?traverse={traverse_spec}": { "get": { "tags": [ "data" ], "summary": "Find a single node and nodes related to it", "description": "Get the state of a node with specified id, along with the IDs of all nodes reached by following a traversal spec.", "operationId": "getNodeTraverse", "parameters": [ { "name": "node_id", "in": "path", "description": "ID of node to find", "required": true, "schema": { "type": "string" } }, { "name": "traverse_spec", "in": "path", "description": "A traversal spec to follow and retrieve related node IDs. May be wildcarded", "required": true, "schema": { "type": "string" } }, { "name": "flags", "in": "query", "description": "Search flags to use when traversing to related nodes, comma separated", "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "include_destroyed", "exclude_current" ] } } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/nodeResultsTraverse" } } } } } } }, "/data/nodes/{node_id}?attributes={attributes}": { "get": { "tags": [ "data" ], "summary": "Find specific attributes for a single node", "description": "Get the state of a node with specified id, with only the attributes specified.", "parameters": [ { "name": "node_id", "in": "path", "description": "ID of node to find", "required": true, "schema": { "type": "string" } }, { "name": "attributes", "in": "path", "description": "If specified, only these attributes will be retrieved for the node", "required": true, "style": "simple", "explode": false, "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/nodeResults" } } } } } } }, "/data/nodes/{node_id}/graph": { "get": { "tags": [ "data", "topology" ], "summary": "Get the graph data of a node", "description": "Graph data represents a set of nodes and relationships that are associated to the given node. If the node is of ModelDefinition kind, the graph data is obtained from the model's contents rather than running the generic graph traversal function.", "operationId": "getGraphForNode", "parameters": [ { "name": "node_id", "in": "path", "description": "ID of node for which the graph data is generated", "required": true, "schema": { "type": "string" } }, { "name": "focus", "in": "query", "description": "Context used for determining how the graph should be traversed. Must be one of: \n* 'software-connected': focuses on software and communication between items of software.\n* 'software': focuses on software and communication between items of software that are in the same host.\n* 'infrastructure': focuses on the connectivity to network and storage components.\n\nApplicable only to node kinds that are not ModelDefinition.", "schema": { "type": "string", "default": "software-connected", "enum": [ "software-connected", "software", "infrastructure" ] } }, { "name": "apply_rules", "in": "query", "description": "Whether to apply global rules - which is a set of pre-defined constraints to prevent traversing to too many nodes - while obtaining the graph data.\n\nApplicable only to node kinds that are not ModelDefinition.", "schema": { "type": "boolean", "default": true } }, { "name": "complete", "in": "query", "description": "Whether to return the complete set of node and relationship attributes when obtaining the graph data.", "schema": { "type": "boolean", "default": false } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/nodeGraphResults" } } } } } } }, "/data/kinds/{kind}": { "get": { "tags": [ "data" ], "summary": "Find nodes by kind", "description": "Finds all nodes of a specified node kind. Nodes can be filtered by zero to many attribute value using the request's query string. For example, `/data/kinds/Host?os_type=Windows`. All attribute values are assumed to be strings. Note that Swagger does not support free-form query strings, so tools (such as the Swagger UI) or code generated for this endpoint will not be aware of these.\n\nNote also that as results of subsequent pages use the query string to control pagination, the following query string keys are reserved:\n* offset\n* limit\n* format\n* delete\n* results_id\n\nFor an explanation of these parameters see `GET /data/search`. More involved filtering can be achieved using that endpoint.", "operationId": "getNodesByKind", "parameters": [ { "name": "kind", "in": "path", "description": "Node kind to retrieve results for", "required": true, "schema": { "type": "string" } }, { "name": "attributes", "in": "query", "description": "Attributes to retrieve", "schema": { "type": "string" } }, { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Returns results in the same paginated format as the search endpoints", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResults" } } } } } } } }, "/data/kinds/{kind}?format=object": { "get": { "tags": [ "data" ], "summary": "Find nodes by kind", "description": "As `/data/kinds/{kind}` but returns found nodes as objects instead of rows of attribute values.", "operationId": "getNodesByKind_asObject", "parameters": [ { "name": "kind", "in": "path", "description": "Node kind to retrieve results for", "required": true, "schema": { "type": "string" } }, { "name": "attributes", "in": "query", "description": "Attributes to retrieve", "schema": { "type": "string" } }, { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Returns results in the same paginated format as the search endpoints", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResultsAsObjects" } } } } } } } }, "/data/partitions": { "get": { "tags": [ "data" ], "summary": "Get names and ids of partitions", "description": "Gets names and ids of all data store partitions.\n\n`New in version 1.2`", "operationId": "getPartitions", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "object" } } } } } }, "post": { "tags": [ "data" ], "summary": "Create a partition", "description": "Creates a partition.\n\nPartition flags are:\n\n * maintain_history \u2014 store history of all changes to nodes and relationships\n * permit_node_destruction \u2014 when nodes are destroyed, completely remove them rather than marking them as destroyed\n * exclude_from_main_queries \u2014 do not search in this partition when performing a global search\n\nReturns the partition id.\n\n`New in version 1.4`", "operationId": "createPartition", "requestBody": { "description": "Partition details to create", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/createPartition" } } }, "required": true }, "responses": { "201": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "string", "description": "Partition id" } } } } }, "x-codegen-request-body-name": "body" } }, "/data/import": { "post": { "tags": [ "data" ], "summary": "Import data", "description": "Imports data. Returns the import UUID.\n\n`New in version 1.2`", "operationId": "importData", "requestBody": { "description": "Import records", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/import" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "string", "description": "ImportRecord UUID" } } } } }, "x-codegen-request-body-name": "body" } }, "/data/write": { "post": { "tags": [ "data" ], "summary": "Write data with an array of commands", "description": "Perform arbitrary write operations.\n\n`New in version 1.2`", "operationId": "writeData", "requestBody": { "description": "Commands", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/writeData" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/writeDataResult" } } } } }, "x-codegen-request-body-name": "body" } }, "/discovery": { "get": { "tags": [ "discovery" ], "summary": "Discovery status", "description": "Get the current status of the discovery process", "operationId": "getDiscoveryStatus", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "required": [ "running", "status" ], "type": "object", "properties": { "running": { "type": "boolean", "description": "Are there any discovery runs in progress?" }, "status": { "type": "string", "description": "Current status of the discovery process", "enum": [ "starting", "running", "stopping", "stopped" ] } } } } } } } }, "patch": { "tags": [ "discovery" ], "summary": "Change the status of the discovery process", "description": "Either start or stop the discovery process. Note this call can return before the desired state has been reached.", "operationId": "updateDiscoveryStatus", "requestBody": { "content": { "application/json": { "schema": { "required": [ "status" ], "type": "object", "properties": { "status": { "type": "string", "description": "Desired status of the discovery", "enum": [ "running", "stopped" ] }, "passphrase": { "type": "string", "description": "Passphrase to open the vault before starting discovery. Only required if the vault is closed and protected by a passphrase." } } } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": {} } }, "x-codegen-request-body-name": "body" } }, "/discovery/api_provider_metadata": { "get": { "summary": "Get metadata for supported API providers", "description": "Get metadata for the API providers currently supported by BMC Helix Discovery. This can be used as a reference when interacting with the `/discovery/runs` and `/vault/credentials` endpoints. Support for new API providers is available in TKU knowledge updates.\n\n`New in version 1.2`", "operationId": "getAPIProviderMetadata", "tags": [ "discovery" ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/apiProviderMetadata" } } } } } } }, "/discovery/cloud_metadata": { "get": { "summary": "Get metadata for supported cloud providers", "description": "Get metadata for the cloud providers currently supported by BMC Helix Discovery. This can be used as a reference when interacting with the `/discovery/runs` and `/vault/credentials` endpoints. Support for new cloud providers is available in TKU knowledge updates.\n\n`New in version 1.1`", "operationId": "getCloudMetadata", "tags": [ "discovery" ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cloudMetadata" } } } } } } }, "/discovery/excludes": { "get": { "tags": [ "discovery" ], "summary": "Get a list of all excludes", "description": "Get a list of all excludes.\n\n`New in version 1.5`", "operationId": "getExcludes", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/excludeArray" } } } } } }, "post": { "tags": [ "discovery" ], "summary": "Create an exclude", "description": "Create an exclude.\n\n`New in version 1.5`", "operationId": "createExclude", "requestBody": { "description": "Exclude properties", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/excludeCreate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "string", "description": "The ID of the new exclude" } } } }, "400": { "description": "Error creating the exclude", "content": {} } }, "x-codegen-request-body-name": "body" } }, "/discovery/excludes/{exclude_id}": { "get": { "tags": [ "discovery" ], "summary": "Get a specific exclude", "description": "Get a specific exclude.\n\n`New in version 1.5`", "operationId": "getExclude", "parameters": [ { "name": "exclude_id", "in": "path", "description": "Exclude ID", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/exclude" } } } }, "400": { "description": "Error getting the exclude", "content": {} } } }, "delete": { "tags": [ "discovery" ], "summary": "Delete an exclude", "description": "Delete an exclude.\n\n`New in version 1.5`", "operationId": "deleteExclude", "parameters": [ { "name": "exclude_id", "in": "path", "description": "Exclude node ID to be deleted", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": {} } } }, "patch": { "tags": [ "discovery" ], "summary": "Update an exclude", "description": "Updates partial resources of an exclude. Missing properties are left unchanged.\n\n`New in version 1.5`", "operationId": "updateExclude", "parameters": [ { "name": "exclude_id", "in": "path", "description": "Exclude ID", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Exclude properties", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/excludeUpdate" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/exclude" } } } }, "400": { "description": "Error patching the exclude", "content": {} } }, "x-codegen-request-body-name": "body" } }, "/discovery/runs": { "get": { "tags": [ "discovery" ], "summary": "Currently processing runs", "description": "Get details of all currently processing discovery runs.", "operationId": "getDiscoveryRuns", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/run" } } } } } } }, "post": { "tags": [ "discovery" ], "summary": "Add new run", "description": "Create a new snapshot discovery run.\n\nUse the returned 'uuid' as the run_id to check the status of the new run at `/discovery/runs/{run_id}`.\n\n`New in version 1.1 - added support for cloud scans, added support for scan_options field.`\n\n`New in version 1.2 - added support for API scans.`", "operationId": "createDiscoveryRun", "requestBody": { "description": "Snapshot discovery run to be created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/newRun" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "required": [ "uri", "uuid" ], "type": "object", "properties": { "uuid": { "type": "string" }, "uri": { "type": "string" } } } } } } }, "x-codegen-request-body-name": "body" } }, "/discovery/runs/{run_id}": { "get": { "tags": [ "discovery" ], "summary": "Get details of a specific discovery run", "description": "This endpoint is lightweight to call so should be used if you need to poll until a discovery run has finished. When the 'finished' field is returned as true then use the more costly `/discovery/runs/{run_id}/results` and `/discovery/runs/{run_id}/inferred` endpoints to start exploring the results of the run.", "operationId": "getDiscoveryRun", "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the discovery run", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/run" } } } }, "404": { "description": "Invalid run id", "content": {} } } }, "patch": { "tags": [ "discovery" ], "summary": "Update the state of a specific discovery run", "operationId": "updateDiscoveryRun", "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the discovery run", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/patchRunCancelled" } } }, "required": false }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "boolean", "description": "Indicate if the cancellation is successfully performed" } } } } }, "x-codegen-request-body-name": "body" } }, "/discovery/runs/{run_id}/results": { "get": { "tags": [ "discovery" ], "summary": "Get all results of a discovery run", "description": "Get a summary of the results from scanning all endpoints in the run, partitioned by result type.", "operationId": "getDiscoveryRunResultsSummary", "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the discovery run", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runResultsSummary" } } } } } } }, "/discovery/runs/{run_id}/results/{result_type}": { "get": { "tags": [ "discovery" ], "summary": "Get results of a discovery run for a specific result type", "description": "Get a summary of the results from scanning all endpoints in the run that had a specific type of result. Results are returned in the same paginated format as in `/data/search`. See that endpoint for details on the following parameters:\n* offset\n* limit\n* results_id\n* delete\n\n", "operationId": "getDiscoveryRunResultsByType", "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the discovery run", "required": true, "schema": { "type": "string" } }, { "name": "result_type", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "Success", "Skipped", "NoAccess", "NoResponse", "Error", "Dropped" ] } }, { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Returns results in the same paginated format as the search endpoints", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResults" } } } } } } } }, "/discovery/runs/{run_id}/results/{result_type}?format=object": { "get": { "tags": [ "discovery" ], "summary": "Get results of a discovery run for a specific result type", "description": "As `/discovery/runs/{run_id}/results/{result_type}` but returns found nodes as objects instead of rows of attribute values.", "operationId": "getDiscoveryRunResultsByType_asObject", "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the discovery run", "required": true, "schema": { "type": "string" } }, { "name": "result_type", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "Success", "Skipped", "NoAccess", "NoResponse", "Error", "Dropped" ] } }, { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Returns results in the same paginated format as the search endpoints", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResultsAsObjects" } } } } } } } }, "/discovery/runs/{run_id}/inferred": { "get": { "summary": "Get all devices inferred by a discovery run", "description": "Get a summary of all inferred devices from a discovery run, partitioned by device type.\n\nFrom BMC Helix Discovery 11.2 patch 2, this summary also includes device kinds specific to cloud discovery.", "operationId": "getDiscoveryRunInferredSummary", "tags": [ "discovery" ], "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the discovery run", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runInferredSummary" } } } } } } }, "/discovery/runs/{run_id}/inferred/{inferred_kind}": { "get": { "tags": [ "discovery" ], "summary": "Get inferred devices by kind", "description": "Get a summary of the devices inferred by a discovery run which have a specific inferred kind. Results are returned in the same paginated format as in `/data/search`. See that endpoint for details on the following parameters:\n* offset\n* limit\n* results_id\n* delete\n\n", "operationId": "getDiscoveryRunInferredByKind", "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the discovery run", "required": true, "schema": { "type": "string" } }, { "name": "inferred_kind", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Returns results in the same paginated format as the search endpoints", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResults" } } } } }, "404": { "description": "No such run id or inferred kind", "content": {} } } } }, "/discovery/runs/{run_id}/inferred/{inferred_kind}?format=object": { "get": { "tags": [ "discovery" ], "summary": "Get inferred devices by kind", "description": "As `/discovery/runs/{run_id}/inferred/{inferred_kind}` but returns found nodes as objects instead of rows of attribute values.", "operationId": "getDiscoveryRunInferredByKind_asObject", "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the discovery run", "required": true, "schema": { "type": "string" } }, { "name": "inferred_kind", "in": "path", "required": true, "schema": { "type": "string" } }, { "name": "offset", "in": "query", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "schema": { "maximum": 10000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Returns results in the same paginated format as the search endpoints", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResultsAsObjects" } } } } }, "404": { "description": "No such run id or inferred kind", "content": {} } } } }, "/discovery/runs/scheduled": { "get": { "tags": [ "discovery" ], "summary": "Scheduled runs", "description": "Get details of all scheduled discovery runs.", "operationId": "getScheduledRuns", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/scheduledRun" } } } } } } }, "post": { "tags": [ "discovery" ], "summary": "Add new scheduled run", "description": "Create a new scheduled discovery run.", "operationId": "createScheduledRun", "requestBody": { "description": "Scheduled discovery run to be created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/newScheduledRun" } } }, "required": true }, "responses": { "201": { "description": "created", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-codegen-request-body-name": "body" } }, "/discovery/runs/scheduled/{run_id}": { "get": { "tags": [ "discovery" ], "summary": "Get details of a specific scheduled discovery run", "description": "Get details of a specific scheduled discovery run", "operationId": "getScheduledRun", "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the scheduled discovery run", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/scheduledRun" } } } }, "404": { "description": "Invalid range id", "content": {} } } }, "delete": { "tags": [ "discovery" ], "summary": "Delete a specific scheduled discovery run", "operationId": "deleteScheduledRun", "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the scheduled discovery run", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": {} } } }, "patch": { "tags": [ "discovery" ], "summary": "Update the parameters of a specific scheduled discovery run", "operationId": "updateScheduledRun", "parameters": [ { "name": "run_id", "in": "path", "description": "ID of the scheduled discovery run", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/patchScheduledRun" } } }, "required": false }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-codegen-request-body-name": "body" } }, "/events": { "post": { "summary": "Push an event to BMC Helix Discovery.", "description": "Returns a unique ID if the event has been recorded, otherwise an empty string is returned e.g. if the event source has been disabled.", "operationId": "pushEvent", "tags": [ "events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/event" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "string", "description": "Event ID" } } } } }, "x-codegen-request-body-name": "body" } }, "/knowledge": { "get": { "tags": [ "knowledge" ], "summary": "Info on instance knowledge", "description": "Get the current state of the instance's knowledge, including TKU versions.\n\n`New in version 1.1 - includes installed versions of the Devices and Product Content packages.`", "operationId": "getKnowledgeStatus", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/knowledgeState" } } } } } } }, "/knowledge/{filename}": { "post": { "summary": "Upload knowledge to the instance", "description": "Upload a TKU or pattern module to the instance. The body of the request should contain the knowledge upload file either as binary data or in multipart/form-data format (according to RFC 2388).\n\nAfter calling this endpoint, use `GET /knowledge/status` to see progress of the upload.\n\nFrom BMC Helix Discovery 11.1 patch 3, the REST API supports uploading individual TPL files.\n\nOn versions of BMC Discovery prior to 11.1 patch 5, set the 'Content-Type' header to 'application/octet-stream' if uploading as binary data.", "operationId": "uploadKnowledge", "tags": [ "knowledge" ], "parameters": [ { "name": "filename", "in": "path", "description": "Filename of the upload, for reporting purposes. Must have one of these extensions: .tpl, .zip, .drpm, .hrd", "required": true, "schema": { "type": "string" } }, { "name": "activate", "in": "query", "description": "Flag if patterns should be activated after upload", "schema": { "type": "boolean", "default": true } }, { "name": "allow_restart", "in": "query", "description": "Flag if services may be restarted in order to update Network Devices or Product Content. If this is false, but a restart IS required, the upload will not be performed. This case can be detected by checking the optional field 'restart_required' in the body of the error response\n\n`New in version 1.1`", "schema": { "type": "boolean", "default": false } } ], "requestBody": { "content": { "application/octet-stream": { "schema": { "required": [ "file" ], "properties": { "file": { "type": "string", "description": "File to upload", "format": "binary" } } } }, "multipart/form-data": { "schema": { "required": [ "file" ], "properties": { "file": { "type": "string", "description": "File to upload", "format": "binary" } } } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": {} }, "400": { "description": "invalid upload", "content": {} }, "500": { "description": "server side error", "content": {} }, "503": { "description": "another upload is in progress", "content": {} } } } }, "/knowledge/status": { "get": { "tags": [ "knowledge" ], "summary": "Info on knowledge uploads", "description": "Get the current state of a knowledge upload.", "operationId": "getKnowledgeUploadStatus", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "required": [ "error", "last_result", "messages", "processing", "uploading" ], "type": "object", "properties": { "uploading": { "type": "boolean", "description": "Whether a knowledge upload is in progress or not" }, "processing": { "type": "boolean", "description": "Whether any sort of knowledge activity (including an upload) is in progress" }, "last_result": { "type": "string", "description": "The result of the last knowledge upload - either 'success' or 'failure'. Empty if there have not been any uploads, or an upload is still in progress" }, "messages": { "type": "array", "description": "Progress and information messages reported by the last knowledge upload to run, or the one in progress", "items": { "type": "string" } }, "error": { "type": "string", "description": "Any errors reported by the last knowledge upload to run, or the one in progress" } } } } } } } } }, "/models": { "get": { "tags": [ "models" ], "summary": "Get model definitions", "description": "`New in version 1.4`", "operationId": "getModels", "parameters": [ { "name": "name", "in": "query", "description": "Substring to match in model name", "schema": { "type": "string" } }, { "name": "type", "in": "query", "description": "Type of model", "schema": { "type": "string", "enum": [ "rules_template", "rules", "sam", "static", "instance", "imported" ] } }, { "name": "kind", "in": "query", "description": "Node kind created by model", "schema": { "type": "string", "enum": [ "BusinessService", "TechnicalService", "BusinessApplicationInstance" ] } }, { "name": "published", "in": "query", "description": "Only return models that are / are not published", "schema": { "type": "boolean" } }, { "name": "review_suggested", "in": "query", "description": "Only return models that do or do not require review", "schema": { "type": "boolean" } }, { "name": "version", "in": "query", "description": "Model version number", "schema": { "type": "integer" } }, { "name": "favorite", "in": "query", "description": "Only return models that are / are not the invoking user's favorite", "schema": { "type": "boolean" } }, { "name": "compatibility", "in": "query", "description": "Only return models that are compatible with the provided client product name", "schema": { "type": "string" } }, { "name": "offset", "in": "query", "description": "The offset of the first item to return in this page of results.\n\nCan only be supplied if requesting results from an existing results set (by supplying a results_id).\n\nIf you want to retrieve all items in order, this field should usually take the value of the 'next_offset' from the previous page of results.", "schema": { "minimum": 0, "type": "integer", "default": 0 } }, { "name": "limit", "in": "query", "description": "Limits how many items to return in this page of results. Further items can be retrieved by making another request with a different offset.\n\nUse 0 to request the maximum allowed limit.\n\nCan vary from page to page.", "schema": { "maximum": 1000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "description": "An opaque id that can be used to access a result set that has already been generated via a previous search request. Must be supplied if requesting an offset greater than 0.\n\nNote that even if retrieving results from an existing results set, the original query must be supplied in case the result set has timed out and the query needs to be re-run.\n\nThe results_id can be found in any page of results apart from the last one.", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "description": "Controls whether the result set is deleted or not before results are returned.\n\nResult sets are deleted automatically before the last page of results are returned, but setting this field to true on any page will delete the result set immediately.\n\nThis is an optimization to free resources if you don't plan on accessing any further pages of data. Alternatively, if set to false, automatic deletion of the result set will not happen (for this request).", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "count": { "type": "integer", "description": "Total number of models in the results" }, "offset": { "type": "integer", "description": "The offset of the first item in this page of results" }, "results": { "$ref": "#/components/schemas/modelDefinitionArray" }, "results_id": { "type": "string", "description": "The opaque id of the results set." }, "next_offset": { "type": "integer", "description": "The offset to use when requesting the next page of results." }, "next": { "type": "string", "description": "The path to the next page of results (if there IS a next page)." } } } } } } } } }, "post": { "tags": [ "models" ], "summary": "Create a new model", "description": "`New in version 1.4`", "operationId": "createModel", "requestBody": { "description": "Model to create", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/modelDefinition" } } }, "required": true }, "responses": { "201": { "description": "successful creation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/modelDefinition" } } } } }, "x-codegen-request-body-name": "body" } }, "/models/{key}": { "get": { "tags": [ "models" ], "summary": "Get model definition for the specified key", "description": "`New in version 1.4`", "operationId": "getModelByKey", "parameters": [ { "name": "key", "in": "path", "description": "Model key", "required": true, "schema": { "type": "string" } }, { "name": "expand_related", "in": "query", "description": "If true, expands the result to include other models that are related by Containment and Dependency relationships", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/modelDefinition" } } } } } }, "delete": { "tags": [ "models" ], "summary": "Delete a model", "description": "`New in version 1.4`", "operationId": "deleteModelByKey", "parameters": [ { "name": "key", "in": "path", "description": "Model key", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "successful delete", "content": {} } } }, "patch": { "tags": [ "models" ], "summary": "Modify a model", "description": "`New in version 1.4`", "operationId": "patchModelByKey", "parameters": [ { "name": "key", "in": "path", "description": "Model key", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Model state to patch", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/modelDefinition" } } }, "required": true }, "responses": { "200": { "description": "successful patch", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/modelDefinition" } } } } }, "x-codegen-request-body-name": "body" } }, "/models/{key}/topology": { "get": { "tags": [ "models" ], "summary": "Get topology for the model definition specified by key", "description": "`New in version 1.4`", "operationId": "getModelTopologyByKey", "parameters": [ { "name": "key", "in": "path", "description": "Model key", "required": true, "schema": { "type": "string" } }, { "name": "attributes", "in": "query", "description": "Additional attributes to retrieve", "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/topologyNodesResults" } } } } } } }, "/models/{key}/nodecount": { "get": { "tags": [ "models" ], "summary": "Get node count for the model definition specified by key", "description": "`New in version 1.4`", "operationId": "getModelNodecountByKey", "parameters": [ { "name": "key", "in": "path", "description": "Model key", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/groupNodeCountMeta" } } } } } } }, "/models/{key}/nodes": { "get": { "tags": [ "models" ], "summary": "Get nodes for the model definition specified by key", "description": "`New in version 1.4`", "operationId": "getModelNodesByKey", "parameters": [ { "name": "key", "in": "path", "description": "Model key", "required": true, "schema": { "type": "string" } }, { "name": "format", "in": "query", "description": "Result format", "schema": { "type": "string", "enum": [ "array", "object", "tree" ] } }, { "name": "limit", "in": "query", "description": "Limits how many items to return in this page of results. Further items can be retrieved by making another request with a different offset.\n\nUse 0 to request the maximum allowed limit.\n\nCan vary from page to page.", "schema": { "maximum": 1000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "description": "An opaque id that can be used to access a result set that has already been generated via a previous search request. Must be supplied if requesting an offset greater than 0.\n\nNote that even if retrieving results from an existing results set, the original query must be supplied in case the result set has timed out and the query needs to be re-run.\n\nThe results_id can be found in any page of results apart from the last one.", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "description": "Controls whether the result set is deleted or not before results are returned.\n\nResult sets are deleted automatically before the last page of results are returned, but setting this field to true on any page will delete the result set immediately.\n\nThis is an optimization to free resources if you don't plan on accessing any further pages of data. Alternatively, if set to false, automatic deletion of the result set will not happen (for this request).", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResults" } } } } } } } }, "/models/{key}/nodes/{kind}": { "get": { "tags": [ "models" ], "summary": "Get nodes by kind for the model definition specified by key", "description": "`New in version 1.4`", "operationId": "getModelNodesByKeyAndKind", "parameters": [ { "name": "key", "in": "path", "description": "Model key", "required": true, "schema": { "type": "string" } }, { "name": "kind", "in": "path", "description": "Node kind", "required": true, "schema": { "type": "string" } }, { "name": "format", "in": "query", "description": "Result format", "schema": { "type": "string", "enum": [ "array", "object", "tree" ] } }, { "name": "limit", "in": "query", "description": "Limits how many items to return in this page of results. Further items can be retrieved by making another request with a different offset.\n\nUse 0 to request the maximum allowed limit.\n\nCan vary from page to page.", "schema": { "maximum": 1000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "description": "An opaque id that can be used to access a result set that has already been generated via a previous search request. Must be supplied if requesting an offset greater than 0.\n\nNote that even if retrieving results from an existing results set, the original query must be supplied in case the result set has timed out and the query needs to be re-run.\n\nThe results_id can be found in any page of results apart from the last one.", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "description": "Controls whether the result set is deleted or not before results are returned.\n\nResult sets are deleted automatically before the last page of results are returned, but setting this field to true on any page will delete the result set immediately.\n\nThis is an optimization to free resources if you don't plan on accessing any further pages of data. Alternatively, if set to false, automatic deletion of the result set will not happen (for this request).", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResults" } } } } } } } }, "/models/by_node_id/{node_id}": { "get": { "tags": [ "models" ], "summary": "Get model definition for the specified node id", "description": "`New in version 1.4`", "operationId": "getModelByNodeId", "parameters": [ { "name": "node_id", "in": "path", "description": "Model node id", "required": true, "schema": { "type": "string" } }, { "name": "expand_related", "in": "query", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/modelDefinition" } } } } } }, "delete": { "tags": [ "models" ], "summary": "Delete a model", "description": "`New in version 1.4`", "operationId": "deleteModelByNodeId", "parameters": [ { "name": "node_id", "in": "path", "description": "Model node id", "required": true, "schema": { "type": "string" } } ], "responses": { "204": { "description": "successful delete", "content": {} } } }, "patch": { "tags": [ "models" ], "summary": "Modify a model", "description": "`New in version 1.4`", "operationId": "patchModelByNodeId", "parameters": [ { "name": "node_id", "in": "path", "description": "Model node id", "required": true, "schema": { "type": "string" } } ], "requestBody": { "description": "Model state to patch", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/modelDefinition" } } }, "required": true }, "responses": { "200": { "description": "successful patch", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/modelDefinition" } } } } }, "x-codegen-request-body-name": "body" } }, "/models/by_node_id/{node_id}/topology": { "get": { "tags": [ "models" ], "summary": "Get topology for the model definition specified by node id", "description": "`New in version 1.4`", "operationId": "getModelTopologyByNodeId", "parameters": [ { "name": "node_id", "in": "path", "description": "Model node id", "required": true, "schema": { "type": "string" } }, { "name": "attributes", "in": "query", "description": "Additional attributes to retrieve, as a comma separated list", "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/topologyNodesResults" } } } } } } }, "/models/by_node_id/{node_id}/nodecount": { "get": { "tags": [ "models" ], "summary": "Get node count for the model definition specified by node id", "description": "`New in version 1.4`", "operationId": "getModelNodecountByNodeId", "parameters": [ { "name": "node_id", "in": "path", "description": "Model node id", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/groupNodeCountMeta" } } } } } } }, "/models/by_node_id/{node_id}/nodes": { "get": { "tags": [ "models" ], "summary": "Get nodes for the model definition specified by node id", "description": "`New in version 1.4`", "operationId": "getModelNodesByNodeId", "parameters": [ { "name": "node_id", "in": "path", "description": "Model node id", "required": true, "schema": { "type": "string" } }, { "name": "format", "in": "query", "description": "Result format", "schema": { "type": "string", "enum": [ "array", "object", "tree" ] } }, { "name": "limit", "in": "query", "description": "Limits how many items to return in this page of results. Further items can be retrieved by making another request with a different offset.\n\nUse 0 to request the maximum allowed limit.\n\nCan vary from page to page.", "schema": { "maximum": 1000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "description": "An opaque id that can be used to access a result set that has already been generated via a previous search request. Must be supplied if requesting an offset greater than 0.\n\nNote that even if retrieving results from an existing results set, the original query must be supplied in case the result set has timed out and the query needs to be re-run.\n\nThe results_id can be found in any page of results apart from the last one.", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "description": "Controls whether the result set is deleted or not before results are returned.\n\nResult sets are deleted automatically before the last page of results are returned, but setting this field to true on any page will delete the result set immediately.\n\nThis is an optimization to free resources if you don't plan on accessing any further pages of data. Alternatively, if set to false, automatic deletion of the result set will not happen (for this request).", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResults" } } } } } } } }, "/models/by_node_id/{node_id}/nodes/{kind}": { "get": { "tags": [ "models" ], "summary": "Get nodes by kind for the model definition specified by node id", "description": "`New in version 1.4`", "operationId": "getModelNodesByNodeIdAndKind", "parameters": [ { "name": "node_id", "in": "path", "description": "Model node id", "required": true, "schema": { "type": "string" } }, { "name": "kind", "in": "path", "description": "Node kind", "required": true, "schema": { "type": "string" } }, { "name": "format", "in": "query", "description": "Result format", "schema": { "type": "string", "enum": [ "array", "object", "tree" ] } }, { "name": "limit", "in": "query", "description": "Limits how many items to return in this page of results. Further items can be retrieved by making another request with a different offset.\n\nUse 0 to request the maximum allowed limit.\n\nCan vary from page to page.", "schema": { "maximum": 1000, "minimum": 0, "type": "integer", "default": 100 } }, { "name": "results_id", "in": "query", "description": "An opaque id that can be used to access a result set that has already been generated via a previous search request. Must be supplied if requesting an offset greater than 0.\n\nNote that even if retrieving results from an existing results set, the original query must be supplied in case the result set has timed out and the query needs to be re-run.\n\nThe results_id can be found in any page of results apart from the last one.", "schema": { "type": "string" } }, { "name": "delete", "in": "query", "description": "Controls whether the result set is deleted or not before results are returned.\n\nResult sets are deleted automatically before the last page of results are returned, but setting this field to true on any page will delete the result set immediately.\n\nThis is an optimization to free resources if you don't plan on accessing any further pages of data. Alternatively, if set to false, automatic deletion of the result set will not happen (for this request).", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/searchResults" } } } } } } } }, "/models/multi": { "post": { "tags": [ "models" ], "summary": "Manipulate multiple models in a single request", "description": "`New in version 1.4`", "operationId": "modelMultiOperation", "requestBody": { "description": "Multiple operation input", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/modelMultiInput" } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/modelMultiOutput" } } } } }, "x-codegen-request-body-name": "body" } }, "/taxonomy/sections": { "get": { "tags": [ "taxonomy" ], "summary": "Get list of taxonomy model sections", "description": "`New in version 1.4`", "operationId": "getTaxonomySections", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/taxonomy/locales": { "get": { "tags": [ "taxonomy" ], "summary": "Get list of known taxonomy locales", "description": "`New in version 1.4`", "operationId": "getTaxonomyLocales", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/taxonomy/nodekinds": { "get": { "tags": [ "taxonomy" ], "summary": "Get list of defined node kind names", "description": "`New in version 1.4`", "operationId": "getTaxonomyNodeKinds", "parameters": [ { "name": "section", "in": "query", "description": "The model section, such as 'inferred' or 'ddd'. If not specified, returns node kinds from all sections", "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/taxonomy/nodekinds?format=info": { "get": { "tags": [ "taxonomy" ], "summary": "Get list of defined node kinds with kind info", "description": "`New in version 1.4`", "operationId": "getTaxonomyNodeKindsInfo", "parameters": [ { "name": "section", "in": "query", "description": "The model section, such as 'inferred' or 'ddd'. If not specified, returns node kinds from all sections", "schema": { "type": "string" } }, { "name": "locale", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaxonomyNodeKindInfo" } } } } } } }, "/taxonomy/nodekinds/{kind}": { "get": { "tags": [ "taxonomy" ], "summary": "Get defined node kind details", "description": "`New in version 1.4`", "operationId": "getTaxonomyNodeKind", "parameters": [ { "name": "kind", "in": "path", "description": "Name of node kind", "required": true, "schema": { "type": "string" } }, { "name": "locale", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaxonomyNodeKind" } } } } } } }, "/taxonomy/nodekinds/{kind}/fieldlists": { "get": { "tags": [ "taxonomy" ], "summary": "Get list of node kind field lists", "description": "`New in version 1.4`", "operationId": "getTaxonomyNodeKindFieldLists", "parameters": [ { "name": "kind", "in": "path", "description": "Name of node kind", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/taxonomy/nodekinds/{kind}/fieldlists/{fieldlist}": { "get": { "tags": [ "taxonomy" ], "summary": "Get list of fields for a node kind field list", "description": "`New in version 1.4`", "operationId": "getTaxonomyNodeKindFieldList", "parameters": [ { "name": "kind", "in": "path", "description": "Name of node kind", "required": true, "schema": { "type": "string" } }, { "name": "fieldlist", "in": "path", "description": "Name of field list", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TaxonomyField" } } } } } } } }, "/taxonomy/relkinds": { "get": { "tags": [ "taxonomy" ], "summary": "Get list of defined relationship kinds", "description": "`New in version 1.4`", "operationId": "getTaxonomyRelationshipKinds", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } } } } }, "/taxonomy/relkinds?format=info": { "get": { "tags": [ "taxonomy" ], "summary": "Get list of defined relationship kinds with kind info", "description": "`New in version 1.4`", "operationId": "getTaxonomyRelationshipKindsInfo", "parameters": [ { "name": "locale", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaxonomyNodeKindInfo" } } } } } } }, "/taxonomy/relkinds/{kind}": { "get": { "tags": [ "taxonomy" ], "summary": "Get defined relationship kind details", "description": "`New in version 1.4`", "operationId": "getTaxonomyRelationshipKind", "parameters": [ { "name": "kind", "in": "path", "description": "Name of relationship kind", "required": true, "schema": { "type": "string" } }, { "name": "locale", "in": "query", "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaxonomyNodeKind" } } } } } } }, "/topology/nodes": { "post": { "tags": [ "topology" ], "summary": "Get topology data", "description": "Get topology data from one or more starting nodes\n\nIf an array of node_ids or a search query is provided, starts from the matching nodes and finds all nodes directly or indirectly related to them according to the focus.\n\nIf conditions or templates are specified, finds _just_ the nodes matched by the condition, the relationships in the condition, _plus_ any other relationships between the matched nodes. In this case, if node_ids is also specified, those nodes and their relationships are added to the output, but no further related nodes are added.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/topologyNodesQuery" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/topologyNodesResults" } } } } }, "x-codegen-request-body-name": "body" } }, "/topology/nodes/kinds": { "post": { "tags": [ "topology" ], "summary": "Get topology data by node kinds", "description": "Get nodes of the specified kinds which are related to a given set of nodes.\n\n`New in version 1.2`", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/topologyNodesKindsQuery" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/nodeResults" } } } } } }, "x-codegen-request-body-name": "body" } }, "/topology/visualization_state": { "get": { "tags": [ "topology" ], "summary": "Get current visualization state", "description": "Get the current state of the visualization for the authenticated user.\n\n`New in version 1.2`", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/visualizationStateResponse" } } } } } }, "put": { "tags": [ "topology" ], "summary": "Update current visualization state", "description": "Update any or all of the attributes of the current state of the visualization for the authenticated user.\n\n`New in version 1.2`", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/visualizationStatePutRequest" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/visualizationStateResponse" } } } } }, "x-codegen-request-body-name": "body" }, "patch": { "tags": [ "topology" ], "summary": "Update current visualization state", "description": "Update one or more attributes of the current state of the visualization for the authenticated user.\n\n`New in version 1.2`", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/visualizationStateRequest" } } }, "required": true }, "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/visualizationStateResponse" } } } } }, "x-codegen-request-body-name": "body" } }, "/vault/credential_types": { "get": { "tags": [ "credentials" ], "summary": "Get a list of all credential types", "description": "Get a list of all credential types and filter by group and/or category.", "operationId": "getCredentialTypes", "parameters": [ { "name": "group", "in": "query", "description": "Filter credential types by group", "schema": { "type": "string" } }, { "name": "category", "in": "query", "description": "Filter credential types by category", "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/credentialType" } } } } } } } }, "/vault/credential_types/{cred_type_name}": { "get": { "tags": [ "credentials" ], "summary": "Get the properties of a specific credential type", "operationId": "getCredentialType", "parameters": [ { "name": "cred_type_name", "in": "path", "description": "Name of the credential type", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/credentialType" } } } } } } }, "/vault/credentials": { "get": { "tags": [ "credentials" ], "summary": "Get a list of all credentials", "operationId": "getCredentials", "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/credential" } } } } } } } }, "/vault/credentials/{cred_id}": { "get": { "tags": [ "credentials" ], "summary": "Get the properties of a specific credential", "operationId": "getCredential", "parameters": [ { "name": "cred_id", "in": "path", "description": "ID of the credential", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "successful operation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/credential" } } } } } } } }, "components": { "schemas": { "event": { "required": [ "source", "type" ], "type": "object", "properties": { "source": { "type": "string", "description": "Name of an event source which has been defined in the system" }, "type": { "type": "string" }, "params": { "type": "object", "properties": {}, "description": "Parameters of the event depending on the event type" } } }, "import": { "required": [ "items", "source", "type" ], "type": "object", "properties": { "source": { "type": "string", "description": "Name of import source" }, "type": { "type": "string", "description": "Type of import" }, "items": { "type": "array", "description": "Import items", "items": { "$ref": "#/components/schemas/importItem" } }, "uuid": { "type": "string", "description": "UUID of import" }, "complete": { "type": "boolean", "description": "If false, more records for the import UUID are to follow", "default": true } } }, "importItem": { "required": [ "data" ], "type": "object", "properties": { "kind": { "type": "string", "description": "Optional data kind" }, "data": { "type": "object", "properties": {}, "description": "Item data" } } }, "writeData": { "type": "array", "items": { "required": [ "cmd" ], "type": "object", "properties": { "cmd": { "type": "string", "description": "Command to execute" } } } }, "writeDataResult": { "type": "array", "items": { "required": [ "cmd", "code" ], "type": "object", "properties": { "cmd": { "type": "string", "description": "Command that was executed" }, "code": { "type": "integer", "description": "HTTP result code" }, "message": { "type": "string", "description": "Error message (for error codes)" } } } }, "run": { "required": [ "consolidating", "finished", "inferred", "key", "label", "results", "scan_level", "scan_type", "starttime", "uri", "user", "uuid" ], "type": "object", "properties": { "cancelled": { "type": "string", "description": "If present indicates the discovery run was cancelled. Field contents provides more details." }, "blocked": { "type": "boolean", "description": "Flag to indicate if the discovery run is blocked waiting for other prerequisites" }, "done": { "type": "integer", "description": "Number of completed addresses", "format": "int64" }, "key": { "type": "string", "description": "Unique identity string for the discovery run" }, "label": { "type": "string", "description": "Label of the discovery run" }, "scan_kind": { "type": "string", "description": "If this is an API or Cloud scan, the 'scan_params' field will also be populated", "default": "IP", "enum": [ "IP", "Cloud", "API" ] }, "outpost_id": { "type": "string", "description": "Used for IP scans only. Discovery Outpost to use for scanning range. No value means any, empty string means local discovery on the instance or cluster." }, "scope": { "type": "string", "description": "Distinguish overlapping address spaces" }, "scan_level": { "type": "string", "description": "Scan level" }, "scan_params": { "$ref": "#/components/schemas/scanParams" }, "scan_options": { "$ref": "#/components/schemas/scanOptions" }, "scan_type": { "type": "string", "description": "Type of scan" }, "scanning": { "type": "integer", "description": "Number of addresses being scanned", "format": "int64" }, "pre_scanning": { "type": "integer", "description": "Number of addresses being pre-scanned", "format": "int64" }, "starttime": { "type": "string", "description": "Date and time the run started", "format": "date-time" }, "total": { "type": "integer", "description": "Number of addresses in the discovery run", "format": "int64" }, "user": { "type": "string", "description": "User who created the discovery run" }, "valid_ranges": { "type": "string", "description": "Valid IP address ranges in the run" }, "waiting": { "type": "integer", "description": "Number of addresses waiting for end of exclude range", "format": "int64" }, "uuid": { "type": "string", "description": "ID of the discovery run" }, "uri": { "type": "string", "description": "URI to the detail information of the discovery run" }, "finished": { "type": "boolean", "description": "Flag to indicate if the discovery run is finished" }, "inferred": { "type": "string", "description": "URI to the inferred information of the discovery run" }, "results": { "type": "string", "description": "URI to the summarized information of the discovery run" }, "consolidating": { "type": "boolean", "description": "Flag to indicate if the discovery run is consolidated from another instance" }, "consolidation_source": { "type": "string", "description": "Consolidating instance name of the discovery run. If the consolidating instance is in a cluster, this field will represent the cluster name (only present if the run is consolidated from another)" } } }, "scheduledRun": { "required": [ "company", "deleting", "enabled", "label", "range_id", "run_ids", "scan_kind", "scan_level", "scan_type", "schedule", "user", "when_started" ], "type": "object", "properties": { "allow_tpl_scan": { "type": "boolean", "description": "Allow patterns to start new scans against these endpoints." }, "company": { "type": "string", "description": "Specifies the company name to use for a scan in a multitenant deployment." }, "created_time": { "type": "string", "description": "Creation date of the scheduled discovery run" }, "deleting": { "type": "boolean", "description": "If the specified scan range is marked for deletion." }, "enabled": { "type": "boolean", "description": "If the specified scan range is enabled for scanning." }, "range_id": { "type": "string", "description": "Unique identity string for the scheduled discovery run" }, "ranges": { "type": "array", "description": "Used for IP scans only. A list of IP addresses or ranges.", "items": { "type": "string" } }, "run_ids": { "type": "array", "description": "List of unique identity strings for previous discovery runs of specified scan range", "items": { "type": "string" } }, "label": { "type": "string", "description": "Label of the scheduled discovery run" }, "scan_kind": { "type": "string", "description": "If this is an API or Cloud scan, the 'scan_params' field will also be populated", "default": "IP", "enum": [ "IP", "Cloud", "API" ] }, "outpost_id": { "type": "string", "description": "Used for IP scans only. Discovery Outpost to use for scanning range. No value means any, empty string means local discovery on the instance or cluster." }, "scope": { "type": "string", "description": "Distinguish overlapping address spaces" }, "scan_level": { "type": "string", "description": "Scan level" }, "scan_params": { "$ref": "#/components/schemas/scanParams" }, "scan_options": { "$ref": "#/components/schemas/scanOptions" }, "scan_type": { "type": "string", "description": "Type of scan e.g. scheduled" }, "schedule": { "$ref": "#/components/schemas/schedule" }, "user": { "type": "string", "description": "User who created the discovery run" }, "when_started": { "type": "string", "description": "When the specified range was last scanned." } } }, "newRun": { "required": [ "label" ], "type": "object", "properties": { "scan_kind": { "type": "string", "description": "Depending on the kind of scan chosen here, populate either the 'ranges' or 'scan_params' fields.", "default": "IP", "enum": [ "IP", "Cloud", "API" ] }, "outpost_id": { "type": "string", "description": "Used for IP scans only. Discovery Outpost to use for scanning range. No value means any, 'Local discovery' means local discovery on the instance or cluster." }, "scope": { "type": "string" }, "ranges": { "type": "array", "description": "Used for IP scans only. A list of IP addresses or ranges.", "items": { "type": "string" } }, "label": { "type": "string" }, "scan_level": { "type": "string", "default": "Full Discovery", "enum": [ "Full Discovery", "Sweep Scan" ] }, "company": { "type": "string" }, "scan_params": { "$ref": "#/components/schemas/scanParams" }, "scan_options": { "$ref": "#/components/schemas/scanOptions" } } }, "newScheduledRun": { "required": [ "label", "schedule" ], "type": "object", "properties": { "allow_tpl_scan": { "type": "boolean", "description": "Allow patterns to start new scans against these endpoints." }, "company": { "type": "string", "description": "Specifies the company name to use for a scan in a multitenant deployment." }, "enabled": { "type": "boolean", "description": "Enables the specified scheduled scan" }, "label": { "type": "string", "description": "Label of the scheduled discovery run" }, "outpost_id": { "type": "string", "description": "Used for IP scans only. Discovery Outpost to use for scanning range. No value means any, empty string means local discovery on the instance or cluster." }, "ranges": { "type": "array", "description": "List of ranges", "items": { "type": "string" } }, "scan_kind": { "type": "string", "description": "If this is an API or Cloud scan, the 'scan_params' field will also be populated", "default": "IP", "enum": [ "IP", "Cloud", "API" ] }, "scope": { "type": "string", "description": "Distinguish overlapping address spaces" }, "scan_level": { "type": "string", "description": "Scan level" }, "scan_params": { "$ref": "#/components/schemas/scanParams" }, "scan_options": { "$ref": "#/components/schemas/scanOptions" }, "scan_type": { "type": "string", "description": "Type of scan e.g. scheduled" }, "schedule": { "$ref": "#/components/schemas/schedule" } } }, "scanParams": { "required": [ "credential", "provider" ], "type": "object", "properties": { "provider": { "type": "string", "description": "Name of the API or cloud provider being scanned" }, "credential": { "type": "string", "description": "Credential of the API or cloud provider being scanned" }, "region": { "type": "array", "description": "List of regions to be scanned. Used for Cloud scans only", "items": { "type": "string" } }, "cluster_url": { "type": "string", "description": "Used for API scans only." } }, "description": "Used for API and Cloud scans only. The 'provider' field contains the name of the API or cloud provider being scanned. Each provider also supports a different set of additional fields. Look up the API provider with the /discovery/api_provider_metadata endpoint and the cloud provider with the /discovery/cloud_metadata endpoint to see which fields to expect here" }, "scanOptions": { "type": "object", "properties": { "NO_PING": { "type": "boolean", "description": "Skip ping before scanning. Used for IP scans only. If this option is omitted, the system default controls whether to ping or not.", "example": false }, "SESSION_LOGGING": { "type": "boolean", "description": "Create session logs during scanning. Used for IP snapshot scans only. If this option is omitted, session logs will not be created.", "example": false }, "CLOUD_HOST_DETECTION": { "type": "boolean", "description": "Attempt to detect if Hosts are running in a cloud environment such as AWS, Azure or GCE. Only supported by some access methods.", "example": true }, "SKIP_IMPLICIT_SCANS": { "type": "boolean", "description": "Skip implicit scanning. This is only supported by some access methods. If this option is omitted, implicit scanning will be performed.", "example": false }, "VMWARE_GUEST_IMPLICIT_SCANS": { "type": "boolean", "description": "Implicitly scan VMware guest virtual machines when scanning vCenter. If this option is omitted, VMware guests will be implicitly scanned.", "example": true }, "MAX_START_SSM_SESSIONS": { "type": "integer", "description": "Maximum number of concurrent SSM start session requests per region per account. This is only supported for AWS cloud scans. If this option is omitted, the system default sets the limit.", "format": "int64", "example": 3 }, "MAX_ACTIVE_SSM_SESSIONS": { "type": "integer", "description": "Maximum number of active SSM sessions per region per account. This is only supported for AWS cloud scans. If this option is omitted, the system default sets the limit.", "format": "int64", "example": 50 }, "MAX_ACTIVE_IAP_SESSIONS": { "type": "integer", "description": "Maximum number of active IAP sessions per region per account. This is only supported for GCP cloud scans. If this option is omitted, the system default sets the limit.", "format": "int64", "example": 50 } }, "description": "Options controlling the scan. May be extended in future releases." }, "resultsSummary": { "required": [ "count", "uri" ], "type": "object", "properties": { "count": { "type": "integer", "format": "int64" }, "uri": { "type": "string", "description": "Where to go for more information" } } }, "runResultsSummary": { "type": "object", "properties": { "Success": { "$ref": "#/components/schemas/resultsSummary" }, "Skipped": { "$ref": "#/components/schemas/resultsSummary" }, "NoAccess": { "$ref": "#/components/schemas/resultsSummary" }, "NoResponse": { "$ref": "#/components/schemas/resultsSummary" }, "Error": { "$ref": "#/components/schemas/resultsSummary" }, "Dropped": { "$ref": "#/components/schemas/resultsSummary" } } }, "runInferredSummary": { "type": "object", "properties": { "Host": { "$ref": "#/components/schemas/resultsSummary" }, "MFPart": { "$ref": "#/components/schemas/resultsSummary" }, "NetworkDevice": { "$ref": "#/components/schemas/resultsSummary" }, "Printer": { "$ref": "#/components/schemas/resultsSummary" }, "SNMPManagedDevice": { "$ref": "#/components/schemas/resultsSummary" }, "ManagementController": { "$ref": "#/components/schemas/resultsSummary" }, "StorageDevice": { "$ref": "#/components/schemas/resultsSummary" }, "StorageSystem": { "$ref": "#/components/schemas/resultsSummary" }, "VirtualMachine": { "$ref": "#/components/schemas/resultsSummary" }, "LoadBalancerService": { "$ref": "#/components/schemas/resultsSummary" }, "SoftwareInstance": { "$ref": "#/components/schemas/resultsSummary" }, "StorageVolume": { "$ref": "#/components/schemas/resultsSummary" } } }, "patchRunCancelled": { "required": [ "cancelled" ], "type": "object", "properties": { "cancelled": { "type": "boolean", "description": "Flag if the discovery run should be cancelled" } } }, "patchScheduledRun": { "type": "object", "properties": { "allow_tpl_scan": { "type": "boolean", "description": "Allow patterns to start new scans against these endpoints." }, "company": { "type": "string", "description": "Specifies the company name to use for a scan in a multitenant deployment." }, "enabled": { "type": "boolean", "description": "Enables the specified scheduled scan" }, "label": { "type": "string", "description": "Label of the scheduled discovery run" }, "outpost_id": { "type": "string", "description": "Used for IP scans only. Discovery Outpost to use for scanning range. No value means any, empty string means local discovery on the instance or cluster." }, "ranges": { "type": "array", "description": "Used for IP scans only. A list of IP addresses or ranges.", "items": { "type": "string" } }, "scan_kind": { "type": "string", "description": "If this is an API or Cloud scan, the 'scan_params' field will also be populated", "default": "IP", "enum": [ "IP", "Cloud", "API" ] }, "scope": { "type": "string", "description": "Distinguish overlapping address spaces" }, "scan_level": { "type": "string", "description": "Scan level" }, "scan_params": { "$ref": "#/components/schemas/scanParams" }, "scan_options": { "$ref": "#/components/schemas/scanOptions" }, "scan_type": { "type": "string", "description": "Type of scan e.g. scheduled" }, "schedule": { "$ref": "#/components/schemas/schedule" } } }, "knowledgeUpload": { "type": "object", "properties": { "active_count": { "type": "integer", "format": "int64" }, "inactive_count": { "type": "integer", "format": "int64" }, "modified": { "type": "boolean" }, "name": { "type": "string" }, "origin": { "type": "string" }, "package": { "type": "string" }, "submission_date": { "type": "string", "format": "date-time" }, "superseded_count": { "type": "integer", "format": "int64" }, "upload_id": { "type": "string" } }, "description": "Details on a knowledge upload." }, "knowledgeState": { "required": [ "devices", "latest_edp", "latest_storage", "latest_tku", "product_content", "tpl_version", "upload_list" ], "type": "object", "properties": { "devices": { "type": "string", "description": "Version of the Devices package installed" }, "latest_edp": { "$ref": "#/components/schemas/knowledgeUpload" }, "latest_storage": { "$ref": "#/components/schemas/knowledgeUpload" }, "latest_tku": { "$ref": "#/components/schemas/knowledgeUpload" }, "product_content": { "type": "string", "description": "Version of the Product Content package installed" }, "tpl_version": { "type": "array", "description": "A list of two version numbers - major, minor", "items": { "type": "integer", "format": "int64" } }, "upload_list": { "type": "array", "description": "List of all previous instance uploads.", "items": { "$ref": "#/components/schemas/knowledgeUpload" } } }, "description": "Info on instance knowledge. The fields latest_edp, latest_storage, latest_tku and upload_list may have null values if the knowledge type is not present in the system." }, "vault": { "required": [ "open", "passphrase_saved", "passphrase_set" ], "type": "object", "properties": { "open": { "type": "boolean" }, "passphrase_set": { "type": "boolean" }, "passphrase_saved": { "type": "boolean" } } }, "patchVault": { "required": [ "open" ], "type": "object", "properties": { "open": { "type": "boolean" }, "passphrase": { "type": "string" } } }, "credential": { "required": [ "types" ], "type": "object", "properties": { "index": { "type": "integer", "format": "int64" }, "enabled": { "type": "boolean" }, "username": { "type": "string" }, "password": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "ip_range": { "type": "string" }, "ip_exclusion": { "type": "string" }, "scopes": { "type": "array", "items": { "type": "string" } }, "types": { "type": "array", "items": { "type": "string" } }, "internal.valid": { "type": "boolean" }, "internal.secondary": { "type": "boolean" }, "internal.created": { "type": "string", "format": "date-time" }, "internal.modified": { "type": "string", "format": "date-time" }, "internal.messages": { "type": "array", "items": { "type": "string" } }, "su.enabled": { "type": "boolean" }, "su.username": { "type": "string" }, "su.password": { "type": "string" }, "shell.record": { "type": "boolean" }, "shell.prompt": { "type": "string" }, "shell.force_subshell": { "type": "boolean" }, "vsphere.port": { "type": "integer", "format": "int64" }, "vsphere.timeout": { "type": "integer", "format": "int64" }, "vcenter.port": { "type": "integer", "format": "int64" }, "vcenter.timeout": { "type": "integer", "format": "int64" }, "windows.port": { "type": "integer", "format": "int64" }, "telnet.port": { "type": "integer", "format": "int64" }, "telnet.timeout": { "type": "integer", "format": "int64" }, "rlogin.port": { "type": "integer", "format": "int64" }, "rlogin.timeout": { "type": "integer", "format": "int64" }, "cimc.port": { "type": "integer", "format": "int64" }, "cimc.timeout": { "type": "integer", "format": "int64" }, "ribcl.port": { "type": "integer", "format": "int64" }, "ribcl.timeout": { "type": "integer", "format": "int64" }, "vplex.port": { "type": "integer", "format": "int64" }, "vplex.timeout": { "type": "integer", "format": "int64" }, "ssh.port": { "type": "integer", "format": "int64" }, "ssh.timeout": { "type": "integer", "format": "int64" }, "ssh.prefauth": { "type": "array", "items": { "type": "string" } }, "ssh.key.set": { "type": "boolean" }, "ssh.key.passphrase": { "type": "string" }, "ssh.key.data": { "type": "string" }, "kerberos.realm": { "type": "string" }, "snmp.port": { "type": "integer", "format": "int64" }, "snmp.timeout": { "type": "integer", "format": "int64" }, "snmp.version": { "type": "string" }, "snmp.retries": { "type": "integer", "format": "int64" }, "snmp.getbulk": { "type": "boolean" }, "snmp.community": { "type": "string" }, "snmp.v3.privkey": { "type": "string" }, "snmp.v3.authkey": { "type": "string" }, "snmp.v3.privproto": { "type": "string" }, "snmp.v3.securityname": { "type": "string" }, "snmp.v3.context": { "type": "string" }, "snmp.v3.authproto": { "type": "string" }, "wbem.http.port": { "type": "integer", "format": "int64" }, "wbem.https.port": { "type": "integer", "format": "int64" }, "wbem.http.enabled": { "type": "boolean" }, "wbem.https.enabled": { "type": "boolean" }, "wbem.timeout": { "type": "integer", "format": "int64" }, "mainframe_agent.port": { "type": "integer", "format": "int64" }, "mainframe_agent.timeout": { "type": "integer", "format": "int64" }, "uuid": { "type": "string" }, "uri": { "type": "string" }, "web_basic.timeout": { "type": "integer", "format": "int64" }, "web_basic.http.enabled": { "type": "boolean" }, "web_digest.timeout": { "type": "integer", "format": "int64" }, "web_digest.http.enabled": { "type": "boolean" }, "web_oauth2.timeout": { "type": "integer", "format": "int64" }, "web_oauth2.token_endpoint": { "type": "string" }, "web_oauth2.http.enabled": { "type": "boolean" } } }, "credentialType": { "required": [ "categories", "description", "groups", "label", "name", "uri" ], "type": "object", "properties": { "name": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "groups": { "type": "array", "items": { "type": "string" } }, "categories": { "type": "array", "items": { "type": "string" } }, "uri": { "type": "string" } } }, "searchQuery": { "required": [ "query" ], "type": "object", "properties": { "query": { "type": "string", "description": "The search query to run" } } }, "searchResults": { "required": [ "count", "headings", "kind", "offset", "results" ], "type": "object", "properties": { "kind": { "type": "string", "description": "The node kind of these results" }, "count": { "type": "integer", "description": "Total number of items of this kind in the result set. Note that if your search query uses the EXPLODE keyword, there may be more rows of results returned in total than the count indicates. This is because items are exploded on demand. Therefore it is important to use the 'next_offset' when requesting the next page of results." }, "offset": { "type": "integer", "description": "The offset of the first item in this page of results" }, "results": { "type": "array", "description": "One page of results. A list of rows, where each cell is of any type", "items": { "type": "array", "description": "One row of results", "items": { "type": "object", "description": "A single cell in a results row. Can be of any type" } } }, "headings": { "type": "array", "description": "The headings for the rows in 'results'", "items": { "type": "string" } }, "results_id": { "type": "string", "description": "The opaque id of the results set holding all results of the original search query. Must be passed back when requesting subsequent pages. Only present if there are more pages of results to be shown." }, "next_offset": { "type": "integer", "description": "The offset to use when requesting the next page of results. Only present if there IS a next page.\n\nNote that if your search query uses the EXPLODE keyword, the 'next_offset' is the only way to know which item to request next (comparing the 'results' size and 'offset' value on this page is not guaranteed to work)." }, "next": { "type": "string", "description": "The path to the next page of results (if there IS a next page)." } } }, "searchResultsAsObjects": { "required": [ "count", "kind", "offset", "results" ], "type": "object", "properties": { "kind": { "type": "string", "description": "The node kind of these results" }, "count": { "type": "integer", "description": "Total number of items of this kind in the result set. Note that if your search query uses the EXPLODE keyword, there may be more rows of results returned in total than the count indicates. This is because items are exploded on demand. Therefore it is important to use the 'next_offset' when requesting the next page of results." }, "offset": { "type": "integer", "description": "The offset of the first item in this page of results" }, "results": { "type": "array", "description": "One page of results. List of items represented as objects, with attribute names and values. Values can be any type.", "items": { "type": "object", "properties": {} } }, "results_id": { "type": "string", "description": "The opaque id of the results set holding all results of the original search query. Must be passed back when requesting subsequent pages. Only present if there are more pages of results to be shown." }, "next_offset": { "type": "integer", "description": "The offset to use when requesting the next page of results. Only present if there IS a next page.\n\nNote that if your search query uses the EXPLODE keyword, the 'next_offset' is the only way to know which item to request next (comparing the 'results' size and 'offset' value on this page is not guaranteed to work)." }, "next": { "type": "string", "description": "The path to the next page of results (if there IS a next page)." } } }, "searchConditions": { "required": [ "conditions", "label" ], "type": "object", "properties": { "conditions": { "$ref": "#/components/schemas/conditionGraph" }, "label": { "type": "string", "description": "The label from the conditions around which the search is centered" }, "parameters": { "type": "object", "properties": {}, "description": "Parameter values to use in the condition" } } }, "conditionGraph": { "type": "array", "items": { "$ref": "#/components/schemas/conditionGraphObject" } }, "conditionGraphObject": { "required": [ "type" ], "type": "object", "properties": { "type": { "type": "string", "description": "Type of condition object: 'node' or 'rel'", "example": "node" }, "label": { "type": "string", "description": "Label of this condition object" }, "kind": { "type": "string", "description": "Node/relationship kind" }, "condition": { "type": "object", "properties": {}, "description": "Expression to match" }, "show": { "type": "array", "description": "Values to show in search results", "items": { "type": "object", "properties": {} } }, "order_by": { "type": "object", "properties": {}, "description": "Ordering expression" } } }, "getParamValues": { "required": [ "conditions", "parameter" ], "type": "object", "properties": { "conditions": { "$ref": "#/components/schemas/conditionGraph" }, "parameter": { "type": "string", "description": "Name of the parameter" }, "parameters": { "type": "object", "properties": {}, "description": "Already-set parameter values" } } }, "getParamValuesResult": { "required": [ "count", "value" ], "type": "object", "properties": { "value": { "type": "string", "description": "Value" }, "count": { "type": "integer", "description": "Number of time the value appears" } } }, "nodesQuery": { "type": "object", "properties": { "node_ids": { "type": "array", "description": "A list of node IDs. Requests must have either the node_ids parameter or the search_query parameter.", "items": { "type": "string" } }, "search_query": { "type": "string", "description": "A search query to run. Requests must have either the node_ids parameter or the search_query parameter." }, "attributes": { "type": "array", "description": "If specified, only these attributes will be retrieved for all nodes in the results. Otherwise a default set will be used.", "items": { "type": "string" } } } }, "nodeResults": { "required": [ "destroyed", "kind", "modified", "state" ], "type": "object", "properties": { "destroyed": { "type": "boolean", "description": "Whether the node is destroyed or not" }, "kind": { "type": "string", "description": "The kind of the node" }, "modified": { "type": "string", "description": "The last modified time of the node", "format": "date-time" }, "state": { "type": "object", "properties": {}, "description": "The full state of the node, containing all attribute names and values" } } }, "nodeResultsRels": { "required": [ "destroyed", "kind", "modified", "relationships", "state" ], "type": "object", "properties": { "destroyed": { "type": "boolean", "description": "Whether the node is destroyed or not" }, "kind": { "type": "string", "description": "The kind of the node" }, "modified": { "type": "string", "description": "The last modified time of the node", "format": "date-time" }, "state": { "type": "object", "properties": {}, "description": "The full state of the node, containing all attribute names and values" }, "relationships": { "type": "array", "description": "A list of current live traversal specs that can be followed from this node.", "items": { "type": "string" } } } }, "nodeResultsTraverse": { "required": [ "destroyed", "kind", "modified", "relationships", "state" ], "type": "object", "properties": { "destroyed": { "type": "boolean", "description": "Whether the node is destroyed or not" }, "kind": { "type": "string", "description": "The kind of the node" }, "modified": { "type": "string", "description": "The last modified time of the node", "format": "date-time" }, "state": { "type": "object", "properties": {}, "description": "The full state of the node, containing all attribute names and values" }, "relationships": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/components/schemas/traversal" } }, "description": "Results of following the traversal spec, which may have been wildcarded. Maps each concrete traversal spec to a list of (relationship, target node) pairs that can be reached." } } }, "traversal": { "required": [ "node", "rel" ], "type": "object", "properties": { "rel": { "type": "string", "description": "The ID of the relationship node in this traversal." }, "node": { "type": "string", "description": "The ID of the target node reached in this traversal." } } }, "nodeGraphResults": { "required": [ "links", "nodes" ], "type": "object", "properties": { "nodes": { "type": "array", "description": "List of node data involved in the graph data", "items": { "required": [ "id", "kind", "name", "short_name" ], "type": "object", "properties": { "id": { "type": "string", "description": "ID of the node" }, "kind": { "type": "string", "description": "Kind of the node" }, "name": { "type": "string", "description": "Name of the node" }, "short_name": { "type": "string", "description": "Shortened name of the node" } } } }, "links": { "type": "array", "description": "List of relationships involved in the graph data", "items": { "required": [ "kind", "rel_id", "src_id", "tgt_id" ], "type": "object", "properties": { "rel_id": { "type": "string", "description": "ID of the relationship" }, "kind": { "type": "string", "description": "Kind of the relationship" }, "src_id": { "type": "string", "description": "ID of the source node" }, "tgt_id": { "type": "string", "description": "ID of the target node" } } } } } }, "baselineStatus": { "required": [ "results", "summary" ], "type": "object", "properties": { "summary": { "$ref": "#/components/schemas/baselineSummary" }, "results": { "$ref": "#/components/schemas/baselineResults" } } }, "about": { "required": [ "versions" ], "type": "object", "properties": { "versions": { "$ref": "#/components/schemas/aboutVersions" } } }, "aboutVersions": { "required": [ "devices", "os_updates", "product", "product_content", "product_version" ], "type": "object", "properties": { "devices": { "type": "string", "description": "Version of the Devices package installed" }, "os_updates": { "type": "string", "description": "Version of the OS Updates package installed" }, "product": { "type": "string", "description": "Internal version of BMC Helix Discovery" }, "product_content": { "type": "string", "description": "Version of the Product Content package installed" }, "product_version": { "type": "string", "description": "Marketing version of BMC Helix Discovery" } } }, "applicationPreferences": { "required": [ "csv_bom", "csv_delimiter", "date_format", "group_visible", "history_view", "pagesize", "recent_item_count", "result_set_size", "time_with_seconds_format", "xml_version" ], "type": "object", "properties": { "date_format": { "type": "string", "description": "The date format to be displayed in either UK or US style (%Y-%m-%d, %d/%m/%Y, %m/%d/%Y)" }, "time_with_seconds_format": { "type": "string", "description": "The time format to be displayed (%H:%M:%S %Z, %-I:%M:%S %P %Z, %H:%M:%S, %-I:%M:%S %P)" }, "result_set_size": { "type": "integer", "description": "The number of search results to display per page (10, 15, 20, 25, 30, 35, 40, 45, 50, 75, 100, 125, 150, 175, 200, 225, 250)" }, "recent_item_count": { "type": "integer", "description": " The size of the Recent Items list (0, 5, 10, 15, 20, 25)" }, "history_view": { "type": "string", "description": " The History view type (COMPARATIVE or RAW)" }, "csv_delimiter": { "type": "string", "description": "The default delimiter for exported data (',', ';', or '\\t')" }, "csv_bom": { "type": "boolean", "description": "Whether to include a byte-order-mark (BOM) in CSV export files" }, "xml_version": { "type": "string", "description": "The XML version required for reports (1.0 or 1.1)" }, "pagesize": { "type": "string", "description": "The default paper size for PDF reports (A4, Letter, B4, Legal or ELEVENSEVENTEEN (11\"x17\"))" }, "group_visible": { "type": "boolean", "description": "Whether to show group name labels on search results pages" } } }, "apiProviderMetadata": { "type": "array", "description": "A list of API providers, along with information on the fields required to create API scans and API credentials for each provider", "items": { "required": [ "cred_params", "provider", "scan_params" ], "type": "object", "properties": { "provider": { "type": "string", "description": "Name of the API provider. Used for the 'scan_params.provider' field in the /discovery/runs endpoints, and as an entry in the 'types' list in the /vault/credentials endpoints" }, "scan_params": { "type": "array", "description": "List of additional 'scan_params' fields this API provider supports in the /discovery/runs endpoint", "items": { "required": [ "allowed_values", "description", "is_list", "mandatory", "name", "type" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of the field in the 'scan_params' object" }, "description": { "type": "string" }, "type": { "type": "string", "description": "The type of this field" }, "is_list": { "type": "boolean", "description": "Whether this field is a list of values or a single instance" }, "mandatory": { "type": "boolean", "description": "Whether this field is required to create a new API scan or can be skipped" }, "allowed_values": { "type": "object", "properties": {}, "description": "The allowed values for this field. The values are the keys of this object, with descriptions for the values" } } } }, "cred_params": { "type": "array", "description": "List of additional fields this API provider supports in the /vault/credentials endpoints", "items": { "required": [ "allowed_values", "description", "is_list", "mandatory", "name", "type" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of this field in the credentials object" }, "description": { "type": "string" }, "type": { "type": "string", "description": "The type of this field" }, " is_list": { "type": "boolean", "description": "Whether this field is a list of values or a single instance" }, "mandatory": { "type": "boolean", "description": "Whether this field is required to create a new API provider credential or can be skipped" }, "allowed_values": { "type": "array", "description": "The allowed values for this field", "items": { "type": "string" } } } } } } } }, "cloudMetadata": { "type": "array", "description": "A list of cloud providers, along with information on the fields required to create cloud scans and cloud credentials for each provider", "items": { "required": [ "cred_params", "provider", "scan_params" ], "type": "object", "properties": { "provider": { "type": "string", "description": "Name of the cloud provider. Used for the 'scan_params.provider' field in the /discovery/runs endpoints, and as an entry in the 'types' list in the /vault/credentials endpoints" }, "scan_params": { "type": "array", "description": "List of additional 'scan_params' fields this cloud provider supports in the /discovery/runs endpoint", "items": { "required": [ "allowed_values", "description", "is_list", "mandatory", "name", "type" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of the field in the 'scan_params' object" }, "description": { "type": "string" }, "type": { "type": "string", "description": "The type of this field" }, "is_list": { "type": "boolean", "description": "Whether this field is a list of values or a single instance" }, "mandatory": { "type": "boolean", "description": "Whether this field is required to create a new cloud scan or can be skipped" }, "allowed_values": { "type": "object", "properties": {}, "description": "The allowed values for this field. The values are the keys of this object, with descriptions for the values" } } } }, "cred_params": { "type": "array", "description": "List of additional fields this cloud provider supports in the /vault/credentials endpoints", "items": { "required": [ "allowed_values", "description", "is_list", "mandatory", "name", "type" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of this field in the credentials object" }, "description": {}, "type": { "type": "string", "description": "The type of this field" }, "is_list": { "type": "boolean", "description": "Whether this field is a list of values or a single instance" }, "mandatory": { "type": "boolean", "description": "Whether this field is required to create a new cloud credential or can be skipped" }, "allowed_values": { "type": "array", "description": "The allowed values for this field", "items": { "type": "string" } } } } } } } }, "baselineSummary": { "required": [ "last_message", "last_ok" ], "type": "object", "properties": { "last_ok": { "type": "boolean", "description": "Whether the last baseline check contained any failures or not" }, "last_message": { "type": "string", "description": "Summary message from the last baseline check" }, "last_checked": { "type": "string", "description": "Time the baseline was last checked", "format": "date-time" } } }, "baselineResults": { "required": [ "FAILED", "NOT_RUN", "PASSED" ], "type": "object", "properties": { "PASSED": { "type": "array", "description": "Checks which passed the last baseline run", "items": { "$ref": "#/components/schemas/baselineCheckResult" } }, "FAILED": { "type": "array", "description": "Checks which failed the last baseline run", "items": { "$ref": "#/components/schemas/baselineCheckResult" } }, "NOT_RUN": { "type": "array", "description": "Checks currently disabled from baseline runs", "items": { "$ref": "#/components/schemas/baselineCheckResult" } } } }, "baselineCheckResult": { "required": [ "enabled", "message", "name", "severity" ], "type": "object", "properties": { "name": { "type": "string", "description": "The name of this check" }, "severity": { "type": "string", "description": "How important this check is", "enum": [ "INFO", "MINOR", "MAJOR", "CRITICAL" ] }, "enabled": { "type": "boolean", "description": "Whether this check will be included in the next baseline run" }, "message": { "type": "string", "description": "A message describing the status of this check" }, "details": { "type": "array", "description": "Detailed results of the individual components of this check", "items": { "$ref": "#/components/schemas/baselineCheckDetail" } } } }, "baselineCheckDetail": { "required": [ "messages", "status" ], "type": "object", "properties": { "status": { "type": "string", "description": "Last result of running this component of a baseline check", "enum": [ "PASSED", "FAILED", "NOT_RUN" ] }, "messages": { "type": "array", "description": "Messages generated from the last run of this component", "items": { "type": "string" } }, "machine_name": { "type": "string", "description": "The BMC Helix Discovery cluster member that this component of the check was run on. Only present if the instance is clustered and this component is run once per cluster member." } } }, "topologyNodesQuery": { "type": "object", "properties": { "node_ids": { "type": "array", "description": "A list of node IDs. Requests must have one of node_ids, search_query, conditions or templates.", "items": { "type": "string" } }, "search_query": { "type": "string", "description": "A search query to run. Requests must have one of node_ids, search_query, conditions or templates." }, "conditions": { "type": "array", "description": "Array of condition objects. Requests must have one of node_ids, search_query, conditions or templates.", "items": { "type": "object", "properties": {} } }, "parameters": { "type": "object", "properties": {}, "description": "Parameters required by conditions" }, "templates": { "type": "object", "properties": {}, "description": "Model templates and parameters. Requests must have one of node_ids, search_query, conditions or templates." }, "focuses": { "type": "array", "description": "List of one or more focuses to use for determining how the graph should be traversed when obtaining topology data.", "items": { "type": "string" } }, "extra_rules": { "type": "array", "description": "Extra rules used to determine whether or not a particular node should be included or excluded when conducting a traversal.", "items": { "type": "object", "properties": {} } }, "show_rules": { "type": "boolean", "description": "Whether or not to show the rules used in the topology retrieval in the response.", "default": false }, "explode_groups": { "type": "array", "description": "\"Explode\" some or all groups - returns full data for all members in the specified groups, unconditionally. This should either be a list of string group IDs or the string 'all'.", "items": { "type": "string" } }, "shared_overrides": { "type": "object", "properties": {}, "description": "Overrides to shared nodes." }, "grouping": { "type": "string", "description": "Controls automated grouping style. Currently only applied if the context is software-connected.", "enum": [ "aggressive", "simple", "rootlocal", "root", "nevergroup" ] }, "max_depth": { "type": "integer", "description": "Maximum depth to traverse from root nodes during topology retrieval." }, "expanding_group": { "type": "boolean", "description": "Whether or not the request has been made because we are expanding a previously grouped set of results from previously retrieved topology data.", "default": false }, "show_suppressed": { "type": "boolean", "description": "Whether or not to show in the response the list of node IDs that have been suppressed from the results by exclusion rules or due to shared evaluation.", "default": false }, "attributes": { "type": "array", "description": "If specified, only these attributes will be retrieved for all nodes in the results. Otherwise a default set will be used.", "items": { "type": "string" } }, "at_time": { "type": "string", "description": "The time in the past for which to retrieve topology data.", "format": "date-time" }, "annotate_cycles": { "type": "boolean", "description": "Whether or not to annotate relationships that lead to cycles in the returned topology data.", "default": false } } }, "topologyNodesKindsQuery": { "type": "object", "properties": { "node_ids": { "type": "array", "description": "A list of node IDs. Requests must have either the node_ids parameter or the search_query parameter.", "items": { "type": "string" } }, "search_query": { "type": "string", "description": "A search query to run. Requests must have either the node_ids parameter or the search_query parameter." }, "node_kinds": { "type": "array", "description": "List of node kinds", "items": { "type": "string" } } } }, "topologyNodesResults": { "required": [ "links", "nodes" ], "type": "object", "properties": { "links": { "type": "array", "description": "List of relationships involved in the graph data", "items": { "required": [ "kind", "rel_id", "src_id", "tgt_id" ], "type": "object", "properties": { "rel_id": { "type": "string", "description": "ID of the relationship" }, "kind": { "type": "string", "description": "Kind of the relationship" }, "src_id": { "type": "string", "description": "ID of the source node" }, "tgt_id": { "type": "string", "description": "ID of the target node" } } } }, "nodes": { "type": "array", "description": "List of node data involved in the graph data", "items": { "type": "object", "properties": {} } } } }, "visualizationStateRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "show_big": { "type": "boolean" }, "show_labels": { "type": "boolean" }, "small_x": { "type": "integer" }, "small_y": { "type": "integer" }, "layout": { "type": "integer" }, "surround_type": { "type": "string" }, "impact_direction": { "type": "string" }, "context": { "type": "integer" } } }, "visualizationStatePutRequest": { "required": [ "context", "enabled", "impact_direction", "layout", "show_big", "show_labels", "small_x", "small_y", "surround_type" ], "type": "object", "properties": { "enabled": { "type": "boolean" }, "show_big": { "type": "boolean" }, "show_labels": { "type": "boolean" }, "small_x": { "type": "integer" }, "small_y": { "type": "integer" }, "layout": { "type": "integer" }, "surround_type": { "type": "string" }, "impact_direction": { "type": "string" }, "context": { "type": "integer" } } }, "visualizationStateResponse": { "required": [ "context", "enabled", "impact_direction", "layout", "show_big", "show_labels", "small_x", "small_y", "surround_type" ], "type": "object", "properties": { "enabled": { "type": "boolean" }, "show_big": { "type": "boolean" }, "show_labels": { "type": "boolean" }, "small_x": { "type": "integer" }, "small_y": { "type": "integer" }, "layout": { "type": "integer" }, "surround_type": { "type": "string" }, "impact_direction": { "type": "string" }, "context": { "type": "integer" } } }, "candidateInput": { "required": [ "kind" ], "type": "object", "properties": { "kind": { "type": "string", "description": "Node kind to search candidates into, * means all supported node kinds", "enum": [ "Host", "NetworkDevice", "SNMPManagedDevice", "Printer", "ManagementController", "StorageSystem", "*" ] }, "name": { "type": "string" }, "hostname": { "type": "string" }, "sysname": { "type": "string" }, "serial": { "type": "string" }, "uuid": { "type": "string" }, "wwnn": { "type": "string" }, "scope": { "type": "string" }, "endpoint": { "type": "string" }, "dns_name": { "type": "array", "description": "DNS name to search for, it can be a string or an array of strings", "items": { "type": "string" } }, "ip_address": { "type": "array", "description": "IP address to search for, it can be a string or an array of strings", "items": { "type": "string" } }, "mac_address": { "type": "array", "description": "MAC address to search for, it can be a string or an array of strings", "items": { "type": "string" } }, "limit": { "maximum": 100, "minimum": 1, "type": "integer" }, "attributes": { "type": "array", "description": "If specified, only these attributes will be retrieved for each node in the results. Otherwise a default set will be used and the node ID will be provided. The score is provided regardless of the attributes requested.", "items": { "type": "string" } } } }, "candidateResult": { "required": [ "score" ], "type": "object", "properties": { "score": { "type": "integer", "description": "Score evaluation of the result based on the provided criteria." } }, "description": "Object represented with attribute names and values. Values can be any type. The score is provided regardless of the attributes requested." }, "candidateResults": { "required": [ "count", "results" ], "type": "object", "properties": { "count": { "type": "integer", "description": "Total number of items in the result set." }, "results": { "type": "array", "description": "List of items represented as objects, with attribute names and values. Values can be any type. The score is provided regardless of the attributes requested.", "items": { "type": "object", "properties": {} } } } }, "TaxonomyNodeKindInfo": { "required": [ "description", "display_name", "display_plural", "name" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of node kind" }, "display_name": { "type": "string", "description": "Locale name of node kind" }, "display_plural": { "type": "string", "description": "Locale plural name of node kind" }, "category": { "type": "string", "description": "Locale category name" }, "description": { "type": "string", "description": "Description of node kind" }, "section": { "type": "string", "description": "Model section" } } }, "TaxonomyNodeKind": { "required": [ "attrs", "category", "child_classes", "description", "display_name", "display_plural", "display_rels", "exprs", "extension_attrs", "inherited_attrs", "inherited_display_rels", "inherited_exprs", "inherited_rels", "label_attr", "long_description", "name", "parent_class", "rels", "section" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of node kind" }, "display_name": { "type": "string", "description": "Locale name of node kind" }, "display_plural": { "type": "string", "description": "Locale plural name of node kind" }, "category": { "type": "string", "description": "Locale category name" }, "description": { "type": "string", "description": "Description of node kind" }, "long_description": { "type": "string", "description": "Long description of node kind" }, "section": { "type": "string", "description": "Model section" }, "parent_class": { "type": "string", "description": "Name of parent class" }, "child_classes": { "type": "array", "description": "Name of child classes", "items": { "type": "string" } }, "attrs": { "type": "array", "description": "List of attributes defined for this node kind", "items": { "required": [ "description", "display_name", "name", "type" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of attribute" }, "description": { "type": "string", "description": "Description of attribute" }, "type": { "type": "string", "description": "Type of attribute" }, "display_name": { "type": "string", "description": "Locale name of attribute" } } } }, "inherited_attrs": { "type": "array", "description": "List of attributes inherited from class hierarchy", "items": { "required": [ "description", "display_name", "name", "type" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of attribute" }, "description": { "type": "string", "description": "Description of attribute" }, "type": { "type": "string", "description": "Type of attribute" }, "display_name": { "type": "string", "description": "Locale name of attribute" } } } }, "extension_attrs": { "type": "array", "description": "Names of attributes found on this node kind that have not been defined in the taxonomy", "items": { "type": "string" } }, "label_attr": { "type": "string", "description": "Name of attribute used as the label" }, "exprs": { "type": "array", "description": "List of expressions defined for this node kind", "items": { "required": [ "description", "display_name", "name", "value" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of expression" }, "description": { "type": "string", "description": "Description of expression" }, "value": { "type": "string", "description": "Value of expression" }, "display_name": { "type": "string", "description": "Locale name of expression" } } } }, "inherited_exprs": { "type": "array", "description": "List of expressions inherited from class hierarchy", "items": { "required": [ "description", "display_name", "name", "value" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of expression" }, "description": { "type": "string", "description": "Description of expression" }, "value": { "type": "string", "description": "Value of expression" }, "display_name": { "type": "string", "description": "Locale name of expression" } } } }, "rels": { "type": "array", "description": "List of relationships defined for this node kind", "items": { "required": [ "description", "display_name", "spec" ], "type": "object", "properties": { "spec": { "type": "string", "description": "Specification of relationship" }, "description": { "type": "string", "description": "Description of relationship" }, "display_name": { "type": "string", "description": "Locale name of relationship" }, "impact_to": { "type": "boolean", "description": "True if the related node is impacted by this one" }, "impact_from": { "type": "boolean", "description": "True if this node is impacted by the related node" } } } }, "inherited_rels": { "type": "array", "description": "List of relationships inherited from class hierarchy", "items": { "required": [ "description", "display_name", "spec" ], "type": "object", "properties": { "spec": { "type": "string", "description": "Specification of relationship" }, "description": { "type": "string", "description": "Description of relationship" }, "display_name": { "type": "string", "description": "Locale name of relationship" }, "impact_to": { "type": "boolean", "description": "True if the related node is impacted by this one" }, "impact_from": { "type": "boolean", "description": "True if this node is impacted by the related node" } } } }, "display_rels": { "type": "array", "description": "List of display relationships defined for this node kind", "items": { "required": [ "description", "display_name", "name", "specs" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of display relationship" }, "description": { "type": "string", "description": "Description of display relationship" }, "specs": { "type": "array", "description": "List of relationship specifications", "items": { "type": "string" } }, "display_name": { "type": "string", "description": "Locale name of display relationship" } } } }, "inherited_display_rels": { "type": "array", "description": "List of display relationships inherited from class hierarchy", "items": { "required": [ "description", "display_name", "name", "specs" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of display relationship" }, "description": { "type": "string", "description": "Description of display relationship" }, "specs": { "type": "array", "description": "List of relationship specifications", "items": { "type": "string" } }, "display_name": { "type": "string", "description": "Locale name of display relationship" } } } } } }, "TaxonomyField": { "required": [ "name", "type" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of attribute or relationship spec" }, "type": { "type": "string", "description": "Field type", "enum": [ "attr", "display_link", "expr", "link", "sep" ] } } }, "scheduleDaysOfWeek": { "type": "string", "description": "Schedule days of week", "enum": [ "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY" ] }, "scheduleDaysOfWeekArray": { "type": "array", "description": "List of schedule days of week", "items": { "$ref": "#/components/schemas/scheduleDaysOfWeek" } }, "schedule": { "type": "object", "properties": { "days_of_month": { "type": "array", "description": "List of days", "items": { "type": "integer" } }, "days_of_week": { "$ref": "#/components/schemas/scheduleDaysOfWeekArray" }, "duration": { "type": "integer", "description": "Duration" }, "recurrence_type": { "type": "string", "description": "Schedule recurrence type", "enum": [ "DAILY", "WEEKLY", "MONTHLY_BY_DATE", "MONTHLY_BY_WEEK" ] }, "start_minute": { "type": "integer", "description": "Start minute" }, "start_times": { "type": "array", "description": "List of start times", "items": { "type": "integer" } }, "week_def": { "type": "string", "description": "Week definition", "enum": [ "FIRST", "SECOND", "THIRD", "FOURTH", "LAST" ] } } }, "exclude": { "required": [ "created_by", "description", "enabled", "label", "range_id", "ranges", "scope" ], "type": "object", "properties": { "created_by": { "type": "string", "description": "Creator" }, "description": { "type": "string", "description": "Description" }, "enabled": { "type": "boolean", "description": "Enabled" }, "label": { "type": "string", "description": "Label" }, "range_id": { "type": "string", "description": "Range ID" }, "ranges": { "type": "array", "description": "List of ranges", "items": { "type": "string" } }, "schedule": { "$ref": "#/components/schemas/schedule" }, "scope": { "type": "string", "description": "Scope" } } }, "excludeArray": { "type": "array", "items": { "$ref": "#/components/schemas/exclude" }, "description": "List of excludes" }, "excludeCreate": { "type": "object", "properties": { "description": { "type": "string", "description": "Description" }, "label": { "type": "string", "description": "Label" }, "ranges": { "type": "array", "items": { "type": "string" } }, "schedule": { "$ref": "#/components/schemas/schedule" }, "scope": { "type": "string", "description": "Scope" } } }, "excludeUpdate": { "type": "object", "properties": { "description": { "type": "string", "description": "Description" }, "enabled": { "type": "boolean", "description": "Enable or disable the exclude" }, "label": { "type": "string", "description": "Label" }, "ranges": { "type": "array", "items": { "type": "string" } }, "schedule": { "$ref": "#/components/schemas/schedule" }, "scope": { "type": "string", "description": "Scope" } } }, "groupNodeCountMeta": { "type": "object", "additionalProperties": { "type": "integer", "description": "Total number of items of this kind" }, "example": { "Host": 4, "SoftwareInstance": 30 } }, "createPartition": { "required": [ "name" ], "type": "object", "properties": { "name": { "type": "string", "description": "Name of the partition" }, "flags": { "type": "array", "description": "Partition flags", "items": { "type": "string", "enum": [ "maintain_history", "permit_node_destruction", "exclude_from_main_queries" ] } } } }, "modelDefinition": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the model" }, "type": { "type": "string", "description": "Type of model", "enum": [ "sam", "rules_template", "rules", "static", "instance", "imported" ] }, "kind": { "type": "string", "description": "Published node kind", "enum": [ "BusinessService", "TechnicalService", "BusinessApplicationInstance" ] }, "key": { "type": "string", "description": "Unique key" }, "version": { "type": "integer", "description": "Version of the model" }, "description": { "type": "string", "description": "Description of the model" }, "notes": { "type": "string", "description": "Notes about the model" }, "compatibility": { "type": "string", "description": "Identifier of client compatibility" }, "attributes": { "type": "object", "description": "Attributes to store on published node" }, "metadata": { "type": "object", "description": "Additional metadata stored on the model" }, "conditions": { "description": "Conditions in a rule-based model", "$ref": "#/components/schemas/conditionGraph" }, "templates": { "type": "object", "description": "Templates used by this model" }, "contents": { "type": "object", "description": "Nodes and relationships in this model" }, "published": { "type": "boolean", "description": "True if the model is published" }, "favorite": { "type": "boolean", "description": "True if the model is a favorite of the calling user" }, "depended_upon": { "type": "array", "items": { "type": "string" }, "description": "Keys of models that this one depends upon" }, "dependants": { "type": "array", "items": { "type": "string" }, "description": "Keys of models that depend on this one" }, "containers": { "type": "array", "items": { "type": "string" }, "description": "Keys of models that contain this one" }, "contained": { "type": "array", "items": { "type": "string" }, "description": "Keys of models that are contained in this one" }, "instances": { "type": "array", "items": { "type": "string" }, "description": "Keys of models that are instances of this one" }, "instance_of": { "type": "string", "description": "Key of multi-instance model that this one is an instance of" } } }, "modelDefinitionArray": { "type": "array", "items": { "$ref": "#/components/schemas/modelDefinition" } }, "modelMultiInput": { "type": "array", "items": { "required": [ "method", "body" ], "type": "object", "properties": { "method": { "type": "string", "enum": [ "POST", "PATCH", "CLONE", "DELETE" ] }, "body": { "type": "object", "properties": {} } } } }, "modelMultiOutput": { "type": "array", "items": { "required": [ "code" ], "type": "object", "properties": { "code": { "type": "integer", "description": "HTTP status code of operation" }, "body": { "type": "object", "description": "Success result" }, "message": { "type": "string", "description": "Error message" } } } }, "templateResponse": { "required": [ "id", "section", "name", "description", "icon" ], "type": "object", "properties": { "id": { "type": "string", "description": "The id of the template" }, "section": { "type": "string", "description": "The section of the template" }, "name": { "type": "string", "description": "The name of the template" }, "description": { "type": "string", "description": "The description of the template" }, "icon": { "type": "string", "description": "The icon of the template" } } }, "templatesResponse": { "required": [ "templates" ], "type": "object", "properties": { "templates": { "type": "array", "description": "A list of all available templates", "items": { "$ref": "#/components/schemas/templateResponse" } } } }, "templateNode": { "required": [ "template_info", "conditions", "parameters" ], "type": "object", "properties": { "template_info": { "$ref": "#/components/schemas/templateResponse" }, "conditions": { "$ref": "#/components/schemas/conditionGraph" }, "parameters": { "type": "object", "description": "Parameter values to use in the condition" } } } } } }