Skyhigh Security Tenant API
The Tenant API from Skyhigh Security — 4 operation(s) for tenant.
The Tenant API from Skyhigh Security — 4 operation(s) for tenant.
swagger: '2.0'
info:
title: Skyhigh Networks External APIs Tenant API
description: Security at high speed.
termsOfService: https://www.skyhighnetworks.com/terms/
contact:
name: API Support
email: support_skyhigh@mcafee.com
url: https://cloudsecurity.mcafee.com/cloud/en-us/forms/contact.html
license:
name: Creative Commons 4.0 International
url: http://creativecommons.org/licenses/by/4.0/
version: 1.0.0
host: www.myshn.net
basePath: /shnapi/rest/external/api
schemes:
- https
consumes:
- application/json
produces:
- application/json
tags:
- name: Tenant
paths:
/v1/modifyIncidents:
post:
summary: Modifies incidents
description: "For _**authenticated tenant**_, modifies a list of incidents by changing provided fields and values.\n ```\n URL example --\n https://www.myshn.net/shnapi/rest/external/api/v1/modifyIncidents\n ```\n ```\n Payload example --\n [\n {\n \"incidentId\":\"ANO-1234\",\n \"changeRequests\":{\n \"WORKFLOW_STATUS\":\"RESOLVED\"\n }\n },\n {\n {\n \"incidentId\":\"AUD-4567\",\n \"changeRequests\":{\n \"WORKFLOW_STATUS\":\"OPENED\"\n }\n },\n ...\n ]\n ```\n"
operationId: v1ModifyIncidents
security:
- internalApiKey: []
- tenantAuth:
- write:users
parameters:
- name: incidentChangeRequests
description: A list of incident change requests.
in: body
schema:
$ref: '#/definitions/IncidentChangeRequests'
tags:
- Tenant
responses:
default:
description: Response information. Check responseInfo --> error for any unexpected errors or warnings.
schema:
$ref: '#/definitions/ResponseInfo'
/v1/queryIncidentGroups:
post:
summary: Retrieves incident group names
description: "For _**authenticated tenant**_, retrieves a list of incident group IDs with corresponding incident group (incidentType.category.name).\n ```\n URL example --\n https://www.myshn.net/shnapi/rest/external/api/v1/queryIncidentGroups\n ```\n"
operationId: v1QueryIncidentGroups
security:
- internalApiKey: []
- tenantAuth:
- read:data
tags:
- Tenant
responses:
'200':
description: "```\n{\n \"headers\": {},\n \"body\": [\n \"Alert.Access.AnomalousAccessLocation\",\n \"Alert.Access.BruteForceLogin\",\n ...\n ],\n \"statusCode\": \"OK\",\n \"statusCodeValue\": 200\n}\n```\n"
/v1/queryIncidentInformationKeys:
post:
summary: Retrieves list of Incident.information keys
description: "For _**authenticated tenant**_, retrieves a list of keys to access values from the Incident.information map.\n ```\n URL example --\n https://www.myshn.net/shnapi/rest/external/api/v1/queryIncidentInformationKeys\n ```\n"
operationId: v1QueryIncidentInformationKeys
security:
- internalApiKey: []
- tenantAuth:
- read:data
tags:
- Tenant
responses:
'200':
description: "```\n{\n \"headers\": {},\n \"body\": [\n {\n \"type\": \"AuditViolation\",\n \"informationKeys\": {\n \"accountId\": \"account id that was being audited\",\n \"category\": \"category that the audit violation belongs to\",\n ...\n },\n }\n ]\n \"statusCode\": \"OK\",\n \"statusCodeValue\": 200\n}\n```\n"
/v1/queryIncidents:
post:
summary: Retrieves incidents
description: "For _**authenticated tenant**_, retrieves a list of incidents in ascending time modified order.\n ```\n URL example --\n https://www.myshn.net/shnapi/rest/external/api/v1/queryIncidents?limit=500\n ```\n ```\n Payload example --\n {\n \"startTime\":\"2016-12-15T00:00:00Z\",\n \"endTime\":\"2017-01-23T00:00:00Z\",\n \"createdSinceStartTime\":true,\n \"actorIds\":[\"name1@shn.net\",\"name2@gmail.com\"],\n \"serviceNames\":[\"Service1\",\"Service2\"],\n \"incidentCriteria\":{\n \"categories\":[\n {\"incidentType\":\"Threat\"},\n {\"incidentType\":\"Alert\",\"category\":\"Policy\"}\n ]\n }\n }\n ```\n"
operationId: v1QueryIncidents
security:
- internalApiKey: []
- tenantAuth:
- read:data
parameters:
- name: limit
description: Maximum number of items that will be returned within a single response. If value exceeds maximum '10000' it will not be flagged as an error but will also not increase results.
in: query
type: integer
format: int32
default: 100
minimum: 1
maximum: 10000
- name: criteria
description: Criteria to filter the response data with. Be sure to set required startTime as beginning time of incidents to retrieve. The criteria fields that can be used for this query are :== [ startTime | endTime | actorIds | serviceNames | incidentCriteria ]
in: body
schema:
$ref: '#/definitions/Criteria'
tags:
- Tenant
responses:
default:
description: Response information and an array of incidents in ascending time modified order starting at startTime within Criteria. Check responseInfo --> error for any unexpected errors or warnings. Use nextStartTime within responseInfo for continuation of this query in next request.
schema:
$ref: '#/definitions/IncidentResponse'
definitions:
Incident:
description: The incident.
type: object
properties:
activityNames:
description: List of names of activities that caused the incident.
type: array
items:
type: string
example: Upload Over Time
actorId:
description: Actor identifier that was involved in the incident which may either be user name or IP address (may be tokenized depending on product configuration); see actorIdType.
type: string
example: sam@corp.com
actorIdType:
description: Indicates if the actor identifier is user name or IP address.
type: string
enum:
- User
- IpAddress
incidentGroup:
description: Concatenated incidentType.category.name fields.
type: string
example: threat.insiderThreat.highVolumeDataExfiltration
incidentId:
description: Unique identifier for this particular incident. The incident ID prefixes :== [ ANO - sanctioned anomaly | APP - consolidated app violation | AUD - audit violation | CAP - cloud access policy violation | DLP - data loss policy violation | EPO - ePO violation | MAL - malware violation | SHW - shadow anomaly | THR - threat ]
type: string
example: ANO-1234
incidentRiskScore:
description: Risk score associated with the incident.
type: number
format: double
incidentRiskSeverity:
description: Indication showing amount of risk involved in the incident. Values ::= [ low | medium | high ]
type: string
information:
description: List of other key:value pairs that are associated with the incident. For a list of the keys, use the queryIncidentInformationKeys command.
type: array
items:
$ref: '#/definitions/KeyValue'
responses:
description: List of actionable responses for the incident.
type: array
items:
type: string
example: Quarantine
serviceNames:
description: List of names of services that were involved in the incident.
type: array
items:
type: string
example: google
status:
description: Current state of incident. Values ::= [ new | opened | false positive | resolved | suppressed | archived ]
type: string
timeCreated:
description: Time the incident was created. Format :== yyyy-mm-ddThh:mm:ss.sssZ
type: string
format: date-time
example: 2016-06-15 00:00:00+00:00
timeModified:
description: Time the incident was last modified. Start time and end time filters work with this modified time. Format :== yyyy-mm-ddThh:mm:ss.sssZ
type: string
format: date-time
example: 2016-06-15 00:00:00+00:00
KeyValue:
description: A pair of key and value (standard map entry).
type: object
properties:
key:
description: Name of value.
type: string
value:
description: Actual value.
type: object
IncidentCategory:
description: Identifies an incident group by incidentType and category for purposes of filtering. The incidentType is required. Category is optional, if not provided then all categories for incidentType will be included.
type: object
properties:
incidentType:
description: A type of incident. Case sensitive values ::= [ Alert | Threat ]
type: string
category:
description: Qualifying category within incidentType; categories are only valid for parenthesized incidentType. Case sensitive values ::= [ Access (Alert) | Admin (Alert) | Audit (Alert) | CompromisedAccount (Threat) | Data (Alert) | InsiderThreat (Threat) | Policy (Alert) | PrivilegeAccess (Threat) ]
type: string
IncidentResponse:
description: The response info and incidents.
type: object
properties:
responseInfo:
$ref: '#/definitions/ResponseInfo'
incidents:
type: array
items:
$ref: '#/definitions/Incident'
Criteria:
description: Request object informing system of request filtering criteria.
type: object
properties:
startTime:
description: Filter for starting date-time, inclusive. Default (empty) :== now. Format :== yyyy-mm-ddThh:mm:ss[Z([+-]hh:mm)]
type: string
format: date-time
example: 2016-06-15 00:00:00+00:00
endTime:
description: Filter for ending date-time, exclusive. Default (empty) :== now. Format :== yyyy-mm-ddThh:mm:ss[Z([+-]hh:mm)]
type: string
format: date-time
example: 2016-06-15 00:00:00-08:00
actorIdType:
description: Filter events based on the inclusive actor identifier type recorded. Case sensitive.
type: string
enum:
- USER
- IP_ADDRESS
actorIds:
description: List of inclusive actor identifiers which are either user name or IP address (may be tokenized depending on product configuration) that will be applied to limit response. Empty list implies all users and IP addresses for authenticated tenant.
type: array
items:
type: string
createdSinceStartTime:
description: Deprecated -- use timeSelection instead. If set true will compare startTime and endTime against the timeCreated of incidents. Otherwise, the default behavior is to compare against the timeModified of incidents.
type: boolean
deviceTypes:
description: Filter events based on selected list of inclusive device types. Default (empty) :== all. Case sensitive values :== [ AndroidMobile | BlackberryMobile | iPadMobile | iPhoneMobile | iPodMobile | JavaApplication | LinuxDesktop | MacDesktop | PlaystationGaming | SymbianMobile | WiiGaming | WindowsDesktop | WindowsPhoneMobile | Unknown ]
type: array
items:
type: string
incidentCriteria:
$ref: '#/definitions/IncidentCriteria'
permissionType:
description: Filter events based on whether the event was allowed or not. Case sensitive.
type: string
enum:
- ALLOWED
- DENIED
protocolTypes:
description: Filter events based on list of inclusive protocol used. The values for protocols are kept in a database table; here are some case sensitive values :== [ dns | http | https | ntp | Unknown ]
type: array
items:
type: string
serviceCategories:
description: Filter events based on list of inclusive service categories used. The values for categories are kept in a database table; here are some case sensitive values :== [ Backup and Archiving | Business Intelligence | Cloud Infrastructure | Cloud Storage | Collaboration | Content Sharing | CRM | Development | e-Commerce | ERP | Finance | Health Care | HR | IaaS Admin Console | IT Services | Legal | Logistics | Marketing | Media | Networking | Procurement | Project Management | Security | Service Desk and Support | Service Proxy | Social Media | Tracking | Uncategorized | Virtual Data Rooms | Web Application ]
type: array
items:
type: string
serviceNames:
description: List of inclusive service names that will be applied to restrict the response. Empty list implies all services of the authenticated tenant.
type: array
items:
type: string
serviceRiskMaximum:
description: Filter events with service risk scores at or greater than this value, inclusive. Higher values reflect more risk. Value must be >= serviceRiskMinimum.
type: integer
format: int32
default: 10
minimum: 0
maximum: 10
serviceRiskMinimum:
description: Filter events with service risk scores at or less than this value, inclusive. Higher values reflect more risk. Value must be <= serviceRiskMaximum.
type: integer
format: int32
default: 0
minimum: 0
maximum: 10
timesSelection:
description: The way to chose which times will be used for startTime and endTime. Default (empty) :== LAST_MODIFIED_AT.
type: string
enum:
- CREATED_AT
- LAST_MODIFIED_AT
default: LAST_MODIFIED_AT
uploadDataMinimum:
description: Filter events to those that have at least upload data of this minimum size, inclusive.
type: integer
format: int64
userRiskMaximum:
description: Filter events with user risk scores at or greater than this value, inclusive. Higher values reflect more risk. Value must be >= userRiskMinimum.
type: integer
format: int32
default: 10
minimum: 0
maximum: 10
userRiskMinimum:
description: Filter events with user risk scores at or less than this value, inclusive. Higher values reflect more risk. Value must be <= userRiskMaximum.
type: integer
format: int32
default: 0
minimum: 0
maximum: 10
IncidentChangeRequest:
description: An incident id with corresponding change requests.
type: object
properties:
incidentId:
description: Unique identifier for a particular incident. The incident ID prefixes :== [ ANO - Sanctioned anomaly | APP - consolidated app violation | AUD - audit violation | CAP - cloud access policy violation | DLP - data loss policy violation | EPO - ePO violation | MAL - malware violation | SHW - Shadow anomaly | THR - threat ]
type: string
example: ANO-1234
changeRequests:
description: A map of change requests with the key being field name and the value being new value to set on said field.
type: array
items:
$ref: '#/definitions/ChangeRequest'
example:
WORKFLOW_STATUS: RESOLVED
IncidentCriteria:
description: Request criteria informing system of inclusive incident filtering. Only one of the two properties (categories or incidentGroupIds) may be specified per request.
type: object
properties:
categories:
description: Inclusively filter incidents based on a incident group of incidentType and category.
type: array
items:
$ref: '#/definitions/IncidentCategory'
incidentGroupIds:
description: Inclusively filter incidents based on incident group IDs. IDs are used instead of names to allow for Skyhigh or tenants to uniquely identify incident groups. In order to get the current active incident group IDs for your account use the queryIncidentGroupIds API provided.
type: array
items:
type: integer
format: int32
product:
description: Inclusively filter incidents based on the product.
type: string
enum:
- SANCTIONED
- SHADOW
default: SANCTIONED
ResponseInfo:
description: Additional information regarding the response.
type: object
properties:
actualLimit:
description: Number of items being returned in this response.
type: integer
format: int32
apiElapsedMillis:
description: Number of milliseconds this response took to execute internally.
type: integer
format: int64
error:
$ref: '#/definitions/Error'
nextOffset:
description: Offset to be passed as parameter 'offset' to read next block of current query. If nextOffset set to '-1' then there are no more entries to be read. In time-based queries this field will be set to 'null'.
type: integer
format: int64
nextStartTime:
description: Starting time to be passed as Criteria 'startTime' to read next block continuing current query. This value will be set to 'null' if not a time-based query. Format :== yyyy-mm-ddThh:mm:ss[Z([+-]hh:mm)].
type: string
format: date-time
example: 2016-06-15 00:00:00+00:00
source:
description: An identifier of the host(s) that were involved in gathering the response. FOR DEBUG PURPOSES.
type: string
Error:
description: Unexpected error code & description.
type: object
properties:
code:
description: HTTP status codes :== 2xx success, 4xx client error, or 5xx server error.
type: integer
format: int32
minimum: 100
maximum: 600
example: 400
message:
description: English equivalence of HTTP status code used.
type: string
example: Invalid field
target:
description: Optional comma-separated field name(s) with issue to resolve.
type: string
example: fieldName
details:
description: Additional smaller errors that caused the main error.
type: array
items:
$ref: '#/definitions/Error'
IncidentChangeRequests:
description: A list of incident ids with corresponding change requests.
type: array
items:
$ref: '#/definitions/IncidentChangeRequest'
ChangeRequest:
description: A map where the keys are the names of the field to be modified by the corresponding new value provided. Values for changeable key names are :== [ WORKFLOW_STATUS ].
type: object
additionalProperties:
description: The new value to modify the field identified by the key.
type: string
securityDefinitions:
basicAuth:
type: basic
internalApiKey:
type: apiKey
name: accessToken
in: query
tenantAuth:
type: oauth2
authorizationUrl: http://com.shn/api/oauth/dialog
flow: implicit
scopes:
read:data: Grants read access to all URL data used by authorized tenant.
read:users: Grants read access to all users within authorized tenant.
write:users: Grants read/write access to all users within authorized tenant.