Files
cve-dashboard/swagger.json

53229 lines
1.6 MiB

{
"swagger": "2.0",
"info": {
"title": "Ivanti Neurons API",
"description": "<h2>RBAC 419 Error Codes</h2>\n<p>The Ivanti Neurons platform supports a privilege-based permissions structure. When the requesting user doesn't have permission to access an endpoint, the API will return a 419 error code with a payload that looks like this:</p>\n<pre><code>\n{\n \"timestamp\": \"2021-03-30T16:47:30.648\",\n \"status\": 419,\n \"error\": \"InsufficientPrivileges\",\n \"clientsMissingPrivileges\": [\n 656\n ],\n \"missingPrivilege\": \"Assessment Control\",\n \"method\": \"PUT\",\n \"path\": \"/api/v1/client/656/assessment/12\"\n}\n</code></pre>\n<p>In the above example, the requesting user was denied access because they lacked the Assessment Control privilege. To overcome this, the requesting user needs to be assigned a role that grants the Assessment Control privilege. One way to do this is login to the platform UI and go to the IAM Roles page. Type in \"Assessment Control\" in the search input and select different roles on the left side panel. As you click through the various roles, look for ones that display a green checkmark for the Assessment Control card. Once you've found a suitable role, assign it yourself or have another user with User Role Disposition Control do it for you.</p>\n\n<p>If you don't want to assign one of the Ivanti Neurons provided roles to grant the Assessment Control privilege, you can create a custom role that only has the privileges needed. Note, if any role negates the Assessment Control privilege, you will need to un-assign that role regardless of any other roles that grant the privilege because negation always take precedence.</p>\n\n<p>Another option is to manually perform the action in the UI first. If your user doesn't have the necessary privileges, mouse over the button and a tooltip will display which roles need to be assigned (and unassigned in some cases because of negation). So for the above example, go to the Assessments page, select an assessment, and the Edit Assessment option should be disabled. Hover over it and the tooltip will show the pertinent roles.</p>\n\n<p>You can find more info here: <a href=\"https://help.ivanti.com/iv/help/en_US/RS/vNow/Identity-and-Access-Management.htm\" target=\"_blank\">Ivanti Neurons Risk-Based Solutions Knowledge Base - IAM</a></p>\n<br>\n\n<h2>API Rate Limiting</h2>\n In order to protect the security and stability of the platform for all users, the Ivanti Neurons platform rate limits requests. API requests will be limited to an average of three requests per second (there is some burst tolerance over short time periods). This will not affect the total number of requests. If the HTTP client exceeds the limit, our API gateway will return a 429 response code.\n\n We strongly advise wrapping all HTTP request in such a way to throttle each request with a wait/sleep function, or adding a retry mechanism as shown in the wrapper code example below.\n\n <b>Python 3 Example</b>\n\n <pre><code>\n import requests\n from requests.adapters import HTTPAdapter\n from urllib3 import Retry\n def __requests_retry_session(max_retries=5, backoff_factor=0.5, status_forcelist=(429,)):\n \"\"\"\n Create a Requests session that uses automatic retries.\n :param max_retries: Maximum number of retries to attempt\n :type max_retries: int\n :param backoff_factor: Backoff factor used to calculate time between retries.\n :type backoff_factor: float\n :param status_forcelist: A tuple containing the response status codes that should trigger a retry.\n :type status_forcelist: tuple\n :return: Requests Session\n :rtype: Requests Session Object\n \"\"\"\n session = requests.Session()\n retry = Retry(\n total=max_retries,\n read=max_retries,\n connect=max_retries,\n backoff_factor=backoff_factor,\n status_forcelist=status_forcelist,\n )\n adapter = HTTPAdapter(max_retries=retry)\n session.mount('https://', adapter)\n return session\n\n <pre><code> header = {\n \"content-type\": \"application/json\",\n \"x-api-key\": \"INSERT KEY HERE\"\n }</code></pre>\n\n response = __requests_retry_session().get(\"https://platform.risksense.com/api/v1/client\", headers=header)</code></pre>\n\n<p>Please contact Customer Success for information on platform rate limit thresholds and for any additional assistance during this transition.</p>\n<br>\n<h2>Paginating Search Requests</h2>\n<p>To paginate a request on a search endpoint, users should apply the parameter searchAfter in \ncombination with the parameter size. Users must employ this method for requests with more than \n10,000 results. For examples and additional documentation,\nrefer to the Knowledge Base article on \n<a href=\"https://help.ivanti.com/iv/help/en_US/RS/vNow/API/API-Pagination-Search-Requests.htm\">pagination of search requests</a>.\n</p>\n<br>\n<b>Ivanti Neurons &trade; API</b> - The following API defines and documents the\nweb interface to the Ivanti Neurons &trade; platform.\n<p><b>This page allows you to interact with the REAL LIVE Ivanti Neurons API. In\naddition to providing developer-oriented documentation for each endpoint,\nthe 'Try It Out' button will allow you to make an actual API request to\nIvanti Neurons without writing any code. Simply click the 'Try It Out' button, \nenter values for request parameters, then click the 'Execute' button.\n</b></p>\n<p><b>Note:</b> The Ivanti Neurons &trade; platform uses a CSRF token to validate\nuser requests after login. In order to have the platform use only the API\ntokens to validate requests, users will need to logout of their session, use\na different browser, or use the API via an incognito browser window.</p>\n<p><a href='http://www.risksense.com'>Ivanti Neurons &trade; Website</a></p>\n",
"version": "1.0.0",
"termsOfService": "http://risksense.com/service-level-agreement/",
"contact": {
"name": "Ivanti Neurons Support",
"email": "support@risksense.com"
}
},
"host": "platform4.risksense.com",
"schemes": [
"https"
],
"basePath": "/api/v1",
"securityDefinitions": {
"api_key": {
"type": "apiKey",
"name": "x-api-key",
"in": "header"
}
},
"security": [
{
"api_key": []
}
],
"tags": [
{
"name": "UniqueFindingEOL",
"description": "As of May 7, 2021, we will deprecating the unique host and application finding endpoints. Do not rely on these endpoints going forward as they'll be removed without notice. Refer to the 'groupBy' endpoints that offer the same functionality to group by found-by-id (scanner plugin). Contact Customer Success for more info success@risksense.com."
}
],
"paths": {
"/client/{clientId}/host/group-by": {
"get": {
"summary": "Get group by fields",
"tags": [
"groupBy"
],
"description": "Get group by fields for subject provided.\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Successful response",
"schema": {
"description": "Allowed group by fields and metrics",
"type": "object",
"properties": {
"groupByFields": {
"description": "Allowed group by fields",
"type": "array",
"items": {
"description": "Group By Field with allowed metrics",
"type": "object",
"properties": {
"key": {
"description": "Group By Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"field": {
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"groupMetrics": {
"description": "Allowed metric fields for this group by field",
"type": "array",
"items": {
"description": "Allowed metric fields for a group by field",
"type": "object",
"properties": {
"key": {
"description": "Metric Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"isDefault": {
"description": "Whether this field is default is part of default columns",
"type": "boolean"
},
"sortable": {
"description": "Whether this field is sortable",
"type": "boolean"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"order": {
"description": "Default order for this field",
"type": "number"
}
}
}
}
}
}
},
"groupByColumns": {
"description": "Allowed metric fields for a group by field",
"type": "array",
"items": {
"description": "Allowed metric fields for a group by field",
"type": "object",
"properties": {
"key": {
"description": "Metric Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"isDefault": {
"description": "Whether this field is default is part of default columns",
"type": "boolean"
},
"sortable": {
"description": "Whether this field is sortable",
"type": "boolean"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"order": {
"description": "Default order for this field",
"type": "number"
}
}
}
}
},
"example": {
"groupByFields": [
{
"key": "Host RS3 Group",
"name": "RS3",
"field": "rs3_group",
"description": null,
"clickThroughSubject": "host",
"format": "RS3",
"defaultSort": "ASC",
"isClickable": false,
"groupMetrics": [
{
"key": "Host Count",
"name": "Hosts",
"description": null,
"clickThroughSubject": "host",
"format": "NONE",
"isDefault": true,
"sortable": true,
"defaultSort": null,
"isClickable": true,
"order": 1
}
]
}
],
"groupByColumns": [
{
"key": "Host Count",
"name": "Hosts",
"description": null,
"clickThroughSubject": "host",
"format": "NONE",
"isDefault": true,
"sortable": true,
"defaultSort": null,
"isClickable": true,
"order": 1
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Group by on host",
"tags": [
"groupBy"
],
"description": "Group by on host\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"key",
"metricFields",
"filters",
"sortOrder"
],
"properties": {
"key": {
"description": "The field to group by",
"type": "string"
},
"metricFields": {
"description": "The fields to aggregate in the response data",
"type": "array",
"items": {
"type": "string"
}
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"sortOrder": {
"description": "Field and direction to sort the response data on",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
}
},
"example": {
"key": "Host RS3 Group",
"metricFields": [
"Host Asset Criticality 3",
"Host Asset Criticality 4",
"Host Asset Criticality 5",
"Host Count",
"Host RS3 Critical Risk",
"Host RS3 High Risk",
"Host RS3 Medium Risk"
],
"filters": [
{
"field": "assessment_labels",
"exclusive": true,
"operator": "IN",
"value": "exampleAssessment,"
}
],
"sortOrder": [
{
"field": "Host RS3 Group",
"direction": "ASC"
}
]
}
}
}
],
"responses": {
"200": {
"description": "The response for group by foundById.",
"schema": {
"type": "object",
"properties": {
"data": {
"description": "All of the response properties are dynamic and based on the specified request fields",
"type": "array",
"items": {
"type": "object"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/group-by": {
"get": {
"summary": "Get group by fields",
"tags": [
"groupBy"
],
"description": "Get group by fields for subject provided.\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Successful response",
"schema": {
"description": "Allowed group by fields and metrics",
"type": "object",
"properties": {
"groupByFields": {
"description": "Allowed group by fields",
"type": "array",
"items": {
"description": "Group By Field with allowed metrics",
"type": "object",
"properties": {
"key": {
"description": "Group By Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"field": {
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"groupMetrics": {
"description": "Allowed metric fields for this group by field",
"type": "array",
"items": {
"description": "Allowed metric fields for a group by field",
"type": "object",
"properties": {
"key": {
"description": "Metric Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"isDefault": {
"description": "Whether this field is default is part of default columns",
"type": "boolean"
},
"sortable": {
"description": "Whether this field is sortable",
"type": "boolean"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"order": {
"description": "Default order for this field",
"type": "number"
}
}
}
}
}
}
},
"groupByColumns": {
"description": "Allowed metric fields for a group by field",
"type": "array",
"items": {
"description": "Allowed metric fields for a group by field",
"type": "object",
"properties": {
"key": {
"description": "Metric Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"isDefault": {
"description": "Whether this field is default is part of default columns",
"type": "boolean"
},
"sortable": {
"description": "Whether this field is sortable",
"type": "boolean"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"order": {
"description": "Default order for this field",
"type": "number"
}
}
}
}
},
"example": {
"groupByFields": [
{
"key": "Host Finding Scanner Plugin",
"name": "Scanner Plugin",
"field": "found_by_id",
"description": null,
"clickThroughSubject": "hostFinding",
"format": "NONE",
"defaultSort": "ASC",
"isClickable": false,
"groupMetrics": [
{
"key": "Host Finding Hosts Count",
"name": "Hosts",
"description": null,
"clickThroughSubject": "host",
"format": "NONE",
"isDefault": true,
"sortable": true,
"defaultSort": null,
"isClickable": true,
"order": 1
}
]
}
],
"groupByColumns": [
{
"key": "Host Finding Hosts Count",
"name": "Hosts",
"description": null,
"clickThroughSubject": "host",
"format": "NONE",
"isDefault": true,
"sortable": true,
"defaultSort": null,
"isClickable": true,
"order": 1
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Group by foundById (scanner plugin) on host finding",
"tags": [
"groupBy"
],
"description": "Group by foundById (scanner plugin) on host finding. This replaces the deprecated unique findings endpoints.\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"key",
"metricFields",
"filters",
"sortOrder"
],
"properties": {
"key": {
"description": "The field to group by",
"type": "string"
},
"metricFields": {
"description": "The fields to aggregate in the response data",
"type": "array",
"items": {
"type": "string"
}
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"sortOrder": {
"description": "Field and direction to sort the response data on",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
}
},
"example": {
"key": "Host Finding Scanner Plugin",
"metricFields": [
"Host Finding Title",
"Host Finding Scanner Name",
"Host Finding Hosts Count",
"Host Finding Open Count",
"Host Finding Closed Count",
"Host Finding With Threat Count",
"Host Finding Threat Count",
"Host Finding Fixes Count",
"Host Finding VRR Critical Count",
"Host Finding VRR High Count",
"Host Finding VRR Medium Count",
"Host Finding VRR Low Count",
"Host Finding VRR Info Count",
"Host Finding CVE Count"
],
"filters": [
{
"field": "assessment_labels",
"exclusive": true,
"operator": "IN",
"value": "exampleAssessment,"
}
],
"sortOrder": [
{
"field": "Host Finding Scanner Plugin",
"direction": "ASC"
}
]
}
}
}
],
"responses": {
"200": {
"description": "The response for group by foundById.",
"schema": {
"type": "object",
"properties": {
"data": {
"description": "All of the response properties are dynamic and based on the specified request fields",
"type": "array",
"items": {
"type": "object"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/group-by": {
"get": {
"summary": "Get group by fields",
"tags": [
"groupBy"
],
"description": "Get group by fields for subject provided.\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Successful response",
"schema": {
"description": "Allowed group by fields and metrics",
"type": "object",
"properties": {
"groupByFields": {
"description": "Allowed group by fields",
"type": "array",
"items": {
"description": "Group By Field with allowed metrics",
"type": "object",
"properties": {
"key": {
"description": "Group By Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"field": {
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"groupMetrics": {
"description": "Allowed metric fields for this group by field",
"type": "array",
"items": {
"description": "Allowed metric fields for a group by field",
"type": "object",
"properties": {
"key": {
"description": "Metric Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"isDefault": {
"description": "Whether this field is default is part of default columns",
"type": "boolean"
},
"sortable": {
"description": "Whether this field is sortable",
"type": "boolean"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"order": {
"description": "Default order for this field",
"type": "number"
}
}
}
}
}
}
},
"groupByColumns": {
"description": "Allowed metric fields for a group by field",
"type": "array",
"items": {
"description": "Allowed metric fields for a group by field",
"type": "object",
"properties": {
"key": {
"description": "Metric Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"isDefault": {
"description": "Whether this field is default is part of default columns",
"type": "boolean"
},
"sortable": {
"description": "Whether this field is sortable",
"type": "boolean"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"order": {
"description": "Default order for this field",
"type": "number"
}
}
}
}
},
"example": {
"groupByFields": [
{
"key": "Application RS3 Group",
"name": "RS3",
"field": "rs3_group",
"description": null,
"clickThroughSubject": "application",
"format": "RS3",
"defaultSort": "ASC",
"isClickable": false,
"groupMetrics": [
{
"key": "Application Count",
"name": "Applications",
"description": null,
"clickThroughSubject": "application",
"format": "NONE",
"isDefault": true,
"sortable": true,
"defaultSort": null,
"isClickable": true,
"order": 1
}
]
}
],
"groupByColumns": [
{
"key": "Application Count",
"name": "Applications",
"description": null,
"clickThroughSubject": "application",
"format": "NONE",
"isDefault": true,
"sortable": true,
"defaultSort": null,
"isClickable": true,
"order": 1
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Group by on application",
"tags": [
"groupBy"
],
"description": "Group by on application\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"key",
"metricFields",
"filters",
"sortOrder"
],
"properties": {
"key": {
"description": "The field to group by",
"type": "string"
},
"metricFields": {
"description": "The fields to aggregate in the response data",
"type": "array",
"items": {
"type": "string"
}
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"sortOrder": {
"description": "Field and direction to sort the response data on",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
}
},
"example": {
"key": "Application RS3 Group",
"metricFields": [
"Application Asset Criticality 3",
"Application Asset Criticality 4",
"Application Asset Criticality 5",
"Application Count",
"Application RS3 Critical Risk",
"Application RS3 High Risk",
"Application RS3 Medium Risk"
],
"filters": [
{
"field": "assessment_labels",
"exclusive": true,
"operator": "IN",
"value": "exampleAssessment,"
}
],
"sortOrder": [
{
"field": "Application RS3 Group",
"direction": "ASC"
}
]
}
}
}
],
"responses": {
"200": {
"description": "The response for group by foundById.",
"schema": {
"type": "object",
"properties": {
"data": {
"description": "All of the response properties are dynamic and based on the specified request fields",
"type": "array",
"items": {
"type": "object"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/group-by": {
"get": {
"summary": "Get group by fields",
"tags": [
"groupBy"
],
"description": "Get group by fields for subject provided.\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Successful response",
"schema": {
"description": "Allowed group by fields and metrics",
"type": "object",
"properties": {
"groupByFields": {
"description": "Allowed group by fields",
"type": "array",
"items": {
"description": "Group By Field with allowed metrics",
"type": "object",
"properties": {
"key": {
"description": "Group By Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"field": {
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"groupMetrics": {
"description": "Allowed metric fields for this group by field",
"type": "array",
"items": {
"description": "Allowed metric fields for a group by field",
"type": "object",
"properties": {
"key": {
"description": "Metric Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"isDefault": {
"description": "Whether this field is default is part of default columns",
"type": "boolean"
},
"sortable": {
"description": "Whether this field is sortable",
"type": "boolean"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"order": {
"description": "Default order for this field",
"type": "number"
}
}
}
}
}
}
},
"groupByColumns": {
"description": "Allowed metric fields for a group by field",
"type": "array",
"items": {
"description": "Allowed metric fields for a group by field",
"type": "object",
"properties": {
"key": {
"description": "Metric Field Id that can be used in group by request",
"type": "string"
},
"name": {
"description": "Display Value in UI",
"type": "string"
},
"isClickable": {
"description": "Whether this field allows click through",
"type": "boolean"
},
"clickThroughSubject": {
"description": "page to which this field should navigate",
"type": "string"
},
"format": {
"description": "Format of the field. Used for fields like date, RS3, VRR, Severity",
"type": "string"
},
"isDefault": {
"description": "Whether this field is default is part of default columns",
"type": "boolean"
},
"sortable": {
"description": "Whether this field is sortable",
"type": "boolean"
},
"defaultSort": {
"description": "Default sort order for this field",
"type": "string"
},
"order": {
"description": "Default order for this field",
"type": "number"
}
}
}
}
},
"example": {
"groupByFields": [
{
"key": "App Finding Scanner Plugin",
"name": "Scanner Plugin",
"field": "foundById",
"description": null,
"clickThroughSubject": "applicationFinding",
"format": "NONE",
"defaultSort": "ASC",
"isClickable": false,
"groupMetrics": [
{
"key": "App Finding Hosts Count",
"name": "Apps",
"description": null,
"clickThroughSubject": "application",
"format": "NONE",
"isDefault": true,
"sortable": true,
"defaultSort": null,
"isClickable": true,
"order": 1
}
]
}
],
"groupByColumns": [
{
"key": "App Finding Hosts Count",
"name": "Apps",
"description": null,
"clickThroughSubject": "application",
"format": "NONE",
"isDefault": true,
"sortable": true,
"defaultSort": null,
"isClickable": true,
"order": 1
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Group by foundById (scanner plugin) on application finding",
"tags": [
"groupBy"
],
"description": "Group by foundById (scanner plugin) on application finding. This replaces the deprecated unique findings endpoints.\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"key",
"metricFields",
"filters",
"sortOrder"
],
"properties": {
"key": {
"description": "The field to group by",
"type": "string"
},
"metricFields": {
"description": "The fields to aggregate in the response data",
"type": "array",
"items": {
"type": "string"
}
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"sortOrder": {
"description": "Field and direction to sort the response data on",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
}
},
"example": {
"key": "App Finding Scanner Plugin",
"metricFields": [
"App Finding Title",
"App Finding Scanner Name",
"App Finding Apps Count",
"App Finding Open Count",
"App Finding Closed Count",
"App Finding VRR Critical Count",
"App Finding VRR High Count",
"App Finding VRR Medium Count",
"App Finding VRR Low Count",
"App Finding VRR Info Count"
],
"filters": [
{
"field": "assessment_labels",
"exclusive": true,
"operator": "IN",
"value": "exampleAssessment,"
}
],
"sortOrder": [
{
"field": "App Finding Scanner Plugin",
"direction": "ASC"
}
]
}
}
}
],
"responses": {
"200": {
"description": "The response for group by foundById.",
"schema": {
"type": "object",
"properties": {
"data": {
"description": "All of the response properties are dynamic and based on the specified request fields",
"type": "array",
"items": {
"type": "object"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client": {
"get": {
"summary": "List clients",
"tags": [
"client"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"clients"
],
"properties": {
"clients": {
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
}
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"rs3": {
"type": "number",
"format": "double"
},
"contact": {
"type": "object",
"properties": {
"address": {
"type": "string"
},
"address2": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string",
"pattern": "\\d{5}"
}
}
},
"expirationDate": {
"type": "string",
"format": "date"
},
"notes": {
"type": "string"
},
"description": {
"type": "string"
},
"industry": {
"type": "string",
"enum": [
"General",
"Education",
"Energy/Utility",
"Entertainment",
"Finance",
"Gaming",
"Goverment",
"Healthcare",
"Retail"
]
},
"disabled": {
"type": "boolean"
},
"demoClient": {
"type": "boolean"
},
"accountManagerId": {
"type": "number"
},
"clientCustomField1": {
"type": "string"
},
"clientCustomField2": {
"type": "string"
}
},
"example": {
"uuid": "123e4567-e89b-12d3-a456-556642440000",
"name": "sample client",
"rs3": 432,
"contact": {
"address": "4200 Osuna Rd NE",
"address2": "Suite 300",
"city": "Albuquerque",
"state": "NM",
"zip": 87113
},
"expirationDate": "2018-02-26",
"notes": "some notes",
"description": "some text",
"industry": "General",
"disabled": false,
"demoClient": true,
"accountManagerId": 2,
"clientCustomField1": "some text 1",
"clientCustomField2": "some text 2"
}
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}": {
"get": {
"summary": "Get details about a client",
"tags": [
"client"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
}
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"rs3": {
"type": "number",
"format": "double"
},
"contact": {
"type": "object",
"properties": {
"address": {
"type": "string"
},
"address2": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zip": {
"type": "string",
"pattern": "\\d{5}"
}
}
},
"expirationDate": {
"type": "string",
"format": "date"
},
"notes": {
"type": "string"
},
"description": {
"type": "string"
},
"industry": {
"type": "string",
"enum": [
"General",
"Education",
"Energy/Utility",
"Entertainment",
"Finance",
"Gaming",
"Goverment",
"Healthcare",
"Retail"
]
},
"disabled": {
"type": "boolean"
},
"demoClient": {
"type": "boolean"
},
"accountManagerId": {
"type": "number"
},
"clientCustomField1": {
"type": "string"
},
"clientCustomField2": {
"type": "string"
}
},
"example": {
"uuid": "123e4567-e89b-12d3-a456-556642440000",
"name": "sample client",
"rs3": 432,
"contact": {
"address": "4200 Osuna Rd NE",
"address2": "Suite 300",
"city": "Albuquerque",
"state": "NM",
"zip": 87113
},
"expirationDate": "2018-02-26",
"notes": "some notes",
"description": "some text",
"industry": "General",
"disabled": false,
"demoClient": true,
"accountManagerId": 2,
"clientCustomField1": "some text 1",
"clientCustomField2": "some text 2"
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/search/systemFilter": {
"get": {
"summary": "search system filters",
"tags": [
"filter"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"uuid",
"name"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"weight": {
"type": "integer"
},
"dateUntilNewBadgeShown": {
"type": "string",
"format": "date"
},
"widgets": {
"type": "array",
"items": {
"type": "string",
"enum": [
"FILTER_OVERVIEW"
]
}
},
"subjectFilters": {
"type": "array",
"items": {
"type": "object",
"required": [
"subject",
"filterRequest"
],
"properties": {
"subject": {
"type": "string"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
},
"example": {
"subject": "hostFinding",
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
},
"created": {
"type": "string"
},
"updated": {
"type": "string"
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/assessment": {
"post": {
"summary": "Create new assessment",
"tags": [
"assessment"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"allOf": [
{
"type": "object",
"required": [
"name",
"startDate",
"notes"
],
"properties": {
"name": {
"type": "string"
},
"startDate": {
"type": "string",
"format": "date"
},
"notes": {
"type": "string"
},
"startTime": {
"type": "string"
}
},
"example": {
"name": "Q2",
"startDate": "2018-04-01",
"notes": "",
"startTime": "14:51"
}
}
],
"type": "object"
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"allOf": [
{
"type": "object",
"required": [
"name",
"startDate",
"notes"
],
"properties": {
"name": {
"type": "string"
},
"startDate": {
"type": "string",
"format": "date"
},
"notes": {
"type": "string"
},
"startTime": {
"type": "string"
}
},
"example": {
"name": "Q2",
"startDate": "2018-04-01",
"notes": "",
"startTime": "14:51"
}
}
],
"type": "object"
},
{
"type": "object",
"required": [
"clientId"
],
"properties": {
"clientId": {
"type": "integer",
"description": "client identifier"
}
}
}
],
"example": {
"id": 12,
"name": "Q2",
"startDate": "2018-04-01",
"notes": "",
"clientId": 5
}
}
},
"400": {
"description": "User Error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/assessment/{assessmentId}": {
"put": {
"summary": "Update an assessment",
"description": "<p>Replaces all fields in the assessment with the new values</p>\n",
"tags": [
"assessment"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "assessmentId",
"description": "<p>Id of an assessment</p>\n<p>'search/assessment/find' returns available assessments</p>\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"startDate",
"notes"
],
"properties": {
"name": {
"type": "string"
},
"startDate": {
"type": "string",
"format": "date"
},
"notes": {
"type": "string"
},
"startTime": {
"type": "string"
}
},
"example": {
"name": "Q2",
"startDate": "2018-04-01",
"notes": "",
"startTime": "14:51"
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"allOf": [
{
"type": "object",
"required": [
"name",
"startDate",
"notes"
],
"properties": {
"name": {
"type": "string"
},
"startDate": {
"type": "string",
"format": "date"
},
"notes": {
"type": "string"
},
"startTime": {
"type": "string"
}
},
"example": {
"name": "Q2",
"startDate": "2018-04-01",
"notes": "",
"startTime": "14:51"
}
}
],
"type": "object"
},
{
"type": "object",
"required": [
"clientId"
],
"properties": {
"clientId": {
"type": "integer",
"description": "client identifier"
}
}
}
],
"example": {
"id": 12,
"name": "Q2",
"startDate": "2018-04-01",
"notes": "",
"clientId": 5
}
}
},
"400": {
"description": "User Error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"summary": "Delete an assessment",
"tags": [
"assessment"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "assessmentId",
"description": "<p>Id of an assessment</p>\n<p>'search/assessment/find' returns available assessments</p>\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/assessment/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"assessment"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/assessment/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"assessment"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/assessment/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"assessment"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/assessment/search": {
"post": {
"summary": "Search for assessments",
"tags": [
"assessment"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/assessment/{assessmentId}/status": {
"post": {
"summary": "Update status of assessment",
"tags": [
"assessment"
],
"consumes": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "assessmentId",
"description": "<p>Id of an assessment</p>\n<p>'search/assessment/find' returns available assessments</p>\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"type": "string",
"enum": [
"LOCKED",
"UNLOCKED"
]
}
}
}
}
],
"responses": {
"200": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/assessment/{assessmentId}/history": {
"get": {
"summary": "History of assessment",
"tags": [
"assessment"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "assessmentId",
"description": "<p>Id of an assessment</p>\n<p>'search/assessment/find' returns available assessments</p>\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"message": {
"type": "string"
},
"action": {
"type": "string"
},
"title": {
"type": "string"
},
"userId": {
"type": "string"
},
"userName": {
"type": "string"
},
"date": {
"type": "string",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/assessment/{assessmentId}/attachment": {
"get": {
"summary": "List the attachments",
"tags": [
"assessment"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "assessmentId",
"description": "<p>Id of an assessment</p>\n<p>'search/assessment/find' returns available assessments</p>\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"filename",
"uuid",
"contentType",
"contentLength"
],
"properties": {
"filename": {
"type": "string"
},
"uuid": {
"type": "string"
},
"contentType": {
"type": "string"
},
"contentLength": {
"type": "integer"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Upload 1 or more attachment files",
"tags": [
"assessment"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "assessmentId",
"description": "<p>Id of an assessment</p>\n<p>'search/assessment/find' returns available assessments</p>\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "formData",
"name": "attachments",
"type": "file",
"required": true,
"description": "An attachment file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"filename",
"uuid",
"contentType",
"contentLength"
],
"properties": {
"filename": {
"type": "string"
},
"uuid": {
"type": "string"
},
"contentType": {
"type": "string"
},
"contentLength": {
"type": "integer"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/assessment/{assessmentId}/attachment/{attachmentUUID}": {
"get": {
"summary": "Fetch attachment by UUID",
"tags": [
"assessment"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "assessmentId",
"description": "<p>Id of an assessment</p>\n<p>'search/assessment/find' returns available assessments</p>\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "attachmentUUID",
"description": "The attachment UUID, given when the attachments were uploaded\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "Ok"
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"406": {
"description": "MIME Mismatch\nTry changing from application/octet-stream to application/json, or vice-versa."
}
}
},
"delete": {
"summary": "Remove an attachment",
"tags": [
"assessment"
],
"consumes": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "assessmentId",
"description": "<p>Id of an assessment</p>\n<p>'search/assessment/find' returns available assessments</p>\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "attachmentUUID",
"description": "The attachment UUID, given when the attachments were uploaded\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "List of attachment UUIDs that were deleted successfully\n",
"type": "array",
"items": {
"type": "string"
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/assessment/{assessmentId}/attachment/{attachmentUUID}/meta": {
"get": {
"summary": "Fetch attachment metadata",
"tags": [
"assessment"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "assessmentId",
"description": "<p>Id of an assessment</p>\n<p>'search/assessment/find' returns available assessments</p>\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "attachmentUUID",
"description": "The attachment UUID, given when the attachments were uploaded\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"filename",
"uuid",
"contentType",
"contentLength"
],
"properties": {
"filename": {
"type": "string"
},
"uuid": {
"type": "string"
},
"contentType": {
"type": "string"
},
"contentLength": {
"type": "integer"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/network": {
"get": {
"summary": "Retrieve a paginated list of networks for the specified client.",
"tags": [
"network"
],
"description": "<b>Use search endpoint:</b>/client/{clientId}/network/search\n",
"deprecated": true,
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"networks"
],
"properties": {
"networks": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"type"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string",
"pattern": "[a-zA-Z0-9'_\\-]+"
},
"type": {
"type": "string",
"enum": [
"IP",
"HOSTNAME",
"MIXED"
]
}
}
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Create a new network for the specified client.",
"tags": [
"network"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"pattern": "[a-zA-Z0-9'_\\-]+"
},
"type": {
"type": "string",
"enum": [
"MIXED"
]
}
}
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"name",
"type"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string",
"pattern": "[a-zA-Z0-9'_\\-]+"
},
"type": {
"type": "string",
"enum": [
"IP",
"HOSTNAME",
"MIXED"
]
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/network/{networkId}": {
"get": {
"summary": "Retrieve details about a single network.",
"tags": [
"network"
],
"description": "<b>Use search endpoint:</b> /client/{clientId}/network/search\n",
"deprecated": true,
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "networkId",
"description": "Identifier for a network associated with the client (This parameter can be obtained via the GET method on '/network')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"name",
"type"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string",
"pattern": "[a-zA-Z0-9'_\\-]+"
},
"type": {
"type": "string",
"enum": [
"IP",
"HOSTNAME",
"MIXED"
]
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"summary": "Update a network for the specified client.",
"tags": [
"network"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "networkId",
"description": "Identifier for a network associated with the client (This parameter can be obtained via the GET method on '/network')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string",
"pattern": "[a-zA-Z0-9'_\\-]+"
},
"type": {
"type": "string",
"enum": [
"IP",
"HOSTNAME",
"MIXED"
]
}
}
}
]
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"name",
"type"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string",
"pattern": "[a-zA-Z0-9'_\\-]+"
},
"type": {
"type": "string",
"enum": [
"IP",
"HOSTNAME",
"MIXED"
]
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"summary": "Delete a network",
"tags": [
"network"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "networkId",
"description": "Identifier for a network associated with the client (This parameter can be obtained via the GET method on '/network')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"204": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/network/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"network"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/network/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"network"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/network/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"network"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/network/search": {
"post": {
"summary": "Search for networks",
"tags": [
"network"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/group": {
"post": {
"summary": "Create new group on client",
"description": "<p><b style=\"color: red;\"> Warning: </b><ul style=\"color: red;\"><li>The assetCriticality field is deprecated and its value sent in the request will have no significance.</li>\n<li>To support backward compatibility the response will have assetCriticality value defaulted to 1</li></ul></p>\n",
"tags": [
"group"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"assetCriticality": {
"type": "integer"
}
},
"example": {
"name": "Example Group"
}
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"assetCriticality": {
"type": "integer"
}
},
"example": {
"name": "Example Group"
}
},
{
"type": "object",
"required": [
"clientId"
],
"properties": {
"clientId": {
"type": "integer",
"description": "client identifier"
}
}
}
],
"example": {
"id": 12,
"name": "Example Group",
"assetCriticality": 1,
"clientId": 5
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"409": {
"description": "Conflict"
}
}
}
},
"/client/{clientId}/group/{groupId}": {
"put": {
"summary": "Update single group on client",
"description": "<p><b style=\"color: red;\"> Warning: </b><ul style=\"color: red;\"><li>The assetCriticality field is deprecated and its value sent in the request will have no significance.</li>\n</ul></p>\n",
"tags": [
"group"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "groupId",
"in": "path",
"description": "Id of group",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"assetCriticality": {
"type": "integer"
}
},
"example": {
"name": "Example Group"
}
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"409": {
"description": "Conflict"
}
}
}
},
"/client/{clientId}/group/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"group"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/group/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"group"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/group/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"group"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/group/search": {
"post": {
"summary": "Search for groups",
"description": "<p><b style=\"color: red;\"> Warning: </b><ul style=\"color: red;\"><li>The criticality field is deprecated and its value in the response is defaulted to 1</li>\n<li>Database count fields are deprecated</li>\n<li>Unique Finding count fields are deprecated</li>\n<li>Data refresh field is deprecated</li>\n</ul></p>\n",
"tags": [
"group"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/group/assign": {
"post": {
"summary": "Assign group(s)",
"tags": [
"group"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filters",
"userIds"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"userIds": {
"description": "Collection of user Ids to assign/unassign findings to/from.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/group/unassign": {
"post": {
"summary": "Unassign group(s)",
"tags": [
"group"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filters",
"userIds"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"userIds": {
"description": "Collection of user Ids to assign/unassign findings to/from.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/group/delete": {
"post": {
"summary": "Delete groups that match the given filter",
"tags": [
"group"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "name",
"exclusive": false,
"operator": "EXACT",
"value": "Example Group"
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/group/export": {
"post": {
"summary": "Initiate export job",
"description": "<p>\n</p>\n<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest.\nThe Group Export Template API (/client/{clientId}/group/export/template) lists the fields that can be exported. The exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"group"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"noOfRows",
"fileName",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"JSON",
"CSV"
]
},
"noOfRows": {
"description": "Number of rows to be exported by default",
"type": "integer"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
},
"exportableFields": {
"description": "Fields included for Export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"fileName": "TestGroupExport",
"fileType": "CSV",
"noOfRows": 5000,
"exportableFields": [
{
"heading": "group_options",
"fields": [
{
"identifierField": "name",
"fieldOrder": 1,
"selected": false,
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/group/export/template": {
"get": {
"summary": "List out all fields that are part of configurable export.",
"tags": [
"group"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"id",
"clientId",
"userId",
"name",
"description",
"shared",
"isDefault",
"subject",
"exportableFields"
],
"properties": {
"id": {
"description": "The id",
"type": "integer"
},
"clientId": {
"description": "Client id",
"type": "integer"
},
"userId": {
"description": "User id",
"type": "integer"
},
"name": {
"description": "Template name",
"type": "string"
},
"description": {
"description": "Template description",
"type": "string"
},
"shared": {
"description": "Describes whether this template shared or not",
"type": "boolean"
},
"isDefault": {
"description": "Describes whether this template is default or not",
"type": "boolean"
},
"subject": {
"description": "For which asset to fetch fileds",
"type": "string"
},
"exportableFields": {
"description": "List of fileds",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"id": 0,
"clientId": 1,
"userId": 1,
"name": "Group-Export-Template-Name",
"description": "Group-Export-Template-Description",
"shared": false,
"isDefault": false,
"subject": "tag",
"exportableFields": [
{
"heading": "group_options",
"fields": [
{
"identifierField": "name",
"displayText": "Name",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag": {
"post": {
"summary": "Create new tag on client",
"tags": [
"tag"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"fields"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"uid",
"value"
],
"properties": {
"uid": {
"description": "Unique identifier of the tag value",
"type": "string"
},
"value": {
"description": "Value assigned to the uid",
"type": "string"
}
}
}
}
},
"example": {
"fields": [
{
"uid": "TAG_TYPE",
"value": "CUSTOM"
},
{
"uid": "NAME",
"value": "MyTag"
},
{
"uid": "DESCRIPTION",
"value": "Just for me"
},
{
"uid": "OWNER",
"value": "1"
},
{
"uid": "COLOR",
"value": "#648d9f"
},
{
"uid": "LOCKED",
"value": false
},
{
"uid": "PROPAGATE_TO_ALL_FINDINGS",
"value": true
}
]
}
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"tag"
],
"properties": {
"id": {
"description": "ID of the tag",
"type": "integer"
},
"tag": {
"type": "object",
"required": [
"uid",
"value",
"legacyLink"
],
"properties": {
"uid": {
"description": "Unique identifier of the tag value",
"type": "string"
},
"value": {
"description": "<p>The value assigned to the uid, unique to the parent tag. The value is dependent on the\nuid field type.</p>\n<ul>\n <li>USER_LIST: List[String]</li>\n <li>ALL OTHER TYPES: String</li>\n</ul>\n",
"type": "object"
},
"legacyLink": {
"description": "Internal serialized link to different pages in the UI",
"type": "string"
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"409": {
"description": "Conflict"
}
}
},
"delete": {
"summary": "Bulk Delete Tags",
"tags": [
"tag"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"forceDeleteTicket": {
"type": "boolean"
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"forceDeleteTicket": true
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag/{tagId}": {
"put": {
"summary": "Update a tag",
"tags": [
"tag"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "tagId",
"description": "Id of the tag",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"fields"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"uid",
"value"
],
"properties": {
"uid": {
"description": "Unique identifier of the tag value",
"type": "string"
},
"value": {
"description": "Value assigned to the uid",
"type": "string"
}
}
}
}
},
"example": {
"fields": [
{
"uid": "TAG_TYPE",
"value": "CUSTOM"
},
{
"uid": "NAME",
"value": "MyTag"
},
{
"uid": "DESCRIPTION",
"value": "Just for me"
},
{
"uid": "OWNER",
"value": "1"
},
{
"uid": "COLOR",
"value": "#648d9f"
},
{
"uid": "LOCKED",
"value": false
},
{
"uid": "PROPAGATE_TO_ALL_FINDINGS",
"value": true
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"tag"
],
"properties": {
"id": {
"description": "ID of the tag",
"type": "integer"
},
"tag": {
"type": "object",
"required": [
"uid",
"value",
"legacyLink"
],
"properties": {
"uid": {
"description": "Unique identifier of the tag value",
"type": "string"
},
"value": {
"description": "<p>The value assigned to the uid, unique to the parent tag. The value is dependent on the\nuid field type.</p>\n<ul>\n <li>USER_LIST: List[String]</li>\n <li>ALL OTHER TYPES: String</li>\n</ul>\n",
"type": "object"
},
"legacyLink": {
"description": "Internal serialized link to different pages in the UI",
"type": "string"
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict"
}
}
},
"delete": {
"summary": "Delete a tag",
"tags": [
"tag"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "tagId",
"description": "Id of the tag",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": false,
"schema": {
"type": "object",
"properties": {
"forceDeleteTicket": {
"type": "boolean",
"description": "Force delete the associated ticket or not."
}
}
}
}
],
"responses": {
"204": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/tag/{tagId}/history": {
"get": {
"summary": "Retrieve a paginated list of histories of a tag for the specified client",
"tags": [
"tag"
],
"description": "produces:\n- application/json\n",
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "tagId",
"description": "Id of the tag",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"tagHistories"
],
"properties": {
"tagHistories": {
"type": "array",
"items": {
"type": "object",
"required": [
"tagId",
"log",
"created"
],
"properties": {
"tagId": {
"type": "integer"
},
"log": {
"type": "string",
"pattern": "[a-zA-Z0-9'_\\-]+"
},
"created": {
"type": "string",
"format": "date-time"
}
}
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"tag"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"tag"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"tag"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag/search": {
"post": {
"summary": "Search for tags",
"tags": [
"tag"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag/export": {
"post": {
"summary": "Initiate export job",
"description": "<p>\n</p>\n<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest.\nThe Tag Export Template API (/client/{clientId}/tag/export/template) lists the fields that can be exported. The exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"tag"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"noOfRows",
"fileName",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"JSON",
"CSV"
]
},
"noOfRows": {
"description": "Number of rows to be exported by default",
"type": "integer"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
},
"exportableFields": {
"description": "Fields included for Export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"fileName": "TestTagExport",
"fileType": "CSV",
"noOfRows": 5000,
"exportableFields": [
{
"heading": "tag_options",
"fields": [
{
"identifierField": "name",
"fieldOrder": 1,
"selected": "flase",
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag/export/template": {
"get": {
"summary": "List out all fields that are part of configurable export.",
"tags": [
"tag"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"id",
"clientId",
"userId",
"name",
"description",
"shared",
"isDefault",
"subject",
"exportableFields"
],
"properties": {
"id": {
"description": "The id",
"type": "integer"
},
"clientId": {
"description": "Client id",
"type": "integer"
},
"userId": {
"description": "User id",
"type": "integer"
},
"name": {
"description": "Template name",
"type": "string"
},
"description": {
"description": "Template description",
"type": "string"
},
"shared": {
"description": "Describes whether this template shared or not",
"type": "boolean"
},
"isDefault": {
"description": "Describes whether this template is default or not",
"type": "boolean"
},
"subject": {
"description": "For which asset to fetch fileds",
"type": "string"
},
"exportableFields": {
"description": "List of fileds",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"id": 0,
"clientId": 1,
"userId": 1,
"name": "Tag-Export-Template-Name",
"description": "Tag-Export-Template-Description",
"shared": false,
"isDefault": false,
"subject": "tag",
"exportableFields": [
{
"heading": "tag_options",
"fields": [
{
"identifierField": "name",
"displayText": "Name",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag/{tagId}/attachment": {
"post": {
"summary": "Upload 1 or more attachment files for a tag",
"description": "Only the owner of the specified tag can upload files to it\n",
"tags": [
"attachment"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "tagId",
"description": "tag id\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "formData",
"name": "attachments",
"type": "file",
"required": true,
"description": "An attachment file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"filename",
"uuid",
"contentType",
"contentLength"
],
"properties": {
"filename": {
"type": "string"
},
"uuid": {
"type": "string"
},
"contentType": {
"type": "string"
},
"contentLength": {
"type": "integer"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"get": {
"summary": "List out the attachments on the given tag",
"description": "Depenedent upon whether the caller has access to the tag\n",
"tags": [
"attachment"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "tagId",
"description": "tag id\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"filename",
"uuid",
"contentType",
"contentLength"
],
"properties": {
"filename": {
"type": "string"
},
"uuid": {
"type": "string"
},
"contentType": {
"type": "string"
},
"contentLength": {
"type": "integer"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag/{tagId}/attachment/{attachmentUUID}": {
"get": {
"summary": "Fetch tag attachment by UUID",
"description": "Depenedent upon whether the caller has access to the tag\n",
"tags": [
"attachment"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "tagId",
"description": "tag id\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "attachmentUUID",
"description": "The attachment UUID, given when the attachments were uploaded\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "Ok"
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"406": {
"description": "MIME Mismatch\nTry changing from application/octet-stream to application/json, or vice-versa."
}
}
},
"delete": {
"summary": "Remove an attachment file for a tag",
"description": "Only the owner of the specified tag can removes attached files\n",
"tags": [
"attachment"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "tagId",
"description": "tag id\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "attachmentUUID",
"description": "The attachment UUID, given when the attachments were uploaded\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "List of attachment UUIDs that were deleted successfully\n",
"type": "array",
"items": {
"type": "string"
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/tag/{tagId}/attachment/{attachmentUUID}/meta": {
"get": {
"summary": "Fetch tag attachment metadata",
"description": "Depenedent upon whether the caller has access to the tag\n",
"tags": [
"attachment"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "tagId",
"description": "tag id\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "attachmentUUID",
"description": "The attachment UUID, given when the attachments were uploaded\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"filename",
"uuid",
"contentType",
"contentLength"
],
"properties": {
"filename": {
"type": "string"
},
"uuid": {
"type": "string"
},
"contentType": {
"type": "string"
},
"contentLength": {
"type": "integer"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/search/{subject}/filter": {
"get": {
"summary": "List saved and shared filters",
"tags": [
"filter"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {
"description": "description of the filter",
"type": "string"
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"description": "Field to filter on",
"type": "string"
},
"exclusive": {
"description": "True if \"is not\" false means \"is\"",
"type": "boolean"
},
"operator": {
"description": "The operator to filter with",
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"description": "Value to filter on",
"type": "string"
}
}
}
},
"id": {
"description": "ID of filter",
"type": "number"
},
"name": {
"description": "name of the filter",
"type": "string"
},
"shared": {
"description": "True if this filter is shared with all users on the client",
"type": "boolean"
},
"standard": {
"description": "If true, will be shown to all platform users",
"type": "boolean"
},
"system": {
"description": "True if this filter is to be set as a system filter",
"type": "boolean"
},
"dateUntilNewBadgeShown": {
"description": "a future date to be set which adds up to the count shown as a badge in the frontend",
"format": "date",
"type": "string"
},
"weight": {
"description": "weight ranges from 0 - 999 (used by the frontend)",
"type": "number"
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
},
"post": {
"summary": "Create a new saved filter",
"tags": [
"filter"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"description",
"filters",
"name",
"shared",
"standard"
],
"properties": {
"description": {
"description": "description of the saved/shared filter",
"type": "string"
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"description": "Field to filter on",
"type": "string"
},
"exclusive": {
"description": "True if \"is not\" false means \"is\"",
"type": "boolean"
},
"operator": {
"description": "The operator to filter with",
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"description": "Value to filter on",
"type": "string"
}
}
}
},
"name": {
"description": "name of the saved/shared filter",
"type": "string"
},
"shared": {
"description": "True if this filter is shared with all users on the client",
"type": "boolean"
},
"standard": {
"description": "If true, will be shown to all platform users",
"type": "boolean"
}
}
}
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"type": "object",
"properties": {
"description": {
"description": "description of the filter",
"type": "string"
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"description": "Field to filter on",
"type": "string"
},
"exclusive": {
"description": "True if \"is not\" false means \"is\"",
"type": "boolean"
},
"operator": {
"description": "The operator to filter with",
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"description": "Value to filter on",
"type": "string"
}
}
}
},
"id": {
"description": "ID of filter",
"type": "number"
},
"name": {
"description": "name of the filter",
"type": "string"
},
"shared": {
"description": "True if this filter is shared with all users on the client",
"type": "boolean"
},
"standard": {
"description": "If true, will be shown to all platform users",
"type": "boolean"
},
"system": {
"description": "True if this filter is to be set as a system filter",
"type": "boolean"
},
"dateUntilNewBadgeShown": {
"description": "a future date to be set which adds up to the count shown as a badge in the frontend",
"format": "date",
"type": "string"
},
"weight": {
"description": "weight ranges from 0 - 999 (used by the frontend)",
"type": "number"
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/search/{subject}/filter/{filterId}": {
"get": {
"summary": "Retrieve specific filter",
"tags": [
"filter"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "filterId",
"description": "Id of the filter",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"description": {
"description": "description of the filter",
"type": "string"
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"description": "Field to filter on",
"type": "string"
},
"exclusive": {
"description": "True if \"is not\" false means \"is\"",
"type": "boolean"
},
"operator": {
"description": "The operator to filter with",
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"description": "Value to filter on",
"type": "string"
}
}
}
},
"id": {
"description": "ID of filter",
"type": "number"
},
"name": {
"description": "name of the filter",
"type": "string"
},
"shared": {
"description": "True if this filter is shared with all users on the client",
"type": "boolean"
},
"standard": {
"description": "If true, will be shown to all platform users",
"type": "boolean"
},
"system": {
"description": "True if this filter is to be set as a system filter",
"type": "boolean"
},
"dateUntilNewBadgeShown": {
"description": "a future date to be set which adds up to the count shown as a badge in the frontend",
"format": "date",
"type": "string"
},
"weight": {
"description": "weight ranges from 0 - 999 (used by the frontend)",
"type": "number"
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
},
"put": {
"summary": "Update specific filter",
"tags": [
"filter"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "filterId",
"description": "Id of the filter",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"description": {
"description": "description of the saved/shared filter",
"type": "string"
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"description": "Field to filter on",
"type": "string"
},
"exclusive": {
"description": "True if \"is not\" false means \"is\"",
"type": "boolean"
},
"operator": {
"description": "The operator to filter with",
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"description": "Value to filter on",
"type": "string"
}
}
}
},
"name": {
"description": "name of the saved/shared filter",
"type": "string"
},
"shared": {
"description": "True if this filter is shared with all users on the client",
"type": "boolean"
},
"standard": {
"description": "If true, will be shown to all platform users",
"type": "boolean"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"description": {
"description": "description of the filter",
"type": "string"
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"description": "Field to filter on",
"type": "string"
},
"exclusive": {
"description": "True if \"is not\" false means \"is\"",
"type": "boolean"
},
"operator": {
"description": "The operator to filter with",
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"description": "Value to filter on",
"type": "string"
}
}
}
},
"id": {
"description": "ID of filter",
"type": "number"
},
"name": {
"description": "name of the filter",
"type": "string"
},
"shared": {
"description": "True if this filter is shared with all users on the client",
"type": "boolean"
},
"standard": {
"description": "If true, will be shown to all platform users",
"type": "boolean"
},
"system": {
"description": "True if this filter is to be set as a system filter",
"type": "boolean"
},
"dateUntilNewBadgeShown": {
"description": "a future date to be set which adds up to the count shown as a badge in the frontend",
"format": "date",
"type": "string"
},
"weight": {
"description": "weight ranges from 0 - 999 (used by the frontend)",
"type": "number"
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
},
"delete": {
"summary": "Delete specific filter",
"tags": [
"filter"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "filterId",
"description": "Id of the filter",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Deleted"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/search/{subject}/filter": {
"get": {
"summary": "List system filters",
"tags": [
"filter"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {
"description": "description of the filter",
"type": "string"
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"description": "Field to filter on",
"type": "string"
},
"exclusive": {
"description": "True if \"is not\" false means \"is\"",
"type": "boolean"
},
"operator": {
"description": "The operator to filter with",
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"description": "Value to filter on",
"type": "string"
}
}
}
},
"id": {
"description": "ID of filter",
"type": "number"
},
"name": {
"description": "name of the filter",
"type": "string"
},
"shared": {
"description": "True if this filter is shared with all users on the client",
"type": "boolean"
},
"standard": {
"description": "If true, will be shown to all platform users",
"type": "boolean"
},
"system": {
"description": "True if this filter is to be set as a system filter",
"type": "boolean"
},
"dateUntilNewBadgeShown": {
"description": "a future date to be set which adds up to the count shown as a badge in the frontend",
"format": "date",
"type": "string"
},
"weight": {
"description": "weight ranges from 0 - 999 (used by the frontend)",
"type": "number"
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/search/{subject}/filter/{filterId}": {
"get": {
"summary": "Retrieve specific system filter",
"tags": [
"filter"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "filterId",
"description": "Id of the filter",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"description": {
"description": "description of the filter",
"type": "string"
},
"filters": {
"description": "Array of filter values",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"description": "Field to filter on",
"type": "string"
},
"exclusive": {
"description": "True if \"is not\" false means \"is\"",
"type": "boolean"
},
"operator": {
"description": "The operator to filter with",
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"description": "Value to filter on",
"type": "string"
}
}
}
},
"id": {
"description": "ID of filter",
"type": "number"
},
"name": {
"description": "name of the filter",
"type": "string"
},
"shared": {
"description": "True if this filter is shared with all users on the client",
"type": "boolean"
},
"standard": {
"description": "If true, will be shown to all platform users",
"type": "boolean"
},
"system": {
"description": "True if this filter is to be set as a system filter",
"type": "boolean"
},
"dateUntilNewBadgeShown": {
"description": "a future date to be set which adds up to the count shown as a badge in the frontend",
"format": "date",
"type": "string"
},
"weight": {
"description": "weight ranges from 0 - 999 (used by the frontend)",
"type": "number"
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/upload": {
"get": {
"summary": "List uploads in a client",
"tags": [
"upload"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "assessmentId",
"description": "Id of Assessment (This parameter can be obtained via the POST method on\n'/client/{clientId}/assessment/search')\n",
"in": "query",
"required": false,
"type": "integer"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"uploads"
],
"properties": {
"uploads": {
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"allOf": [
{
"type": "object",
"required": [
"assessmentId",
"networkId"
],
"properties": {
"assessmentId": {
"type": "integer"
},
"networkId": {
"type": "integer"
}
}
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
]
},
{
"type": "object",
"required": [
"state",
"userId"
],
"properties": {
"userId": {
"type": "integer"
},
"state": {
"type": "string",
"enum": [
"Pending",
"FingerPrinting",
"Processing",
"Success",
"PartialSuccess",
"Failure"
]
},
"connectorId": {
"type": "integer",
"description": "Id of the connector if the upload has been automatically created by a connector. Otherwise, null."
}
}
}
]
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Create new upload",
"tags": [
"upload"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"allOf": [
{
"type": "object",
"required": [
"assessmentId",
"networkId"
],
"properties": {
"assessmentId": {
"type": "integer"
},
"networkId": {
"type": "integer"
}
}
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
]
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"allOf": [
{
"type": "object",
"required": [
"assessmentId",
"networkId"
],
"properties": {
"assessmentId": {
"type": "integer"
},
"networkId": {
"type": "integer"
}
}
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
]
},
{
"type": "object",
"required": [
"state",
"userId"
],
"properties": {
"userId": {
"type": "integer"
},
"state": {
"type": "string",
"enum": [
"Pending",
"FingerPrinting",
"Processing",
"Success",
"PartialSuccess",
"Failure"
]
},
"connectorId": {
"type": "integer",
"description": "Id of the connector if the upload has been automatically created by a connector. Otherwise, null."
}
}
}
]
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/upload/{uploadId}": {
"get": {
"summary": "State of an upload",
"tags": [
"upload"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "uploadId",
"description": "Id of upload (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "Success",
"schema": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"allOf": [
{
"type": "object",
"required": [
"assessmentId",
"networkId"
],
"properties": {
"assessmentId": {
"type": "integer"
},
"networkId": {
"type": "integer"
}
}
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
]
},
{
"type": "object",
"required": [
"state",
"userId"
],
"properties": {
"userId": {
"type": "integer"
},
"state": {
"type": "string",
"enum": [
"Pending",
"FingerPrinting",
"Processing",
"Success",
"PartialSuccess",
"Failure"
]
},
"connectorId": {
"type": "integer",
"description": "Id of the connector if the upload has been automatically created by a connector. Otherwise, null."
}
}
}
]
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"summary": "Update an upload",
"description": "Only available before an upload started processing\n",
"tags": [
"upload"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "uploadId",
"description": "Id of upload (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"allOf": [
{
"type": "object",
"required": [
"assessmentId",
"networkId"
],
"properties": {
"assessmentId": {
"type": "integer"
},
"networkId": {
"type": "integer"
}
}
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
]
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"allOf": [
{
"type": "object",
"required": [
"assessmentId",
"networkId"
],
"properties": {
"assessmentId": {
"type": "integer"
},
"networkId": {
"type": "integer"
}
}
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
]
},
{
"type": "object",
"required": [
"state",
"userId"
],
"properties": {
"userId": {
"type": "integer"
},
"state": {
"type": "string",
"enum": [
"Pending",
"FingerPrinting",
"Processing",
"Success",
"PartialSuccess",
"Failure"
]
},
"connectorId": {
"type": "integer",
"description": "Id of the connector if the upload has been automatically created by a connector. Otherwise, null."
}
}
}
]
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"summary": "Delete an upload",
"description": "Only available while the upload is not processing (before start and\nafter files are done processing)\n",
"tags": [
"upload"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "uploadId",
"description": "Id of upload (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"204": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/upload/{uploadId}/file": {
"get": {
"summary": "List files in an upload",
"tags": [
"upload"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "uploadId",
"description": "Id of upload (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
}
],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"files"
],
"properties": {
"files": {
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"properties": {
"networkId": {
"type": "integer"
},
"applicationId": {
"type": "integer"
}
}
},
{
"type": "object",
"properties": {
"state": {
"type": "string"
},
"scannerName": {
"type": "string"
},
"scannerUuid": {
"type": "string"
}
}
}
],
"example": {
"id": 53606,
"scannerName": "Nexpose",
"scannerUuid": "NEXPOSE",
"assessmentId": 8070,
"networkId": 15,
"applicationId": null,
"state": "PROCESSED"
}
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Add a file to an upload",
"description": "Only available before an upload started processing\n",
"tags": [
"upload"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "uploadId",
"description": "Id of upload (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "formData",
"name": "scanFile",
"type": "file",
"required": true,
"description": "A scan file"
}
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"properties": {
"networkId": {
"type": "integer"
},
"applicationId": {
"type": "integer"
}
}
},
{
"type": "object",
"properties": {
"state": {
"type": "string"
},
"scannerName": {
"type": "string"
},
"scannerUuid": {
"type": "string"
}
}
}
],
"example": {
"id": 53606,
"scannerName": "Nexpose",
"scannerUuid": "NEXPOSE",
"assessmentId": 8070,
"networkId": 15,
"applicationId": null,
"state": "PROCESSED"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict"
}
}
}
},
"/client/{clientId}/upload/{uploadId}/file/{fileId}": {
"put": {
"summary": "Configure an upload file",
"description": "Only available before an upload started processing\nOnly fields that are present and not null will be updated\nAssessment field is deprecated and only updated at upload level\n",
"tags": [
"upload"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "uploadId",
"description": "Id of upload (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "fileId",
"description": "Id of upload file (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload/{uploadId}/file')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"properties": {
"networkId": {
"type": "integer"
},
"applicationId": {
"type": "integer"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"properties": {
"networkId": {
"type": "integer"
},
"applicationId": {
"type": "integer"
}
}
},
{
"type": "object",
"properties": {
"state": {
"type": "string"
},
"scannerName": {
"type": "string"
},
"scannerUuid": {
"type": "string"
}
}
}
],
"example": {
"id": 53606,
"scannerName": "Nexpose",
"scannerUuid": "NEXPOSE",
"assessmentId": 8070,
"networkId": 15,
"applicationId": null,
"state": "PROCESSED"
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"summary": "Remove file from upload",
"description": "Only available before an upload started processing\n",
"tags": [
"upload"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "uploadId",
"description": "Id of upload (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "fileId",
"description": "Id of upload file (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload/{uploadId}/file')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"204": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/upload/{uploadId}/file/download": {
"get": {
"summary": "Download all upload files in the Upload",
"description": "Only available for files that are uploaded by using this API. Files\nuploaded via UI/connectors are not supported right now.\n",
"tags": [
"upload"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "uploadId",
"description": "Id of upload (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "Ok"
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"406": {
"description": "MIME Mismatch\nTry changing from application/octet-stream to application/json, or vice-versa."
}
}
}
},
"/client/{clientId}/upload/{uploadId}/file/{fileUUID}": {
"get": {
"summary": "Fetch an upload file by UUID",
"description": "Only available for files that are uploaded by using this API. Files\nuploaded by Risksense UI are not supported right now.\n",
"tags": [
"upload"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "uploadId",
"description": "Id of upload (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "fileUUID",
"description": "UUID of the upload file (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload/{uploadId}/file')\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "Ok"
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"406": {
"description": "MIME Mismatch\nTry changing from application/octet-stream to application/json, or vice-versa."
}
}
}
},
"/client/{clientId}/upload/{uploadId}/start": {
"post": {
"summary": "Start processing an upload",
"tags": [
"upload"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "uploadId",
"description": "Id of upload (This parameter can be obtained via the GET method on\n'/client/{clientId}/upload')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": false,
"schema": {
"properties": {
"autoUrba": {
"type": "boolean",
"description": "Set this to true to automatically update remediation by assessment for the applicable network"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"allOf": [
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"example": {
"id": 12
}
},
{
"allOf": [
{
"type": "object",
"required": [
"assessmentId",
"networkId"
],
"properties": {
"assessmentId": {
"type": "integer"
},
"networkId": {
"type": "integer"
}
}
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
}
}
}
]
},
{
"type": "object",
"required": [
"state",
"userId"
],
"properties": {
"userId": {
"type": "integer"
},
"state": {
"type": "string",
"enum": [
"Pending",
"FingerPrinting",
"Processing",
"Success",
"PartialSuccess",
"Failure"
]
},
"connectorId": {
"type": "integer",
"description": "Id of the connector if the upload has been automatically created by a connector. Otherwise, null."
}
}
}
]
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector": {
"get": {
"summary": "Paginate connectors in client",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"properties": {
"connectors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"type": {
"type": "string",
"enum": [
"CENZIC_HAILSTORM",
"NESSUS",
"NEXPOSE",
"QUALYS_ASSET",
"QUALYS_VULNERABILITY",
"SECURE_SPHERE_115",
"TENABLE_SECURITY_CENTER"
]
},
"name": {
"type": "string"
},
"connection": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"sslCertificates": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
},
"schedule": {
"type": "object",
"required": [
"type",
"enabled",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"enabled": {
"type": "boolean"
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"networkId": {
"type": "number"
},
"attributes": {
"type": "object",
"description": "<p>Structure is dependent on the type field. Unless listed here\nAttributes_UsernameAndPassword is expected. The referenced structures\ncan be found at the bottom of this document. </p>\n<ul>\n <li>CENZIC_HAILSTORM: Attributes_Cenzic_Hailstorm</li>\n <li>JIRA: Attributes_UsernameAndPassword</li>\n <li>NESSUS: Attributes_Nessus</li>\n <li>NEXPOSE: Attributes_Nexpose</li>\n <li>REMEDY76: Attributes_Remedy</li>\n <li>REMEDY9: Attributes_Remedy</li>\n <li>SERVICE_NOW: Attributes_UsernameAndPassword</li>\n <li>SNOW_SERVICE_REQUEST: Attributes_UsernameAndPassword</li>\n <li>WHITEHAT: Attributes_WhiteHat</li>\n</ul>\n"
},
"autoUrba": {
"type": "boolean"
},
"isTagRemovalEnabled": {
"type": "boolean"
},
"isTicketingConnector": {
"type": "boolean"
},
"urbaConfidenceLevel": {
"type": "integer"
}
},
"example": {
"id": 123,
"type": "SERVICE_NOW",
"name": "service_now_test",
"connection": {
"url": "https://ven01446.service-now.com"
},
"schedule": {
"type": "DAILY",
"hourOfDay": 0
},
"networkId": -1,
"attributes": {
"username": "username",
"password": "password"
},
"autoUrba": true,
"isTagRemovalEnabled": false,
"isTicketingConnector": true,
"urbaConfidenceLevel": 1
}
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
},
"post": {
"summary": "Create new connector on client",
"tags": [
"connector"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"name",
"connection",
"schedule",
"networkId",
"attributes"
],
"properties": {
"type": {
"type": "string",
"enum": [
"CENZIC_HAILSTORM",
"NESSUS",
"NEXPOSE",
"QUALYS_ASSET",
"QUALYS_VULNERABILITY",
"SECURE_SPHERE_115",
"TENABLE_SECURITY_CENTER"
]
},
"name": {
"type": "string"
},
"connection": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"sslCertificates": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
},
"schedule": {
"type": "object",
"required": [
"type",
"enabled",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"enabled": {
"type": "boolean"
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"networkId": {
"type": "integer"
},
"attributes": {
"type": "object",
"description": "<p>Structure is dependent on the type field. Unless listed here\nAttributes_UsernameAndPassword is expected. The referenced structures\ncan be found at the bottom of this document. </p>\n<ul>\n <li>CENZIC_HAILSTORM: Attributes_Cenzic_Hailstorm</li>\n <li>JIRA: Attributes_UsernameAndPassword</li>\n <li>NESSUS: Attributes_Nessus</li>\n <li>NEXPOSE: Attributes_Nexpose</li>\n <li>REMEDY76: Attributes_Remedy</li>\n <li>REMEDY9: Attributes_Remedy</li>\n <li>SERVICE_NOW: Attributes_UsernameAndPassword</li>\n <li>SNOW_SERVICE_REQUEST: Attributes_UsernameAndPassword</li>\n <li>WHITEHAT: Attributes_WhiteHat</li>\n</ul>\n"
},
"connectorField": {
"type": "object",
"description": "<p>Structure is dependent on the type field. This parameter is optional for all the connector types\n except the ones listed below. The referenced structures can be found at the bottom of this document.</p>\n<ul>\n <li>JIRA: ConnectorField_Jira</li>\n <li>SERVICE_NOW: ConnectorField_ServiceNow</li>\n <li>SNOW_SERVICE_REQUEST: ConnectorField_SnowServiceRequest</li>\n <li>GENERIC_SNOW: ConnectorField_GenericSnow</li>\n</ul>\n"
},
"autoUrba": {
"type": "boolean"
},
"urbaConfidenceLevel": {
"type": "integer"
}
},
"example": {
"type": "QUALYS_VULNERABILITY",
"name": "QV",
"connection": {
"url": "https://qualysguard.qg2.apps.qualys.com/"
},
"schedule": {
"type": "DAILY",
"hourOfDay": 0
},
"networkId": -1,
"attributes": {
"username": "username",
"password": "password"
},
"autoUrba": true,
"urbaConfidenceLevel": 1
}
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"type": {
"type": "string",
"enum": [
"CENZIC_HAILSTORM",
"NESSUS",
"NEXPOSE",
"QUALYS_ASSET",
"QUALYS_VULNERABILITY",
"SECURE_SPHERE_115",
"TENABLE_SECURITY_CENTER"
]
},
"name": {
"type": "string"
},
"connection": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"sslCertificates": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
},
"schedule": {
"type": "object",
"required": [
"type",
"enabled",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"enabled": {
"type": "boolean"
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"networkId": {
"type": "number"
},
"attributes": {
"type": "object",
"description": "<p>Structure is dependent on the type field. Unless listed here\nAttributes_UsernameAndPassword is expected. The referenced structures\ncan be found at the bottom of this document. </p>\n<ul>\n <li>CENZIC_HAILSTORM: Attributes_Cenzic_Hailstorm</li>\n <li>JIRA: Attributes_UsernameAndPassword</li>\n <li>NESSUS: Attributes_Nessus</li>\n <li>NEXPOSE: Attributes_Nexpose</li>\n <li>REMEDY76: Attributes_Remedy</li>\n <li>REMEDY9: Attributes_Remedy</li>\n <li>SERVICE_NOW: Attributes_UsernameAndPassword</li>\n <li>SNOW_SERVICE_REQUEST: Attributes_UsernameAndPassword</li>\n <li>WHITEHAT: Attributes_WhiteHat</li>\n</ul>\n"
},
"autoUrba": {
"type": "boolean"
},
"isTagRemovalEnabled": {
"type": "boolean"
},
"isTicketingConnector": {
"type": "boolean"
},
"urbaConfidenceLevel": {
"type": "integer"
}
},
"example": {
"id": 123,
"type": "SERVICE_NOW",
"name": "service_now_test",
"connection": {
"url": "https://ven01446.service-now.com"
},
"schedule": {
"type": "DAILY",
"hourOfDay": 0
},
"networkId": -1,
"attributes": {
"username": "username",
"password": "password"
},
"autoUrba": true,
"isTagRemovalEnabled": false,
"isTicketingConnector": true,
"urbaConfidenceLevel": 1
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/connector/{connectorId}": {
"get": {
"summary": "One connector",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"type": {
"type": "string",
"enum": [
"CENZIC_HAILSTORM",
"NESSUS",
"NEXPOSE",
"QUALYS_ASSET",
"QUALYS_VULNERABILITY",
"SECURE_SPHERE_115",
"TENABLE_SECURITY_CENTER"
]
},
"name": {
"type": "string"
},
"connection": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"sslCertificates": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
},
"schedule": {
"type": "object",
"required": [
"type",
"enabled",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"enabled": {
"type": "boolean"
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"networkId": {
"type": "number"
},
"attributes": {
"type": "object",
"description": "<p>Structure is dependent on the type field. Unless listed here\nAttributes_UsernameAndPassword is expected. The referenced structures\ncan be found at the bottom of this document. </p>\n<ul>\n <li>CENZIC_HAILSTORM: Attributes_Cenzic_Hailstorm</li>\n <li>JIRA: Attributes_UsernameAndPassword</li>\n <li>NESSUS: Attributes_Nessus</li>\n <li>NEXPOSE: Attributes_Nexpose</li>\n <li>REMEDY76: Attributes_Remedy</li>\n <li>REMEDY9: Attributes_Remedy</li>\n <li>SERVICE_NOW: Attributes_UsernameAndPassword</li>\n <li>SNOW_SERVICE_REQUEST: Attributes_UsernameAndPassword</li>\n <li>WHITEHAT: Attributes_WhiteHat</li>\n</ul>\n"
},
"autoUrba": {
"type": "boolean"
},
"isTagRemovalEnabled": {
"type": "boolean"
},
"isTicketingConnector": {
"type": "boolean"
},
"urbaConfidenceLevel": {
"type": "integer"
}
},
"example": {
"id": 123,
"type": "SERVICE_NOW",
"name": "service_now_test",
"connection": {
"url": "https://ven01446.service-now.com"
},
"schedule": {
"type": "DAILY",
"hourOfDay": 0
},
"networkId": -1,
"attributes": {
"username": "username",
"password": "password"
},
"autoUrba": true,
"isTagRemovalEnabled": false,
"isTicketingConnector": true,
"urbaConfidenceLevel": 1
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"summary": "Update a connector",
"tags": [
"connector"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"name",
"connection",
"schedule",
"networkId",
"attributes"
],
"properties": {
"type": {
"type": "string",
"enum": [
"CENZIC_HAILSTORM",
"NESSUS",
"NEXPOSE",
"QUALYS_ASSET",
"QUALYS_VULNERABILITY",
"SECURE_SPHERE_115",
"TENABLE_SECURITY_CENTER"
]
},
"name": {
"type": "string"
},
"connection": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"sslCertificates": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
},
"schedule": {
"type": "object",
"required": [
"type",
"enabled",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"enabled": {
"type": "boolean"
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"networkId": {
"type": "integer"
},
"attributes": {
"type": "object",
"description": "<p>Structure is dependent on the type field. Unless listed here\nAttributes_UsernameAndPassword is expected. The referenced structures\ncan be found at the bottom of this document. </p>\n<ul>\n <li>CENZIC_HAILSTORM: Attributes_Cenzic_Hailstorm</li>\n <li>JIRA: Attributes_UsernameAndPassword</li>\n <li>NESSUS: Attributes_Nessus</li>\n <li>NEXPOSE: Attributes_Nexpose</li>\n <li>REMEDY76: Attributes_Remedy</li>\n <li>REMEDY9: Attributes_Remedy</li>\n <li>SERVICE_NOW: Attributes_UsernameAndPassword</li>\n <li>SNOW_SERVICE_REQUEST: Attributes_UsernameAndPassword</li>\n <li>WHITEHAT: Attributes_WhiteHat</li>\n</ul>\n"
},
"connectorField": {
"type": "object",
"description": "<p>Structure is dependent on the type field. This parameter is optional for all the connector types\n except the ones listed below. The referenced structures can be found at the bottom of this document.</p>\n<ul>\n <li>JIRA: ConnectorField_Jira</li>\n <li>SERVICE_NOW: ConnectorField_ServiceNow</li>\n <li>SNOW_SERVICE_REQUEST: ConnectorField_SnowServiceRequest</li>\n <li>GENERIC_SNOW: ConnectorField_GenericSnow</li>\n</ul>\n"
},
"autoUrba": {
"type": "boolean"
},
"urbaConfidenceLevel": {
"type": "integer"
}
},
"example": {
"type": "QUALYS_VULNERABILITY",
"name": "QV",
"connection": {
"url": "https://qualysguard.qg2.apps.qualys.com/"
},
"schedule": {
"type": "DAILY",
"hourOfDay": 0
},
"networkId": -1,
"attributes": {
"username": "username",
"password": "password"
},
"autoUrba": true,
"urbaConfidenceLevel": 1
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"type": {
"type": "string",
"enum": [
"CENZIC_HAILSTORM",
"NESSUS",
"NEXPOSE",
"QUALYS_ASSET",
"QUALYS_VULNERABILITY",
"SECURE_SPHERE_115",
"TENABLE_SECURITY_CENTER"
]
},
"name": {
"type": "string"
},
"connection": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"sslCertificates": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
},
"schedule": {
"type": "object",
"required": [
"type",
"enabled",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"enabled": {
"type": "boolean"
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"networkId": {
"type": "number"
},
"attributes": {
"type": "object",
"description": "<p>Structure is dependent on the type field. Unless listed here\nAttributes_UsernameAndPassword is expected. The referenced structures\ncan be found at the bottom of this document. </p>\n<ul>\n <li>CENZIC_HAILSTORM: Attributes_Cenzic_Hailstorm</li>\n <li>JIRA: Attributes_UsernameAndPassword</li>\n <li>NESSUS: Attributes_Nessus</li>\n <li>NEXPOSE: Attributes_Nexpose</li>\n <li>REMEDY76: Attributes_Remedy</li>\n <li>REMEDY9: Attributes_Remedy</li>\n <li>SERVICE_NOW: Attributes_UsernameAndPassword</li>\n <li>SNOW_SERVICE_REQUEST: Attributes_UsernameAndPassword</li>\n <li>WHITEHAT: Attributes_WhiteHat</li>\n</ul>\n"
},
"autoUrba": {
"type": "boolean"
},
"isTagRemovalEnabled": {
"type": "boolean"
},
"isTicketingConnector": {
"type": "boolean"
},
"urbaConfidenceLevel": {
"type": "integer"
}
},
"example": {
"id": 123,
"type": "SERVICE_NOW",
"name": "service_now_test",
"connection": {
"url": "https://ven01446.service-now.com"
},
"schedule": {
"type": "DAILY",
"hourOfDay": 0
},
"networkId": -1,
"attributes": {
"username": "username",
"password": "password"
},
"autoUrba": true,
"isTagRemovalEnabled": false,
"isTicketingConnector": true,
"urbaConfidenceLevel": 1
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"summary": "Delete a connector",
"tags": [
"connector"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": false,
"schema": {
"type": "object",
"properties": {
"deleteTag": {
"type": "boolean",
"description": "Force delete the associated tag or not."
}
}
}
}
],
"responses": {
"204": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/{connectorId}/job": {
"get": {
"summary": "Paginate connector jobs",
"description": "<p><b>Description: </b>Paginate connector jobs.\nIf the connector is enabled a pending job is added to the first\npage exceeding the requested page size by one. The meta data in\nthe page field will reflect the correct page size.</p>\n",
"tags": [
"connector"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"_embedded": {
"type": "object",
"required": [
"connectorJobs"
],
"properties": {
"connectorJobs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Not present for pending jobs"
},
"startTime": {
"type": "string",
"format": "date-time"
},
"state": {
"type": "string",
"enum": [
"Pending",
"Processing",
"Success",
"PartialSuccess",
"Failure"
]
}
}
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/{connectorId}/log": {
"get": {
"summary": "Paginate connector logs",
"description": "<p><b>Description: </b>Paginate connector Log.</p>\n",
"tags": [
"connector"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"_embedded": {
"type": "object",
"required": [
"connectorLogModels"
],
"properties": {
"connectorLogModels": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Connector log id"
},
"message": {
"type": "string"
},
"state": {
"type": "string",
"enum": [
"OK",
"ERROR"
]
},
"internalMessage": {
"type": "string"
},
"isAdditionalDetailAvailable": {
"type": "boolean"
},
"logFileCount": {
"type": "integer"
},
"timeAdded": {
"type": "string",
"format": "date-time"
}
}
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/{connectorId}/schedule": {
"put": {
"summary": "Update a connector schedule",
"tags": [
"connector"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"enabled",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"enabled": {
"type": "boolean"
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"type": {
"type": "string",
"enum": [
"CENZIC_HAILSTORM",
"NESSUS",
"NEXPOSE",
"QUALYS_ASSET",
"QUALYS_VULNERABILITY",
"SECURE_SPHERE_115",
"TENABLE_SECURITY_CENTER"
]
},
"name": {
"type": "string"
},
"connection": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"sslCertificates": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
},
"schedule": {
"type": "object",
"required": [
"type",
"enabled",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"enabled": {
"type": "boolean"
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"networkId": {
"type": "number"
},
"attributes": {
"type": "object",
"description": "<p>Structure is dependent on the type field. Unless listed here\nAttributes_UsernameAndPassword is expected. The referenced structures\ncan be found at the bottom of this document. </p>\n<ul>\n <li>CENZIC_HAILSTORM: Attributes_Cenzic_Hailstorm</li>\n <li>JIRA: Attributes_UsernameAndPassword</li>\n <li>NESSUS: Attributes_Nessus</li>\n <li>NEXPOSE: Attributes_Nexpose</li>\n <li>REMEDY76: Attributes_Remedy</li>\n <li>REMEDY9: Attributes_Remedy</li>\n <li>SERVICE_NOW: Attributes_UsernameAndPassword</li>\n <li>SNOW_SERVICE_REQUEST: Attributes_UsernameAndPassword</li>\n <li>WHITEHAT: Attributes_WhiteHat</li>\n</ul>\n"
},
"autoUrba": {
"type": "boolean"
},
"isTagRemovalEnabled": {
"type": "boolean"
},
"isTicketingConnector": {
"type": "boolean"
},
"urbaConfidenceLevel": {
"type": "integer"
}
},
"example": {
"id": 123,
"type": "SERVICE_NOW",
"name": "service_now_test",
"connection": {
"url": "https://ven01446.service-now.com"
},
"schedule": {
"type": "DAILY",
"hourOfDay": 0
},
"networkId": -1,
"attributes": {
"username": "username",
"password": "password"
},
"autoUrba": true,
"isTagRemovalEnabled": false,
"isTicketingConnector": true,
"urbaConfidenceLevel": 1
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/{connectorId}/field": {
"put": {
"summary": "Save the connector templates, description fields, default connector fields",
"description": "<p><b>Description: </b>Save connector information.\nOnce the connector is created, this api is used to store all the connector\nrelated information that has been configured while creating/editing a connector.\n",
"tags": [
"connector"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"defaultTemplateId",
"templates",
"descriptionFields",
"defaultSupportedFieldValues",
"catalog",
"category",
"catalogItem",
"dynamicFields",
"tagSyncField",
"connectorSettings"
],
"properties": {
"type": {
"type": "string",
"description": "Connector Type.\nCurrent supports only two types of connector. They are\n1. SERVICE_NOW - Service Now Incident.\n2. SNOW_SERVICE_REQUEST - Service Now Service Request.\n"
},
"defaultTemplateId": {
"type": "string",
"description": "Optional default template Id. This is a SERVICE_NOW ONLY field."
},
"templates": {
"type": "array",
"items": {
"type": "object",
"description": "SERVICE_NOW field only.",
"required": [
"id",
"name",
"locked"
],
"properties": {
"id": {
"type": "string",
"description": "Template Id"
},
"name": {
"type": "string",
"description": "Template name"
},
"locked": {
"type": "boolean",
"description": "The selected template is locked or not. Locked implies that you\nwill not be able to edit those fields and unlocked implies that\nyou can edit the fields which are supported by Ivanti Neurons.\n"
}
}
}
},
"descriptionFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"enabled"
],
"properties": {
"key": {
"type": "string",
"description": "Description field key"
},
"enabled": {
"type": "boolean",
"description": "True when description field key is enabled else False"
}
}
}
},
"defaultSupportedFieldValues": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Supported template field key"
},
"value": {
"type": "string",
"description": "Supported template field value"
}
}
}
},
"catalog": {
"type": "string",
"description": "Catalog type. SNOW_SERVICE_REQUEST field only."
},
"category": {
"type": "string",
"description": "Category type. SNOW_SERVICE_REQUEST field only."
},
"catalogItem": {
"type": "string",
"description": "Catalog Item type. SNOW_SERVICE_REQUEST field only."
},
"dynamicFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Field key"
},
"value": {
"type": "string",
"description": "Field value"
},
"displayValue": {
"type": "string",
"description": "Label of the value."
}
}
}
},
"tagSyncField": {
"type": "string",
"description": "Value of Tag Name Sync Field. This field is populated with the tag name while creating tickets."
},
"connectorSettings": {
"type": "object",
"required": [
"initialState",
"enabledTagRemoval",
"closeTicketOnFindingsCloseEnabled",
"closedStateKey",
"closedStateLabel"
],
"properties": {
"initialState": {
"type": "string",
"description": "Initial state of the ticket which is used to create a ticket using this connector."
},
"enabledTagRemoval": {
"type": "boolean",
"description": "True if the user allows the deletion of tags associated with this connector, otherwise false."
},
"closeTicketOnFindingsCloseEnabled": {
"type": "boolean",
"description": "True if enable changing the ticket state to the set state when all the associated findings reach to the close state.\n"
},
"closedStateKey": {
"type": "string",
"description": "the close state value of the status."
},
"closedStateLabel": {
"type": "string",
"description": "the close state label of the status."
}
}
}
}
}
}
],
"responses": {
"204": {
"description": "Save request was processed without errors"
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/{connectorId}/template/{templateId}/field": {
"get": {
"summary": "Return list of fields which are associated with this templateId for connectorId",
"description": "<p><b>This returns list of template fields which may or may not be supported by the platform</b></p>\n",
"tags": [
"ticket"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "templateId",
"description": "Id of template (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector/{connectorId}/template')\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"fields"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"locked",
"defaultValue",
"key",
"label",
"isSupported",
"descriptionText",
"selectOptions"
],
"properties": {
"type": {
"type": "string",
"description": "<p>This is the DisplayType of the field.Some of the examples are</p>\n<ul>\n <li>textArea: Used for Text area</li>\n <li>valueDropdown: Used for Dropdown</li>\n</ul>\n<p> This is not available if isSupported is false </p>\n"
},
"locked": {
"type": "boolean",
"description": "If this is true that means user cannot modify the field and\nIf this is false that means user can modify this field that to if\nisSupported is true.\n<p> This is not available if isSupported is false </p>\n"
},
"defaultValue": {
"type": "string",
"description": "This is the default value for the field. It is obtained from the template from the\nconnector and if it is not available in template then it is either retrieved from the\ndefault fields value from database that to if isSupported is true.\n"
},
"key": {
"type": "string",
"description": "This is the key of the field.This is empty if and only if isSupported is false.\n"
},
"label": {
"type": "string",
"description": "This is the label of the field which is used for the display.\n"
},
"isSupported": {
"type": "boolean",
"description": "This is true if the platform support(Editing/Modifying) the field.\n"
},
"descriptionText": {
"type": "string",
"description": "This is the additional description provided to the user regarding the field.\n"
},
"selectOptions": {
"description": "This is only available if the type is valueDropdown\n",
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"value"
],
"properties": {
"label": {
"type": "string",
"description": "Label of field which is used to display."
},
"value": {
"type": "string",
"description": "Value of the dropdown and this can be human readable or may not be human readable."
}
}
}
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/populate": {
"post": {
"summary": "Retrieve list of connector templates and configurable fields options which are used to create connector or update existing connector.",
"description": "<p><b>Description: </b>Populate Fields.\n<p>Will populate list of Connector templates, Ivanti Neurons supported configurable template fields and description for Service Now incident request.</p>\n<p>Or populate list of Service Now service request Catalogs associated with current selected catalog and Ivanti Neurons supported configurable fields.</p>\n",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"username",
"password",
"url"
],
"properties": {
"type": {
"type": "string",
"description": "Service now request type. Provide 'SERVICE_NOW' for incident request or 'SNOW_SERVICE_REQUEST' for service request."
},
"username": {
"type": "string",
"description": "Username of the connector account."
},
"password": {
"type": "string",
"description": "Password of the connector account. It is optional when connectorId is provided."
},
"url": {
"type": "string",
"description": "URL of the connector framework."
},
"connectorId": {
"type": "integer",
"description": "Id of the connector that will be edited.\nIf the connector Id is provided then password is not required. If the connector Id is not\nprovided, then you should provide all the required fields compulsory.\n"
},
"ssl": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"description": "<p>Structure is dependent on the type field. The referenced structures can be found at the bottom of this document.</p>\n<ul>\n <li>SERVICE_NOW: ConnectorPopulate_ServiceNow</li>\n <li>JIRA: ConnectorPopulate_Jira</li>\n <li>SNOW_SERVICE_REQUEST: ConnectorPopulate_SnowServiceRequest</li>\n <li>GENERIC_SNOW: ConnectorPopulate_GenericSnow</li>\n</ul>\n"
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/{connectorId}/template": {
"get": {
"summary": "List of templates that are selected while creating the connector",
"description": "<p><b>Description: </b>List of templates.\nThis contains the list of templates which are selected while creating the connector\nThe List should start with None template which is used to create ticket without template\n<p><b>Supported Connector Types: </b>SERVICE_NOW.</p>\n",
"tags": [
"ticket"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"templates"
],
"properties": {
"templates": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"label",
"tableName",
"isDefault"
],
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"tableName": {
"type": "string",
"description": "The Table name that the template belongs to."
},
"isDefault": {
"type": "boolean",
"description": "Should only be true for one of the templates in the list."
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/populate/catalog/{catalogId}/category": {
"post": {
"summary": "Retrieve list of Category from Service Now.",
"description": "<p><b>Description: </b>Retrieve list of Service request category within given catalog.\n<p><b>Supported Connector Types: </b>SNOW_SERVICE_REQUEST.</p>\n",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "catalogId",
"in": "path",
"description": "Id of Catalog (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/connector/populate with SNOW_SERVICE_REQUEST as the type')\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"username",
"password",
"url"
],
"properties": {
"type": {
"type": "string",
"description": "Service now request type. Provide 'SERVICE_NOW' for incident request or 'SNOW_SERVICE_REQUEST' for service request."
},
"username": {
"type": "string",
"description": "Username of the connector account."
},
"password": {
"type": "string",
"description": "Password of the connector account. It is optional when connectorId is provided."
},
"url": {
"type": "string",
"description": "URL of the connector framework."
},
"connectorId": {
"type": "integer",
"description": "Id of the connector that will be edited.\nIf the connector Id is provided then password is not required. If the connector Id is not\nprovided, then you should provide all the required fields compulsory.\n"
},
"ssl": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"currentSelectedCategory",
"categories"
],
"properties": {
"currentSelectedCategory": {
"type": "string"
},
"categories": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/populate/catalog/{catalogId}/category/{categoryId}/item": {
"post": {
"summary": "Retrieve list of Catalog items associated with the catalog and category",
"description": "<p><b>Description: </b> Get catalog items under the given catalog and category from Service Now.\n<p><b>Supported Connector Types: </b>SNOW_SERVICE_REQUEST.</p>\n",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "catalogId",
"in": "path",
"description": "Id of Catalog (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/connector/populate with SNOW_SERVICE_REQUEST as the type')\n",
"required": true,
"type": "string"
},
{
"name": "categoryId",
"description": "Id of the category (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/connector/populate/catalog/{catalogId}/category'\n",
"in": "path",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"username",
"password",
"url"
],
"properties": {
"type": {
"type": "string",
"description": "Service now request type. Provide 'SERVICE_NOW' for incident request or 'SNOW_SERVICE_REQUEST' for service request."
},
"username": {
"type": "string",
"description": "Username of the connector account."
},
"password": {
"type": "string",
"description": "Password of the connector account. It is optional when connectorId is provided."
},
"url": {
"type": "string",
"description": "URL of the connector framework."
},
"connectorId": {
"type": "integer",
"description": "Id of the connector that will be edited.\nIf the connector Id is provided then password is not required. If the connector Id is not\nprovided, then you should provide all the required fields compulsory.\n"
},
"ssl": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"currentlySelectedCatalogItem",
"catalogItems"
],
"properties": {
"currentlySelectedCatalogItem": {
"type": "string",
"description": "Selected catalog item system id"
},
"catalogItems": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/populate/catalog/{catalogId}/category/{categoryId}/item/{catalogItemId}": {
"post": {
"summary": "Retrieve variables of catalog item, saved tag sync field and its options and connector settings",
"description": "<p><b>Description: </b> Get catalog item variables for a given catalog item from Service Now.\n Also get list of tag sync field and saved tag sync field. This tagSyncField is the field\n which is used to store the tag name in servicenow.\n Connector Settings which contains the initialState, close Ticket on finding close and close finding on ticket close.\n This information is used to sync the servicenow and do necessary actions.</p>\n<p><b>Supported Connector Types: </b>SNOW_SERVICE_REQUEST.</p>\n",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "catalogId",
"in": "path",
"description": "Id of Catalog (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/connector/populate with SNOW_SERVICE_REQUEST as the type')\n",
"required": true,
"type": "string"
},
{
"name": "categoryId",
"description": "Id of the category (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/connector/populate/catalog/{catalogId}/category'\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "catalogItemId",
"in": "path",
"description": "Id of Catalog Item(This parameter can be obtained via the POST\nmethod on '/client/{clientId}/connector/populate/catalog/{catalogId}/category/{CategoryId}/item with SNOW_SERVICE_REQUEST as the type')\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"username",
"password",
"url"
],
"properties": {
"type": {
"type": "string",
"description": "Service now request type. Provide 'SERVICE_NOW' for incident request or 'SNOW_SERVICE_REQUEST' for service request."
},
"username": {
"type": "string",
"description": "Username of the connector account."
},
"password": {
"type": "string",
"description": "Password of the connector account. It is optional when connectorId is provided."
},
"url": {
"type": "string",
"description": "URL of the connector framework."
},
"connectorId": {
"type": "integer",
"description": "Id of the connector that will be edited.\nIf the connector Id is provided then password is not required. If the connector Id is not\nprovided, then you should provide all the required fields compulsory.\n"
},
"ssl": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"fields",
"tagSyncField",
"tagSyncFieldOptions",
"templates",
"connectorSettings"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"type",
"value",
"required",
"locked",
"isSupported",
"selectOptions",
"fields",
"queryParameters",
"dependentKey"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"type": {
"type": "string",
"description": "<p>Type of Field used to display.The types are</p>\n<ul>\n <li>boolean: Used for CheckBox field</li>\n <li>date: Used for Date field</li>\n <li>multiSelect: Used for the multiselect dropdown field</li>\n <li>number: Used for Number field</li>\n <li>radio: Used for Radio button field</li>\n <li>referenceDropdown: Used for the dropdown view where dropdown options are fetched dynamically.</li>\n <li>referenceMultiSelect: Used for the multiselect dropdown view where dropdown options are fetched dynamically.</li>\n <li>section: Used for Section field. This field only supported in SNOW_SERVICE_REQUEST connector type.</li>\n <li>string: Used for single line text field</li>\n <li>textArea: Used for TextArea field</li>\n <li>valueDropdown: Used for the dropdown field</li>\n</ul>\n"
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"required": {
"type": "boolean",
"description": "This variable shows whether this field is required or not. If it is required, it cannot be sumbitted as empty.\n"
},
"locked": {
"type": "boolean",
"description": "True if the field value is not allowed to edit, otherwise false.\n"
},
"isSupported": {
"type": "boolean",
"description": "True for all supported fields."
},
"selectOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value",
"isCurrentlySelected"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if previously selected this option otherwise false.\nAvailable only if the type is 'referenceMultiSelect' or 'multiSelect'.\n"
}
}
}
},
"fields": {
"type": "array",
"items": {},
"description": "Available if the type is 'section'. This is same as parent field.\n"
},
"queryParameters": {
"description": "Available only if the type is 'referenceDropdown' or 'referenceMultiSelect'",
"type": "object",
"required": [
"table",
"filter",
"fieldName"
],
"properties": {
"table": {
"type": "string",
"description": "Table name from which dropdown options are fetched. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"filter": {
"type": "string",
"description": "Table filter to filter the records. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"fieldName": {
"type": "string",
"description": "Field Name for which dropdown options are fetched. This is a 'JIRA' request field."
}
}
},
"dependentKey": {
"type": "string",
"description": "Key of dependent field. Dropdown options for this field is dependent on value of this\nfield to which this key belongs. Available only if the type is 'referenceDropdown'\n"
}
}
}
},
"tagSyncField": {
"type": "string",
"description": "Value of Tag Sync Field which was set when creating the connector otherwise empty string.\n"
},
"tagSyncFieldOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
}
},
"connectorSettings": {
"type": "object",
"required": [
"initialState",
"statusOptions",
"closeTicketOnFindingsCloseEnabled",
"closedStateKey"
],
"properties": {
"initialState": {
"type": "string",
"description": "Initial state of the ticket which is used to create a ticket using this connector."
},
"statusOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
}
},
"closeTicketOnFindingsClose": {
"type": "boolean",
"description": "True if enable changing the ticket state to the set state when all the associated findings reach the close state.\n"
},
"closedStateKey": {
"type": "string",
"description": "the close state value of the status."
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/{connectorId}/catalogItemField": {
"get": {
"summary": "Get list of catalog item fields associated with the connector.",
"description": "<b>Supported Connector Types: </b>SNOW_SERVICE_REQUEST\n",
"tags": [
"ticket"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"fields",
"tagSyncField"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"type",
"value",
"required",
"locked",
"isSupported",
"selectOptions",
"fields",
"queryParameters",
"dependentKey"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"type": {
"type": "string",
"description": "<p>Type of Field used to display.The types are</p>\n<ul>\n <li>boolean: Used for CheckBox field</li>\n <li>date: Used for Date field</li>\n <li>multiSelect: Used for the multiselect dropdown field</li>\n <li>number: Used for Number field</li>\n <li>radio: Used for Radio button field</li>\n <li>referenceDropdown: Used for the dropdown view where dropdown options are fetched dynamically.</li>\n <li>referenceMultiSelect: Used for the multiselect dropdown view where dropdown options are fetched dynamically.</li>\n <li>section: Used for Section field. This field only supported in SNOW_SERVICE_REQUEST connector type.</li>\n <li>string: Used for single line text field</li>\n <li>textArea: Used for TextArea field</li>\n <li>valueDropdown: Used for the dropdown field</li>\n</ul>\n"
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"required": {
"type": "boolean",
"description": "This variable shows whether this field is required or not. If it is required, it cannot be sumbitted as empty.\n"
},
"locked": {
"type": "boolean",
"description": "True if the field value is not allowed to edit, otherwise false.\n"
},
"isSupported": {
"type": "boolean",
"description": "True for all supported fields."
},
"selectOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value",
"isCurrentlySelected"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if previously selected this option otherwise false.\nAvailable only if the type is 'referenceMultiSelect' or 'multiSelect'.\n"
}
}
}
},
"fields": {
"type": "array",
"items": {},
"description": "Available if the type is 'section'. This is same as parent field.\n"
},
"queryParameters": {
"description": "Available only if the type is 'referenceDropdown' or 'referenceMultiSelect'",
"type": "object",
"required": [
"table",
"filter",
"fieldName"
],
"properties": {
"table": {
"type": "string",
"description": "Table name from which dropdown options are fetched. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"filter": {
"type": "string",
"description": "Table filter to filter the records. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"fieldName": {
"type": "string",
"description": "Field Name for which dropdown options are fetched. This is a 'JIRA' request field."
}
}
},
"dependentKey": {
"type": "string",
"description": "Key of dependent field. Dropdown options for this field is dependent on value of this\nfield to which this key belongs. Available only if the type is 'referenceDropdown'\n"
}
}
}
},
"tagSyncField": {
"type": "string",
"description": "Value of Tag Sync Field which was set when creating the connector otherwise empty string.\n"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/field/option": {
"post": {
"summary": "Retrieve dropdown options for the field",
"description": "<p><b>Description: </b> Get the dropdown options for the field from servicenow from given table using the filter and search string.</p>\n<p><b>Supported Connector Types: </b>JIRA, SNOW_SERVICE_REQUEST, SERVICE_NOW </p>\n",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"connectorCredentials",
"connectorId",
"queryParameters",
"query",
"key"
],
"properties": {
"type": {
"type": "string",
"description": "Connector type."
},
"connectorCredentials": {
"type": "object",
"required": [
"username",
"password",
"url",
"ssl"
],
"properties": {
"username": {
"type": "string",
"description": "Username of the connector account."
},
"password": {
"type": "string",
"description": "Password of the connector account."
},
"url": {
"type": "string",
"description": "URL of the connector framework."
},
"ssl": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
},
"connectorId": {
"type": "integer",
"description": "Id of the connector.\nIf the connector Id is provided then connectorCredentials is not required. If the connector Id is not\nprovided, then you should provide connectorCredentials compulsory.\n"
},
"queryParameters": {
"type": "object",
"required": [
"table",
"filter",
"fieldName"
],
"properties": {
"table": {
"type": "string",
"description": "Table name from which dropdown options are fetched. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"filter": {
"type": "string",
"description": "Table filter to filter the records. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"fieldName": {
"type": "string",
"description": "Field Name for which dropdown options are fetched. This is a 'JIRA' request field."
}
}
},
"query": {
"type": "string",
"description": "Search string to filter the records."
},
"key": {
"type": "string",
"description": "Key of the field to which dropdown options are fetched."
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"key",
"selectOptions"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field to which dropdown options are fetched."
},
"selectOptions": {
"type": "array",
"description": "Options for the dropdown.",
"items": {
"type": "object",
"required": [
"label",
"value"
],
"properties": {
"label": {
"type": "string",
"description": "Label of field which is used to display."
},
"value": {
"type": "string",
"description": "Value of the dropdown and this can be human readable or may not be human readable."
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/{connectorId}/run": {
"get": {
"summary": "Run connector on demand",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Not present for pending jobs"
},
"startTime": {
"type": "string",
"format": "date-time"
},
"state": {
"type": "string",
"enum": [
"Pending",
"Processing",
"Success",
"PartialSuccess",
"Failure"
]
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/connector/populate/project/{projectId}/issueType": {
"post": {
"summary": "Retrieve list of issue types from Jira under a given project.",
"description": "<p><b>Description: </b>Retrieve list of issue types within given project.</p>\n<p><b>Supported Connector Types: </b>JIRA </p>\n",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "projectId",
"description": "Key of the project (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/connector/populate')\n",
"in": "path",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"username",
"password",
"url"
],
"properties": {
"type": {
"type": "string",
"description": "Service now request type. Provide 'SERVICE_NOW' for incident request or 'SNOW_SERVICE_REQUEST' for service request."
},
"username": {
"type": "string",
"description": "Username of the connector account."
},
"password": {
"type": "string",
"description": "Password of the connector account. It is optional when connectorId is provided."
},
"url": {
"type": "string",
"description": "URL of the connector framework."
},
"connectorId": {
"type": "integer",
"description": "Id of the connector that will be edited.\nIf the connector Id is provided then password is not required. If the connector Id is not\nprovided, then you should provide all the required fields compulsory.\n"
},
"ssl": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"currentlySelectedIssueType",
"issueTypes"
],
"properties": {
"currentlySelectedIssueType": {
"type": "string",
"description": "Current selected issue type."
},
"issueTypes": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/populate/project/{projectId}/issueType/{issueTypeId}": {
"post": {
"summary": "Retrieve list of supported and unsupported fields and connectorsettings.",
"description": "<p><b>Description: </b>Retrieve list of supported and unsupported fields and connectorsettings.</p>\n<p><b>Supported Connector Types: </b>JIRA</p>\n",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "projectId",
"description": "Key of the project (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/connector/populate')\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "issueTypeId",
"description": "Id of the issueType (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/connector/populate/project/{projectId}/issueType')\n",
"in": "path",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"type",
"username",
"password",
"url"
],
"properties": {
"type": {
"type": "string",
"description": "Service now request type. Provide 'SERVICE_NOW' for incident request or 'SNOW_SERVICE_REQUEST' for service request."
},
"username": {
"type": "string",
"description": "Username of the connector account."
},
"password": {
"type": "string",
"description": "Password of the connector account. It is optional when connectorId is provided."
},
"url": {
"type": "string",
"description": "URL of the connector framework."
},
"connectorId": {
"type": "integer",
"description": "Id of the connector that will be edited.\nIf the connector Id is provided then password is not required. If the connector Id is not\nprovided, then you should provide all the required fields compulsory.\n"
},
"ssl": {
"type": "string",
"format": "base64",
"description": "<p>\nThis field is a Base64-encoded SSL Certficate bundle. The certficates can be\nexported from your browser as a text file.\n</p>\n<p>NOTE: The Base64-encoded SSL Certificate bundle cannot contain line-endings as it must\nbe encoded as a JSON string field.</p>\n<p>\nIf you have access to the GNU commandline tools, you can retrieve the ssl certificates:\n<pre><code> prompt> openssl s_client -connect platform.risksense.com:443 -showcerts </code></pre>\nyou can base64 encode the certificates using the following command:\n<pre><code> prompt> cat certs.txt | base64 -w0 </code></pre>\nin a single command you can retrieve, parse, and encode the certificates:\n<pre><code> prompt> echo | openssl s_client -connect platform.risksense.com:443 -showcerts | awk '/^-----BEGIN CERT/,/^-----END CERT/' | base64 -w0 </code></pre>\n</p>\n"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"connectorSettings",
"fields",
"lockedFields",
"tagSyncField",
"tagSyncFieldOptions",
"unSupportedFields"
],
"properties": {
"connectorSettings": {
"type": "object",
"required": [
"initialState",
"statusOptions",
"closeTicketOnFindingsCloseEnabled",
"closedStateKey"
],
"properties": {
"initialState": {
"type": "string",
"description": "Initial state of the ticket which is used to create a ticket using this connector."
},
"statusOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
}
},
"closeTicketOnFindingsClose": {
"type": "boolean",
"description": "True if enable changing the ticket state to the set state when all the associated findings reach the close state.\n"
},
"closedStateKey": {
"type": "string",
"description": "the close state value of the status."
}
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"type",
"value",
"required",
"locked",
"isSupported",
"selectOptions",
"fields",
"queryParameters",
"dependentKey"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"type": {
"type": "string",
"description": "<p>Type of Field used to display.The types are</p>\n<ul>\n <li>boolean: Used for CheckBox field</li>\n <li>date: Used for Date field</li>\n <li>multiSelect: Used for the multiselect dropdown field</li>\n <li>number: Used for Number field</li>\n <li>radio: Used for Radio button field</li>\n <li>referenceDropdown: Used for the dropdown view where dropdown options are fetched dynamically.</li>\n <li>referenceMultiSelect: Used for the multiselect dropdown view where dropdown options are fetched dynamically.</li>\n <li>section: Used for Section field. This field only supported in SNOW_SERVICE_REQUEST connector type.</li>\n <li>string: Used for single line text field</li>\n <li>textArea: Used for TextArea field</li>\n <li>valueDropdown: Used for the dropdown field</li>\n</ul>\n"
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"required": {
"type": "boolean",
"description": "This variable shows whether this field is required or not. If it is required, it cannot be sumbitted as empty.\n"
},
"locked": {
"type": "boolean",
"description": "True if the field value is not allowed to edit, otherwise false.\n"
},
"isSupported": {
"type": "boolean",
"description": "True for all supported fields."
},
"selectOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value",
"isCurrentlySelected"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if previously selected this option otherwise false.\nAvailable only if the type is 'referenceMultiSelect' or 'multiSelect'.\n"
}
}
}
},
"fields": {
"type": "array",
"items": {},
"description": "Available if the type is 'section'. This is same as parent field.\n"
},
"queryParameters": {
"description": "Available only if the type is 'referenceDropdown' or 'referenceMultiSelect'",
"type": "object",
"required": [
"table",
"filter",
"fieldName"
],
"properties": {
"table": {
"type": "string",
"description": "Table name from which dropdown options are fetched. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"filter": {
"type": "string",
"description": "Table filter to filter the records. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"fieldName": {
"type": "string",
"description": "Field Name for which dropdown options are fetched. This is a 'JIRA' request field."
}
}
},
"dependentKey": {
"type": "string",
"description": "Key of dependent field. Dropdown options for this field is dependent on value of this\nfield to which this key belongs. Available only if the type is 'referenceDropdown'\n"
}
}
}
},
"lockedFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"isCurrentlySelected"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the option."
},
"label": {
"type": "string",
"description": "Label of the option which is used to display."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if previously selected this option otherwise false. \n"
}
}
}
},
"tagSyncField": {
"type": "string",
"description": "Value of Tag Name Sync Field. This field is populated with the tag name while creating tickets."
},
"tagSyncFieldOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
}
},
"unSupportedFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"value",
"isSupported"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"isSupported": {
"type": "boolean",
"description": "false for all unsupported Fields."
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/{connectorId}/issueTypeField": {
"get": {
"summary": "Get list of issue type fields associated with the connector.",
"description": "<b>Supported Connector Types: </b>JIRA\n",
"tags": [
"ticket"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"fields",
"unSupportedFields",
"tagSyncField",
"project",
"issueType"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"type",
"value",
"required",
"locked",
"isSupported",
"selectOptions",
"fields",
"queryParameters",
"dependentKey"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"type": {
"type": "string",
"description": "<p>Type of Field used to display.The types are</p>\n<ul>\n <li>boolean: Used for CheckBox field</li>\n <li>date: Used for Date field</li>\n <li>multiSelect: Used for the multiselect dropdown field</li>\n <li>number: Used for Number field</li>\n <li>radio: Used for Radio button field</li>\n <li>referenceDropdown: Used for the dropdown view where dropdown options are fetched dynamically.</li>\n <li>referenceMultiSelect: Used for the multiselect dropdown view where dropdown options are fetched dynamically.</li>\n <li>section: Used for Section field. This field only supported in SNOW_SERVICE_REQUEST connector type.</li>\n <li>string: Used for single line text field</li>\n <li>textArea: Used for TextArea field</li>\n <li>valueDropdown: Used for the dropdown field</li>\n</ul>\n"
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"required": {
"type": "boolean",
"description": "This variable shows whether this field is required or not. If it is required, it cannot be sumbitted as empty.\n"
},
"locked": {
"type": "boolean",
"description": "True if the field value is not allowed to edit, otherwise false.\n"
},
"isSupported": {
"type": "boolean",
"description": "True for all supported fields."
},
"selectOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value",
"isCurrentlySelected"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if previously selected this option otherwise false.\nAvailable only if the type is 'referenceMultiSelect' or 'multiSelect'.\n"
}
}
}
},
"fields": {
"type": "array",
"items": {},
"description": "Available if the type is 'section'. This is same as parent field.\n"
},
"queryParameters": {
"description": "Available only if the type is 'referenceDropdown' or 'referenceMultiSelect'",
"type": "object",
"required": [
"table",
"filter",
"fieldName"
],
"properties": {
"table": {
"type": "string",
"description": "Table name from which dropdown options are fetched. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"filter": {
"type": "string",
"description": "Table filter to filter the records. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"fieldName": {
"type": "string",
"description": "Field Name for which dropdown options are fetched. This is a 'JIRA' request field."
}
}
},
"dependentKey": {
"type": "string",
"description": "Key of dependent field. Dropdown options for this field is dependent on value of this\nfield to which this key belongs. Available only if the type is 'referenceDropdown'\n"
}
}
}
},
"unSupportedFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"value",
"isSupported"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"isSupported": {
"type": "boolean",
"description": "false for all unsupported Fields."
}
}
}
},
"tagSyncField": {
"type": "string",
"description": "Value of Tag Sync Field which was set when creating the connector otherwise empty string.\n"
},
"project": {
"type": "string",
"description": "Project Name."
},
"issueType": {
"type": "string",
"description": "Issue Type Name."
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/cmdb/field/editForm/populate": {
"post": {
"summary": "Get list of CMDB fields and connector mappings to each field for editing.",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"fields",
"fieldProperties"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"isCurrentlySelected"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the option."
},
"label": {
"type": "string",
"description": "Label of the option which is used to display."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if previously selected this option otherwise false. \n"
}
}
}
},
"fieldProperties": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value",
"label",
"connectorMapping"
],
"properties": {
"key": {
"type": "string",
"description": "CMDB field key."
},
"value": {
"type": "string",
"description": "Value of the field."
},
"label": {
"type": "string",
"description": "Label of the CMDB field."
},
"connectorMapping": {
"type": "array",
"description": "Mapping of connector to asset count for this CMDB field.",
"items": {
"type": "object",
"required": [
"name",
"assetCount"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the connector"
},
"assetCount": {
"type": "integer",
"description": "Total number of asset's CMDB field mapped to this connector"
}
}
}
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/cmdb/field/lockForm/populate": {
"post": {
"summary": "Get list of CMDB fields and connector mappings to each field for locking.",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"fields",
"fieldProperties",
"connectors"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"isCurrentlySelected"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the option."
},
"label": {
"type": "string",
"description": "Label of the option which is used to display."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if previously selected this option otherwise false. \n"
}
}
}
},
"fieldProperties": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value",
"label",
"connectorMapping"
],
"properties": {
"key": {
"type": "string",
"description": "CMDB field key."
},
"value": {
"type": "string",
"description": "Value of the field."
},
"label": {
"type": "string",
"description": "Label of the CMDB field."
},
"connectorMapping": {
"type": "array",
"description": "Mapping of connector to asset count for this CMDB field.",
"items": {
"type": "object",
"required": [
"name",
"assetCount"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the connector"
},
"assetCount": {
"type": "integer",
"description": "Total number of asset's CMDB field mapped to this connector"
}
}
}
}
}
}
},
"connectors": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "integer",
"description": "Id of the Field."
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/cmdb/customField/label": {
"get": {
"summary": "List of CMDB custom fields.",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"type",
"value",
"required",
"locked",
"isSupported"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"type": {
"type": "string"
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"required": {
"type": "boolean",
"description": "This variable shows whether this field is required or not. If it is required, it cannot be submitted as empty.\n"
},
"locked": {
"type": "boolean",
"description": "True if the field value is not allowed to edit, otherwise false.\n"
},
"isSupported": {
"type": "boolean",
"description": "True for all supported fields."
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Save CMDB custom field label.",
"tags": [
"connector"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"value",
"key"
],
"properties": {
"value": {
"type": "string",
"description": "value of the Field."
},
"key": {
"type": "string",
"description": "key of the Field."
}
}
}
}
}
],
"responses": {
"204": {
"description": "Success",
"schema": {
"description": "Save request was processed without errors"
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/{subject}/{assetId}/cmdb/multipleFound": {
"get": {
"summary": "Get the list of assets that have multiple matches.",
"description": "In case if Service Now CMDB has more than one match for an asset then the full list of duplicates can be seen through this",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "assetId",
"description": "Id of the asset that needs to be created (This parameter can be obtained via the GET method on '/{subject}/{assetId}')",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"connectorId",
"sysIdFieldInfo"
],
"properties": {
"connectorId": {
"type": "integer",
"description": "Id of the connector used"
},
"sysIdFieldInfo": {
"type": "array",
"items": {
"type": "object",
"required": [
"sysId",
"className"
],
"properties": {
"sysId": {
"type": "string",
"description": "Unique id for the configuration item at the Service Now end"
},
"className": {
"type": "string",
"description": "Name of the class associated at the Service Now end"
}
}
}
}
},
"example": {
"connectorId": 111,
"sysIdFieldInfo": {
"sysId": "duu3434uuew",
"className": "cmdb_ci"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/{subject}/{assetId}/connector/{connectorId}/cmdb/mergeMultipleFound": {
"post": {
"summary": "Get the list of assets that have multiple matches.",
"description": "In case if Service Now CMDB has more than one match for an asset then the full list of duplicates can be seen through this",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "assetId",
"description": "Id of the asset that needs to be created (This parameter can be obtained via the GET method on '/{subject}/{assetId}')",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"hostId",
"uniqueId",
"table"
],
"properties": {
"hostId": {
"type": "integer",
"description": "Unique id of the host that needs to be merged"
},
"uniqueId": {
"type": "string",
"description": "Unique id for the configuration item at the Service Now end"
},
"table": {
"type": "string",
"description": "Name of the class associated at the Service Now end"
}
},
"example": {
"hostId": 20,
"sysId": "a1b345",
"table": "cmdb_ci"
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"clientId",
"jobTypeId",
"jobPriorityId",
"jobStateId",
"workerInstanceId",
"userId",
"isDrainstopExempt",
"startTime",
"endTime",
"filterStartTime",
"created",
"updated",
"retryDateTime",
"isClientExclusiveLock"
],
"properties": {
"id": {
"type": "integer"
},
"clientId": {
"type": "integer"
},
"jobTypeId": {
"type": "integer"
},
"jobPriorityId": {
"type": "integer"
},
"jobStateId": {
"type": "integer"
},
"workerInstanceId": {
"type": "integer"
},
"userId": {
"type": "integer"
},
"isDrainstopExempt": {
"type": "boolean"
},
"startTime": {
"type": "string",
"format": "date-time"
},
"endTime": {
"type": "string",
"format": "date-time"
},
"filterStartTime": {
"type": "string",
"format": "date-time"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"retryDateTime": {
"type": "string",
"format": "date-time"
},
"isClientExclusiveLock": {
"type": "boolean"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/{subject}/{assetId}/connector/{connectorId}/cmdb/createAsset": {
"get": {
"summary": "Create asset at the Service Now CMDB end.",
"description": "Assets not found at the Service Now CMDB will be created in the extended table\n",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "assetId",
"description": "Id of the asset that needs to be created (This parameter can be obtained via the GET method on '/{subject}/{assetId}')",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"202": {
"description": "Accepted",
"schema": {
"type": "object",
"required": [
"connectorId",
"sysId"
],
"properties": {
"connectorId": {
"type": "integer"
},
"sysId": {
"type": "string",
"description": "Unique Id of the configuration item maintained at the CMDB end"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/{subject}/{assetId}/connector/{connectorId}/cmdb/syncSingleAsset": {
"get": {
"summary": "Realign a record that has failed to sync.",
"description": "Assets no longer syncing can be manually realigned based on the current status at Service Now\n",
"tags": [
"connector"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to search against. Supported subject are available\nthrough the GET method on /subjects <br />\nExample: \"hostFinding\"</p>\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "assetId",
"description": "Id of the asset that needs to be created (This parameter can be obtained via the GET method on '/{subject}/{assetId}')",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"202": {
"description": "Accepted",
"schema": {
"type": "object",
"required": [
"assetId",
"CmdbUniqueIdStatus"
],
"properties": {
"assetId": {
"type": "integer"
},
"CmdbUniqueIdStatus": {
"type": "string",
"enum": [
"SYNCED",
"NOT_FOUND",
"MULTIPLE_FOUND",
"RECORD_NO_LONGER_FOUND",
"NOT_APPLICABLE"
]
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/connector/{connectorId}/ticket": {
"get": {
"summary": "Get list of fields associated with the connector.",
"description": "<b>Supported Connector Types: </b>GENERIC_SNOW\n",
"tags": [
"ticket"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "connectorId",
"description": "Id of connector (This parameter can be obtained via the GET\nmethod on '/client/{clientId}/connector')\n",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"type",
"value",
"required",
"locked",
"isSupported",
"selectOptions",
"fields",
"queryParameters",
"dependentKey"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"type": {
"type": "string",
"description": "<p>Type of Field used to display.The types are</p>\n<ul>\n <li>boolean: Used for CheckBox field</li>\n <li>date: Used for Date field</li>\n <li>multiSelect: Used for the multiselect dropdown field</li>\n <li>number: Used for Number field</li>\n <li>radio: Used for Radio button field</li>\n <li>referenceDropdown: Used for the dropdown view where dropdown options are fetched dynamically.</li>\n <li>referenceMultiSelect: Used for the multiselect dropdown view where dropdown options are fetched dynamically.</li>\n <li>section: Used for Section field. This field only supported in SNOW_SERVICE_REQUEST connector type.</li>\n <li>string: Used for single line text field</li>\n <li>textArea: Used for TextArea field</li>\n <li>valueDropdown: Used for the dropdown field</li>\n</ul>\n"
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"required": {
"type": "boolean",
"description": "This variable shows whether this field is required or not. If it is required, it cannot be sumbitted as empty.\n"
},
"locked": {
"type": "boolean",
"description": "True if the field value is not allowed to edit, otherwise false.\n"
},
"isSupported": {
"type": "boolean",
"description": "True for all supported fields."
},
"selectOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value",
"isCurrentlySelected"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if previously selected this option otherwise false.\nAvailable only if the type is 'referenceMultiSelect' or 'multiSelect'.\n"
}
}
}
},
"fields": {
"type": "array",
"items": {},
"description": "Available if the type is 'section'. This is same as parent field.\n"
},
"queryParameters": {
"description": "Available only if the type is 'referenceDropdown' or 'referenceMultiSelect'",
"type": "object",
"required": [
"table",
"filter",
"fieldName"
],
"properties": {
"table": {
"type": "string",
"description": "Table name from which dropdown options are fetched. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"filter": {
"type": "string",
"description": "Table filter to filter the records. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"fieldName": {
"type": "string",
"description": "Field Name for which dropdown options are fetched. This is a 'JIRA' request field."
}
}
},
"dependentKey": {
"type": "string",
"description": "Key of dependent field. Dropdown options for this field is dependent on value of this\nfield to which this key belongs. Available only if the type is 'referenceDropdown'\n"
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host": {
"post": {
"summary": "Create a new host",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"groupId",
"groupIds",
"assessmentId",
"networkId",
"ipAddress",
"subnet",
"hostName",
"discoveredDate"
],
"properties": {
"groupId": {
"description": "Either Group Id or Group Ids is mandatory",
"type": "integer"
},
"groupIds": {
"description": "Either Group Id or Group Ids is mandatory",
"type": "array",
"items": {
"type": "integer"
}
},
"assessmentId": {
"type": "integer"
},
"networkId": {
"type": "integer"
},
"ipAddress": {
"type": "string"
},
"subnet": {
"type": "string"
},
"hostName": {
"type": "string"
},
"discoveredDate": {
"type": "string"
},
"scannerFirstDiscoveredOn": {
"type": "string"
},
"scannerLastDiscoveredOn": {
"type": "string"
},
"services": {
"type": "array",
"items": {
"type": "object",
"required": [
"portNumber",
"name"
],
"properties": {
"portNumber": {
"type": "integer"
},
"name": {
"type": "string"
}
}
}
},
"criticality": {
"type": "integer"
},
"operatingSystemScanner": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"family": {
"type": "string"
},
"class": {
"type": "string"
},
"vendor": {
"type": "string"
},
"product": {
"type": "string"
},
"certainty": {
"type": "number"
}
}
},
"createCmdb": {
"type": "object",
"description": "cmdb field key to value.\n"
},
"lockCmdb": {
"type": "object",
"description": "cmdb field key to connectorId. If connectorId is -1, the field is locked to API/UI and\nany further updates to this field, can only be done by API/UI.\n"
}
},
"example": {
"groupId": 1,
"groupIds": [
101,
102,
103
],
"assessmentId": 1,
"networkId": 3,
"ipAddress": "10.1.1.1",
"subnet": "10.1.1",
"hostName": "www.hostname.com",
"discoveredDate": "2018-06-18T00:00:00",
"scannerFirstDiscoveredOn": "2018-06-18T00:00:00",
"scannerLastDiscoveredOn": "2019-07-18T00:00:00",
"services": [
{
"portNumber": 8080,
"name": "http"
},
{
"portNumber": 22,
"name": "ssh"
}
],
"criticality": 1,
"operatingSystemScanner": {
"name": "Linux Kernel 3.2.0-67-generic on Ubuntu 12.04",
"family": "Linux",
"class": "general-purpose",
"vendor": "Ubuntu",
"product": "Linux Kernel 3.2.0-67-generic on Ubuntu 12.04",
"certainty": 2
},
"createCmdb": {
"busines_criticality": 1,
"manufacturer": "Dell",
"model_id": "XPS-15",
"mac_address": "AA-00-04-00-XX-YY",
"location": "Albuquerque",
"managed_by": "manager",
"owned_by": "owner",
"supported_by": "supporter",
"support_group": "supportGrp",
"sys_id": "123e4567-e89b-12d3-a456-556642440000",
"os": "Windows 10",
"sys_updated_on": "2018-07-23",
"asset_tag": "asset tag",
"cf_1": "custom tag",
"ferpa": "true",
"hipaa": "true",
"pci": "false"
},
"lockCmdb": {
"os": -1,
"manufacturer": 85
}
}
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"409": {
"description": "Conflict"
}
}
}
},
"/client/{clientId}/host/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"host"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"host"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/search": {
"post": {
"summary": "Search for hosts",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/trend": {
"post": {
"summary": "Search for trend information of hosts",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"assetIds"
],
"properties": {
"assetIds": {
"description": "Asset ids for which trend has to be calculated",
"type": "array",
"items": {
"type": "integer"
}
},
"includeWeeklyTrend": {
"description": "Include weekly trend for assets",
"type": "boolean",
"default": true
},
"includeMonthlyTrend": {
"description": "Include monthly trend for assets",
"type": "boolean",
"default": true
},
"fields": {
"description": "fields for which we need to fetch trend information",
"type": "array",
"items": {
"type": "string",
"enum": [
"open",
"closed",
"open_weaponized",
"closed_weaponized",
"open_vrr_critical",
"open_vrr_high",
"open_vrr_medium",
"open_vrr_low",
"open_vrr_info",
"open_severity_critical",
"open_severity_high",
"open_severity_medium",
"open_severity_low",
"open_severity_info",
"open_weaponized_vrr_critical",
"open_weaponized_vrr_high",
"open_weaponized_vrr_medium",
"open_weaponized_vrr_low",
"open_weaponized_vrr_info",
"open_weaponized_severity_critical",
"open_weaponized_severity_high",
"open_weaponized_severity_medium",
"open_weaponized_severity_low",
"open_weaponized_severity_info",
"closed_vrr_critical",
"closed_vrr_high",
"closed_vrr_medium",
"closed_vrr_low",
"closed_vrr_info",
"closed_severity_critical",
"closed_severity_high",
"closed_severity_medium",
"closed_severity_low",
"closed_severity_info",
"closed_weaponized_vrr_critical",
"closed_weaponized_vrr_high",
"closed_weaponized_vrr_medium",
"closed_weaponized_vrr_low",
"closed_weaponized_vrr_info",
"closed_weaponized_severity_critical",
"closed_weaponized_severity_high",
"closed_weaponized_severity_medium",
"closed_weaponized_severity_low",
"closed_weaponized_severity_info"
]
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object"
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/search/host/dynamic-columns": {
"get": {
"summary": "Get Dynamic Columns",
"tags": [
"host"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"properties": {
"esParent": {
"type": "string"
},
"rsName": {
"type": "string"
},
"esName": {
"type": "string"
},
"esFieldType": {
"type": "string"
},
"subject": {
"type": "string"
},
"scannerUuid": {
"type": "array"
}
}
},
"example": [
{
"esParent": "additionalDetails"
},
{
"rsName": "Tenable UUID"
},
{
"esName": "tenable_uuid"
},
{
"esFieldType": "STRING"
},
{
"subject": "host"
},
{
"scannerUuid": "Nessus"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/update": {
"post": {
"summary": "Update hosts",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"criticality": {
"type": "integer",
"description": "1 - 5"
},
"isExternal": {
"type": "boolean"
},
"editCmdb": {
"type": "object",
"description": "cmdb field key to value.The cmdb fields keys can be obtained via the POST\nmethod on '/client/{clientId}/connector/cmdb/field/editForm/populate'\n"
},
"lockCmdb": {
"type": "object",
"description": "cmdb field key to connectorId. If connectorId is -1, the field is locked to API/UI and\nany further updates to this field, can only be done by API/UI. The cmdb field keys and connector Id can be obtained via the POST\nmethod on '/client/{clientId}/connector/cmdb/field/lockForm/populate'\n"
},
"metricsOverrideType": {
"type": "string",
"enum": [
"OVERRIDE",
"RESET"
]
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "ipAddress",
"exclusive": false,
"operator": "EXACT",
"value": "10.0.97.1"
}
]
},
"criticality": 2,
"isExternal": true,
"editCmdb": {
"os": "MAC OS",
"manufacturer": "Apple"
},
"lockCmdb": {
"os": -1,
"manufacturer": 85
},
"metricsOverrideType": "OVERRIDE"
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/tag": {
"post": {
"summary": "Add or remove tag",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"tagId",
"isRemove"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"tagId": {
"description": "Tag being used in tagging/untagging",
"type": "integer"
},
"isRemove": {
"description": "True if the tag is being removed, false otherwise.",
"type": "boolean"
},
"publishTicketStats": {
"description": "To publish ticket description fields to the ticket which is associated with the tag.",
"type": "boolean"
}
},
"example": {
"tagId": 1,
"isRemove": false,
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": 1
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/delete": {
"post": {
"summary": "Delete entities based on filters",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": "1"
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/{identifier}": {
"get": {
"summary": "Paginate hosts in client that match the identifier",
"tags": [
"asset"
],
"description": "<b>Use search endpoint:</b> '/client/{clientId}/host/search' instead",
"deprecated": true,
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "identifier",
"description": "address/hostname (depending on the associated network type) of the host",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"hosts"
],
"properties": {
"hosts": {
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"required": [
"id",
"rs3",
"criticallity",
"tags",
"networkId",
"openFindingCounts",
"lastScanTime",
"scanners"
],
"properties": {
"id": {
"type": "integer"
},
"rs3": {
"type": "integer",
"minimum": 300,
"maximum": 850
},
"criticallity": {
"type": "integer",
"minimum": 1,
"maximum": 5
},
"tags": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"description",
"category"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"category": {
"type": "string",
"enum": [
"COMPLIANCE",
"LOCATION",
"CUSTOM",
"REMEDIATION",
"PEOPLE"
]
}
}
}
},
"networkId": {
"type": "integer"
},
"openFindingCounts": {
"type": "object",
"description": "Counts of open finding by severity",
"properties": {
"critical": {
"type": "integer"
},
"high": {
"type": "integer"
},
"medium": {
"type": "integer"
},
"low": {
"type": "integer"
},
"info": {
"type": "integer"
}
}
},
"lastScanTime": {
"type": "string",
"format": "date-time"
},
"scanners": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
{
"type": "object",
"required": [
"hostname",
"ipAddress",
"ports",
"osName",
"osFamily",
"osClass",
"osVendor",
"external"
],
"properties": {
"hostname": {
"type": "string"
},
"ipAddress": {
"type": "string"
},
"ports": {
"type": "array",
"items": {
"type": "integer"
}
},
"osName": {
"type": "string"
},
"osFamily": {
"type": "string"
},
"osClass": {
"type": "string"
},
"osVendor": {
"type": "string"
},
"external": {
"type": "boolean"
}
}
}
]
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/{identifier}/network/{networkId}": {
"get": {
"summary": "List hosts in client from network",
"tags": [
"asset"
],
"deprecated": true,
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "identifier",
"description": "address/hostname (depending on the associated network type) of the host",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "networkId",
"description": "Identifier for a network associated with the client (This parameter can be obtained via the GET method on '/network')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"hosts"
],
"properties": {
"hosts": {
"type": "array",
"items": {
"allOf": [
{
"type": "object",
"required": [
"id",
"rs3",
"criticallity",
"tags",
"networkId",
"openFindingCounts",
"lastScanTime",
"scanners"
],
"properties": {
"id": {
"type": "integer"
},
"rs3": {
"type": "integer",
"minimum": 300,
"maximum": 850
},
"criticallity": {
"type": "integer",
"minimum": 1,
"maximum": 5
},
"tags": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"description",
"category"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"category": {
"type": "string",
"enum": [
"COMPLIANCE",
"LOCATION",
"CUSTOM",
"REMEDIATION",
"PEOPLE"
]
}
}
}
},
"networkId": {
"type": "integer"
},
"openFindingCounts": {
"type": "object",
"description": "Counts of open finding by severity",
"properties": {
"critical": {
"type": "integer"
},
"high": {
"type": "integer"
},
"medium": {
"type": "integer"
},
"low": {
"type": "integer"
},
"info": {
"type": "integer"
}
}
},
"lastScanTime": {
"type": "string",
"format": "date-time"
},
"scanners": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
{
"type": "object",
"required": [
"hostname",
"ipAddress",
"ports",
"osName",
"osFamily",
"osClass",
"osVendor",
"external"
],
"properties": {
"hostname": {
"type": "string"
},
"ipAddress": {
"type": "string"
},
"ports": {
"type": "array",
"items": {
"type": "integer"
}
},
"osName": {
"type": "string"
},
"osFamily": {
"type": "string"
},
"osClass": {
"type": "string"
},
"osVendor": {
"type": "string"
},
"external": {
"type": "boolean"
}
}
}
]
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/export/template": {
"get": {
"summary": "List out all fields that are part of configurable export.",
"tags": [
"host"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"id",
"clientId",
"userId",
"name",
"description",
"shared",
"isDefault",
"subject",
"exportableFields"
],
"properties": {
"id": {
"description": "The id",
"type": "integer"
},
"clientId": {
"description": "Client id",
"type": "integer"
},
"userId": {
"description": "User id",
"type": "integer"
},
"name": {
"description": "Template name",
"type": "string"
},
"description": {
"description": "Template description",
"type": "string"
},
"shared": {
"description": "Describes whether this template shared or not",
"type": "boolean"
},
"isDefault": {
"description": "Describes whether this template is default or not",
"type": "boolean"
},
"subject": {
"description": "For which asset to fetch fileds",
"type": "string"
},
"exportableFields": {
"description": "List of fileds",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"id": 0,
"clientId": 1,
"userId": 1,
"name": "Export-Template-Name",
"description": "Export-Template-Description",
"shared": false,
"isDefault": false,
"subject": "tag",
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"displayText": "Name",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/export": {
"post": {
"summary": "Initiate export job",
"description": "<p>\n</p>\n<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest.\nThe Host Export Template API (/client/{clientId}/host/export/template) lists the fields that can be exported. The exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"noOfRows",
"fileName",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"JSON",
"CSV"
]
},
"noOfRows": {
"description": "Number of rows to be exported by default",
"type": "integer"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
},
"exportableFields": {
"description": "Fields included for Export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"fileName": "TestAssetExport",
"fileType": "CSV",
"noOfRows": 5000,
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"fieldOrder": 1,
"selected": false,
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/group/move": {
"post": {
"deprecated": true,
"summary": "Deprecated because of multi-group asset support. Please use the /client/{clientId}/{subject}/add-group and /client/{clientId}/{subject}/remove-group endpoints.",
"description": "<p>\nEndpoint for initiating a group move job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"targetGroupId"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetGroupId": {
"description": "The group to move the assets to",
"type": "integer"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/network/move": {
"post": {
"summary": "Move to different network based on filters",
"description": "<p>\nEndpoint for initiating a network move job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"targetNetworkId",
"isForceMerge"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetNetworkId": {
"type": "integer"
},
"isForceMerge": {
"type": "boolean"
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": "1"
}
]
},
"targetNetworkId": 2,
"isForceMerge": false
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/update-remediation-by-assessment": {
"post": {
"summary": "Remediate findings by assessment",
"description": "<p>\n</p>\n<p>\nEndpoint for updating findings' remediation workflow for the hosts retrieved\n from the filerRequest by the most recent assessment\n</p>\n",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/note": {
"post": {
"summary": "Add a note to hosts",
"description": "<p>\n</p>\n<p>\nEndpoint for initiating a note creation job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"note"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"note": {
"description": "The note you are adding to the entity",
"type": "string"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/add-group": {
"post": {
"summary": "Add assets to group",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"targetGroupIds"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetGroupIds": {
"description": "List of groupIds where assets to be added or removed.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/remove-group": {
"post": {
"summary": "Remove assets from group",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"targetGroupIds"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetGroupIds": {
"description": "List of groupIds where assets to be added or removed.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/host/apiExport": {
"post": {
"summary": "Initiate paginated export",
"description": "<p>\n</p>\n<p>\nEndpoint to fetch the paginated export response against the\ndata outlined in the given FilterRequest.\nThe exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"host"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "searchAfter",
"description": "Pagination parameter to retrieve result after the given value, get the value from the field 'searchAfter' in the response",
"type": "integer",
"in": "query",
"required": false
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"noOfRows": {
"description": "Number of rows to be exported by default. It is optional",
"type": "integer"
},
"exportableFields": {
"description": "Fields included for api export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in response",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"selected"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"noOfRows": 250,
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"selected": true
}
]
},
{
"heading": "finding_options",
"fields": [
{
"identifierField": "host",
"selected": true
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object"
}
},
"searchAfter": {
"type": "string",
"description": "Paginated value to retrieve the next result"
},
"totalCount": {
"type": "string",
"description": "Total findings/assets count"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding": {
"post": {
"summary": "Create a new host finding on client",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"hostId",
"assessmentId",
"severity",
"sourceId",
"scannerUuid",
"title",
"type",
"description",
"solution",
"isSelectedAll",
"filterRequest"
],
"properties": {
"hostId": {
"type": "array",
"items": {
"type": "integer"
}
},
"assessmentId": {
"type": "integer"
},
"severity": {
"type": "number"
},
"sourceId": {
"type": "string"
},
"scannerUuid": {
"type": "string"
},
"title": {
"type": "string"
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"output": {
"type": "string"
},
"solution": {
"type": "string"
},
"synopsis": {
"type": "string"
},
"service": {
"type": "object",
"required": [
"portNumber",
"name"
],
"properties": {
"portNumber": {
"type": "integer"
},
"name": {
"type": "string"
}
}
},
"cveId": {
"type": "string",
"description": "Deprecated cve id or comma/whitespace delimited cve ids. Please use cveIds instead."
},
"cveIds": {
"type": "array",
"items": {
"type": "string"
}
},
"isSelectedAll": {
"type": "boolean"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
},
"scannerFirstDiscoveredOn": {
"type": "string"
},
"scannerLastDiscoveredOn": {
"type": "string"
}
},
"example": {
"hostId": [
1,
2,
3
],
"assessmentId": 1,
"severity": 5,
"sourceId": "PUBLIC-KEY-PINNING-EXTENSIONS-FOR-HTTP-STRICT",
"scannerUuid": "RISKSENSE",
"title": "Multi host finding",
"type": "SERVICE",
"description": "Some description",
"output": "Some output",
"solution": "Some solution",
"synopsis": "This field is deprecated now",
"service": {
"portNumber": 8080,
"name": "http"
},
"cveId": "CVE-1234-0001, CVE-1234-0002",
"cveIds": [
"CVE-1234-0001",
"CVE-1234-0002"
],
"isSelectedAll": false,
"filterRequest": {
"filters": [
{
"field": "vulnId",
"exclusive": false,
"operator": "IN",
"value": "CVE-123"
}
]
},
"scannerFirstDiscoveredOn": "2023-01-30",
"scannerLastDiscoveredOn": "2023-02-27"
}
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"409": {
"description": "Conflict"
}
}
}
},
"/client/{clientId}/hostFinding/{hostFindingId}": {
"put": {
"summary": "Update a manual host finding on client",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "hostFindingId",
"description": "Id of host finding (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/search/hostFinding/find')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"solution": {
"type": "string"
},
"synopsis": {
"type": "string"
}
}
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"hostFinding"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"hostFinding"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/search": {
"post": {
"summary": "Search for hosts findings",
"description": "As of June 11, 2021, we will be deprecating parserUploadFileData attribute from the detail projection of this endpoint. If you are using this attribute you can contact support for more information at support@risksense.com.",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/search/hostFinding/dynamic-columns": {
"get": {
"summary": "Get Dynamic Columns",
"tags": [
"host"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"properties": {
"esParent": {
"type": "string"
},
"rsName": {
"type": "string"
},
"esName": {
"type": "string"
},
"esFieldType": {
"type": "string"
},
"subject": {
"type": "string"
},
"scannerUuid": {
"type": "array"
}
}
},
"example": [
{
"esParent": "additionalDetails"
},
{
"rsName": "Tenable UUID"
},
{
"esName": "tenable_uuid"
},
{
"esFieldType": "STRING"
},
{
"subject": "host"
},
{
"scannerUuid": "Nessus"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/tag": {
"post": {
"summary": "Add or remove tag",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"tagId",
"isRemove"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"tagId": {
"description": "Tag being used in tagging/untagging",
"type": "integer"
},
"isRemove": {
"description": "True if the tag is being removed, false otherwise.",
"type": "boolean"
},
"publishTicketStats": {
"description": "To publish ticket description fields to the ticket which is associated with the tag.",
"type": "boolean"
}
},
"example": {
"tagId": 1,
"isRemove": false,
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": 1
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/assign": {
"post": {
"summary": "Assign host finding(s)",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filters",
"userIds"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"userIds": {
"description": "Collection of user Ids to assign/unassign findings to/from.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/unassign": {
"post": {
"summary": "Unassign host finding(s)",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filters",
"userIds"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"userIds": {
"description": "Collection of user Ids to assign/unassign findings to/from.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/self-assign": {
"post": {
"summary": "Self assign host finding(s)",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/self-unassign": {
"post": {
"summary": "Self unassign host finding(s)",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/export/template": {
"get": {
"summary": "List out all fields that are part of configurable export.",
"tags": [
"hostFinding"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"id",
"clientId",
"userId",
"name",
"description",
"shared",
"isDefault",
"subject",
"exportableFields"
],
"properties": {
"id": {
"description": "The id",
"type": "integer"
},
"clientId": {
"description": "Client id",
"type": "integer"
},
"userId": {
"description": "User id",
"type": "integer"
},
"name": {
"description": "Template name",
"type": "string"
},
"description": {
"description": "Template description",
"type": "string"
},
"shared": {
"description": "Describes whether this template shared or not",
"type": "boolean"
},
"isDefault": {
"description": "Describes whether this template is default or not",
"type": "boolean"
},
"subject": {
"description": "For which asset to fetch fileds",
"type": "string"
},
"exportableFields": {
"description": "List of fileds",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"id": 0,
"clientId": 1,
"userId": 1,
"name": "Export-Template-Name",
"description": "Export-Template-Description",
"shared": false,
"isDefault": false,
"subject": "tag",
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"displayText": "Name",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
},
{
"heading": "finding_options",
"fields": [
{
"identifierField": "description",
"displayText": "Description",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/export": {
"post": {
"summary": "Initiate export job",
"description": "<p>\n</p>\n<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest.\nThe Host Finding Export Template API (/client/{clientId}/hostFinding/export/template) lists the fields that can be exported. The exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"noOfRows",
"fileName",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"JSON",
"CSV"
]
},
"noOfRows": {
"description": "Number of rows to be exported by default",
"type": "integer"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
},
"exportableFields": {
"description": "Fields included for Export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"fileName": "TestFindingsExport",
"fileType": "CSV",
"noOfRows": 5000,
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"fieldOrder": 1,
"selected": false,
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
},
{
"heading": "finding_options",
"fields": [
{
"identifierField": "host",
"fieldOrder": 1,
"selected": false,
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/update-due-date": {
"post": {
"summary": "Bulk update due dates",
"description": "<p>\n</p>\n<p>\nEndpoint for initializing a due date update job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"dueDate": {
"type": "string",
"format": "date"
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"dueDate": "2019-12-30"
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/delete": {
"post": {
"summary": "Delete entities based on filters",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": "1"
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/{hostFindingId}/assessment/delete": {
"post": {
"summary": "Delete manage observations",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "hostFindingId",
"description": "Id of host finding (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/search/hostFinding/find')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"assessmentIds"
],
"properties": {
"assessmentIds": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"example": "assessmentIds:[1, 2]"
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/note": {
"post": {
"summary": "Add a note to host findings",
"description": "<p>\n</p>\n<p>\nEndpoint for initiating a note creation job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"note"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"note": {
"description": "The note you are adding to the entity",
"type": "string"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFinding/apiExport": {
"post": {
"summary": "Initiate paginated export",
"description": "<p>\n</p>\n<p>\nEndpoint to fetch the paginated export response against the\ndata outlined in the given FilterRequest.\nThe exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"hostFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "searchAfter",
"description": "Pagination parameter to retrieve result after the given value, get the value from the field 'searchAfter' in the response",
"type": "integer",
"in": "query",
"required": false
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"noOfRows": {
"description": "Number of rows to be exported by default. It is optional",
"type": "integer"
},
"exportableFields": {
"description": "Fields included for api export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in response",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"selected"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"noOfRows": 250,
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"selected": true
}
]
},
{
"heading": "finding_options",
"fields": [
{
"identifierField": "host",
"selected": true
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object"
}
},
"searchAfter": {
"type": "string",
"description": "Paginated value to retrieve the next result"
},
"totalCount": {
"type": "string",
"description": "Total findings/assets count"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/uniqueHostFinding/model": {
"get": {
"deprecated": true,
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"UniqueFindingEOL"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/uniqueHostFinding/filter": {
"get": {
"deprecated": true,
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"UniqueFindingEOL"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/uniqueHostFinding/suggest": {
"post": {
"deprecated": true,
"summary": "Suggest values for filter fields",
"tags": [
"UniqueFindingEOL"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/uniqueHostFinding/search": {
"post": {
"deprecated": true,
"summary": "Search for host unique findings",
"tags": [
"UniqueFindingEOL"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/uniqueHostFinding/export": {
"post": {
"deprecated": true,
"summary": "Initiate export job",
"description": "<p>\n</p>\n<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"UniqueFindingEOL"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"comment",
"fileName"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"XML",
"XLSX",
"CSV"
]
},
"comment": {
"description": "Addition description for the exported file",
"type": "string"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application": {
"post": {
"summary": "Create new web application on client",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"url",
"groupId",
"groupIds",
"networkId"
],
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string"
},
"groupId": {
"description": "Either Group Id or Group Ids is mandatory",
"type": "integer"
},
"groupIds": {
"description": "Either Group Id or Group Ids is mandatory",
"type": "array",
"items": {
"type": "integer"
}
},
"hostId": {
"type": "integer"
},
"networkId": {
"type": "integer"
},
"ports": {
"type": "array",
"items": {
"type": "integer"
}
},
"manufacturedBy": {
"type": "string"
},
"model": {
"type": "string"
},
"macAddress": {
"type": "string"
},
"location": {
"type": "string"
},
"managedBy": {
"type": "string"
},
"ownedBy": {
"type": "string"
},
"supportedBy": {
"type": "string"
},
"supportGroup": {
"type": "string"
},
"sysId": {
"type": "string"
},
"operatingSystem": {
"type": "string"
},
"lastScanDate": {
"type": "string",
"format": "date"
},
"ferpaComplianceAsset": {
"type": "boolean"
},
"hipaaComplianceAsset": {
"type": "boolean"
},
"pciComplianceAsset": {
"type": "boolean"
},
"criticality": {
"type": "integer"
},
"externality": {
"type": "boolean"
}
},
"example": {
"name": "Example Application",
"url": "www.example.com",
"groupId": 3,
"groupIds": [
101,
102,
103
],
"networkId": 1,
"hostId": 1,
"ports": [
80,
443
],
"manufacturedBy": "Dell",
"model": "XPS-15",
"macAddress": "AA-00-04-00-XX-YY",
"location": "Albuquerque",
"managedBy": "manager",
"ownedBy": "owner",
"supportedBy": "supporter",
"supportGroup": "supportGrp",
"sysId": "123e4567-e89b-12d3-a456-556642440000",
"operatingSystem": "Windows 10",
"lastScanDate": "2018-07-23",
"ferpaComplianceAsset": "true",
"hipaaComplianceAsset": "true",
"pciComplianceAsset": "false",
"criticality": 1,
"externality": "true"
}
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/application/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"application"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"application"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/search": {
"post": {
"summary": "Search for applications",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/search/application/dynamic-columns": {
"get": {
"summary": "Get Dynamic Columns",
"tags": [
"host"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"properties": {
"esParent": {
"type": "string"
},
"rsName": {
"type": "string"
},
"esName": {
"type": "string"
},
"esFieldType": {
"type": "string"
},
"subject": {
"type": "string"
},
"scannerUuid": {
"type": "array"
}
}
},
"example": [
{
"esParent": "additionalDetails"
},
{
"rsName": "Tenable UUID"
},
{
"esName": "tenable_uuid"
},
{
"esFieldType": "STRING"
},
{
"subject": "host"
},
{
"scannerUuid": "Nessus"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/tag": {
"post": {
"summary": "Add or remove tag",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"tagId",
"isRemove"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"tagId": {
"description": "Tag being used in tagging/untagging",
"type": "integer"
},
"isRemove": {
"description": "True if the tag is being removed, false otherwise.",
"type": "boolean"
},
"publishTicketStats": {
"description": "To publish ticket description fields to the ticket which is associated with the tag.",
"type": "boolean"
}
},
"example": {
"tagId": 1,
"isRemove": false,
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": 1
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/delete": {
"post": {
"summary": "Delete entities based on filters",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": "1"
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/update": {
"post": {
"summary": "Update application",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"name": {
"type": "string"
},
"url": {
"type": "string"
},
"ports": {
"type": "array",
"items": {
"type": "integer"
}
},
"hostId": {
"type": "integer"
},
"criticality": {
"type": "integer"
},
"isExternal": {
"type": "boolean"
},
"metricsOverrideType": {
"type": "string",
"enum": [
"OVERRIDE",
"RESET"
]
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "name",
"exclusive": false,
"operator": "EXACT",
"value": "Old App Name"
}
]
},
"name": "New App Name",
"url": "10.1.2.3/customwebapp",
"hostId": 1,
"ports": [
8080,
8081
]
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/export/template": {
"get": {
"summary": "List out all fields that are part of configurable export.",
"tags": [
"application"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"id",
"clientId",
"userId",
"name",
"description",
"shared",
"isDefault",
"subject",
"exportableFields"
],
"properties": {
"id": {
"description": "The id",
"type": "integer"
},
"clientId": {
"description": "Client id",
"type": "integer"
},
"userId": {
"description": "User id",
"type": "integer"
},
"name": {
"description": "Template name",
"type": "string"
},
"description": {
"description": "Template description",
"type": "string"
},
"shared": {
"description": "Describes whether this template shared or not",
"type": "boolean"
},
"isDefault": {
"description": "Describes whether this template is default or not",
"type": "boolean"
},
"subject": {
"description": "For which asset to fetch fileds",
"type": "string"
},
"exportableFields": {
"description": "List of fileds",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"id": 0,
"clientId": 1,
"userId": 1,
"name": "Export-Template-Name",
"description": "Export-Template-Description",
"shared": false,
"isDefault": false,
"subject": "tag",
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"displayText": "Name",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/export": {
"post": {
"summary": "Initiate export job",
"description": "<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest.\nThe Application Export Template API (/client/{clientId}/application/export/template) lists the fields that can be exported. The exportableFields section of the request body can be used to choose the fields that needs to be exported. \n</p>\n",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"noOfRows",
"fileName",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"JSON",
"CSV"
]
},
"noOfRows": {
"description": "Number of rows to be exported by default",
"type": "integer"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
},
"exportableFields": {
"description": "Fields included for Export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"fileName": "TestAssetExport",
"fileType": "CSV",
"noOfRows": 5000,
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"fieldOrder": 1,
"selected": false,
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/group/move": {
"post": {
"deprecated": true,
"summary": "Deprecated because of multi-group asset support. Please use the /client/{clientId}/{subject}/add-group and /client/{clientId}/{subject}/remove-group endpoints.",
"description": "<p>\nEndpoint for initiating a group move job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"targetGroupId"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetGroupId": {
"description": "The group to move the assets to",
"type": "integer"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/network/move": {
"post": {
"summary": "Move to different network based on filters",
"description": "<p>\nEndpoint for initiating a network move job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"targetNetworkId",
"isForceMerge"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetNetworkId": {
"type": "integer"
},
"isForceMerge": {
"type": "boolean"
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": "1"
}
]
},
"targetNetworkId": 2,
"isForceMerge": false
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/update-remediation-by-assessment": {
"post": {
"summary": "Remediate findings by assessment",
"description": "<p>\nEndpoint for updating findings' remediation workflow for the Applications retrieved\n from the filterRequest by the most recent assessment\n</p>\n",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/note": {
"post": {
"summary": "Add a note to applications",
"description": "<p>\nEndpoint for initiating a note creation job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"note"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"note": {
"description": "The note you are adding to the entity",
"type": "string"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/add-group": {
"post": {
"summary": "Add assets to group",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"targetGroupIds"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetGroupIds": {
"description": "List of groupIds where assets to be added or removed.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/remove-group": {
"post": {
"summary": "Remove assets from group",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"targetGroupIds"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetGroupIds": {
"description": "List of groupIds where assets to be added or removed.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/application/apiExport": {
"post": {
"summary": "Initiate paginated export",
"description": "<p>\n</p>\n<p>\nEndpoint to fetch the paginated export response against the\ndata outlined in the given FilterRequest.\nThe exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"application"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "searchAfter",
"description": "Pagination parameter to retrieve result after the given value, get the value from the field 'searchAfter' in the response",
"type": "integer",
"in": "query",
"required": false
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"noOfRows": {
"description": "Number of rows to be exported by default. It is optional",
"type": "integer"
},
"exportableFields": {
"description": "Fields included for api export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in response",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"selected"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"noOfRows": 250,
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"selected": true
}
]
},
{
"heading": "finding_options",
"fields": [
{
"identifierField": "host",
"selected": true
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object"
}
},
"searchAfter": {
"type": "string",
"description": "Paginated value to retrieve the next result"
},
"totalCount": {
"type": "string",
"description": "Total findings/assets count"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding": {
"post": {
"summary": "Create new application finding on client",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"applicationIds",
"assessmentId",
"oneOf",
"severity",
"sourceId",
"scannerUuid",
"title",
"description",
"solution",
"isSelectedAll",
"filterRequest"
],
"properties": {
"applicationIds": {
"type": "array",
"items": {
"type": "integer"
}
},
"assessmentId": {
"type": "integer"
},
"oneOf": {
"type": "object",
"properties": {
"applicationUrlId": {
"type": "integer"
},
"applicationUrl": {
"type": "string"
}
}
},
"severity": {
"type": "integer"
},
"sourceId": {
"type": "string"
},
"scannerUuid": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"solution": {
"type": "string"
},
"synopsis": {
"type": "string"
},
"cweId": {
"type": "integer"
},
"cweIds": {
"type": "array",
"items": {
"type": "integer"
}
},
"isSelectedAll": {
"type": "boolean"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
},
"requestMethod": {
"type": "string"
},
"requestUrl": {
"type": "string"
},
"isRequestResponseBase64Encoded": {
"type": "boolean"
},
"request": {
"type": "string"
},
"response": {
"type": "string"
},
"output": {
"type": "string"
},
"parameter": {
"type": "string"
},
"payload": {
"type": "string"
},
"scannerFirstDiscoveredOn": {
"type": "string"
},
"scannerLastDiscoveredOn": {
"type": "string"
}
},
"example": {
"applicationIds": [
1
],
"assessmentId": 1,
"applicationUrl": "www.example.com",
"severity": 1,
"scannerUuid": "RISKSENSE",
"sourceId": "1234567",
"title": "Example Application Finding Title",
"description": "Example description",
"solution": "Some solution",
"output": "Some output",
"synopsis": "Some synopsis",
"notes": "Some notes",
"cweId": 1,
"cweIds": [
2,
3
],
"requestMethod": "POST",
"requestUrl": "http://someurl.com",
"isRequestResponseBase64Encoded": false,
"request": "Some request",
"response": "Some response",
"parameter": "Some parameter",
"payload": "Some payload",
"isSelectedAll": false,
"filterRequest": {
"filters": [
{
"field": "vulnId",
"exclusive": false,
"operator": "IN",
"value": "CVE-123"
}
]
},
"scannerFirstDiscoveredOn": "2023-01-30",
"scannerLastDiscoveredOn": "2023-02-27"
}
}
}
],
"responses": {
"201": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/applicationFinding/{applicationFindingId}": {
"put": {
"summary": "Update a manual application finding on client",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "applicationFindingId",
"description": "Id of the application finding (This parameter can be obtained via the POST\nmethod on '/client/{clientId}/search/applicationFinding/find')\n",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"description": {
"type": "string"
},
"solution": {
"type": "string"
},
"synopsis": {
"type": "string"
},
"notes": {
"type": "string"
},
"request": {
"type": "string"
},
"response": {
"type": "string"
},
"parameter": {
"type": "string"
},
"payload": {
"type": "string"
},
"vulnRequestId": {
"type": "integer"
}
},
"example": {
"applicationId": 1,
"assessmentId": 1,
"applicationUrl": "www.example.com",
"severity": 1,
"sourceId": 145,
"title": "Example Application Finding Title",
"description": "Example description",
"solution": "Some solution",
"synopsis": "Some synopsis",
"notes": "Some notes",
"cweId": 1,
"request": "Some request",
"response": "Some response",
"parameter": "Some parameter",
"payload": "Some payload",
"vulnRequestId": 4
}
}
}
],
"responses": {
"201": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"applicationFinding"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"applicationFinding"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/search": {
"post": {
"summary": "Search for application findings",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/search/applicationFinding/dynamic-columns": {
"get": {
"summary": "Get Dynamic Columns",
"tags": [
"host"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"properties": {
"esParent": {
"type": "string"
},
"rsName": {
"type": "string"
},
"esName": {
"type": "string"
},
"esFieldType": {
"type": "string"
},
"subject": {
"type": "string"
},
"scannerUuid": {
"type": "array"
}
}
},
"example": [
{
"esParent": "additionalDetails"
},
{
"rsName": "Tenable UUID"
},
{
"esName": "tenable_uuid"
},
{
"esFieldType": "STRING"
},
{
"subject": "host"
},
{
"scannerUuid": "Nessus"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/tag": {
"post": {
"summary": "Add or remove tag",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"tagId",
"isRemove"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"tagId": {
"description": "Tag being used in tagging/untagging",
"type": "integer"
},
"isRemove": {
"description": "True if the tag is being removed, false otherwise.",
"type": "boolean"
},
"publishTicketStats": {
"description": "To publish ticket description fields to the ticket which is associated with the tag.",
"type": "boolean"
}
},
"example": {
"tagId": 1,
"isRemove": false,
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": 1
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/assign": {
"post": {
"summary": "Assign application finding(s)",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filters",
"userIds"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"userIds": {
"description": "Collection of user Ids to assign/unassign findings to/from.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/unassign": {
"post": {
"summary": "Unassign application finding(s)",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filters",
"userIds"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"userIds": {
"description": "Collection of user Ids to assign/unassign findings to/from.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/self-assign": {
"post": {
"summary": "Self assign application finding(s)",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/self-unassign": {
"post": {
"summary": "Self unassign application finding(s)",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/export/template": {
"get": {
"summary": "List out all fields that are part of configurable export.",
"tags": [
"applicationFinding"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"id",
"clientId",
"userId",
"name",
"description",
"shared",
"isDefault",
"subject",
"exportableFields"
],
"properties": {
"id": {
"description": "The id",
"type": "integer"
},
"clientId": {
"description": "Client id",
"type": "integer"
},
"userId": {
"description": "User id",
"type": "integer"
},
"name": {
"description": "Template name",
"type": "string"
},
"description": {
"description": "Template description",
"type": "string"
},
"shared": {
"description": "Describes whether this template shared or not",
"type": "boolean"
},
"isDefault": {
"description": "Describes whether this template is default or not",
"type": "boolean"
},
"subject": {
"description": "For which asset to fetch fileds",
"type": "string"
},
"exportableFields": {
"description": "List of fileds",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"id": 0,
"clientId": 1,
"userId": 1,
"name": "Export-Template-Name",
"description": "Export-Template-Description",
"shared": false,
"isDefault": false,
"subject": "tag",
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"displayText": "Name",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
},
{
"heading": "finding_options",
"fields": [
{
"identifierField": "description",
"displayText": "Description",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/export": {
"post": {
"summary": "Initiate export job",
"description": "<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest.\nThe Application Finding Export Template API (/client/{clientId}/applicationFinding/export/template) lists the fields that can be exported. The exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"noOfRows",
"fileName",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"JSON",
"CSV"
]
},
"noOfRows": {
"description": "Number of rows to be exported by default",
"type": "integer"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
},
"exportableFields": {
"description": "Fields included for Export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"fileName": "TestFindingsExport",
"fileType": "CSV",
"noOfRows": 5000,
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"fieldOrder": 1,
"selected": false,
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
},
{
"heading": "finding_options",
"fields": [
{
"identifierField": "host",
"fieldOrder": 1,
"selected": false,
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/update-due-date": {
"post": {
"summary": "Bulk update due dates",
"description": "<p>\nEndpoint for initializing a due date update job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"dueDate": {
"type": "string",
"format": "date"
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"dueDate": "2019-12-30"
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/delete": {
"post": {
"summary": "Delete entities based on filters",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": "1"
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/note": {
"post": {
"summary": "Add a note to application findings",
"description": "<p>\nEndpoint for initiating a note creation job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"note"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"note": {
"description": "The note you are adding to the entity",
"type": "string"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFinding/apiExport": {
"post": {
"summary": "Initiate paginated export",
"description": "<p>\n</p>\n<p>\nEndpoint to fetch the paginated export response against the\ndata outlined in the given FilterRequest.\nThe exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"applicationFinding"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "searchAfter",
"description": "Pagination parameter to retrieve result after the given value, get the value from the field 'searchAfter' in the response",
"type": "integer",
"in": "query",
"required": false
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"noOfRows": {
"description": "Number of rows to be exported by default. It is optional",
"type": "integer"
},
"exportableFields": {
"description": "Fields included for api export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in response",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"selected"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"noOfRows": 250,
"exportableFields": [
{
"heading": "asset_options",
"fields": [
{
"identifierField": "name",
"selected": true
}
]
},
{
"heading": "finding_options",
"fields": [
{
"identifierField": "host",
"selected": true
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object"
}
},
"searchAfter": {
"type": "string",
"description": "Paginated value to retrieve the next result"
},
"totalCount": {
"type": "string",
"description": "Total findings/assets count"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/uniqueApplicationFinding/model": {
"get": {
"deprecated": true,
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"UniqueFindingEOL"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/uniqueApplicationFinding/filter": {
"get": {
"deprecated": true,
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"UniqueFindingEOL"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/uniqueApplicationFinding/suggest": {
"post": {
"deprecated": true,
"summary": "Suggest values for filter fields",
"tags": [
"UniqueFindingEOL"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/uniqueApplicationFinding/search": {
"post": {
"deprecated": true,
"summary": "Search for application unique findings",
"tags": [
"UniqueFindingEOL"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/uniqueApplicationFinding/export": {
"post": {
"deprecated": true,
"summary": "Initiate export job",
"description": "<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"UniqueFindingEOL"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"comment",
"fileName"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"XML",
"XLSX",
"CSV"
]
},
"comment": {
"description": "Addition description for the exported file",
"type": "string"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/user": {
"get": {
"summary": "Get information about a user for listview use",
"tags": [
"user"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "userId",
"description": "Optional Id of the user. If not provided, the user's id that is making this request will be used",
"in": "query",
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"firstName",
"lastName",
"userName"
],
"properties": {
"firstName": {
"type": "string",
"description": "The first name of the requesting user"
},
"lastName": {
"type": "string",
"description": "The last name of the requesting user"
},
"userName": {
"type": "string",
"description": "The username of the requesting user"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/user/profile": {
"get": {
"summary": "Get information about the requesting user including the current client ID",
"tags": [
"user"
],
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"rbacRolesToClient",
"clientId",
"clientName",
"firstName",
"lastName",
"multiClientUser",
"readOnly",
"role",
"uploadEnabled",
"userId",
"userName",
"privilegesByClient",
"whitelistByClient"
],
"properties": {
"rbacRolesToClient": {
"type": "array",
"description": "The list of accessible clients with roles for the requesting multi-client user",
"items": {
"type": "object",
"required": [
"id",
"name",
"roles"
],
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"roles": {
"type": "array",
"description": "Array of roles.",
"items": {
"type": "string"
}
}
}
}
},
"clientId": {
"type": "integer",
"description": "The ID of the client which can be used for other endpoints"
},
"clientName": {
"type": "string",
"description": "The name of the client that corresponds to the clientId property"
},
"firstName": {
"type": "string",
"description": "The first name of the requesting user"
},
"lastName": {
"type": "string",
"description": "The last name of the requesting user"
},
"email": {
"type": "string",
"description": "The registered email address of the requesting user"
},
"isReceiveEmails": {
"type": "boolean",
"description": "Global email notification enable/disable"
},
"multiClientUser": {
"type": "boolean",
"description": "Indicates if the user has access to multiple clients"
},
"readOnly": {
"type": "boolean",
"description": "Indicates if the client is in read-only mode"
},
"role": {
"type": "string",
"description": "The permission role of the requesting user"
},
"uploadEnabled": {
"type": "boolean",
"description": "Provides group-manager users the ability to upload scan files"
},
"userId": {
"type": "integer",
"description": "The ID of the requesting user"
},
"userUuid": {
"type": "string",
"description": "Globally unique ID. Used for create and edit endpoints."
},
"userName": {
"type": "string",
"description": "The username of the requesting user"
},
"privilegesByClient": {
"type": "object",
"description": "The list of privileges a user has from all clients and roles.",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
"whitelistByClient": {
"type": "object",
"description": "For each client whether it is whitelisted.",
"additionalProperties": {
"type": "boolean"
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/clients/user/{userId}/tokenAllowed": {
"post": {
"summary": "Change whether or not a user can use tokens",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientIds",
"in": "query",
"description": "Ids of clients (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "array",
"items": {
"type": "integer"
}
},
{
"name": "userId",
"description": "Id of the user to update",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"allowed"
],
"properties": {
"allowed": {
"type": "boolean"
}
}
}
}
],
"responses": {
"204": {
"description": "Success"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user": {
"post": {
"summary": "Create a user",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"username",
"firstName",
"lastName",
"email",
"readOnly",
"groupIds"
],
"properties": {
"username": {
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"email": {
"type": "string"
},
"readOnly": {
"type": "boolean"
},
"groupIds": {
"type": "array",
"description": "Array of group IDs, can be empty.",
"items": {
"type": "integer"
}
},
"useSamlAuthentication": {
"type": "boolean"
},
"samlAttribute1": {
"description": "SAML attribute 1 should always be an email address",
"type": "string"
},
"samlAttribute2": {
"description": "SAML attribute 2 can be anything but tends to be username",
"type": "string"
},
"expirationDate": {
"type": "string",
"format": "date-time"
}
}
}
}
],
"responses": {
"201": {
"description": "Success"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/{userUUID}": {
"put": {
"summary": "Update a user. Please note you cannot modify username, email of another user for security reasons. Please contact support if you need assistance.",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "userUUID",
"description": "UUID of the User\n",
"in": "path",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"username": {
"description": "This field is only available for managers.",
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"email": {
"type": "string"
},
"readOnly": {
"description": "This field is only available for managers.",
"type": "boolean"
},
"useSamlAuthentication": {
"description": "This field is only available for managers.",
"type": "boolean"
},
"samlAttribute1": {
"description": "SAML attribute 1 should always be an email address",
"type": "string"
},
"samlAttribute2": {
"description": "SAML attribute 2 can be anything but tends to be username",
"type": "string"
},
"expirationDate": {
"description": "This field is only available for managers.",
"type": "string",
"format": "date"
},
"twoFactorType": {
"type": "string",
"enum": [
"EMAIL",
"GOOGLE"
]
}
}
}
}
],
"responses": {
"200": {
"description": "Success"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"summary": "Remove user from client",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "userUUID",
"description": "UUID of the User\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "delay",
"description": "Delay at which to start the user remove job in seconds. Default is 12 hours.",
"in": "query",
"type": "integer"
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/{userUUID}/role": {
"put": {
"summary": "Update users role",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "userUUID",
"description": "UUID of the User\n",
"in": "path",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"role": {
"type": "string"
},
"expirationDate": {
"type": "string",
"format": "date"
}
}
}
}
},
"example": {
"roles": [
{
"role": "BasicUser",
"expirationDate": null
},
{
"role": "SecurityAnalyst",
"expirationDate": "2020-12-31"
}
]
}
}
}
],
"responses": {
"200": {
"description": "Job Created",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/{userUUID}/iam": {
"get": {
"summary": "User IAM information on a client",
"tags": [
"user"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "userUUID",
"description": "UUID of the User\n",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"id": {
"type": "string"
}
}
}
},
"privileges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"id": {
"type": "string"
},
"active": {
"description": "After the evaluating all roles this privilege is active",
"type": "string"
},
"userSupportingRoles": {
"description": "Roles the user has that give them the privilege",
"type": "array",
"items": {
"type": "string"
}
},
"userNegatingRoles": {
"description": "Roles the user has that prevents them from having the privilege",
"type": "array",
"items": {
"type": "string"
}
},
"allSupportingRoles": {
"description": "Roles on the client that would give the user the privilege",
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/sendWelcomeEmail": {
"post": {
"summary": "Send welcome emails to users",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2"
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/importUsersCsv": {
"post": {
"summary": "Import users via CSV.",
"tags": [
"user"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "formData",
"name": "csvUsers",
"type": "file",
"required": true,
"description": "The CSV file representing users to create. The schema is as follows and must be included as the first line header of the file:\nUsername, First Name, Last Name, Email Address, Role Level (Disabled | Technician | User | Group Manager | Manager), Group Access (All | None), Use SAML? (Yes | No), SAML Username, SAML"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/export/template": {
"get": {
"summary": "List out all fields that are part of configurable export.",
"tags": [
"user"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"id",
"clientId",
"userId",
"name",
"description",
"shared",
"isDefault",
"subject",
"exportableFields"
],
"properties": {
"id": {
"description": "The id",
"type": "integer"
},
"clientId": {
"description": "Client id",
"type": "integer"
},
"userId": {
"description": "User id",
"type": "integer"
},
"name": {
"description": "Template name",
"type": "string"
},
"description": {
"description": "Template description",
"type": "string"
},
"shared": {
"description": "Describes whether this template shared or not",
"type": "boolean"
},
"isDefault": {
"description": "Describes whether this template is default or not",
"type": "boolean"
},
"subject": {
"description": "For which asset to fetch fileds",
"type": "string"
},
"exportableFields": {
"description": "List of fileds",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"id": 0,
"clientId": 1,
"userId": 1,
"name": "User-Export-Template-Name",
"description": "User-Export-Template-Description",
"shared": false,
"isDefault": false,
"subject": "tag",
"exportableFields": [
{
"heading": "user_options",
"fields": [
{
"identifierField": "name",
"displayText": "Name",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/export": {
"post": {
"summary": "Initiate export job",
"description": "<p>\n</p>\n<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest.\nThe User Export Template API (/client/{clientId}/user/export/template) lists the fields that can be exported. The exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"noOfRows",
"fileName",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"JSON",
"CSV"
]
},
"noOfRows": {
"description": "Number of rows to be exported by default",
"type": "integer"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
},
"exportableFields": {
"description": "Fields included for Export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
},
"fileName": "TestUserExport",
"fileType": "CSV",
"noOfRows": 5000,
"exportableFields": [
{
"heading": "user_options",
"fields": [
{
"identifierField": "name",
"fieldOrder": 1,
"selected": false,
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"user"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"user"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/search": {
"post": {
"summary": "Search for users",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/assign-group": {
"post": {
"summary": "Assign users to group",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"targetGroupIds"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetGroupIds": {
"description": "List of groupIds where users to be assigned or unassigned.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/unassign-group": {
"post": {
"summary": "Unassign users from group",
"tags": [
"user"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"targetGroupIds"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetGroupIds": {
"description": "List of groupIds where users to be assigned or unassigned.",
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/user/privilege": {
"post": {
"summary": "List all users with certain privileges on the client",
"tags": [
"user"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"privilegeIds",
"workflowType"
],
"properties": {
"privilegeIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of privilege ids to fetch user for"
},
"workflowType": {
"type": "string"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"clientId",
"firstName",
"lastName",
"username"
],
"properties": {
"id": {
"type": "integer"
},
"clientId": {
"type": "integer"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"username": {
"type": "string"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/ticket/{tagId}": {
"post": {
"summary": "Create a new ticket",
"tags": [
"ticket"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "tagId",
"description": "Id of the tag",
"in": "path",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"description": "<p>Structure is dependent on the type field. The referenced structures can be found at the bottom of this document.</p>\n<ul>\n <li>SERVICE_NOW: CreateTicketRequest_ServiceNow_Incident</li>\n <li>SNOW_SERVICE_REQUEST: CreateTicketRequest_ServiceNow_ServiceRequest</li>\n <li>JIRA: CreateTicketRequest_Jira</li>\n <li>GENERIC_SNOW: CreateTicketRequest_ServiceNow_Generic</li>\n</ul>\n"
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"id",
"tagId",
"link",
"status"
],
"properties": {
"uuid": {
"type": "string"
},
"id": {
"type": "string"
},
"tagId": {
"type": "integer"
},
"link": {
"type": "string"
},
"status": {
"type": "string"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/ticket/{ticketId}": {
"get": {
"summary": "Get information about a specific ticket",
"tags": [
"ticket"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "ticketId",
"description": "Id of the ticket",
"in": "path",
"required": true,
"type": "integer"
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"id",
"tagId",
"link",
"status"
],
"properties": {
"uuid": {
"type": "string"
},
"id": {
"type": "string"
},
"tagId": {
"type": "integer"
},
"link": {
"type": "string"
},
"status": {
"type": "string"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/ticket/{ticketUuid}": {
"delete": {
"summary": "Delete a ticket",
"tags": [
"ticket"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "ticketUuid",
"description": "Uuid of the ticket (This parameter can be obtained via the GET method on '/ticket')",
"in": "path",
"required": true,
"type": "string"
}
],
"responses": {
"204": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/export/{exportId}/status": {
"get": {
"summary": "Check status of an export job",
"description": "<p>\n</p>\n<p>\nCheck status of an export job\n</p>\n",
"tags": [
"export"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "exportId",
"in": "path",
"description": "The export id",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Successfully fetched the export status",
"schema": {
"properties": {
"id": {
"type": "integer",
"description": "The export id"
},
"filename": {
"type": "string",
"description": "Name of the file created by this export"
},
"status": {
"type": "string",
"description": "Status of the export"
},
"history": {
"type": "array",
"items": {
"properties": {
"state": {
"type": "string"
},
"message": {
"type": "string"
},
"time": {
"type": "string"
}
}
}
},
"fileId": {
"type": "integer"
},
"progress": {
"type": "integer"
},
"total": {
"type": "integer"
},
"timeCreated": {
"type": "string"
},
"timeExpired": {
"type": "string"
}
},
"example": {
"id": 3,
"filename": "host.csv",
"status": "COMPLETE"
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Unable to find the export id"
}
}
}
},
"/client/{clientId}/export/{exportId}": {
"get": {
"summary": "Download a file created by an export job",
"description": "<p>\n</p>\n<p>\nDownload the file created by an export job\n</p>\n",
"tags": [
"export"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "exportId",
"in": "path",
"description": "The export id",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Successfully fetched the export file",
"schema": {
"type": "file"
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Unable to find the export id"
},
"500": {
"description": "Error occurred when connecting to the file service"
}
}
},
"delete": {
"summary": "Delete files related to export",
"tags": [
"export"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "exportId",
"in": "path",
"description": "The export id",
"required": true,
"type": "integer"
}
],
"responses": {
"204": {
"description": "Request was processed without errors"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"500": {
"description": "Error occurred when connecting to the file service"
}
}
}
},
"/client/{clientId}/export/rs-sbom": {
"get": {
"summary": "Download RS SBOM Report.",
"tags": [
"export"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Successfully fetched the RS SBOM Report"
}
}
}
},
"/client/{clientId}/rs3/aggregate": {
"post": {
"summary": "Aggregate Host/App and calculate overall RS3",
"tags": [
"rs3"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "applyMeCheck",
"description": "Apply Manual Exploit Check for client RS3 with default as true",
"in": "query",
"required": true,
"type": "boolean",
"default": true
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"hostRs3": {
"type": "object",
"properties": {
"rs3": {
"type": "integer"
},
"riskAcceptedRS3": {
"type": "integer"
},
"hosts": {
"type": "integer"
},
"critical": {
"type": "integer"
},
"high": {
"type": "integer"
},
"medium": {
"type": "integer"
},
"low": {
"type": "integer"
},
"info": {
"type": "integer"
}
}
},
"appRs3": {
"type": "object",
"properties": {
"rs3": {
"type": "integer"
},
"riskAcceptedRS3": {
"type": "integer"
},
"hosts": {
"type": "integer"
},
"critical": {
"type": "integer"
},
"high": {
"type": "integer"
},
"medium": {
"type": "integer"
},
"low": {
"type": "integer"
},
"info": {
"type": "integer"
}
}
},
"clientRs3": {
"type": "object",
"properties": {
"rs3": {
"type": "integer"
},
"riskAcceptedRS3": {
"type": "integer"
},
"hosts": {
"type": "integer"
},
"critical": {
"type": "integer"
},
"high": {
"type": "integer"
},
"medium": {
"type": "integer"
},
"low": {
"type": "integer"
},
"info": {
"type": "integer"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rs3History/aggregate": {
"post": {
"summary": "Aggregate client RS3 and risk accepted RS3 value over time",
"tags": [
"rs3"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"startDate",
"endDate",
"filters"
],
"properties": {
"startDate": {
"description": "The starting date of the range of which trend data will be fetched from",
"type": "string",
"format": "date"
},
"endDate": {
"description": "The ending date of the range of which trend data will be fetched from",
"type": "string",
"format": "date"
},
"filters": {
"description": "Array of filter values to filter on client host rs3 history",
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"description": "Field to filter on",
"type": "string"
},
"exclusive": {
"description": "True if \"is not\" false means \"is\"",
"type": "boolean"
},
"operator": {
"description": "The operator to filter with",
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"description": "Value to filter on",
"type": "string"
}
}
}
}
},
"example": {
"startDate": "2018-07-12",
"endDate": "2019-07-12",
"filters": [
{
"field": "groupIds",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"format": "date"
},
"client": {
"description": "Client level RS3 information and counts",
"type": "object",
"properties": {
"rs3": {
"type": "integer"
},
"riskAcceptedRs3": {
"type": "integer"
},
"actualRs3": {
"type": "integer"
},
"actualRiskAcceptedRs3": {
"type": "integer"
},
"totalWeight": {
"type": "integer"
},
"assetCount": {
"type": "integer"
},
"findingCount": {
"type": "integer"
},
"criticalCount": {
"type": "integer"
},
"highCount": {
"type": "integer"
},
"mediumCount": {
"type": "integer"
},
"lowCount": {
"type": "integer"
},
"infoCount": {
"type": "integer"
},
"manualExploitCount": {
"type": "integer"
}
}
},
"host": {
"description": "Host level RS3 information and counts",
"type": "object",
"properties": {
"rs3": {
"type": "integer"
},
"riskAcceptedRs3": {
"type": "integer"
},
"actualRs3": {
"type": "integer"
},
"actualRiskAcceptedRs3": {
"type": "integer"
},
"totalWeight": {
"type": "integer"
},
"assetCount": {
"type": "integer"
},
"findingCount": {
"type": "integer"
},
"criticalCount": {
"type": "integer"
},
"highCount": {
"type": "integer"
},
"mediumCount": {
"type": "integer"
},
"lowCount": {
"type": "integer"
},
"infoCount": {
"type": "integer"
},
"manualExploitCount": {
"type": "integer"
}
}
},
"app": {
"description": "App level RS3 information and counts",
"type": "object",
"properties": {
"rs3": {
"type": "integer"
},
"riskAcceptedRs3": {
"type": "integer"
},
"actualRs3": {
"type": "integer"
},
"actualRiskAcceptedRs3": {
"type": "integer"
},
"totalWeight": {
"type": "integer"
},
"assetCount": {
"type": "integer"
},
"findingCount": {
"type": "integer"
},
"criticalCount": {
"type": "integer"
},
"highCount": {
"type": "integer"
},
"mediumCount": {
"type": "integer"
},
"lowCount": {
"type": "integer"
},
"infoCount": {
"type": "integer"
},
"manualExploitCount": {
"type": "integer"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/simulate/rs3": {
"post": {
"summary": "Simulates the rs3 score of a particular asset(Host and application)",
"tags": [
"rs3"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "Request containing the necessary parameters to simulate the rs3 score of an asset",
"type": "object",
"required": [
"findingCount",
"assetType",
"assetCriticality",
"assetCategory"
],
"properties": {
"vrrCriticalMax": {
"type": "number"
},
"vrrHighMax": {
"type": "number"
},
"vrrMediumMax": {
"type": "number"
},
"vrrLowMax": {
"type": "number"
},
"findingCount": {
"type": "integer"
},
"assetType": {
"type": "string"
},
"assetCriticality": {
"type": "integer"
},
"assetCategory": {
"type": "string"
}
},
"example": {
"vrrCriticalMax": 9.1,
"vrrHighMax": 7.1,
"vrrMediumMax": 5.1,
"vrrLowMax": 2.1,
"findingCount": 4,
"assetType": "External",
"assetCriticality": 3,
"assetCategory": "Host"
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "Simulated Rs3 score",
"type": "object",
"properties": {
"rs3": {
"type": "number"
}
},
"example": {
"rs3": 504
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/playbook/supported-inputs": {
"get": {
"summary": "Get supported playbook inputs",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"HOST",
"HOST_FINDING",
"APPLICATION",
"APPLICATION_FINDING"
]
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/supported-actions": {
"get": {
"summary": "Get supported playbook action types",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"GROUP_MOVE",
"SEVERITY_CHANGE"
]
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/supported-frequencies": {
"get": {
"summary": "Get supported playbook frequencies",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/supported-outputs": {
"get": {
"summary": "Get supported playbook outputs",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EMAIL",
"NO_OUTPUT",
"WEBHOOK"
]
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/subject-supported-actions": {
"get": {
"summary": "Get the mapping of subject to the subject's list of actions that it can use",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/fetch": {
"get": {
"summary": "Fetch all playbooks for a client",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
},
{
"name": "sort",
"in": "query",
"description": "field to sort by and direction",
"required": false,
"type": "string"
},
{
"name": "sText",
"in": "query",
"description": "search string to apply",
"required": false,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"content",
"last",
"totalElements",
"totalPages",
"sort",
"numberOfElements",
"first",
"size",
"number"
],
"properties": {
"content": {
"type": "array",
"items": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"frequency",
"status",
"created",
"updated",
"ruleCount"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"dayOfMonth": {
"type": "integer"
},
"dayOfWeek": {
"type": "integer"
},
"hourOfDay": {
"type": "integer"
},
"ownerUserId": {
"type": "integer"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStartDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunEndDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStatus": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"frequency": {
"type": "string"
},
"ruleCount": {
"type": "integer"
}
}
}
},
"last": {
"type": "boolean"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"sort": {
"type": "string"
},
"numberOfElements": {
"type": "integer"
},
"first": {
"type": "boolean"
},
"size": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/fetch/{playbookUuid}": {
"get": {
"summary": "Fetch a specified playbook",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"frequency",
"status",
"created",
"updated",
"ruleCount"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"dayOfMonth": {
"type": "integer"
},
"dayOfWeek": {
"type": "integer"
},
"hourOfDay": {
"type": "integer"
},
"ownerUserId": {
"type": "integer"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStartDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunEndDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStatus": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"frequency": {
"type": "string"
},
"ruleCount": {
"type": "integer"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/{playbookUuid}/rules": {
"get": {
"summary": "Fetch all playbook rules for a playbook",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
},
{
"name": "sort",
"in": "query",
"description": "field to sort by and direction",
"required": false,
"type": "string"
},
{
"name": "sText",
"in": "query",
"description": "search string to apply",
"required": false,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"content",
"last",
"totalElements",
"totalPages",
"sort",
"numberOfElements",
"first",
"size",
"number"
],
"properties": {
"content": {
"type": "array",
"items": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"priority",
"input",
"filter",
"actionId",
"detailInfo",
"actionConfig",
"outputConfig"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"priority": {
"type": "integer"
},
"input": {
"type": "string"
},
"filter": {
"type": "string"
},
"actionId": {
"type": "string"
},
"actionName": {
"type": "string"
},
"actionConfig": {
"type": "string"
},
"detailInfo": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"outputConfig": {
"type": "string"
},
"files": {
"type": "array"
}
}
}
},
"last": {
"type": "boolean"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"sort": {
"type": "string"
},
"numberOfElements": {
"type": "integer"
},
"first": {
"type": "boolean"
},
"size": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
},
"post": {
"summary": "Save a rule(s) for an already existing playbook",
"tags": [
"playbook"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"rules"
],
"properties": {
"rules": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"description",
"input",
"actionType",
"action",
"outputType",
"output"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"input": {
"type": "string",
"enum": [
"HOST",
"HOST_FINDING",
"APPLICATION",
"APPLICATION_FINDING"
]
},
"actionType": {
"type": "string",
"enum": [
"GROUP_MOVE",
"SEVERITY_CHANGE"
]
},
"action": {
"type": "object",
"description": "<p>Structure is dependent on the action type field.\nThe referenced structures can be found at the bottom of this document. </p>\n<ul>\n <li>ASSIGNMENT: PlaybookActionConfig_AssignUnassign</li>\n <li>UNASSIGNMENT: PlaybookActionConfig_AssignUnassign</li>\n <li>DUE_DATE_EXPLICIT: PlaybookActionConfig_Due_Date_EXPLICIT</li>\n <li>DUE_DATE_OFFSET: PlaybookActionConfig_Due_Date_OFFSET</li>\n <li>DUE_DATE_REMOVE: PlaybookActionConfig_Due_Date_REMOVE</li>\n <li>SEVERITY_CHANGE: PlaybookActionConfig_Severity_Change</li>\n <li>TAG_APPLY: PlaybookActionConfig_TagApplyUnapply</li>\n <li>TAG_UNAPPLY: PlaybookActionConfig_TagApplyUnapply</li>\n <li>ADD_TO_GROUP: PlaybookActionConfig_AddToGroup</li>\n <li>REMOVE_FROM_GROUP: PlaybookActionConfig_RemoveFromGroup</li>\n <li>UPDATE_BUSINESS_CRITICALITY: PlaybookActionConfig_AssetUpdate</li>\n <li>UPDATE_IP_ADDRESS_TYPE: PlaybookActionConfig_AssetUpdate</li>\n <li>REMEDIATION_SLA: PlaybookActionConfig_AssetUpdate</li>\n</ul>\n"
},
"outputType": {
"type": "string",
"enum": [
"EMAIL",
"NO_OUTPUT",
"WEBHOOK"
]
},
"output": {
"type": "object",
"description": "<p>Structure is dependent on the output type field.\nThe referenced structures can be found at the bottom of this document. </p>\n<ul>\n <li>EMAIL: PlaybookOutputConfig_Email</li>\n</ul>\n"
}
},
"example": {
"name": "Example Rule",
"description": "This rule will add hosts with IDs 1, 2, 3 to the group with ID 42",
"input": "HOST",
"actionType": "ADD_TO_GROUP",
"action": {
"targetGroupIds": [
42
],
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3"
}
]
}
},
"outputType": "EMAIL",
"output": {
"targetUsernames": [
"firstLastUsername"
],
"subject": "New set of hosts moved to group alpha",
"message": "Here to inform you the group move completed.",
"includeOperationalSummary": true
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "An array of all rules associated with the given playbook after inserting the new rules.",
"type": "array",
"items": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"priority",
"input",
"filter",
"actionId",
"detailInfo",
"actionConfig",
"outputConfig"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"priority": {
"type": "integer"
},
"input": {
"type": "string"
},
"filter": {
"type": "string"
},
"actionId": {
"type": "string"
},
"actionName": {
"type": "string"
},
"actionConfig": {
"type": "string"
},
"detailInfo": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"outputConfig": {
"type": "string"
},
"files": {
"type": "array"
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"description": "Bad Request"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"description": "Unauthorized"
}
},
"404": {
"description": "Not Found",
"schema": {
"description": "Not Found"
}
}
}
}
},
"/client/{clientId}/playbook": {
"post": {
"summary": "Create a playbook without any rules",
"tags": [
"playbook"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"description",
"schedule"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"schedule": {
"type": "object",
"required": [
"type",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"type": {
"type": "string"
},
"ownerUserId": {
"type": "integer"
}
},
"example": {
"name": "Move hosts",
"description": "All client hosts should automatically migrate to group Alpha",
"schedule": {
"type": "DAILY",
"hourOfDay": 8
},
"type": "User",
"ownerUserId": 123
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"frequency",
"status",
"created",
"updated",
"ruleCount"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"dayOfMonth": {
"type": "integer"
},
"dayOfWeek": {
"type": "integer"
},
"hourOfDay": {
"type": "integer"
},
"ownerUserId": {
"type": "integer"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStartDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunEndDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStatus": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"frequency": {
"type": "string"
},
"ruleCount": {
"type": "integer"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/{playbookUuid}": {
"put": {
"summary": "Update a playbook",
"tags": [
"playbook"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"description",
"schedule"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"schedule": {
"type": "object",
"required": [
"type",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"type": {
"type": "string"
},
"ownerUserId": {
"type": "integer"
}
},
"example": {
"name": "Move hosts",
"description": "All client hosts should automatically migrate to group Alpha",
"schedule": {
"type": "DAILY",
"hourOfDay": 8
},
"type": "User",
"ownerUserId": 123
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"frequency",
"status",
"created",
"updated",
"ruleCount"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"dayOfMonth": {
"type": "integer"
},
"dayOfWeek": {
"type": "integer"
},
"hourOfDay": {
"type": "integer"
},
"ownerUserId": {
"type": "integer"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStartDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunEndDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStatus": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"frequency": {
"type": "string"
},
"ruleCount": {
"type": "integer"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
},
"delete": {
"summary": "Delete a playbook",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
}
],
"responses": {
"204": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"get": {
"summary": "Fetch playbook details",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"schedule": {
"type": "object",
"required": [
"type",
"enabled",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"enabled": {
"type": "boolean"
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"lastStatusUpdatedDatetime": {
"type": "string",
"format": "date-time"
},
"activatedDatetime": {
"type": "string",
"format": "date-time"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"creator": {
"type": "string"
},
"lastModifiedBy": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"lastRunStartTime": {
"type": "string",
"format": "date-time"
},
"lastRunEndTime": {
"type": "string",
"format": "date-time"
},
"lastRunSuccess": {
"type": "boolean"
},
"timeDeferredMs": {
"type": "integer"
},
"ruleCount": {
"type": "integer"
},
"totalRuns": {
"type": "integer"
},
"totalPassed": {
"type": "integer"
},
"totalFailed": {
"type": "integer"
},
"averageRunTimeSeconds": {
"type": "integer"
},
"lastRunRuleExecutions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ruleName": {
"type": "string"
},
"ruleUuid": {
"type": "string"
},
"jobSummary": {
"type": "object",
"properties": {
"job": {
"type": "string"
},
"timeQueuedMs": {
"type": "integer"
},
"startTime": {
"type": "string",
"format": "date-time"
},
"completionTime": {
"type": "string",
"format": "date-time"
},
"succeeded": {
"type": "boolean"
},
"targetedActions": {
"type": "integer"
},
"targetedActionsPassed": {
"type": "integer"
},
"targetedActionsFailed": {
"type": "integer"
}
}
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/{playbookUuid}/rule": {
"post": {
"summary": "Save a rule for an already existing playbook",
"description": "<p> If you would like to upload a file associated with your rule, then use the other rule save endpoint:\n \"/client/{clientId}/playbook/{playbookUuid}/rule/with-files\"\n </p>\n",
"tags": [
"playbook"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"description",
"input",
"actionType",
"action",
"outputType",
"output"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"input": {
"type": "string",
"enum": [
"HOST",
"HOST_FINDING",
"APPLICATION",
"APPLICATION_FINDING"
]
},
"actionType": {
"type": "string",
"enum": [
"GROUP_MOVE",
"SEVERITY_CHANGE"
]
},
"action": {
"type": "object",
"description": "<p>Structure is dependent on the action type field.\nThe referenced structures can be found at the bottom of this document. </p>\n<ul>\n <li>ASSIGNMENT: PlaybookActionConfig_AssignUnassign</li>\n <li>UNASSIGNMENT: PlaybookActionConfig_AssignUnassign</li>\n <li>DUE_DATE_EXPLICIT: PlaybookActionConfig_Due_Date_EXPLICIT</li>\n <li>DUE_DATE_OFFSET: PlaybookActionConfig_Due_Date_OFFSET</li>\n <li>DUE_DATE_REMOVE: PlaybookActionConfig_Due_Date_REMOVE</li>\n <li>SEVERITY_CHANGE: PlaybookActionConfig_Severity_Change</li>\n <li>TAG_APPLY: PlaybookActionConfig_TagApplyUnapply</li>\n <li>TAG_UNAPPLY: PlaybookActionConfig_TagApplyUnapply</li>\n <li>ADD_TO_GROUP: PlaybookActionConfig_AddToGroup</li>\n <li>REMOVE_FROM_GROUP: PlaybookActionConfig_RemoveFromGroup</li>\n <li>UPDATE_BUSINESS_CRITICALITY: PlaybookActionConfig_AssetUpdate</li>\n <li>UPDATE_IP_ADDRESS_TYPE: PlaybookActionConfig_AssetUpdate</li>\n <li>REMEDIATION_SLA: PlaybookActionConfig_AssetUpdate</li>\n</ul>\n"
},
"outputType": {
"type": "string",
"enum": [
"EMAIL",
"NO_OUTPUT",
"WEBHOOK"
]
},
"output": {
"type": "object",
"description": "<p>Structure is dependent on the output type field.\nThe referenced structures can be found at the bottom of this document. </p>\n<ul>\n <li>EMAIL: PlaybookOutputConfig_Email</li>\n</ul>\n"
}
},
"example": {
"name": "Example Rule",
"description": "This rule will add hosts with IDs 1, 2, 3 to the group with ID 42",
"input": "HOST",
"actionType": "ADD_TO_GROUP",
"action": {
"targetGroupIds": [
42
],
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3"
}
]
}
},
"outputType": "EMAIL",
"output": {
"targetUsernames": [
"firstLastUsername"
],
"subject": "New set of hosts moved to group alpha",
"message": "Here to inform you the group move completed.",
"includeOperationalSummary": true
}
}
}
}
],
"responses": {
"204": {
"description": "Success"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/playbook/{playbookUuid}/rule/with-files": {
"post": {
"summary": "Save a rule for an already existing playbook with files",
"description": "<p>The rule must be serialize as a string and sent in a form field. An example of a deserialized rule\nstructure is at the bottom of this document under \"PlaybookRuleDeserialized\".</p>\n",
"tags": [
"playbook"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
},
{
"in": "formData",
"name": "files",
"type": "file",
"required": false,
"description": "The file associated with this rule, may not always be applicable"
},
{
"in": "formData",
"name": "serializedPlaybookRule",
"type": "string",
"required": true,
"description": "The stringified playbook rule JSON"
}
],
"responses": {
"204": {
"description": "Success"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/playbook/{playbookUuid}/rule-reorder": {
"put": {
"summary": "Reorder playbook rules for an already existing playbook",
"tags": [
"playbook"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"ruleUuids"
],
"properties": {
"ruleUuids": {
"type": "array",
"items": {
"type": "string",
"description": "Rule UUID"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "An array of all rules associated with the given playbook after inserting the new rules.",
"type": "array",
"items": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"priority",
"input",
"filter",
"actionId",
"detailInfo",
"actionConfig",
"outputConfig"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"priority": {
"type": "integer"
},
"input": {
"type": "string"
},
"filter": {
"type": "string"
},
"actionId": {
"type": "string"
},
"actionName": {
"type": "string"
},
"actionConfig": {
"type": "string"
},
"detailInfo": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"outputConfig": {
"type": "string"
},
"files": {
"type": "array"
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"description": "Bad Request"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"description": "Unauthorized"
}
},
"404": {
"description": "Not Found",
"schema": {
"description": "Not Found"
}
}
}
}
},
"/client/{clientId}/playbook/rule/{playbookRuleUuid}": {
"put": {
"summary": "Update a playbook rule",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookRuleUuid",
"in": "path",
"description": "UUID of a rule\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"description",
"input",
"actionType",
"action",
"outputType",
"output"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"input": {
"type": "string",
"enum": [
"HOST",
"HOST_FINDING",
"APPLICATION",
"APPLICATION_FINDING"
]
},
"actionType": {
"type": "string",
"enum": [
"GROUP_MOVE",
"SEVERITY_CHANGE"
]
},
"action": {
"type": "object",
"description": "<p>Structure is dependent on the action type field.\nThe referenced structures can be found at the bottom of this document. </p>\n<ul>\n <li>ASSIGNMENT: PlaybookActionConfig_AssignUnassign</li>\n <li>UNASSIGNMENT: PlaybookActionConfig_AssignUnassign</li>\n <li>DUE_DATE_EXPLICIT: PlaybookActionConfig_Due_Date_EXPLICIT</li>\n <li>DUE_DATE_OFFSET: PlaybookActionConfig_Due_Date_OFFSET</li>\n <li>DUE_DATE_REMOVE: PlaybookActionConfig_Due_Date_REMOVE</li>\n <li>SEVERITY_CHANGE: PlaybookActionConfig_Severity_Change</li>\n <li>TAG_APPLY: PlaybookActionConfig_TagApplyUnapply</li>\n <li>TAG_UNAPPLY: PlaybookActionConfig_TagApplyUnapply</li>\n <li>ADD_TO_GROUP: PlaybookActionConfig_AddToGroup</li>\n <li>REMOVE_FROM_GROUP: PlaybookActionConfig_RemoveFromGroup</li>\n <li>UPDATE_BUSINESS_CRITICALITY: PlaybookActionConfig_AssetUpdate</li>\n <li>UPDATE_IP_ADDRESS_TYPE: PlaybookActionConfig_AssetUpdate</li>\n <li>REMEDIATION_SLA: PlaybookActionConfig_AssetUpdate</li>\n</ul>\n"
},
"outputType": {
"type": "string",
"enum": [
"EMAIL",
"NO_OUTPUT",
"WEBHOOK"
]
},
"output": {
"type": "object",
"description": "<p>Structure is dependent on the output type field.\nThe referenced structures can be found at the bottom of this document. </p>\n<ul>\n <li>EMAIL: PlaybookOutputConfig_Email</li>\n</ul>\n"
}
},
"example": {
"name": "Example Rule",
"description": "This rule will add hosts with IDs 1, 2, 3 to the group with ID 42",
"input": "HOST",
"actionType": "ADD_TO_GROUP",
"action": {
"targetGroupIds": [
42
],
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3"
}
]
}
},
"outputType": "EMAIL",
"output": {
"targetUsernames": [
"firstLastUsername"
],
"subject": "New set of hosts moved to group alpha",
"message": "Here to inform you the group move completed.",
"includeOperationalSummary": true
}
}
}
}
],
"responses": {
"200": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"summary": "Delete a playbook rule",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookRuleUuid",
"in": "path",
"description": "UUID of a rule\n",
"required": true,
"type": "string"
}
],
"responses": {
"204": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"get": {
"summary": "Fetch a specified playbook rule",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookRuleUuid",
"in": "path",
"description": "UUID of a rule\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"priority",
"input",
"filter",
"actionId",
"detailInfo",
"actionConfig",
"outputConfig"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"priority": {
"type": "integer"
},
"input": {
"type": "string"
},
"filter": {
"type": "string"
},
"actionId": {
"type": "string"
},
"actionName": {
"type": "string"
},
"actionConfig": {
"type": "string"
},
"detailInfo": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"outputConfig": {
"type": "string"
},
"files": {
"type": "array"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/rule/{playbookRuleUuid}/file/{fileUuid}": {
"delete": {
"summary": "delete a file from a playbook rule",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookRuleUuid",
"in": "path",
"description": "UUID of a rule\n",
"required": true,
"type": "string"
},
{
"name": "fileUuid",
"in": "path",
"description": "UUID of a rule file\n",
"required": true,
"type": "string"
}
],
"responses": {
"204": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"get": {
"summary": "Download an attachment",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookRuleUuid",
"in": "path",
"description": "UUID of a rule\n",
"required": true,
"type": "string"
},
{
"name": "fileUuid",
"in": "path",
"description": "UUID of a rule file\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "Ok"
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/playbook/rule/{playbookRuleUuid}/file": {
"post": {
"summary": "Attach files to a playbook rule",
"tags": [
"playbook"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookRuleUuid",
"in": "path",
"description": "UUID of a rule\n",
"required": true,
"type": "string"
},
{
"in": "formData",
"name": "files",
"type": "file",
"required": false,
"description": "The file(s) to associate with this rule"
}
],
"responses": {
"204": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/playbook/toggle-enabled": {
"put": {
"summary": "Enable/disable a set of playbooks",
"tags": [
"playbook"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"playbookUuids",
"enabled"
],
"properties": {
"playbookUuids": {
"type": "array",
"items": {
"type": "string"
}
},
"enabled": {
"type": "boolean"
}
},
"example": {
"playbookUuids": [
"11e9a804-8b43-3b13-9d62-0242c0a88007",
"c269a9c4-a804-11e9-a2a3-2a2ae2dbcce4",
"2021e64b-69a3-46b8-85ee-32004af00619"
],
"enabled": false
}
}
}
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/playbook/{playbookUuid}/run": {
"get": {
"summary": "Manually start a playbook and its associated rules",
"tags": [
"playbook"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"frequency",
"status",
"created",
"updated",
"ruleCount"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"dayOfMonth": {
"type": "integer"
},
"dayOfWeek": {
"type": "integer"
},
"hourOfDay": {
"type": "integer"
},
"ownerUserId": {
"type": "integer"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStartDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunEndDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStatus": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"frequency": {
"type": "string"
},
"ruleCount": {
"type": "integer"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/sla": {
"post": {
"summary": "Create a sla without any rules",
"tags": [
"sla"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"description",
"schedule",
"type"
],
"properties": {
"name": {
"type": "string",
"description": "Name should be 'Remediation SLAs'",
"enum": [
"Remediation SLAs"
]
},
"description": {
"type": "string"
},
"schedule": {
"type": "object",
"required": [
"type",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
},
"description": "The set schedule has no bearing on when SLA runs as it instead is trigger based."
},
"type": {
"type": "string"
}
},
"example": {
"name": "Remediation SLAs",
"description": "Remediation SLA for default and group specific SLA rules.",
"schedule": {
"type": "DAILY",
"hourOfDay": 8
},
"type": "System"
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"frequency",
"status",
"created",
"updated",
"ruleCount"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"dayOfMonth": {
"type": "integer"
},
"dayOfWeek": {
"type": "integer"
},
"hourOfDay": {
"type": "integer"
},
"ownerUserId": {
"type": "integer"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStartDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunEndDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStatus": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"frequency": {
"type": "string"
},
"ruleCount": {
"type": "integer"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/sla/fetch": {
"get": {
"summary": "Fetch all SLAs for a client",
"tags": [
"sla"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
},
{
"name": "sort",
"in": "query",
"description": "field to sort by and direction",
"required": false,
"type": "string"
},
{
"name": "sText",
"in": "query",
"description": "search string to apply",
"required": false,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"content",
"last",
"totalElements",
"totalPages",
"sort",
"numberOfElements",
"first",
"size",
"number"
],
"properties": {
"content": {
"type": "array",
"items": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"frequency",
"status",
"created",
"updated",
"ruleCount"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"dayOfMonth": {
"type": "integer"
},
"dayOfWeek": {
"type": "integer"
},
"hourOfDay": {
"type": "integer"
},
"ownerUserId": {
"type": "integer"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStartDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunEndDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStatus": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"frequency": {
"type": "string"
},
"ruleCount": {
"type": "integer"
}
}
}
},
"last": {
"type": "boolean"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"sort": {
"type": "string"
},
"numberOfElements": {
"type": "integer"
},
"first": {
"type": "boolean"
},
"size": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/sla/fetch/{playbookUuid}": {
"get": {
"summary": "Fetch a specified SLA",
"tags": [
"sla"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"frequency",
"status",
"created",
"updated",
"ruleCount"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"dayOfMonth": {
"type": "integer"
},
"dayOfWeek": {
"type": "integer"
},
"hourOfDay": {
"type": "integer"
},
"ownerUserId": {
"type": "integer"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStartDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunEndDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStatus": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"frequency": {
"type": "string"
},
"ruleCount": {
"type": "integer"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/sla/{playbookUuid}": {
"put": {
"summary": "Update a sla",
"tags": [
"sla"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"description",
"schedule",
"type"
],
"properties": {
"name": {
"type": "string",
"description": "Name should be 'Remediation SLAs'",
"enum": [
"Remediation SLAs"
]
},
"description": {
"type": "string"
},
"schedule": {
"type": "object",
"required": [
"type",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
},
"description": "The set schedule has no bearing on when SLA runs as it instead is trigger based."
},
"type": {
"type": "string"
}
},
"example": {
"name": "Remediation SLAs",
"description": "Remediation SLA for default and group specific SLA rules.",
"schedule": {
"type": "DAILY",
"hourOfDay": 8
},
"type": "System"
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"frequency",
"status",
"created",
"updated",
"ruleCount"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"dayOfMonth": {
"type": "integer"
},
"dayOfWeek": {
"type": "integer"
},
"hourOfDay": {
"type": "integer"
},
"ownerUserId": {
"type": "integer"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStartDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunEndDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStatus": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"frequency": {
"type": "string"
},
"ruleCount": {
"type": "integer"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
},
"delete": {
"summary": "Delete a sla",
"tags": [
"sla"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
}
],
"responses": {
"204": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"get": {
"summary": "Fetch sla details",
"tags": [
"sla"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"schedule": {
"type": "object",
"required": [
"type",
"enabled",
"hourOfDay"
],
"properties": {
"type": {
"type": "string",
"enum": [
"DAILY",
"WEEKLY",
"MONTHLY"
]
},
"enabled": {
"type": "boolean"
},
"hourOfDay": {
"type": "integer",
"description": "0 - 23 (Required for Daily, Weekly, Monthly)"
},
"dayOfWeek": {
"type": "integer",
"description": "1 - 7 (Required for Weekly)"
},
"dayOfMonth": {
"type": "integer",
"description": "1 - 31 (Required for Monthly)"
}
}
},
"lastStatusUpdatedDatetime": {
"type": "string",
"format": "date-time"
},
"activatedDatetime": {
"type": "string",
"format": "date-time"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"creator": {
"type": "string"
},
"lastModifiedBy": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"lastRunStartTime": {
"type": "string",
"format": "date-time"
},
"lastRunEndTime": {
"type": "string",
"format": "date-time"
},
"lastRunSuccess": {
"type": "boolean"
},
"timeDeferredMs": {
"type": "integer"
},
"ruleCount": {
"type": "integer"
},
"totalRuns": {
"type": "integer"
},
"totalPassed": {
"type": "integer"
},
"totalFailed": {
"type": "integer"
},
"averageRunTimeSeconds": {
"type": "integer"
},
"lastRunRuleExecutions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ruleName": {
"type": "string"
},
"ruleUuid": {
"type": "string"
},
"jobSummary": {
"type": "object",
"properties": {
"job": {
"type": "string"
},
"timeQueuedMs": {
"type": "integer"
},
"startTime": {
"type": "string",
"format": "date-time"
},
"completionTime": {
"type": "string",
"format": "date-time"
},
"succeeded": {
"type": "boolean"
},
"targetedActions": {
"type": "integer"
},
"targetedActionsPassed": {
"type": "integer"
},
"targetedActionsFailed": {
"type": "integer"
}
}
}
}
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/sla/{playbookUuid}/rule": {
"post": {
"summary": "Save a rule for an already existing sla",
"tags": [
"sla"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"description",
"input",
"actionType",
"action",
"outputType",
"output"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"input": {
"type": "object",
"enum": [
"DISCOVERED_DATE",
"INGESTION_DATE"
]
},
"actionType": {
"type": "string",
"enum": [
"REMEDIATION_SLA"
]
},
"action": {
"type": "object",
"required": [
"isDefaultSLA",
"targetGroupIds",
"timeReference",
"serviceLevelAgreementMatrix",
"slaMatrixProfileType",
"offsetBasis",
"affectOnlyNewFindings",
"updateSLAIfVRRUpdates"
],
"properties": {
"isDefaultSLA": {
"type": "boolean"
},
"targetGroupIds": {
"type": "array",
"items": {
"type": "integer"
},
"description": "<p>If `isDefaultSLA` = true leave this empty. </p>\n"
},
"timeReference": {
"type": "string",
"enum": [
"DISCOVERED_DATE",
"INGESTION_DATE",
"ASSIGNED_ON"
]
},
"serviceLevelAgreementMatrix": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"criticality": {
"type": "string",
"description": "A number between 1 and 5"
},
"chmliOffset": {
"type": "array",
"items": {
"type": "integer"
},
"description": "An array of 5 numbers mapping to the desired offset for findings that are in CHMLI buckets; array order corresponds to CHMLI left to right."
}
}
}
},
"slaMatrixProfileType": {
"type": "string",
"enum": [
"STANDARD",
"ACCELERATED",
"AGGRESSIVE",
"CUSTOM"
]
},
"offsetBasis": {
"type": "string",
"enum": [
"SEVERITY",
"VRR"
]
},
"affectOnlyNewFindings": {
"type": "boolean"
},
"updateSLAIfVRRUpdates": {
"type": "boolean"
}
}
},
"outputType": {
"type": "string",
"enum": [
"EMAIL",
"NO_OUTPUT"
]
},
"output": {
"type": "object",
"description": "<p>Structure is dependent on the output type field.\nThe referenced structures can be found at the bottom of this document. </p>\n<ul>\n <li>EMAIL: PlaybookOutputConfig_Email</li>\n</ul>\n"
}
},
"example": {
"name": "Group Specific SLA One",
"description": "This group specific SLA will cover a subset of group(s).",
"input": "HOST_FINDING",
"actionType": "REMEDIATION_SLA",
"action": {
"isDefaultSLA": false,
"targetGroupIds": [
1,
2,
3
],
"timeReference": "INGESTION_DATE",
"serviceLevelAgreementMatrix": {
"1": [
15,
15,
45,
45,
0
],
"2": [
10,
22,
45,
45,
0
],
"3": [
14,
15,
30,
45,
0
],
"4": [
3,
10,
45,
45,
0
],
"5": [
3,
14,
15,
45,
0
]
},
"slaMatrixProfileType": "CUSTOM",
"offsetBasis": "VRR",
"affectOnlyNewFindings": true,
"updateSLAIfVRRUpdates": true
},
"outputType": "EMAIL",
"output": {
"targetUsernames": [
"firstLastUsername"
],
"subject": "New set of hosts moved to group alpha",
"message": "Here to inform you the group move completed.",
"includeOperationalSummary": true
}
}
}
}
],
"responses": {
"204": {
"description": "Success"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/sla/rule/{playbookRulePairingUuid}": {
"put": {
"summary": "Update a sla rule",
"tags": [
"sla"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookRulePairingUuid",
"in": "path",
"description": "Pairing UUID for host/application finding rule pair\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"name",
"description",
"input",
"actionType",
"action",
"outputType",
"output"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"input": {
"type": "object",
"enum": [
"DISCOVERED_DATE",
"INGESTION_DATE"
]
},
"actionType": {
"type": "string",
"enum": [
"REMEDIATION_SLA"
]
},
"action": {
"type": "object",
"required": [
"isDefaultSLA",
"targetGroupIds",
"timeReference",
"serviceLevelAgreementMatrix",
"slaMatrixProfileType",
"offsetBasis",
"affectOnlyNewFindings",
"updateSLAIfVRRUpdates"
],
"properties": {
"isDefaultSLA": {
"type": "boolean"
},
"targetGroupIds": {
"type": "array",
"items": {
"type": "integer"
},
"description": "<p>If `isDefaultSLA` = true leave this empty. </p>\n"
},
"timeReference": {
"type": "string",
"enum": [
"DISCOVERED_DATE",
"INGESTION_DATE",
"ASSIGNED_ON"
]
},
"serviceLevelAgreementMatrix": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"criticality": {
"type": "string",
"description": "A number between 1 and 5"
},
"chmliOffset": {
"type": "array",
"items": {
"type": "integer"
},
"description": "An array of 5 numbers mapping to the desired offset for findings that are in CHMLI buckets; array order corresponds to CHMLI left to right."
}
}
}
},
"slaMatrixProfileType": {
"type": "string",
"enum": [
"STANDARD",
"ACCELERATED",
"AGGRESSIVE",
"CUSTOM"
]
},
"offsetBasis": {
"type": "string",
"enum": [
"SEVERITY",
"VRR"
]
},
"affectOnlyNewFindings": {
"type": "boolean"
},
"updateSLAIfVRRUpdates": {
"type": "boolean"
}
}
},
"outputType": {
"type": "string",
"enum": [
"EMAIL",
"NO_OUTPUT"
]
},
"output": {
"type": "object",
"description": "<p>Structure is dependent on the output type field.\nThe referenced structures can be found at the bottom of this document. </p>\n<ul>\n <li>EMAIL: PlaybookOutputConfig_Email</li>\n</ul>\n"
}
},
"example": {
"name": "Group Specific SLA One",
"description": "This group specific SLA will cover a subset of group(s).",
"input": "HOST_FINDING",
"actionType": "REMEDIATION_SLA",
"action": {
"isDefaultSLA": false,
"targetGroupIds": [
1,
2,
3
],
"timeReference": "INGESTION_DATE",
"serviceLevelAgreementMatrix": {
"1": [
15,
15,
45,
45,
0
],
"2": [
10,
22,
45,
45,
0
],
"3": [
14,
15,
30,
45,
0
],
"4": [
3,
10,
45,
45,
0
],
"5": [
3,
14,
15,
45,
0
]
},
"slaMatrixProfileType": "CUSTOM",
"offsetBasis": "VRR",
"affectOnlyNewFindings": true,
"updateSLAIfVRRUpdates": true
},
"outputType": "EMAIL",
"output": {
"targetUsernames": [
"firstLastUsername"
],
"subject": "New set of hosts moved to group alpha",
"message": "Here to inform you the group move completed.",
"includeOperationalSummary": true
}
}
}
}
],
"responses": {
"200": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"summary": "Delete a sla rule. (Cannot delete the default SLA rule)",
"tags": [
"sla"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookRulePairingUuid",
"in": "path",
"description": "Pairing UUID for host/application finding rule pair\n",
"required": true,
"type": "string"
}
],
"responses": {
"204": {
"description": "Request was processed without errors"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"get": {
"summary": "Fetch a specified sla rule",
"tags": [
"sla"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookRulePairingUuid",
"in": "path",
"description": "Pairing UUID for host/application finding rule pair\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"priority",
"input",
"filter",
"actionId",
"detailInfo",
"actionConfig",
"outputConfig"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"priority": {
"type": "integer"
},
"input": {
"type": "string"
},
"filter": {
"type": "string"
},
"actionId": {
"type": "string"
},
"actionName": {
"type": "string"
},
"actionConfig": {
"type": "string"
},
"detailInfo": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"outputConfig": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "string"
}
},
"rulePairingUuid": {
"type": "string"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/sla/{playbookUuid}/rules": {
"get": {
"summary": "Fetch all rules for an sla",
"tags": [
"sla"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
},
{
"name": "size",
"in": "query",
"description": "Size of the page requested",
"required": false,
"type": "integer"
},
{
"name": "page",
"in": "query",
"description": "Page number being requested (first page: 0)",
"required": false,
"type": "integer"
},
{
"name": "sort",
"in": "query",
"description": "field to sort by and direction",
"required": false,
"type": "string"
},
{
"name": "sText",
"in": "query",
"description": "search string to apply",
"required": false,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"content",
"last",
"totalElements",
"totalPages",
"sort",
"numberOfElements",
"first",
"size",
"number"
],
"properties": {
"content": {
"type": "array",
"items": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"priority",
"input",
"filter",
"actionId",
"detailInfo",
"actionConfig",
"outputConfig"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"priority": {
"type": "integer"
},
"input": {
"type": "string"
},
"filter": {
"type": "string"
},
"actionId": {
"type": "string"
},
"actionName": {
"type": "string"
},
"actionConfig": {
"type": "string"
},
"detailInfo": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"outputConfig": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "string"
}
},
"rulePairingUuid": {
"type": "string"
}
}
}
},
"last": {
"type": "boolean"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"sort": {
"type": "string"
},
"numberOfElements": {
"type": "integer"
},
"first": {
"type": "boolean"
},
"size": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
}
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/sla/toggle-enabled": {
"put": {
"summary": "Enable/disable a set of slas",
"tags": [
"sla"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"playbookUuids",
"enabled"
],
"properties": {
"playbookUuids": {
"type": "array",
"items": {
"type": "string"
}
},
"enabled": {
"type": "boolean"
}
},
"example": {
"playbookUuids": [
"11e9a804-8b43-3b13-9d62-0242c0a88007",
"c269a9c4-a804-11e9-a2a3-2a2ae2dbcce4",
"2021e64b-69a3-46b8-85ee-32004af00619"
],
"enabled": false
}
}
}
],
"responses": {
"200": {
"description": "Success"
},
"400": {
"description": "User error",
"schema": {
"type": "object",
"required": [
"status",
"path",
"errors"
],
"properties": {
"status": {
"type": "integer",
"description": "HTTP status code"
},
"path": {
"type": "string",
"description": "request path"
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"code"
],
"properties": {
"field": {
"type": "string",
"description": "name / path of offending field"
},
"code": {
"type": "string",
"description": "short (usually one word) description of what is wrong with a field e.g. notFound, duplicate, length, pattern"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/client/{clientId}/sla/{playbookUuid}/run": {
"get": {
"summary": "Manually start a sla and its associated rules",
"tags": [
"sla"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"frequency",
"status",
"created",
"updated",
"ruleCount"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"dayOfMonth": {
"type": "integer"
},
"dayOfWeek": {
"type": "integer"
},
"hourOfDay": {
"type": "integer"
},
"ownerUserId": {
"type": "integer"
},
"nextRunDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStartDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunEndDatetime": {
"type": "string",
"format": "date-time"
},
"lastRunStatus": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"updated": {
"type": "string",
"format": "date-time"
},
"status": {
"type": "string"
},
"frequency": {
"type": "string"
},
"ruleCount": {
"type": "integer"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/sla/{playbookUuid}/rule-reorder": {
"put": {
"summary": "Reorder sla rule pairs for an already existing playbook",
"tags": [
"sla"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "playbookUuid",
"in": "path",
"description": "UUID of a playbook\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"ruleUuids"
],
"properties": {
"ruleUuids": {
"type": "array",
"items": {
"type": "string",
"description": "Rule Pairing UUID"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "An array of all rules associated with the given playbook after inserting the new rules.",
"type": "array",
"items": {
"type": "object",
"required": [
"uuid",
"name",
"description",
"priority",
"input",
"filter",
"actionId",
"detailInfo",
"actionConfig",
"outputConfig"
],
"properties": {
"uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"priority": {
"type": "integer"
},
"input": {
"type": "string"
},
"filter": {
"type": "string"
},
"actionId": {
"type": "string"
},
"actionName": {
"type": "string"
},
"actionConfig": {
"type": "string"
},
"detailInfo": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"outputConfig": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "string"
}
},
"rulePairingUuid": {
"type": "string"
}
}
}
}
},
"400": {
"description": "User error",
"schema": {
"description": "Bad Request"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"description": "Unauthorized"
}
},
"404": {
"description": "Not Found",
"schema": {
"description": "Not Found"
}
}
}
}
},
"/client/{clientId}/workflowBatch/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"workflowBatch"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"workflowBatch"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"workflowBatch"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/search": {
"post": {
"summary": "Search for workflow batches",
"tags": [
"workflowBatch"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/acceptance/request": {
"post": {
"summary": "Initiate workflow batch acceptance request",
"description": "<p>\n</p>\n<p>\nEndpoint for creating a workflow batch acceptance request job against the\ndata outlined in the given SubjectFilterRequest\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "formData",
"name": "files",
"type": "file",
"required": false,
"description": "The file associated with this request"
},
{
"in": "formData",
"name": "name",
"type": "string",
"required": true,
"description": "The workflow batch request name (i.e., custom name)"
},
{
"in": "formData",
"name": "title",
"type": "string",
"required": false,
"description": "Deprecated, the workflow batch request title, please use 'name' field instead."
},
{
"in": "formData",
"name": "overrideControl",
"type": "string",
"required": true,
"description": "The workflow batch scope type (NONE, AUTHORIZED, AUTOMATED). Scope type is used to specify if a batch can have its scope changed after approval."
},
{
"in": "formData",
"name": "subjectFilterRequest",
"type": "string",
"required": true,
"description": "The stringified subject filter request"
},
{
"in": "formData",
"name": "expirationDate",
"type": "string",
"required": true,
"description": "The expiration date in ISO-8601 format"
},
{
"in": "formData",
"name": "description",
"type": "string",
"required": true,
"description": "the description of the request"
},
{
"in": "formData",
"name": "reason",
"type": "string",
"required": true,
"description": "the reason of the request"
},
{
"in": "formData",
"name": "compensatingControls",
"type": "string",
"required": true,
"description": "the compensating controls"
},
{
"in": "formData",
"name": "isEmptyWorkflow",
"type": "boolean",
"required": true,
"description": "create this workflow batch without any finding or not"
},
{
"in": "formData",
"name": "isAutomated",
"type": "boolean",
"required": false,
"description": "Flag for automated workflow"
},
{
"in": "formData",
"name": "automationStopDate",
"type": "string",
"required": false,
"description": "The automation stop date in ISO-8601 format for automated workflow"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/falsePositive/request": {
"post": {
"summary": "Initiate workflow batch false positive request",
"description": "<p>\n</p>\n<p>\nEndpoint for creating a workflow batch false positive request job against the\ndata outlined in the given SubjectFilterRequest\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "formData",
"name": "files",
"type": "file",
"required": false,
"description": "The file associated with this request"
},
{
"in": "formData",
"name": "name",
"type": "string",
"required": true,
"description": "The workflow batch request name (i.e., custom name)"
},
{
"in": "formData",
"name": "title",
"type": "string",
"required": false,
"description": "Deprecated, the workflow batch request title, please use 'name' field instead."
},
{
"in": "formData",
"name": "overrideControl",
"type": "string",
"required": true,
"description": "The workflow batch scope type (NONE, AUTHORIZED, AUTOMATED). Scope type is used to specify if a batch can have its scope changed after approval."
},
{
"in": "formData",
"name": "subjectFilterRequest",
"type": "string",
"required": true,
"description": "The stringified subject filter request"
},
{
"in": "formData",
"name": "expirationDate",
"type": "string",
"required": true,
"description": "The expiration date in ISO-8601 format"
},
{
"in": "formData",
"name": "description",
"type": "string",
"required": true,
"description": "the description of the request"
},
{
"in": "formData",
"name": "reason",
"type": "string",
"required": true,
"description": "the reason of the request"
},
{
"in": "formData",
"name": "isEmptyWorkflow",
"type": "boolean",
"required": true,
"description": "create this workflow batch without any finding or not"
},
{
"in": "formData",
"name": "isAutomated",
"type": "boolean",
"required": false,
"description": "Flag for automated workflow"
},
{
"in": "formData",
"name": "automationStopDate",
"type": "string",
"required": false,
"description": "The automation stop date in ISO-8601 format for automated workflow"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/remediation/request": {
"post": {
"summary": "Initiate workflow batch remediation request",
"description": "<p>\n</p>\n<p>\nEndpoint for creating a workflow batch remediation request job against the\ndata outlined in the given SubjectFilterRequest\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "formData",
"name": "files",
"type": "file",
"required": false,
"description": "The file associated with this request"
},
{
"in": "formData",
"name": "name",
"type": "string",
"required": true,
"description": "The workflow batch request name (i.e., custom name)"
},
{
"in": "formData",
"name": "title",
"type": "string",
"required": false,
"description": "Deprecated, the workflow batch request title, please use 'name' field instead."
},
{
"in": "formData",
"name": "overrideControl",
"type": "string",
"required": true,
"description": "The workflow batch scope type (NONE, AUTHORIZED). Scope type is used to specify if a batch can have its scope changed after approval."
},
{
"in": "formData",
"name": "subjectFilterRequest",
"type": "string",
"required": true,
"description": "The stringified subject filter request"
},
{
"in": "formData",
"name": "expirationDate",
"type": "string",
"required": false,
"description": "The expiration date in ISO-8601 format"
},
{
"in": "formData",
"name": "description",
"type": "string",
"required": true,
"description": "the description of the request"
},
{
"in": "formData",
"name": "reason",
"type": "string",
"required": true,
"description": "the reason of the request"
},
{
"in": "formData",
"name": "isEmptyWorkflow",
"type": "boolean",
"required": true,
"description": "create this workflow batch without any finding or not"
},
{
"in": "formData",
"name": "isAutomated",
"type": "boolean",
"required": false,
"description": "Flag for automated workflow"
},
{
"in": "formData",
"name": "automationStopDate",
"type": "string",
"required": false,
"description": "The automation stop date in ISO-8601 format for automated workflow"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/severityChange/request": {
"post": {
"summary": "Initiate workflow batch severity change request",
"description": "<p>\n</p>\n<p>\nEndpoint for creating a workflow batch severity change request job against the\ndata outlined in the given SubjectFilterRequest\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "formData",
"name": "files",
"type": "file",
"required": false,
"description": "The file associated with this request"
},
{
"in": "formData",
"name": "name",
"type": "string",
"required": true,
"description": "The workflow batch request name (i.e., custom name)"
},
{
"in": "formData",
"name": "title",
"type": "string",
"required": false,
"description": "Deprecated, the workflow batch request title, please use 'name' field instead."
},
{
"in": "formData",
"name": "overrideControl",
"type": "string",
"required": true,
"description": "The workflow batch scope type (NONE, AUTHORIZED, AUTOMATED). Scope type is used to specify if a batch can have its scope changed after approval."
},
{
"in": "formData",
"name": "subjectFilterRequest",
"type": "string",
"required": true,
"description": "The stringified subject filter request"
},
{
"in": "formData",
"name": "expirationDate",
"type": "string",
"required": true,
"description": "The expiration date in ISO-8601 format"
},
{
"in": "formData",
"name": "description",
"type": "string",
"required": true,
"description": "the description of the request"
},
{
"in": "formData",
"name": "reason",
"type": "string",
"required": true,
"description": "the reason of the request"
},
{
"in": "formData",
"name": "severity",
"type": "string",
"required": true,
"description": "the severity to request"
},
{
"in": "formData",
"name": "isEmptyWorkflow",
"type": "boolean",
"required": true,
"description": "create this workflow batch without any finding or not"
},
{
"in": "formData",
"name": "isAutomated",
"type": "boolean",
"required": false,
"description": "Flag for automated workflow"
},
{
"in": "formData",
"name": "automationStopDate",
"type": "string",
"required": false,
"description": "The automation stop date in ISO-8601 format for automated workflow"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/{workflowType}/approve": {
"post": {
"summary": "Accept workflow batch request",
"description": "<p>\nEndpoint for accepting a workflow batch request job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "workflowType",
"in": "path",
"description": "the type of workflow\n",
"required": true,
"type": "string",
"enum": [
"acceptance",
"falsePositive",
"severityChange",
"remediation"
]
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"workflowBatchUuid",
"overrideExpirationDate"
],
"properties": {
"workflowBatchUuid": {
"description": "The UUID for the workflow batch to be accepted.",
"type": "string"
},
"expirationDate": {
"description": "The proposed expiration date of the acceptance",
"type": "string"
},
"overrideExpirationDate": {
"description": "True/False if new expiration date overrides the previously recommended date",
"type": "boolean"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/{workflowType}/rework": {
"post": {
"summary": "Rework worflow request",
"description": "<p>\nEndpoint for creating a workflow batch rework request job against the\ndata outlined in the given FilterRequest\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "workflowType",
"in": "path",
"description": "the type of workflow\n",
"required": true,
"type": "string",
"enum": [
"acceptance",
"falsePositive",
"severityChange",
"remediation"
]
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"workflowBatchUuid",
"description"
],
"properties": {
"workflowBatchUuid": {
"description": "The UUID for the workflow batch to be accepted.",
"type": "string"
},
"description": {
"type": "string"
}
}
}
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/{workflowType}/reject": {
"post": {
"summary": "Request to reject workflow batch",
"description": "<p>\nEndpoint for creating a workflow batch reject job against the data outlined in the given FilterRequest.\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "workflowType",
"in": "path",
"description": "the type of workflow\n",
"required": true,
"type": "string",
"enum": [
"acceptance",
"falsePositive",
"severityChange",
"remediation"
]
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"workflowBatchUuid",
"description"
],
"properties": {
"workflowBatchUuid": {
"description": "The UUID for the workflow batch to be accepted.",
"type": "string"
},
"description": {
"type": "string"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/{workflowType}/update": {
"post": {
"summary": "Update workflow batch property",
"description": "<p>\n</p>\n<p>\nUpdate a Reworked or Requested workflow batch name, description, expiration date and severity using its UUID.\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "workflowType",
"in": "path",
"description": "the type of workflow\n",
"required": true,
"type": "string",
"enum": [
"acceptance",
"falsePositive",
"severityChange",
"remediation"
]
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"workflowBatchUuid"
],
"properties": {
"workflowBatchUuid": {
"type": "string"
},
"expirationDate": {
"type": "string",
"format": "date"
},
"description": {
"type": "string"
},
"name": {
"type": "string"
},
"severity": {
"type": "number",
"format": "double"
},
"overrideControl": {
"type": "string",
"enum": [
"NONE",
"AUTHORIZED"
]
},
"compensatingControl": {
"type": "string"
},
"reason": {
"type": "string"
},
"automationStopDate": {
"type": "string",
"format": "date"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"workflowBatchUuid": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"expiration": {
"type": "string",
"format": "date"
},
"severity": {
"type": "number",
"format": "double"
},
"reason": {
"type": "string"
},
"overrideControl": {
"type": "string"
},
"compensatingControl": {
"type": "integer"
},
"automationStopDate": {
"type": "string",
"format": "date"
}
},
"example": {
"workflowBatchUuid": "43a60702-89b5-11ea-bc61-0242ac17000b",
"name": "Updated workflow name",
"description": "Updated workflow description",
"expiration": "2020-08-01",
"severity": 9.9,
"reason": "Updated reason",
"overrideControl": "AUTHORIZED",
"compensatingControl": 1,
"automationStopDate": "2020-08-01"
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/{workflowType}/{workflowBatchUuid}/map": {
"post": {
"summary": "Map findings to the workflow batch",
"description": "<p>\nEndpoint for adding one or more findings to a workflow batch with the given subject filter request.\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "workflowType",
"in": "path",
"description": "the type of workflow\n",
"required": true,
"type": "string",
"enum": [
"acceptance",
"falsePositive",
"severityChange",
"remediation"
]
},
{
"name": "workflowBatchUuid",
"in": "path",
"description": "UUID of workflow batch\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"subject",
"filterRequest"
],
"properties": {
"subject": {
"type": "string"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
},
"example": {
"subject": "hostFinding",
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
}
],
"responses": {
"200": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/{workflowType}/{workflowBatchUuid}/unmap": {
"post": {
"summary": "Remove findings from the workflow batch",
"description": "<p>\nEndpoint for removing one or more findings from a workflow batch with the given subject filter request.\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "workflowType",
"in": "path",
"description": "the type of workflow\n",
"required": true,
"type": "string",
"enum": [
"acceptance",
"falsePositive",
"severityChange",
"remediation"
]
},
{
"name": "workflowBatchUuid",
"in": "path",
"description": "UUID of workflow batch\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"subject",
"filterRequest"
],
"properties": {
"subject": {
"type": "string"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
},
"example": {
"subject": "hostFinding",
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
}
],
"responses": {
"200": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/{subject}/download/{workflowType}/{workflowCategory}/{fileUuid}": {
"get": {
"summary": "Download an attachment associated w/ a workflow batch",
"tags": [
"workflowBatch"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to download against. Only supports \"hostFinding\" and \"applicationFinding\" <br />\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "workflowType",
"in": "path",
"description": "the type of workflow\n",
"required": true,
"type": "string",
"enum": [
"acceptance",
"falsePositive",
"severityChange",
"remediation"
]
},
{
"name": "workflowCategory",
"description": "<p>Workflow category to download against. Only supports \"CHANGE_REQUEST\" and \"CLOSE_REQUEST\" <br />\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "fileUuid",
"in": "path",
"description": "UUID of file attached to workflow batch\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "Ok"
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"406": {
"description": "MIME Mismatch\nTry changing from application/octet-stream to application/json, or vice-versa."
}
}
}
},
"/client/{clientId}/{subject}/{workflowType}/{WorkflowBatchUUID}/attachments": {
"get": {
"summary": "List attachments associated w/ a workflow batch",
"tags": [
"workflowBatch"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "subject",
"description": "<p>Subject to download against. Only supports \"hostFinding\" and \"applicationFinding\" <br />\n",
"in": "path",
"required": true,
"type": "string"
},
{
"name": "workflowType",
"in": "path",
"description": "the type of workflow\n",
"required": true,
"type": "string",
"enum": [
"acceptance",
"falsePositive",
"severityChange",
"remediation"
]
},
{
"name": "WorkflowBatchUUID",
"in": "path",
"description": "UUID of workflow batch\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"description": "Ok"
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"406": {
"description": "MIME Mismatch\nTry changing from application/octet-stream to application/json, or vice-versa."
}
}
}
},
"/client/{clientId}/workflowBatch/{workflowType}/{workflowBatchUuid}/attach": {
"post": {
"summary": "Attach the files to workflow",
"description": "<p>\nAttach the files to workflow and update the workflow model.\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "workflowType",
"in": "path",
"description": "the type of workflow\n",
"required": true,
"type": "string",
"enum": [
"acceptance",
"falsePositive",
"severityChange",
"remediation"
]
},
{
"name": "workflowBatchUuid",
"in": "path",
"description": "UUID of workflow batch\n",
"required": true,
"type": "string"
},
{
"in": "formData",
"name": "subject",
"type": "string",
"required": true,
"description": "Finding subject of the workflow"
},
{
"in": "formData",
"name": "files",
"type": "file",
"required": true,
"description": "An attachment file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"uuid": {
"type": "string"
},
"filename": {
"type": "string"
}
},
"example": {
"uuid": "43a60702-89b5-11ea-bc61-0242ac17000b",
"filename": "testworkflow.txt"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/workflowBatch/{workflowType}/{workflowBatchUuid}/detach": {
"delete": {
"summary": "Detach the files from workflow",
"description": "<p>\nDetach the files from workflow and update the workflow model.\n</p>\n",
"tags": [
"workflowBatch"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "workflowType",
"in": "path",
"description": "the type of workflow\n",
"required": true,
"type": "string",
"enum": [
"acceptance",
"falsePositive",
"severityChange",
"remediation"
]
},
{
"name": "workflowBatchUuid",
"in": "path",
"description": "UUID of workflow batch\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"attachmentUuid",
"subject"
],
"properties": {
"attachmentUuid": {
"description": "The UUID of the file that attached with workflow.",
"type": "array",
"items": {
"type": "string",
"description": "File uuid to detach."
},
"example": [
"43a60702-89b5-11ea-bc61-0242ac17000b",
"fba68af8-55fb-4ea7-80a6-73c18e82214c"
]
},
"subject": {
"description": "The finding subject that workflow associated.",
"type": "string",
"example": "hostFinding"
}
}
}
}
],
"responses": {
"204": {
"description": "Success"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/vulnerability/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"vulnerability"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/vulnerability/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"vulnerability"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/vulnerability/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"vulnerability"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/vulnerability/search": {
"post": {
"summary": "Search for vulnerability",
"tags": [
"vulnerability"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/vulnerability/export/template": {
"get": {
"summary": "List out all fields that are part of configurable export.",
"tags": [
"vulnerability"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"id",
"clientId",
"userId",
"name",
"description",
"shared",
"isDefault",
"subject",
"exportableFields"
],
"properties": {
"id": {
"description": "The id",
"type": "integer"
},
"clientId": {
"description": "Client id",
"type": "integer"
},
"userId": {
"description": "User id",
"type": "integer"
},
"name": {
"description": "Template name",
"type": "string"
},
"description": {
"description": "Template description",
"type": "string"
},
"shared": {
"description": "Describes whether this template shared or not",
"type": "boolean"
},
"isDefault": {
"description": "Describes whether this template is default or not",
"type": "boolean"
},
"subject": {
"description": "For which asset to fetch fileds",
"type": "string"
},
"exportableFields": {
"description": "List of fileds",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"id": 0,
"clientId": 1,
"userId": 1,
"name": "Export-Template-Name",
"description": "Export-Template-Description",
"shared": false,
"isDefault": false,
"subject": "vulnerability",
"exportableFields": [
{
"heading": "vulnerability_options",
"fields": [
{
"identifierField": "name",
"displayText": "Name",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/vulnerability/export": {
"post": {
"summary": "Initiate export job",
"description": "<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest.\nThe Application Export Template API (/client/{clientId}/vulnerability/export/template) lists the fields that can be exported. The exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"vulnerability"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"noOfRows",
"fileName",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "vulnId",
"exclusive": false,
"operator": "IN",
"value": "CVE-123"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"JSON",
"CSV"
]
},
"noOfRows": {
"description": "Number of rows to be exported by default",
"type": "integer"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
},
"exportableFields": {
"description": "Fields included for Export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "vulnId",
"exclusive": false,
"operator": "IN",
"value": "CVE-123"
}
]
},
"fileName": "TestVulnerabilityExport",
"fileType": "CSV",
"noOfRows": 5000,
"exportableFields": [
{
"heading": "vulnerability_options",
"fields": [
{
"identifierField": "name",
"fieldOrder": 1,
"selected": false,
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/weakness/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"weakness"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/weakness/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"weakness"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/weakness/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"weakness"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/weakness/search": {
"post": {
"summary": "Search for weakness",
"tags": [
"weakness"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/weakness/export/template": {
"get": {
"summary": "List out all fields that are part of configurable export.",
"tags": [
"weakness"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"id",
"clientId",
"userId",
"name",
"description",
"shared",
"isDefault",
"subject",
"exportableFields"
],
"properties": {
"id": {
"description": "The id",
"type": "integer"
},
"clientId": {
"description": "Client id",
"type": "integer"
},
"userId": {
"description": "User id",
"type": "integer"
},
"name": {
"description": "Template name",
"type": "string"
},
"description": {
"description": "Template description",
"type": "string"
},
"shared": {
"description": "Describes whether this template shared or not",
"type": "boolean"
},
"isDefault": {
"description": "Describes whether this template is default or not",
"type": "boolean"
},
"subject": {
"description": "For which asset to fetch fileds",
"type": "string"
},
"exportableFields": {
"description": "List of fileds",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"id": 0,
"clientId": 1,
"userId": 1,
"name": "Export-Template-Name",
"description": "Export-Template-Description",
"shared": false,
"isDefault": false,
"subject": "weakness",
"exportableFields": [
{
"heading": "weakness_options",
"fields": [
{
"identifierField": "name",
"displayText": "Name",
"sortable": false,
"fieldOrder": 1,
"selected": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/weakness/export": {
"post": {
"summary": "Initiate export job",
"description": "<p>\nEndpoint for initiating an export job against the\ndata outlined in the given FilterRequest.\nThe Application Export Template API (/client/{clientId}/weakness/export/template) lists the fields that can be exported. The exportableFields section of the request body can be used to choose the fields that needs to be exported.\n</p>\n",
"tags": [
"weakness"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"filterRequest",
"fileType",
"noOfRows",
"fileName",
"exportableFields"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "vulnId",
"exclusive": false,
"operator": "IN",
"value": "CWE-123"
}
]
}
},
"fileType": {
"description": "Type of file to be exported into",
"type": "string",
"enum": [
"JSON",
"CSV"
]
},
"noOfRows": {
"description": "Number of rows to be exported by default",
"type": "integer"
},
"fileName": {
"description": "Name of the exported file",
"type": "string"
},
"exportableFields": {
"description": "Fields included for Export",
"type": "array",
"items": {
"type": "object",
"required": [
"heading",
"fields"
],
"properties": {
"heading": {
"description": "Used to set fields(asset_options/finding_options/group_options/tag_options/user_options)",
"type": "string"
},
"fields": {
"description": "Fields which are available in exported file",
"type": "array",
"items": {
"type": "object",
"required": [
"identifierField",
"fieldOrder",
"selected",
"sortable",
"sortOrder",
"sortType"
],
"properties": {
"identifierField": {
"description": "Internal field which we use to identify the export field",
"type": "string"
},
"sortable": {
"description": "Is Field Sortable",
"type": "boolean"
},
"fieldOrder": {
"description": "Order of the export field",
"type": "integer"
},
"selected": {
"description": "Is Field Selected",
"type": "boolean"
},
"sortOrder": {
"description": "Sort order of the exportable fields",
"type": "integer"
},
"sortType": {
"description": "Sort type of the exportable fields - asc/desc",
"type": "string"
}
}
}
}
}
}
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "vulnId",
"exclusive": false,
"operator": "IN",
"value": "CWE-123"
}
]
},
"fileName": "TestWeaknessExport",
"fileType": "CSV",
"noOfRows": 5000,
"exportableFields": [
{
"heading": "weakness_options",
"fields": [
{
"identifierField": "name",
"fieldOrder": 1,
"selected": false,
"sortable": false,
"sortOrder": 0,
"sortType": "ASC"
}
]
}
]
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/quick-filters": {
"post": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"quickFilter"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"subject",
"filterRequest"
],
"properties": {
"subject": {
"type": "string"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
},
"example": {
"subject": "vulnerability",
"filterRequest": {
"filters": [
{
"field": "vulnId",
"exclusive": false,
"operator": "IN",
"value": "CVE-123, CVE-234"
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"uid",
"name",
"inputType",
"value",
"subCategory",
"filterField",
"filterValue",
"implicitFilters"
],
"properties": {
"uid": {
"type": "integer"
},
"name": {
"type": "string"
},
"inputType": {
"description": "Input type",
"type": "string",
"enum": [
"RANGE",
"MULTISELECT",
"NONE"
]
},
"value": {
"type": "array",
"items": {
"type": "string"
}
},
"subCategory": {
"type": "array",
"items": {
"type": "object",
"required": [
"uid",
"name",
"inputType",
"value",
"subCategory",
"filterField",
"filterValue",
"implicitFilters"
],
"properties": {
"uid": {
"type": "integer"
},
"name": {
"type": "string"
},
"inputType": {
"type": "string",
"enum": [
"RANGE",
"MULTISELECT",
"NONE"
]
},
"value": {
"type": "array",
"items": {
"type": "string"
}
},
"subCategory": {
"type": "array",
"items": {
"type": "object"
}
},
"filterField": {
"type": "string"
},
"filterValue": {
"type": "string"
},
"implicitFilters": {
"type": "array",
"items": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
}
}
},
"filterField": {
"description": "Filter field",
"type": "string"
},
"filterValue": {
"type": "string"
},
"implicitFilters": {
"type": "array",
"items": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/rules": {
"get": {
"summary": "List all templates for a user",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object"
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"summary": "Subscribe notifications",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"rules": {
"type": "array",
"items": {
"type": "object",
"properties": {
"notificationTypeId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"subscribe": {
"type": "boolean"
},
"operators": {
"type": "array",
"items": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"enum": [
"LESSER_THAN",
"GREATER_THAN",
"INCREASED_BY",
"DECREASED_BY",
"EMPTY"
]
},
"operand": {
"type": "integer"
}
}
}
},
"frequency": {
"type": "array",
"items": {
"type": "object",
"properties": {
"frequency": {
"type": "string",
"enum": [
"IMMEDIATE",
"DAILY",
"WEEKLY"
]
}
}
}
},
"whiteListed": {
"type": "array",
"items": {
"type": "integer"
}
},
"blackListed": {
"type": "array",
"items": {
"type": "integer"
}
},
"deliveryChannelId": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Ok"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/mark-as-read": {
"put": {
"summary": "Mark as read/unread notifications",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"notificationIds": {
"type": "array",
"items": {
"type": "integer"
}
},
"markAsRead": {
"type": "boolean"
}
}
}
}
],
"responses": {
"200": {
"description": "Ok"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/channel": {
"post": {
"summary": "Create delivery channel",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"channelName": {
"type": "string"
},
"channelType": {
"type": "string"
},
"webhookContentType": {
"type": "string"
},
"addressDetails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"address": {
"type": "string"
},
"verification_code": {
"type": "string"
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Ok"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"put": {
"summary": "Edit delivery channel",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"channelName": {
"type": "string"
},
"channelType": {
"type": "string"
},
"webhookContentType": {
"type": "string"
},
"disabled": {
"type": "boolean"
},
"shared": {
"type": "boolean"
},
"addressDetails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"address": {
"type": "string"
},
"verification_code": {
"type": "string"
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Ok"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"delete": {
"summary": "Delete delivery channel",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"channelIds": {
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Ok"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/channel/{order}": {
"get": {
"summary": "List all channel for a user",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "order",
"in": "path",
"required": true,
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object"
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/sendverificationcode": {
"post": {
"summary": "Get verification code",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"channelName": {
"type": "string"
},
"channelDetails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"channelAddress": {
"type": "string"
},
"channelType": {
"type": "string"
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Ok"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"rsnotifications"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/search": {
"post": {
"summary": "Search for Notifications",
"tags": [
"rsnotifications"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/quick-filters/count": {
"post": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"rsnotifications"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"subject",
"filterRequest"
],
"properties": {
"subject": {
"type": "string"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
},
"example": {
"subject": "rsNotifications",
"filterRequest": {
"filters": [
{
"field": "subject",
"exclusive": false,
"operator": "IN",
"value": "groups"
}
]
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"uid",
"name",
"inputType",
"value",
"subCategory",
"filterField",
"filterValue",
"implicitFilters"
],
"properties": {
"uid": {
"type": "integer"
},
"name": {
"type": "string"
},
"inputType": {
"description": "Input type",
"type": "string",
"enum": [
"RANGE",
"MULTISELECT",
"NONE"
]
},
"value": {
"type": "array",
"items": {
"type": "string"
}
},
"subCategory": {
"type": "array",
"items": {
"type": "object",
"required": [
"uid",
"name",
"inputType",
"value",
"subCategory",
"filterField",
"filterValue",
"implicitFilters"
],
"properties": {
"uid": {
"type": "integer"
},
"name": {
"type": "string"
},
"inputType": {
"type": "string",
"enum": [
"RANGE",
"MULTISELECT",
"NONE"
]
},
"value": {
"type": "array",
"items": {
"type": "string"
}
},
"subCategory": {
"type": "array",
"items": {
"type": "object"
}
},
"filterField": {
"type": "string"
},
"filterValue": {
"type": "string"
},
"implicitFilters": {
"type": "array",
"items": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
}
}
},
"filterField": {
"description": "Filter field",
"type": "string"
},
"filterValue": {
"type": "string"
},
"implicitFilters": {
"type": "array",
"items": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/channel/admin": {
"put": {
"summary": "Edit delivery channel",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"channelName": {
"type": "string"
},
"channelType": {
"type": "string"
},
"webhookContentType": {
"type": "string"
},
"disabled": {
"type": "boolean"
},
"shared": {
"type": "boolean"
},
"addressDetails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"address": {
"type": "string"
},
"verification_code": {
"type": "string"
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Ok"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/channel/admin/{order}": {
"get": {
"summary": "List all channel for admin user",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "order",
"in": "path",
"required": true,
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object"
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/detail": {
"get": {
"summary": "Fetch detail pane details",
"description": "Fetch detail pane details of notifications from defined template.\n",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "notification_id",
"description": "Id of the notification\n",
"in": "query",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"value",
"style"
],
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
},
"style": {
"type": "string"
}
},
"example": {
"label": "Event Title",
"value": "Notification triggered",
"style": "background: #39b54a;"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/rsNotifications/delivery-channel-template": {
"get": {
"summary": "List supported delivery channels",
"description": "List delivery channels with required attributes.\n",
"tags": [
"rsnotifications"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"label",
"attributes"
],
"properties": {
"type": {
"type": "string"
},
"label": {
"type": "string"
},
"attributes": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"key",
"type"
],
"properties": {
"label": {
"type": "string"
},
"key": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
}
},
"example": {
"type": "EMAIL",
"label": "Email",
"attributes": [
{
"label": "Channel name",
"key": "channelName",
"type": "TEXT"
},
{
"label": "Email",
"key": "address",
"type": "TEXT"
}
]
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/{historyType}/history": {
"post": {
"summary": "Get finding history by finding id",
"description": "Get host finding or application finding history.\n",
"tags": [
"findingHistory"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "historyType",
"description": "<p>Subject to fetch the history. Supported types are hostFinding and applicationFinding <br />\n",
"in": "path",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"vulnIds"
],
"properties": {
"vulnIds": {
"type": "array",
"items": {
"type": "integer"
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"findingId",
"findingType",
"date",
"firstName",
"lastName",
"user_id",
"descriptionType",
"file_id",
"description",
"username"
],
"properties": {
"findingId": {
"type": "integer"
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"URL"
]
},
"date": {
"type": "string",
"format": "date"
},
"fistName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"user_id": {
"type": "integer"
},
"descriptionType": {
"type": "string"
},
"file_id": {
"type": "integer"
},
"description": {
"type": "string"
},
"username": {
"type": "string"
}
},
"example": {
"findingId": 123,
"findingType": "NETWORK",
"date": "2020-05-20 00:00:00",
"firstName": "Risk Pen",
"lastName": "Dave",
"user_id": 4298,
"descriptionType": "Info",
"file_id": 1982,
"description": "Tag tag32 is applied.",
"username": "risk_pen"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/group": {
"get": {
"summary": "Get Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "List Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Create Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"label",
"attributeType"
],
"properties": {
"label": {
"description": "Label of custom attribute",
"type": "string",
"example": "Custom Attribute 1"
},
"attributeType": {
"description": "Data type of custom attribute",
"type": "string",
"enum": [
"STRING",
"URL",
"DATE",
"BOOLEAN",
"INTEGER",
"FLOAT",
"TEXT",
"LIST_STRING",
"LIST_URL",
"LIST_BOOLEAN",
"LIST_INTEGER",
"LIST_FLOAT"
]
},
"format": {
"description": "Format of date custom attribute. Required for creating date datatype",
"type": "string",
"default": null
},
"propagateToAsset": {
"description": "Should this attribute be propagated to asset. Applicable for group custom attributes only",
"type": "boolean",
"default": false
},
"propagateToFinding": {
"description": "Should this attribute be propagated to finding. Applicable for both group and asset custom attributes",
"type": "boolean",
"default": false
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/group/{attributeId}": {
"put": {
"summary": "Update Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "attributeId",
"in": "path",
"description": "Id of Custom Attribute\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"label"
],
"properties": {
"label": {
"description": "Label of custom attribute",
"type": "string",
"example": "New Label"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/job/group/bulk-update-cust-attrs": {
"post": {
"summary": "Create job to update Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create job to update Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
},
"updateAttributes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributeId": {
"type": "string"
},
"oneOf": {
"type": "object",
"properties": {
"attributeValue": {
"type": "string"
},
"attributeValues": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"example": [
{
"attributeId": "1_customAttr_1",
"attributeValue": "Text Data"
},
{
"attributeId": "1_customAttr_2",
"attributeValues": [
"Data1",
"Data2"
]
}
]
}
},
"deleteAttributes": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"1_customAttr_3",
"1_customAttr_4"
]
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/group/get-job-stats": {
"get": {
"summary": "Get Custom Attributes Update Job Stats",
"tags": [
"CustomAttributes"
],
"description": "Get the status of the ongoing and completed custom attributes jobs\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"jobId": {
"type": "integer"
},
"jobType": {
"type": "string"
},
"createdUserFullName": {
"type": "string"
},
"timeCreated": {
"type": "string"
},
"subject": {
"type": "string"
},
"attributes": {
"type": "array",
"items": {
"type": "string"
}
},
"impact": {
"type": "object",
"properties": {
"hosts": {
"type": "integer"
},
"hostFindings": {
"type": "integer"
},
"application": {
"type": "integer"
},
"applicationFinding": {
"type": "integer"
},
"groups": {
"type": "integer"
}
}
},
"progressPercentage": {
"type": "integer"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/host": {
"get": {
"summary": "Get Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "List Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Create Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"label",
"attributeType"
],
"properties": {
"label": {
"description": "Label of custom attribute",
"type": "string",
"example": "Custom Attribute 1"
},
"attributeType": {
"description": "Data type of custom attribute",
"type": "string",
"enum": [
"STRING",
"URL",
"DATE",
"BOOLEAN",
"INTEGER",
"FLOAT",
"TEXT",
"LIST_STRING",
"LIST_URL",
"LIST_BOOLEAN",
"LIST_INTEGER",
"LIST_FLOAT"
]
},
"format": {
"description": "Format of date custom attribute. Required for creating date datatype",
"type": "string",
"default": null
},
"propagateToAsset": {
"description": "Should this attribute be propagated to asset. Applicable for group custom attributes only",
"type": "boolean",
"default": false
},
"propagateToFinding": {
"description": "Should this attribute be propagated to finding. Applicable for both group and asset custom attributes",
"type": "boolean",
"default": false
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/host/{attributeId}": {
"put": {
"summary": "Update Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "attributeId",
"in": "path",
"description": "Id of Custom Attribute\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"label"
],
"properties": {
"label": {
"description": "Label of custom attribute",
"type": "string",
"example": "New Label"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/job/host/bulk-update-cust-attrs": {
"post": {
"summary": "Create job to update Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create job to update Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
},
"updateAttributes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributeId": {
"type": "string"
},
"oneOf": {
"type": "object",
"properties": {
"attributeValue": {
"type": "string"
},
"attributeValues": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"example": [
{
"attributeId": "1_customAttr_1",
"attributeValue": "Text Data"
},
{
"attributeId": "1_customAttr_2",
"attributeValues": [
"Data1",
"Data2"
]
}
]
}
},
"deleteAttributes": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"1_customAttr_3",
"1_customAttr_4"
]
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/host/get-job-stats": {
"get": {
"summary": "Get Custom Attributes Update Job Stats",
"tags": [
"CustomAttributes"
],
"description": "Get the status of the ongoing and completed custom attributes jobs\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"jobId": {
"type": "integer"
},
"jobType": {
"type": "string"
},
"createdUserFullName": {
"type": "string"
},
"timeCreated": {
"type": "string"
},
"subject": {
"type": "string"
},
"attributes": {
"type": "array",
"items": {
"type": "string"
}
},
"impact": {
"type": "object",
"properties": {
"hosts": {
"type": "integer"
},
"hostFindings": {
"type": "integer"
},
"application": {
"type": "integer"
},
"applicationFinding": {
"type": "integer"
},
"groups": {
"type": "integer"
}
}
},
"progressPercentage": {
"type": "integer"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/hostFinding": {
"get": {
"summary": "Get Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "List Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Create Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"label",
"attributeType"
],
"properties": {
"label": {
"description": "Label of custom attribute",
"type": "string",
"example": "Custom Attribute 1"
},
"attributeType": {
"description": "Data type of custom attribute",
"type": "string",
"enum": [
"STRING",
"URL",
"DATE",
"BOOLEAN",
"INTEGER",
"FLOAT",
"TEXT",
"LIST_STRING",
"LIST_URL",
"LIST_BOOLEAN",
"LIST_INTEGER",
"LIST_FLOAT"
]
},
"format": {
"description": "Format of date custom attribute. Required for creating date datatype",
"type": "string",
"default": null
},
"propagateToAsset": {
"description": "Should this attribute be propagated to asset. Applicable for group custom attributes only",
"type": "boolean",
"default": false
},
"propagateToFinding": {
"description": "Should this attribute be propagated to finding. Applicable for both group and asset custom attributes",
"type": "boolean",
"default": false
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/hostFinding/{attributeId}": {
"put": {
"summary": "Update Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "attributeId",
"in": "path",
"description": "Id of Custom Attribute\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"label"
],
"properties": {
"label": {
"description": "Label of custom attribute",
"type": "string",
"example": "New Label"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/job/hostFinding/bulk-update-cust-attrs": {
"post": {
"summary": "Create job to update Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create job to update Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
},
"updateAttributes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributeId": {
"type": "string"
},
"oneOf": {
"type": "object",
"properties": {
"attributeValue": {
"type": "string"
},
"attributeValues": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"example": [
{
"attributeId": "1_customAttr_1",
"attributeValue": "Text Data"
},
{
"attributeId": "1_customAttr_2",
"attributeValues": [
"Data1",
"Data2"
]
}
]
}
},
"deleteAttributes": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"1_customAttr_3",
"1_customAttr_4"
]
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/hostFinding/get-job-stats": {
"get": {
"summary": "Get Custom Attributes Update Job Stats",
"tags": [
"CustomAttributes"
],
"description": "Get the status of the ongoing and completed custom attributes jobs\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"jobId": {
"type": "integer"
},
"jobType": {
"type": "string"
},
"createdUserFullName": {
"type": "string"
},
"timeCreated": {
"type": "string"
},
"subject": {
"type": "string"
},
"attributes": {
"type": "array",
"items": {
"type": "string"
}
},
"impact": {
"type": "object",
"properties": {
"hosts": {
"type": "integer"
},
"hostFindings": {
"type": "integer"
},
"application": {
"type": "integer"
},
"applicationFinding": {
"type": "integer"
},
"groups": {
"type": "integer"
}
}
},
"progressPercentage": {
"type": "integer"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/application": {
"get": {
"summary": "Get Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "List Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Create Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"label",
"attributeType"
],
"properties": {
"label": {
"description": "Label of custom attribute",
"type": "string",
"example": "Custom Attribute 1"
},
"attributeType": {
"description": "Data type of custom attribute",
"type": "string",
"enum": [
"STRING",
"URL",
"DATE",
"BOOLEAN",
"INTEGER",
"FLOAT",
"TEXT",
"LIST_STRING",
"LIST_URL",
"LIST_BOOLEAN",
"LIST_INTEGER",
"LIST_FLOAT"
]
},
"format": {
"description": "Format of date custom attribute. Required for creating date datatype",
"type": "string",
"default": null
},
"propagateToAsset": {
"description": "Should this attribute be propagated to asset. Applicable for group custom attributes only",
"type": "boolean",
"default": false
},
"propagateToFinding": {
"description": "Should this attribute be propagated to finding. Applicable for both group and asset custom attributes",
"type": "boolean",
"default": false
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/application/{attributeId}": {
"put": {
"summary": "Update Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "attributeId",
"in": "path",
"description": "Id of Custom Attribute\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"label"
],
"properties": {
"label": {
"description": "Label of custom attribute",
"type": "string",
"example": "New Label"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/job/application/bulk-update-cust-attrs": {
"post": {
"summary": "Create job to update Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create job to update Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
},
"updateAttributes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributeId": {
"type": "string"
},
"oneOf": {
"type": "object",
"properties": {
"attributeValue": {
"type": "string"
},
"attributeValues": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"example": [
{
"attributeId": "1_customAttr_1",
"attributeValue": "Text Data"
},
{
"attributeId": "1_customAttr_2",
"attributeValues": [
"Data1",
"Data2"
]
}
]
}
},
"deleteAttributes": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"1_customAttr_3",
"1_customAttr_4"
]
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/application/get-job-stats": {
"get": {
"summary": "Get Custom Attributes Update Job Stats",
"tags": [
"CustomAttributes"
],
"description": "Get the status of the ongoing and completed custom attributes jobs\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"jobId": {
"type": "integer"
},
"jobType": {
"type": "string"
},
"createdUserFullName": {
"type": "string"
},
"timeCreated": {
"type": "string"
},
"subject": {
"type": "string"
},
"attributes": {
"type": "array",
"items": {
"type": "string"
}
},
"impact": {
"type": "object",
"properties": {
"hosts": {
"type": "integer"
},
"hostFindings": {
"type": "integer"
},
"application": {
"type": "integer"
},
"applicationFinding": {
"type": "integer"
},
"groups": {
"type": "integer"
}
}
},
"progressPercentage": {
"type": "integer"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/applicationFinding": {
"get": {
"summary": "Get Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "List Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
},
"post": {
"summary": "Create Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"label",
"attributeType"
],
"properties": {
"label": {
"description": "Label of custom attribute",
"type": "string",
"example": "Custom Attribute 1"
},
"attributeType": {
"description": "Data type of custom attribute",
"type": "string",
"enum": [
"STRING",
"URL",
"DATE",
"BOOLEAN",
"INTEGER",
"FLOAT",
"TEXT",
"LIST_STRING",
"LIST_URL",
"LIST_BOOLEAN",
"LIST_INTEGER",
"LIST_FLOAT"
]
},
"format": {
"description": "Format of date custom attribute. Required for creating date datatype",
"type": "string",
"default": null
},
"propagateToAsset": {
"description": "Should this attribute be propagated to asset. Applicable for group custom attributes only",
"type": "boolean",
"default": false
},
"propagateToFinding": {
"description": "Should this attribute be propagated to finding. Applicable for both group and asset custom attributes",
"type": "boolean",
"default": false
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/applicationFinding/{attributeId}": {
"put": {
"summary": "Update Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "attributeId",
"in": "path",
"description": "Id of Custom Attribute\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"required": [
"label"
],
"properties": {
"label": {
"description": "Label of custom attribute",
"type": "string",
"example": "New Label"
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"example": "1_customAttr_1"
},
"clientId": {
"type": "integer"
},
"subject": {
"type": "string"
},
"label": {
"type": "string"
},
"attributeType": {
"type": "string"
},
"format": {
"type": "string"
},
"propagateToAsset": {
"type": "boolean"
},
"propagateToFinding": {
"type": "boolean"
},
"filterable": {
"type": "boolean"
},
"listViewEnabled": {
"type": "boolean"
},
"exportable": {
"type": "boolean"
},
"sortable": {
"type": "boolean"
},
"groupByEnabled": {
"type": "boolean"
},
"createdBy": {
"type": "integer"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "integer"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/job/applicationFinding/bulk-update-cust-attrs": {
"post": {
"summary": "Create job to update Custom Attributes",
"tags": [
"CustomAttributes"
],
"description": "Create job to update Custom Attributes\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
},
"updateAttributes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"attributeId": {
"type": "string"
},
"oneOf": {
"type": "object",
"properties": {
"attributeValue": {
"type": "string"
},
"attributeValues": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"example": [
{
"attributeId": "1_customAttr_1",
"attributeValue": "Text Data"
},
{
"attributeId": "1_customAttr_2",
"attributeValues": [
"Data1",
"Data2"
]
}
]
}
},
"deleteAttributes": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"1_customAttr_3",
"1_customAttr_4"
]
}
}
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/custom-attributes/applicationFinding/get-job-stats": {
"get": {
"summary": "Get Custom Attributes Update Job Stats",
"tags": [
"CustomAttributes"
],
"description": "Get the status of the ongoing and completed custom attributes jobs\n",
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"jobId": {
"type": "integer"
},
"jobType": {
"type": "string"
},
"createdUserFullName": {
"type": "string"
},
"timeCreated": {
"type": "string"
},
"subject": {
"type": "string"
},
"attributes": {
"type": "array",
"items": {
"type": "string"
}
},
"impact": {
"type": "object",
"properties": {
"hosts": {
"type": "integer"
},
"hostFindings": {
"type": "integer"
},
"application": {
"type": "integer"
},
"applicationFinding": {
"type": "integer"
},
"groups": {
"type": "integer"
}
}
},
"progressPercentage": {
"type": "integer"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFindingArticle/restricted": {
"post": {
"summary": "Create Finding Article",
"description": "Create Finding Article",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "accessLevel",
"in": "formData",
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
],
"required": true
},
{
"name": "title",
"in": "formData",
"type": "string",
"required": true
},
{
"name": "pii",
"in": "formData",
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
],
"required": true
},
{
"name": "proofOfExploitation",
"in": "formData",
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
],
"required": true
},
{
"name": "description",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/hostFindingArticle/{articleId}/restricted": {
"put": {
"summary": "Update Finding Article",
"description": "Update Finding Article",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "accessLevel",
"in": "formData",
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
],
"required": true
},
{
"name": "title",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "pii",
"in": "formData",
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
],
"required": false
},
{
"name": "proofOfExploitation",
"in": "formData",
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
],
"required": false
},
{
"name": "description",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
},
"get": {
"summary": "Get Finding Article",
"description": "Get Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
},
"delete": {
"summary": "Delete Finding Article",
"description": "Delete Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/hostFindingArticle/{articleId}/attachment/restricted": {
"get": {
"summary": "Get list of Finding Article attachments",
"description": "Get list of Finding Article attachments",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
}
}
}
},
"post": {
"summary": "Add Finding Article Attachments",
"description": "Add Finding Article Attachments",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
}
}
}
}
},
"/client/{clientId}/hostFindingArticle/{articleId}/attachment/{attachmentId}/restricted": {
"get": {
"summary": "Download Finding Article attachment",
"description": "Download Finding Article attachment",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachmentId",
"in": "path",
"description": "Id/UUID of Finding Article Attachment\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success"
}
}
},
"delete": {
"summary": "Delete Finding Article",
"description": "Delete Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachmentId",
"in": "path",
"description": "Id/UUID of Finding Article Attachment\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/hostFindingArticle/{articleId}/map/restricted": {
"post": {
"summary": "Map/Umap Finding Article to findings",
"description": "Map/Umap Finding Article to findings",
"tags": [
"Finding Article"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"isRemove": {
"type": "boolean"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/hostFindingArticle": {
"post": {
"summary": "Create Finding Article",
"description": "Create Finding Article",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "title",
"in": "formData",
"type": "string",
"required": true
},
{
"name": "pii",
"in": "formData",
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
],
"required": true
},
{
"name": "proofOfExploitation",
"in": "formData",
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
],
"required": true
},
{
"name": "description",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/hostFindingArticle/{articleId}": {
"put": {
"summary": "Update Finding Article",
"description": "Update Finding Article",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "title",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "pii",
"in": "formData",
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
],
"required": false
},
{
"name": "proofOfExploitation",
"in": "formData",
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
],
"required": false
},
{
"name": "description",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
},
"get": {
"summary": "Get Finding Article",
"description": "Get Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
},
"delete": {
"summary": "Delete Finding Article",
"description": "Delete Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/hostFindingArticle/{articleId}/attachment": {
"get": {
"summary": "Get list of Finding Article attachments",
"description": "Get list of Finding Article attachments",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
}
}
}
},
"post": {
"summary": "Add Finding Article Attachments",
"description": "Add Finding Article Attachments",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
}
}
}
}
},
"/client/{clientId}/hostFindingArticle/{articleId}/attachment/{attachmentId}": {
"get": {
"summary": "Download Finding Article attachment",
"description": "Download Finding Article attachment",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachmentId",
"in": "path",
"description": "Id/UUID of Finding Article Attachment\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success"
}
}
},
"delete": {
"summary": "Delete Finding Article",
"description": "Delete Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachmentId",
"in": "path",
"description": "Id/UUID of Finding Article Attachment\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/hostFindingArticle/{articleId}/map": {
"post": {
"summary": "Map/Umap Finding Article to findings",
"description": "Map/Umap Finding Article to findings",
"tags": [
"Finding Article"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"isRemove": {
"type": "boolean"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/hostFindingArticle/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFindingArticle/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"Finding Article"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFindingArticle/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"Finding Article"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFindingArticle/search": {
"post": {
"summary": "Search for Finding Article",
"tags": [
"Finding Article"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/hostFindingArticle/{articleId}/history": {
"get": {
"summary": "Get Finding Article History",
"description": "Get Finding Article History",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"message": {
"type": "string"
},
"action": {
"type": "string"
},
"title": {
"type": "string"
},
"userId": {
"type": "number"
},
"userName": {
"type": "string"
},
"date": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle/restricted": {
"post": {
"summary": "Create Finding Article",
"description": "Create Finding Article",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "accessLevel",
"in": "formData",
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
],
"required": true
},
{
"name": "title",
"in": "formData",
"type": "string",
"required": true
},
{
"name": "pii",
"in": "formData",
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
],
"required": true
},
{
"name": "proofOfExploitation",
"in": "formData",
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
],
"required": true
},
{
"name": "description",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle/{articleId}/restricted": {
"put": {
"summary": "Update Finding Article",
"description": "Update Finding Article",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "accessLevel",
"in": "formData",
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
],
"required": true
},
{
"name": "title",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "pii",
"in": "formData",
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
],
"required": false
},
{
"name": "proofOfExploitation",
"in": "formData",
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
],
"required": false
},
{
"name": "description",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
},
"get": {
"summary": "Get Finding Article",
"description": "Get Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
},
"delete": {
"summary": "Delete Finding Article",
"description": "Delete Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle/{articleId}/attachment/restricted": {
"get": {
"summary": "Get list of Finding Article attachments",
"description": "Get list of Finding Article attachments",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
}
}
}
},
"post": {
"summary": "Add Finding Article Attachments",
"description": "Add Finding Article Attachments",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle/{articleId}/attachment/{attachmentId}/restricted": {
"get": {
"summary": "Download Finding Article attachment",
"description": "Download Finding Article attachment",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachmentId",
"in": "path",
"description": "Id/UUID of Finding Article Attachment\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success"
}
}
},
"delete": {
"summary": "Delete Finding Article",
"description": "Delete Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachmentId",
"in": "path",
"description": "Id/UUID of Finding Article Attachment\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle/{articleId}/map/restricted": {
"post": {
"summary": "Map/Umap Finding Article to findings",
"description": "Map/Umap Finding Article to findings",
"tags": [
"Finding Article"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"isRemove": {
"type": "boolean"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle": {
"post": {
"summary": "Create Finding Article",
"description": "Create Finding Article",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "title",
"in": "formData",
"type": "string",
"required": true
},
{
"name": "pii",
"in": "formData",
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
],
"required": true
},
{
"name": "proofOfExploitation",
"in": "formData",
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
],
"required": true
},
{
"name": "description",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle/{articleId}": {
"put": {
"summary": "Update Finding Article",
"description": "Update Finding Article",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "title",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "pii",
"in": "formData",
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
],
"required": false
},
{
"name": "proofOfExploitation",
"in": "formData",
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
],
"required": false
},
{
"name": "description",
"in": "formData",
"type": "string",
"required": false
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
},
"get": {
"summary": "Get Finding Article",
"description": "Get Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"accessLevel": {
"type": "string",
"enum": [
"RESTRICTED",
"UNRESTRICTED"
]
},
"findingType": {
"type": "string",
"enum": [
"NETWORK",
"APPLICATION"
]
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"pii": {
"type": "string",
"enum": [
"None",
"Unknown",
"Direct",
"Indirect"
]
},
"proofOfExploitation": {
"type": "string",
"enum": [
"NO",
"YES",
"YES_WITH_RS3_IMPACT"
]
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
},
"createdBy": {
"type": "string"
},
"createdById": {
"type": "number"
},
"createdOn": {
"type": "string",
"format": "date-time"
},
"updatedBy": {
"type": "string"
},
"updatedById": {
"type": "number"
},
"updatedOn": {
"type": "string",
"format": "date-time"
}
}
}
}
}
},
"delete": {
"summary": "Delete Finding Article",
"description": "Delete Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle/{articleId}/attachment": {
"get": {
"summary": "Get list of Finding Article attachments",
"description": "Get list of Finding Article attachments",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
}
}
}
},
"post": {
"summary": "Add Finding Article Attachments",
"description": "Add Finding Article Attachments",
"tags": [
"Finding Article"
],
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachments",
"in": "formData",
"description": "List of attachments for article(Multiple attachments not supported in swagger)",
"required": false,
"type": "file"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"uuid": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"fileType": {
"type": "string"
},
"size": {
"type": "number"
},
"downloadLink": {
"type": "string"
}
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle/{articleId}/attachment/{attachmentId}": {
"get": {
"summary": "Download Finding Article attachment",
"description": "Download Finding Article attachment",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachmentId",
"in": "path",
"description": "Id/UUID of Finding Article Attachment\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success"
}
}
},
"delete": {
"summary": "Delete Finding Article",
"description": "Delete Finding Article",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"name": "attachmentId",
"in": "path",
"description": "Id/UUID of Finding Article Attachment\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle/{articleId}/map": {
"post": {
"summary": "Map/Umap Finding Article to findings",
"description": "Map/Umap Finding Article to findings",
"tags": [
"Finding Article"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"type": "object",
"properties": {
"isRemove": {
"type": "boolean"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
}
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "object",
"required": [
"id",
"created"
],
"properties": {
"id": {
"type": "integer",
"description": "Id of the created job"
},
"created": {
"type": "string",
"description": "Datetime the job was created in the database",
"format": "date-time"
}
}
}
}
}
}
},
"/client/{clientId}/applicationFindingArticle/model": {
"get": {
"summary": "List projections and their models",
"description": "List projections and their models that can be requested from the search endpoint.\n",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"properties": {
"projections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"type": {
"type": "string"
},
"nested": {
"type": "array",
"items": {
"type": "object",
"description": "Same as ProjectionField"
}
}
}
}
}
}
}
}
},
"example": {
"projections": [
{
"name": "basic",
"fields": [
{
"field": "id",
"type": "integer"
},
{
"field": "name",
"type": "string"
}
]
}
]
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFindingArticle/filter": {
"get": {
"summary": "List fields that can be filtered by in the search endpoint",
"tags": [
"Finding Article"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"required": [
"name",
"uid",
"operators",
"type",
"description"
],
"properties": {
"name": {
"type": "string"
},
"uid": {
"type": "string",
"description": "uid used to indentify fields in suggest and search requests"
},
"operators": {
"type": "array",
"items": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
}
},
"datatype": {
"type": "string"
},
"description": {
"type": "string"
}
}
},
"example": [
{
"name": "id",
"uid": "id",
"operator": [
"EXACT",
"IN"
],
"type": "integer",
"description": "The id"
}
]
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFindingArticle/suggest": {
"post": {
"summary": "Suggest values for filter fields",
"tags": [
"Finding Article"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"filter"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
},
"description": "Filters to used to narrow down the the result set\n"
},
"filter": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
},
"description": "Filter for which to suggest values for. The filter value will be\ntreated as a wildcard.\n"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": true,
"operator": "IN",
"value": "1,2,3,4"
}
],
"filter": {
"field": "id",
"exclusive": false,
"operator": "IN",
"value": ""
}
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"count"
],
"properties": {
"key": {
"type": "string",
"description": "Value for the field the suggestion was requested for."
},
"count": {
"type": "integer",
"format": "int64"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFindingArticle/search": {
"post": {
"summary": "Search for Finding Article",
"tags": [
"Finding Article"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"in": "body",
"name": "body",
"required": true,
"schema": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
],
"responses": {
"200": {
"description": "Ok",
"schema": {
"type": "object",
"required": [
"_embedded",
"page"
],
"properties": {
"_embedded": {
"type": "object",
"required": [
"strings"
],
"properties": {
"strings": {
"type": "array",
"items": {
"type": "object",
"description": "<p>The response structure is subject dependent. Subject structure\ncan be found via the subject endpoint. </p>\n"
}
}
}
},
"page": {
"type": "object",
"required": [
"size",
"totalElements",
"totalPages",
"number"
],
"properties": {
"size": {
"type": "integer"
},
"totalElements": {
"type": "integer"
},
"totalPages": {
"type": "integer"
},
"number": {
"type": "integer"
}
}
},
"errors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"errorRefId",
"code",
"cause"
],
"properties": {
"id": {
"type": "string",
"description": "Entity id which failed to be retrieved"
},
"errorRefId": {
"type": "string",
"description": "A unique identifier for the error"
},
"code": {
"type": "integer",
"description": "http status code of the error"
},
"cause": {
"type": "string",
"description": "http status code message"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
}
}
},
"/client/{clientId}/applicationFindingArticle/{articleId}/history": {
"get": {
"summary": "Get Finding Article History",
"description": "Get Finding Article History",
"tags": [
"Finding Article"
],
"produces": [
"application/json"
],
"parameters": [
{
"name": "clientId",
"in": "path",
"description": "Id of client (This parameter can be obtained via the GET method on '/client')\n",
"required": true,
"type": "integer"
},
{
"name": "articleId",
"in": "path",
"description": "Id/UUID of Finding Article\n",
"required": true,
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"type": "object",
"properties": {
"message": {
"type": "string"
},
"action": {
"type": "string"
},
"title": {
"type": "string"
},
"userId": {
"type": "number"
},
"userName": {
"type": "string"
},
"date": {
"type": "string",
"format": "date-time"
}
}
}
}
}
}
}
}
},
"definitions": {
"Attributes_UsernameAndPassword": {
"type": "object",
"required": [
"username",
"password"
],
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
}
}
},
"Attributes_Nessus": {
"type": "object",
"required": [
"accessKey",
"secretKey"
],
"properties": {
"accessKey": {
"type": "string"
},
"secretKey": {
"type": "string"
}
}
},
"Attributes_Nexpose": {
"type": "object",
"required": [
"username",
"password",
"filterValues"
],
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
},
"filterValues": {
"description": "Obtaining a list of filterValues can be obtained using\nthe Nexpose API. See the Nexpose API documentation here:\nhttps://www.rapid7.com/docs/download/Nexpose_API_guide.pdf\n",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"filterType": {
"type": "string",
"enum": [
"ASSET_GROUP",
"SITE_ID",
"TAG"
]
}
}
}
}
}
},
"Attributes_Cenzic_Hailstorm": {
"type": "object",
"required": [
"client",
"customerId",
"applications"
],
"properties": {
"client": {
"type": "string"
},
"customerId": {
"type": "string"
},
"applications": {
"type": "array",
"description": "Array of application names",
"items": {
"type": "string"
}
}
}
},
"Attributes_Remedy": {
"type": "object",
"required": [
"username",
"password",
"requestingUserFirstName",
"requestingUserLastName",
"impact",
"urgency",
"reportedSource",
"serviceType",
"initialStatus",
"remediatedStatus",
"assignedGroup",
"assignee"
],
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
},
"requestingUserFirstName": {
"type": "string"
},
"requestingUserLastName": {
"type": "string"
},
"impact": {
"type": "string"
},
"urgency": {
"type": "string"
},
"reportedSource": {
"type": "string"
},
"serviceType": {
"type": "string"
},
"initialStatus": {
"type": "string"
},
"remediatedStatus": {
"type": "string"
},
"assignedGroup": {
"type": "string"
},
"assignee": {
"type": "string"
}
}
},
"Attributes_ServiceNow": {
"type": "object",
"required": [
"username",
"password",
"assignmentGroup",
"assignTo",
"caller",
"category",
"subcategory",
"remediatedState",
"initialState",
"impact",
"priority",
"urgency"
],
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
},
"assignmentGroup": {
"type": "string",
"description": "Reference identifier of assignment group"
},
"assignTo": {
"type": "string",
"description": "Reference identifier of assignTo"
},
"caller": {
"type": "string",
"description": "Reference identifier of caller"
},
"category": {
"type": "string"
},
"subcategory": {
"type": "string"
},
"remediatedState": {
"type": "integer",
"description": "Reference identifier of remediated state"
},
"initialState": {
"type": "integer",
"description": "Reference identifier of initial state"
},
"impact": {
"type": "integer",
"description": "Reference identifier of impact"
},
"priority": {
"type": "integer",
"description": "Reference identifier of priority"
},
"urgency": {
"type": "integer",
"description": "Reference identifier of urgency"
}
}
},
"Attributes_WhiteHat": {
"type": "object",
"required": [
"apiKey"
],
"properties": {
"apiKey": {
"type": "string"
}
}
},
"ConnectorField_Jira": {
"type": "object",
"required": [
"type",
"connectorSettings",
"descriptionFields",
"dynamicFields",
"issueType",
"lockedFields",
"project",
"tagSyncField"
],
"properties": {
"type": {
"type": "string",
"description": "should be 'JIRA'\n"
},
"connectorSettings": {
"type": "object",
"required": [
"initialState",
"enabledTagRemoval",
"closeTicketOnFindingsCloseEnabled",
"closedStateKey",
"closedStateLabel"
],
"properties": {
"initialState": {
"type": "string",
"description": "Initial state of the ticket which is used to create a ticket using this connector."
},
"enabledTagRemoval": {
"type": "boolean",
"description": "True if the user allows the deletion of tags associated with this connector, otherwise false."
},
"closeTicketOnFindingsCloseEnabled": {
"type": "boolean",
"description": "True if enable changing the ticket state to the set state when all the associated findings reach to the close state.\n"
},
"closedStateKey": {
"type": "string",
"description": "the close state value of the status."
},
"closedStateLabel": {
"type": "string",
"description": "the close state label of the status."
}
}
},
"descriptionFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"enabled"
],
"properties": {
"key": {
"type": "string",
"description": "Description field key"
},
"enabled": {
"type": "boolean",
"description": "True when description field key is enabled else False"
}
}
}
},
"dynamicFields": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Field key"
},
"value": {
"type": "string",
"description": "Field value"
},
"displayValue": {
"type": "string",
"description": "Label of the value."
}
}
},
"issueType": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
},
"description": "Selected issue type."
},
"lockedFields": {
"type": "array",
"items": {
"type": "string",
"description": "Key of the field."
}
},
"project": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
},
"description": "selected project."
},
"tagSyncField": {
"type": "string",
"description": "Value of Tag Name Sync Field. This field is populated with the tag name while creating tickets."
}
}
},
"ConnectorField_ServiceNow": {
"type": "object",
"required": [
"type",
"defaultTemplateId",
"templates",
"descriptionFields",
"defaultSupportedFieldValues",
"tagSyncField",
"connectorSettings"
],
"properties": {
"type": {
"type": "string",
"description": "Should be 'SERVICE_NOW'.\n"
},
"defaultTemplateId": {
"type": "string",
"description": "Optional default template Id."
},
"templates": {
"type": "array",
"items": {
"type": "object",
"description": "SERVICE_NOW field only.",
"required": [
"id",
"name",
"locked"
],
"properties": {
"id": {
"type": "string",
"description": "Template Id"
},
"name": {
"type": "string",
"description": "Template name"
},
"locked": {
"type": "boolean",
"description": "The selected template is locked or not. Locked implies that you\nwill not be able to edit those fields and unlocked implies that\nyou can edit the fields which are supported by Ivanti Neurons.\n"
}
}
}
},
"descriptionFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"enabled"
],
"properties": {
"key": {
"type": "string",
"description": "Description field key"
},
"enabled": {
"type": "boolean",
"description": "True when description field key is enabled else False"
}
}
}
},
"defaultSupportedFieldValues": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Field key"
},
"value": {
"type": "string",
"description": "Field value"
},
"displayValue": {
"type": "string",
"description": "Label of the value."
}
}
},
"tagSyncField": {
"type": "string",
"description": "Value of Tag Name Sync Field. This field is populated with the tag name while creating tickets."
},
"connectorSettings": {
"type": "object",
"required": [
"initialState",
"enabledTagRemoval",
"closeTicketOnFindingsCloseEnabled",
"closedStateKey",
"closedStateLabel"
],
"properties": {
"initialState": {
"type": "string",
"description": "Initial state of the ticket which is used to create a ticket using this connector."
},
"enabledTagRemoval": {
"type": "boolean",
"description": "True if the user allows the deletion of tags associated with this connector, otherwise false."
},
"closeTicketOnFindingsCloseEnabled": {
"type": "boolean",
"description": "True if enable changing the ticket state to the set state when all the associated findings reach to the close state.\n"
},
"closedStateKey": {
"type": "string",
"description": "the close state value of the status."
},
"closedStateLabel": {
"type": "string",
"description": "the close state label of the status."
}
}
},
"selectedOptionalFields": {
"type": "array",
"description": "Optional fields that are rendered in create ticket form apart from required fields.\n",
"items": {
"type": "string",
"description": "field key."
}
}
}
},
"ConnectorField_SnowServiceRequest": {
"type": "object",
"required": [
"type",
"catalog",
"category",
"catalogItem",
"descriptionFields",
"defaultSupportedFieldValues",
"dynamicFields",
"tagSyncField",
"connectorSettings"
],
"properties": {
"type": {
"type": "string",
"description": "Should be 'SNOW_SERVICE_REQUEST'.\n"
},
"catalog": {
"type": "string",
"description": "Catalog type."
},
"category": {
"type": "string",
"description": "Category type."
},
"catalogItem": {
"type": "string",
"description": "Catalog Item type."
},
"descriptionFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"enabled"
],
"properties": {
"key": {
"type": "string",
"description": "Description field key"
},
"enabled": {
"type": "boolean",
"description": "True when description field key is enabled else False"
}
}
}
},
"defaultSupportedFieldValues": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Field key"
},
"value": {
"type": "string",
"description": "Field value"
},
"displayValue": {
"type": "string",
"description": "Label of the value."
}
}
},
"dynamicFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Field key"
},
"value": {
"type": "string",
"description": "Field value"
},
"displayValue": {
"type": "string",
"description": "Label of the value."
}
}
}
},
"tagSyncField": {
"type": "string",
"description": "Value of Tag Name Sync Field. This field is populated with the tag name while creating tickets."
},
"connectorSettings": {
"type": "object",
"required": [
"initialState",
"enabledTagRemoval",
"closeTicketOnFindingsCloseEnabled",
"closedStateKey",
"closedStateLabel"
],
"properties": {
"initialState": {
"type": "string",
"description": "Initial state of the ticket which is used to create a ticket using this connector."
},
"enabledTagRemoval": {
"type": "boolean",
"description": "True if the user allows the deletion of tags associated with this connector, otherwise false."
},
"closeTicketOnFindingsCloseEnabled": {
"type": "boolean",
"description": "True if enable changing the ticket state to the set state when all the associated findings reach to the close state.\n"
},
"closedStateKey": {
"type": "string",
"description": "the close state value of the status."
},
"closedStateLabel": {
"type": "string",
"description": "the close state label of the status."
}
}
}
}
},
"ConnectorField_GenericSnow": {
"type": "object",
"required": [
"type",
"tableName",
"statusField",
"enabledTagRemoval",
"descriptionFieldToTableFields",
"tableFields"
],
"properties": {
"type": {
"type": "string",
"description": "Should be 'GENERIC_SNOW'.\n"
},
"tableName": {
"type": "string",
"description": "Name of the servicenow table in which ticket needs to be created."
},
"statusField": {
"type": "string",
"description": "Status field to track status of the ticket."
},
"enabledTagRemoval": {
"type": "boolean",
"description": "True if the user allows the deletion of tags associated with this connector, otherwise false."
},
"descriptionFieldToTableFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"descriptionField",
"tableField"
],
"properties": {
"descriptionField": {
"type": "string",
"description": "Tag description field key."
},
"tableField": {
"type": "string",
"description": "Table field key in servicenow to which the description field value needs to be populate."
}
}
}
},
"tableFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Table field key in servicenow."
},
"value": {
"type": "string",
"description": "Table field value."
}
}
}
}
}
},
"ConnectorPopulate_ServiceNow": {
"type": "object",
"required": [
"templates",
"supportedFields",
"supportedDescriptionFields",
"enabledTagRemoval",
"tagSyncField",
"tagSyncFieldOptions",
"connectorSettings",
"selectedOptionalFields",
"unSupportedFields"
],
"properties": {
"templates": {
"type": "array",
"items": {
"type": "object",
"required": [
"sysId",
"name",
"tableName",
"isDefault",
"isLocked",
"isCurrentlySelected",
"fields"
],
"properties": {
"sysId": {
"type": "string",
"description": "This is the id of the template"
},
"name": {
"type": "string",
"description": "This is the name of the template"
},
"tableName": {
"type": "string",
"description": "This is the table name of the template"
},
"isDefault": {
"type": "boolean",
"description": "In case of editing the connector,this is true only if it is a default template and it is true for only one of the template.\nIn case of creating the connector, this is always false.\n"
},
"isLocked": {
"type": "boolean",
"description": "In case of editing the connector,this is true only if user is not allowed to change the template fields.\nIn case of creating the connector, this is always false.\n"
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if user has selected this template while creating the connector otherwise False.\n"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "This is empty string if this field is not supported by the risksense or\nthis is the key of the supportedfields for this type of connector.\n"
},
"label": {
"type": "string",
"description": "This is the label of field which is used to display.\n"
},
"value": {
"type": "string",
"description": "This is the value of the field. Even it is integer, boolean they has to passed as string.\n"
}
}
}
}
}
},
"description": "Connector template."
},
"supportedFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"type",
"value",
"required",
"locked",
"isSupported",
"selectOptions",
"fields",
"queryParameters",
"dependentKey"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"type": {
"type": "string",
"description": "<p>Type of Field used to display.The types are</p>\n<ul>\n <li>boolean: Used for CheckBox field</li>\n <li>date: Used for Date field</li>\n <li>multiSelect: Used for the multiselect dropdown field</li>\n <li>number: Used for Number field</li>\n <li>radio: Used for Radio button field</li>\n <li>referenceDropdown: Used for the dropdown view where dropdown options are fetched dynamically.</li>\n <li>referenceMultiSelect: Used for the multiselect dropdown view where dropdown options are fetched dynamically.</li>\n <li>section: Used for Section field. This field only supported in SNOW_SERVICE_REQUEST connector type.</li>\n <li>string: Used for single line text field</li>\n <li>textArea: Used for TextArea field</li>\n <li>valueDropdown: Used for the dropdown field</li>\n</ul>\n"
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"required": {
"type": "boolean",
"description": "This variable shows whether this field is required or not. If it is required, it cannot be sumbitted as empty.\n"
},
"locked": {
"type": "boolean",
"description": "True if the field value is not allowed to edit, otherwise false.\n"
},
"isSupported": {
"type": "boolean",
"description": "True for all supported fields."
},
"selectOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value",
"isCurrentlySelected"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if previously selected this option otherwise false.\nAvailable only if the type is 'referenceMultiSelect' or 'multiSelect'.\n"
}
}
}
},
"fields": {
"type": "array",
"items": {},
"description": "Available if the type is 'section'. This is same as parent field.\n"
},
"queryParameters": {
"description": "Available only if the type is 'referenceDropdown' or 'referenceMultiSelect'",
"type": "object",
"required": [
"table",
"filter",
"fieldName"
],
"properties": {
"table": {
"type": "string",
"description": "Table name from which dropdown options are fetched. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"filter": {
"type": "string",
"description": "Table filter to filter the records. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"fieldName": {
"type": "string",
"description": "Field Name for which dropdown options are fetched. This is a 'JIRA' request field."
}
}
},
"dependentKey": {
"type": "string",
"description": "Key of dependent field. Dropdown options for this field is dependent on value of this\nfield to which this key belongs. Available only if the type is 'referenceDropdown'\n"
}
}
},
"description": "List of fields."
},
"supportedDescriptionFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"isCurrentlySelected"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the SupportedDescriptionField."
},
"label": {
"type": "string",
"description": "Label of field which is used to display."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if user has selected this Description Field while creating the connector otherwise false.\n"
}
}
}
},
"enabledTagRemoval": {
"type": "boolean",
"description": "Allow tag to be removed or not."
},
"tagSyncField": {
"type": "string",
"description": "Value of Tag Sync Field which was set when creating the connector otherwise empty string.\n"
},
"tagSyncFieldOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
}
},
"connectorSettings": {
"type": "object",
"required": [
"initialState",
"statusOptions",
"closeTicketOnFindingsCloseEnabled",
"closedStateKey"
],
"properties": {
"initialState": {
"type": "string",
"description": "Initial state of the ticket which is used to create a ticket using this connector."
},
"statusOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
}
},
"closeTicketOnFindingsClose": {
"type": "boolean",
"description": "True if enable changing the ticket state to the set state when all the associated findings reach the close state.\n"
},
"closedStateKey": {
"type": "string",
"description": "the close state value of the status."
}
}
},
"selectedOptionalFields": {
"type": "array",
"description": "Optional fields that are rendered in create ticket form apart from required fields.\n",
"items": {
"type": "string",
"description": "Field key."
}
},
"unSupportedFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"value",
"isSupported"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"isSupported": {
"type": "boolean",
"description": "false for all unsupported Fields."
}
}
}
}
}
},
"ConnectorPopulate_SnowServiceRequest": {
"type": "object",
"required": [
"currentlySelectedCatalog",
"catalogs",
"supportedDescriptionFields",
"supportedFields",
"enabledTagRemoval"
],
"properties": {
"currentlySelectedCatalog": {
"type": "string",
"description": "Current selected catalog system id."
},
"catalogs": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
},
"description": "Catalogs on Service Now."
},
"supportedDescriptionFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"isCurrentlySelected"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the SupportedDescriptionField."
},
"label": {
"type": "string",
"description": "Label of field which is used to display."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if user has selected this Description Field while creating the connector otherwise false.\n"
}
}
}
},
"supportedFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"type",
"value",
"required",
"locked",
"isSupported",
"selectOptions",
"fields",
"queryParameters",
"dependentKey"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the field."
},
"label": {
"type": "string",
"description": "Label of field."
},
"type": {
"type": "string",
"description": "<p>Type of Field used to display.The types are</p>\n<ul>\n <li>boolean: Used for CheckBox field</li>\n <li>date: Used for Date field</li>\n <li>multiSelect: Used for the multiselect dropdown field</li>\n <li>number: Used for Number field</li>\n <li>radio: Used for Radio button field</li>\n <li>referenceDropdown: Used for the dropdown view where dropdown options are fetched dynamically.</li>\n <li>referenceMultiSelect: Used for the multiselect dropdown view where dropdown options are fetched dynamically.</li>\n <li>section: Used for Section field. This field only supported in SNOW_SERVICE_REQUEST connector type.</li>\n <li>string: Used for single line text field</li>\n <li>textArea: Used for TextArea field</li>\n <li>valueDropdown: Used for the dropdown field</li>\n</ul>\n"
},
"value": {
"type": "string",
"description": "Value of the field which was set when creating the connector otherwise empty string.\n"
},
"required": {
"type": "boolean",
"description": "This variable shows whether this field is required or not. If it is required, it cannot be sumbitted as empty.\n"
},
"locked": {
"type": "boolean",
"description": "True if the field value is not allowed to edit, otherwise false.\n"
},
"isSupported": {
"type": "boolean",
"description": "True for all supported fields."
},
"selectOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value",
"isCurrentlySelected"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if previously selected this option otherwise false.\nAvailable only if the type is 'referenceMultiSelect' or 'multiSelect'.\n"
}
}
}
},
"fields": {
"type": "array",
"items": {},
"description": "Available if the type is 'section'. This is same as parent field.\n"
},
"queryParameters": {
"description": "Available only if the type is 'referenceDropdown' or 'referenceMultiSelect'",
"type": "object",
"required": [
"table",
"filter",
"fieldName"
],
"properties": {
"table": {
"type": "string",
"description": "Table name from which dropdown options are fetched. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"filter": {
"type": "string",
"description": "Table filter to filter the records. This is a 'SNOW_SERVICE_REQUEST' and 'SERVICE_NOW' request field."
},
"fieldName": {
"type": "string",
"description": "Field Name for which dropdown options are fetched. This is a 'JIRA' request field."
}
}
},
"dependentKey": {
"type": "string",
"description": "Key of dependent field. Dropdown options for this field is dependent on value of this\nfield to which this key belongs. Available only if the type is 'referenceDropdown'\n"
}
}
}
},
"enabledTagRemoval": {
"type": "boolean",
"description": "Allow tag to be removed or not."
}
}
},
"ConnectorPopulate_Jira": {
"type": "object",
"required": [
"currentlySelectedProject",
"projects",
"supportedDescriptionFields",
"enabledTagRemoval"
],
"properties": {
"currentlySelectedProject": {
"type": "string",
"description": "Current selected project key."
},
"projects": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
},
"description": "Projects on Jira."
},
"supportedDescriptionFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label",
"isCurrentlySelected"
],
"properties": {
"key": {
"type": "string",
"description": "Key of the SupportedDescriptionField."
},
"label": {
"type": "string",
"description": "Label of field which is used to display."
},
"isCurrentlySelected": {
"type": "boolean",
"description": "True if user has selected this Description Field while creating the connector otherwise false.\n"
}
}
}
},
"enabledTagRemoval": {
"type": "boolean",
"description": "Allow tag to be removed or not."
}
}
},
"ConnectorPopulate_GenericSnow": {
"type": "object",
"required": [
"tableName",
"statusField",
"enabledTagRemoval",
"descriptionFieldToTableFields",
"tableFields",
"descriptionFieldDropDownOptions"
],
"properties": {
"tableName": {
"type": "string",
"description": "Name of the servicenow table in which ticket needs to be created."
},
"statusField": {
"type": "string",
"description": "Status field to track status of the ticket."
},
"enabledTagRemoval": {
"type": "boolean",
"description": "True if the user allows the deletion of tags associated with this connector, otherwise false."
},
"descriptionFieldToTableFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"descriptionField",
"tableField"
],
"properties": {
"descriptionField": {
"type": "string",
"description": "Tag description field key."
},
"tableField": {
"type": "string",
"description": "Table field key in servicenow to which the description field value needs to be populate."
}
}
}
},
"tableFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Table field key in servicenow."
},
"value": {
"type": "string",
"description": "Table field value."
}
}
}
},
"descriptionFieldDropDownOptions": {
"type": "array",
"items": {
"type": "object",
"required": [
"displayValue",
"value"
],
"properties": {
"displayValue": {
"type": "string",
"description": "Label of the Field."
},
"value": {
"type": "string",
"description": "Id of the Field."
}
}
}
}
}
},
"CreateTicketRequest_ServiceNow_Incident": {
"type": "object",
"required": [
"connectorId",
"type",
"templateId",
"fields"
],
"properties": {
"connectorId": {
"type": "integer",
"description": "Id of the connector."
},
"type": {
"type": "string",
"description": "Should be 'SERVICE_NOW'.\n"
},
"templateId": {
"type": "string",
"description": "This can be either \"None\" or can be one of the templateId's which are linked with this connector.\n"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Field key"
},
"value": {
"type": "string",
"description": "Field value"
},
"displayValue": {
"type": "string",
"description": "Label of the value"
}
}
}
}
}
},
"CreateTicketRequest_ServiceNow_ServiceRequest": {
"type": "object",
"required": [
"connectorId",
"type",
"dynamicFields"
],
"properties": {
"connectorId": {
"type": "integer",
"description": "Id of the connector."
},
"type": {
"type": "string",
"description": "Should be 'SNOW_SERVICE_REQUEST'.\n"
},
"dynamicFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Field key"
},
"value": {
"type": "string",
"description": "Field value"
},
"displayValue": {
"type": "string",
"description": "Label of the value"
}
}
}
}
}
},
"CreateTicketRequest_Jira": {
"type": "object",
"required": [
"connectorId",
"type",
"dynamicFields"
],
"properties": {
"connectorId": {
"type": "integer",
"description": "Id of the connector."
},
"type": {
"type": "string",
"description": "Should be 'JIRA'.\n"
},
"dynamicFields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Field key"
},
"value": {
"type": "string",
"description": "Field value"
},
"displayValue": {
"type": "string",
"description": "Label of the value"
}
}
}
}
}
},
"CreateTicketRequest_ServiceNow_Generic": {
"type": "object",
"required": [
"connectorId",
"type",
"fields"
],
"properties": {
"connectorId": {
"type": "integer",
"description": "Id of the connector."
},
"type": {
"type": "string",
"description": "Should be 'GENERIC_SNOW'.\n"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"description": "Field key"
},
"value": {
"type": "string",
"description": "Field value"
},
"displayValue": {
"type": "string",
"description": "Label of the value"
}
}
}
}
}
},
"PlaybookRuleDeserialized": {
"type": "object",
"required": [
"name",
"description",
"input",
"actionType",
"action",
"outputType",
"output"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"input": {
"type": "string",
"enum": [
"HOST",
"HOST_FINDING",
"APPLICATION",
"APPLICATION_FINDING"
]
},
"actionType": {
"type": "string",
"enum": [
"GROUP_MOVE",
"SEVERITY_CHANGE"
]
},
"action": {
"type": "object",
"description": "<p>Structure is dependent on the action type field.\nThe referenced structures can be found at the bottom of this document. </p>\n<ul>\n <li>ASSIGNMENT: PlaybookActionConfig_AssignUnassign</li>\n <li>UNASSIGNMENT: PlaybookActionConfig_AssignUnassign</li>\n <li>DUE_DATE_EXPLICIT: PlaybookActionConfig_Due_Date_EXPLICIT</li>\n <li>DUE_DATE_OFFSET: PlaybookActionConfig_Due_Date_OFFSET</li>\n <li>DUE_DATE_REMOVE: PlaybookActionConfig_Due_Date_REMOVE</li>\n <li>SEVERITY_CHANGE: PlaybookActionConfig_Severity_Change</li>\n <li>TAG_APPLY: PlaybookActionConfig_TagApplyUnapply</li>\n <li>TAG_UNAPPLY: PlaybookActionConfig_TagApplyUnapply</li>\n <li>ADD_TO_GROUP: PlaybookActionConfig_AddToGroup</li>\n <li>REMOVE_FROM_GROUP: PlaybookActionConfig_RemoveFromGroup</li>\n <li>UPDATE_BUSINESS_CRITICALITY: PlaybookActionConfig_AssetUpdate</li>\n <li>UPDATE_IP_ADDRESS_TYPE: PlaybookActionConfig_AssetUpdate</li>\n <li>REMEDIATION_SLA: PlaybookActionConfig_AssetUpdate</li>\n</ul>\n"
},
"outputType": {
"type": "string",
"enum": [
"EMAIL",
"NO_OUTPUT",
"WEBHOOK"
]
},
"output": {
"type": "object",
"description": "<p>Structure is dependent on the output type field.\nThe referenced structures can be found at the bottom of this document. </p>\n<ul>\n <li>EMAIL: PlaybookOutputConfig_Email</li>\n</ul>\n"
}
},
"example": {
"name": "Example Rule",
"description": "This rule will add hosts with IDs 1, 2, 3 to the group with ID 42",
"input": "HOST",
"actionType": "ADD_TO_GROUP",
"action": {
"targetGroupIds": [
42
],
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3"
}
]
}
},
"outputType": "EMAIL",
"output": {
"targetUsernames": [
"firstLastUsername"
],
"subject": "New set of hosts moved to group alpha",
"message": "Here to inform you the group move completed.",
"includeOperationalSummary": true
}
}
},
"PlaybookActionConfig_AssignUnassign": {
"type": "object",
"required": [
"filterRequest",
"userIds"
],
"properties": {
"filterRequest": {
"description": "Filter for finding assignment and unassignment job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"orWithPrevious",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values"
},
"exclusive": {
"type": "boolean"
},
"orWithPrevious": {
"description": "This optional field can be used to provide OR functionality for filters.",
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values"
}
}
}
}
}
},
"userIds": {
"description": "Collection of user Ids to assign/unassign findings to/from.",
"type": "array",
"items": {
"type": "integer"
}
}
}
},
"PlaybookActionConfig_Due_Date_Explicit": {
"type": "object",
"required": [
"dueDate",
"filterRequest"
],
"properties": {
"dueDate": {
"type": "string"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
},
"PlaybookActionConfig_Due_Date_Offset": {
"type": "object",
"required": [
"offset",
"filterRequest"
],
"properties": {
"offset": {
"type": "integer",
"description": "Offset is days\n"
},
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
},
"PlaybookActionConfig_Due_Date_Remove": {
"type": "object",
"required": [
"filterRequest"
],
"properties": {
"filterRequest": {
"description": "A series of filters that make up a complete filter to be used in a request",
"type": "object",
"required": [
"filters",
"sort"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
},
"projection": {
"type": "string"
},
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string"
},
"direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
}
}
},
"page": {
"type": "integer"
},
"size": {
"type": "integer"
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
],
"projection": "basic",
"sort": [
{
"field": "id",
"direction": "ASC"
}
],
"page": 0,
"size": 20
}
}
}
},
"PlaybookActionConfig_Severity_Change": {
"type": "object",
"required": [
"filterRequest",
"description",
"reason",
"severity"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"expireAfterDays": {
"type": "integer"
},
"description": {
"type": "string"
},
"reason": {
"type": "string"
},
"severity": {
"type": "string"
}
},
"example": {
"filterRequest": {
"filters": [
{
"field": "has_malware",
"exclusive": false,
"operator": "EXACT",
"value": true
}
]
},
"description": "Findings with Malware are more severe.",
"reason": "Severity should reflect malware accordingly.",
"severity": "9.1"
}
},
"PlaybookActionConfig_TagApplyUnapply": {
"type": "object",
"required": [
"filterRequest",
"tagId",
"isRemove"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"tagId": {
"description": "Tag being used in tagging/untagging",
"type": "integer"
},
"isRemove": {
"description": "True if the tag is being removed, false otherwise.",
"type": "boolean"
},
"publishTicketStats": {
"description": "To publish ticket description fields to the ticket which is associated with the tag.",
"type": "boolean"
}
},
"example": {
"tagId": 1,
"isRemove": false,
"filterRequest": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "EXACT",
"value": 1
}
]
}
}
},
"PlaybookActionConfig_AddToGroup": {
"type": "object",
"required": [
"filterRequest",
"targetGroupIds"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetGroupIds": {
"description": "List of groupIds where assets to be added or removed.",
"type": "array",
"items": {
"type": "integer"
}
}
}
},
"PlaybookActionConfig_RemoveFromGroup": {
"type": "object",
"required": [
"filterRequest",
"targetGroupIds"
],
"properties": {
"filterRequest": {
"description": "Filter for job requests",
"type": "object",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"exclusive",
"operator",
"value"
],
"properties": {
"field": {
"type": "string",
"description": "See filter endpoint for possible values\n"
},
"exclusive": {
"type": "boolean"
},
"operator": {
"type": "string",
"enum": [
"EXACT",
"IN",
"LIKE",
"WILDCARD",
"RANGE",
"CIDR"
]
},
"value": {
"type": "string",
"description": "See suggest endpoint for possible values\n"
}
}
}
}
},
"example": {
"filters": [
{
"field": "id",
"exclusive": false,
"operator": "IN",
"value": "1,2,3,4"
}
]
}
},
"targetGroupIds": {
"description": "List of groupIds where assets to be added or removed.",
"type": "array",
"items": {
"type": "integer"
}
}
}
},
"PlaybookOutputConfig_Email": {
"type": "object",
"required": [
"targetUsernames",
"subject",
"message",
"includeOperationalSummary"
],
"properties": {
"targetUsernames": {
"type": "array",
"items": {
"type": "string"
}
},
"subject": {
"type": "string"
},
"message": {
"type": "string"
},
"includeOperationalSummary": {
"type": "boolean"
}
}
},
"PlaybookOutputConfig_No_Output": {
"type": "object"
}
}
}