Cylance User API Guide
Cylance User API Guide
| |2
Contents
Application management...................................................................................7
Add an application................................................................................................................................................. 7
Edit an application..................................................................................................................................................8
Delete an application............................................................................................................................................. 9
Regenerate an application control........................................................................................................................ 9
API in audit logs..................................................................................................................................................... 9
RESTful API.................................................................................................... 10
Authentication.......................................................................................................................................................10
Authentication token.................................................................................................................................10
Generate the authentication and access tokens....................................................................................11
Token lifecycle.......................................................................................................................................... 13
Request and response model.................................................................................................................. 13
Service endpoint........................................................................................................................................13
Find file checksum....................................................................................................................................14
Threat classifications............................................................................................................................... 14
Scope values for authentication token................................................................................................... 17
Authorization.........................................................................................................................................................20
Access token.............................................................................................................................................21
Response status codes............................................................................................................................ 21
API rate limit......................................................................................................................................................... 22
API Tools...............................................................................................................................................................22
About device ID.................................................................................................................................................... 22
About zone ID....................................................................................................................................................... 23
User API..........................................................................................................24
Create user............................................................................................................................................................24
Get users............................................................................................................................................................... 26
Get user.................................................................................................................................................................28
Update user...........................................................................................................................................................30
Delete user............................................................................................................................................................ 31
Send invite email.................................................................................................................................................. 32
Send request password email.............................................................................................................................32
Device API...................................................................................................... 33
Get devices........................................................................................................................................................... 33
Get devices extended...........................................................................................................................................34
Get device count.................................................................................................................................................. 36
Get device............................................................................................................................................................. 37
Get device by MAC address................................................................................................................................38
Get device by hostname......................................................................................................................................40
Update device....................................................................................................................................................... 42
Get device threat.................................................................................................................................................. 43
| | iii
Update device threat............................................................................................................................................ 44
Get zone devices.................................................................................................................................................. 45
Get agent installer link.........................................................................................................................................46
Delete Devices...................................................................................................................................................... 48
Get Device Lifecycle Management settings.......................................................................................................49
Update Device Lifecycle Management Settings................................................................................................ 50
Exempt devices from the Device Lifecycle Management process.................................................................. 51
Include devices in the Device Lifecycle Management process........................................................................52
Reset the inactive period for a list of devices that are included in the Device Lifecycle Management
process.............................................................................................................................................................53
Policy API....................................................................................................... 58
Get policies........................................................................................................................................................... 58
Get policy.............................................................................................................................................................. 59
Create policy......................................................................................................................................................... 69
Update policy........................................................................................................................................................ 83
Delete policy....................................................................................................................................................... 102
Delete policies.................................................................................................................................................... 103
Threat API.....................................................................................................110
Get threats.......................................................................................................................................................... 110
Get threat............................................................................................................................................................ 111
Get threat devices.............................................................................................................................................. 113
Get threat download URL.................................................................................................................................. 115
| | iv
Get detections .csv............................................................................................................................................ 128
Get detections by severity.................................................................................................................................130
Update detection................................................................................................................................................ 131
Delete detection................................................................................................................................................. 132
Delete detections................................................................................................................................................133
| |v
Get retrieved file results.................................................................................................................................... 191
Request file retrieval from device.....................................................................................................................193
Check file retrieval status from device............................................................................................................ 195
| | vi
Application management
Console administrators can manage multiple API applications, including the access privileges to your
management console data and services such as CylancePROTECT Desktop and CylanceOPTICS.
An application acts as an integration point between the client system and the User API. Through the application,
the client system is granted temporary access to act upon resources. Actions will be limited by the scopes
associated to the application itself.
Add an application
A tenant can have up to 10 custom applications.
1. Log in to the management console as an administrator. Only administrators can create an application
integration.
2. On the menu bar, click Settings > Integrations.
3. Click Add Application.
4. Type an application name. This must be unique within your organization.
5. Select the access privileges for a console data type. Not selecting any checkboxes for a data type means the
application does not have access to that data type.
6. Click Save.
7. Copy and paste the application ID and application secret to your API application, or you can click OK to close
the dialog box. You can view the application ID and application secret from the integrations page.
Note: There are some API operations listed in the Add Application matrix that can be enabled (Global List -
Read and Modify; Policy - Write, Modify, and Delete) but are not available with the initial release. These API
operations are currently under development and will be available in a future release.
CylanceOPTICS The CylanceOPTICS detection events triggered by the context analysis engine
Detections (CAE) allow further automation of analyzing, triaging, and responding to
malicious or suspicious activity prevented or detected by CylanceOPTICS.
CylanceOPTICS Focus The CylanceOPTICS focus views retrieve an information trail starting with the
Views first event related to an artifact from an InstaQuery result or CylancePROTECT
Desktop event.
CylanceOPTICS The CylanceOPTICS InstaQuery allows searching for system artifacts stored
InstaQueries locally by CylanceOPTICS (for example, files, registry key persistence points,
processes, and so on).
| Application management | 7
Data Type Description
CylanceOPTICS Policies The CylanceOPTICS settings in a policy require the policy settings to also be
enabled.
CylanceOPTICS Rules The CylanceOPTICS detection rules help monitor an organization for security
threats or anomalous behavior.
Devices Devices are systems with a Cylance agent installed. You can get information
about devices in your organization. You can also update or remove devices from
your organization.
Global Lists Global lists include the safe list and the global quarantine list. Each global list
operation has its own set of required and optional request fields.
Packages Configuration The CylanceOPTICS packages are sent and stored on devices.
CylanceOPTICS packages are not sent to devices by default. Devices must
receive a command to download a package.
Policies Policies contain the protection settings applied to devices. Policies allow adding
and removing devices instead of needing to manually update each device when
you want to change the protection settings.
Threats Threat details provide information about a file as well as reference information
about why a file is considered safe or a threat. Use the threats request to get
this information.
Users Users have access to the data in the console, based on the role assigned to
them. For example, an administrator can see everything in the console, while a
user is limited to the zones to which the user is assigned.
Zones Each device belongs to at least one zone. Zones are similar to tags and assist in
organizing your devices.
Edit an application
1. Log in to the management console as an administrator. Only administrators can edit an application
integration.
2. On the menu bar, click Settings > Integrations.
3. Click the edit icon for the application you want to change.
4. Edit the privileges, then click Save Changes.
| Application management | 8
Delete an application
1. Log in to the management console as an administrator. Only administrators can delete an application
integration.
2. Select Settings > Integrations.
3. Click the remove icon for the application you want to remove.
4. Click Remove Application to confirm the deletion.
| Application management | 9
RESTful API
BlackBerry provides RESTful APIs for registered organizations to manage their resources. To access the User API
resources, the client will need to follow the authentication and authorization flow as defined below. This requires
the client to send a request to the Auth endpoint, which will return an access token that the client will use for
calling all other endpoints.
BlackBerry supports User API resources, including helping users troubleshoot User API requests. BlackBerry does
not write or train users on how to create scripts or code.
Authentication
During the step which a client system requests access prior to using BlackBerry resources, there is an
independent web API that will handle the authentication process and grant access to the client system. A token
based authentication approach is being taken as a means of data transportation between the parties. BlackBerry
has adopted JWT (RFC 7519) as the token format for its simplicity as well as its capabilities for digital signature.
The following actors exist in the authentication workflow:
• Authentication Token: Created and signed by the client system to perform an authentication request, it is in
this request where the application is indicated.
• Authentication Endpoint: Part of the BlackBerry Auth web API which will handle the authentication requests
coming from client systems, there will be a particular endpoint to handle JWT tokens.
• Access Token: If authentication is successful and the client system is granted access to the requested
application, a token representing this identity and some key attributes will be returned as a JWT token.
Authentication token
The authentication token contains the ID of the application to which a client system is requesting access. The
application contains two attributes: application ID and application secret, the latter is cryptographic nonce used
to sign the token, thus ensuring the authenticity of the caller and therefore, it must be shared between client and
server. The authentication endpoint has a mechanism to verify the signature and eventually proceed to grant
access to the application, if the client request is indeed allowed.
The client will create the authentication token by indicating the application ID as a claim and sign it using the
application secret. The authentication token must have the following claims, which are registered and conform to
the JWT standard:
Registered Claims
exp NumericDate Date and time when the token expires and is no longer valid for
processing. This is Unix epoch time in seconds.
The longest time-span honored by the service is 30 minutes from
the value specified in the iat claim. Specifying a longer time-
span will result in an HTTP 400 (Bad Request) response from the
server.
iat NumericDate Time when the token was issued, measured by Unix epoch time
in seconds.
| RESTful API | 10
Claim Type Description
iss StringOrUri Represents the principal issuing the token, which is http://
cylance.com.
jti String Unique ID for the token, which can be used to prevent reply
attacks.
sub StringOrUri Principal subject to the claim, which this would hold our
application ID.
Custom Claims
src String Include the source API in the token which allows you to
audit where API calls originated. this parameter validation
requirements:
• alphanumeric and double-byte characters are allowed
• should remove leading and trailing whitespaces
• needs to filter for potential XSS/injection attack strings and
other special characters
This field can be a source computer name, IP address, or an App
ID (Settings > Integrations).
For example:
Authentication token - adding required token claims
token.Claims.Add("iss", "http://cylance.com");
token.Claims.Add("iat", now.ToUnixTimestamp(););
token.Claims.Add("exp", now.AddMinutes(1).ToUnixTimestamp());
token.Claims.Add("sub", "k45f6798092hjdhs836h");
token.Claims.Add("jti", "k45f6798092hjdhs836h+d82c7976-
ef46-47b6-80ce-4dda3c91bba3");
token.Claims.Add("tid", "f00e9987-ee61-57b7-80cf-5eeb3d02ccb4”);
token.claims.Add(“src”, “Example_computer_name”)
| RESTful API | 11
Note:
• Copying the Python example from the PDF requires proper formatting in Python due to the extra line breaks
that can cause an error. Use the example in the HTML version of this guide.
• Example using C# is available upon request.
Python Example
jti_val = str(uuid.uuid4())
tid_val = "" # The tenant's unique identifier.
app_id = "" # The application's unique identifier.
app_secret = "" # The application's secret to sign the auth token with.
AUTH_URL = "https://protectapi.cylance.com/auth/v2/token"
claims = {
"exp": epoch_timeout,
"iat": epoch_time,
"iss": "http://cylance.com",
"sub": app_id,
"tid": tid_val,
"jti": jti_val
# The following is optional and is being noted here as an example on how one
can restrict
# the list of scopes being requested
# "scp": ["policy:create","policy:list","policy:read","policy:update"]
}
| RESTful API | 12
Token lifecycle
An authentication token should be used only once per request. This means the same token should not be usable
for more than one request to prevent impersonation attempts. The jti attribute uniquely identifies the token. It can
be used to keep track of all the tokens and prevent them from being reused. To ensure that the authentication
token can be used only once, an expiration is enforced on the token. This means the token is usable within a few
minutes or less.
Example https://protectapi.cylance.com/auth/v2/token
Request
{
"title": "Authorization Request",
"type": "object"
"properties": {
"auth_token": {
"type": ""
"description": "token representing
authorization request"
}
},
"request": ["auth_token"]
}
Service endpoint
The service endpoint address can contain a region code to identify the set of servers to which your organization
belongs. North America and US Government have a different format. See service endpoint column below for
examples:
| RESTful API | 13
Region Code Service Endpoint with Region Code
US Government us https://protectapi.us.cylance.com/
OS Steps
Windows CertUtil is a pre-installed Windows utility. This utility can provide the hash
checksum for a file.
1. Open the Command Prompt. For Windows 10, click the Start menu, type cmd,
then click Command Prompt.
2. Type CertUtil -hashfile pathtofile hashtype, then press Enter.
a. Replace <pathtofile> with the path to the file to check. Example: c:\test
\hello_world.py.
b. Replace <hashtype> with the hash format. Example: SHA256. Valid hash
formats include: MD2, MD4, MD5, SHA1, SHA256, SHA384, and SHA512.
c. Example command: CertUtil -hashfile c:\test\hello_world.py
SHA256
3. Copy the SHA256 hash.
Threat classifications
In the management console, there exists classification information for threats reported in your organization.
The following is a list of possible file status entries that may appear under classification for each threat, along
with a brief description of each entry.
File Unavailable: Due to an upload constraint (example: file is too large to upload), the file is unavailable for
analysis. If classification is necessary, contact BlackBerry Support for an alternate method to transfer the file for
analysis.
Unknown (blank entry): The file has not been analyzed by the BlackBerry Research team. Once the file is analyzed,
the classification will be updated with a new status.
Trusted - Local: The file has been analyzed by the BlackBerry Research team and has been deemed safe (not
malicious, not a PUP). A file identified as Trusted - Local can be globally safe listed so that the file will be allowed
to execute and not generate any additional alerts if found on other devices within your organization. The reason
| RESTful API | 14
for the "Local" designation is due to the fact that the file did not come from a trusted source (such as Microsoft or
other trusted installers) and therefore cannot be added to our trusted cloud repository.
PUP: The file has been identified as a Potentially Unwanted Program (PUP). This indicates that the program may
be unwanted, despite the possibility that users consented to download it. Some PUP's may be permitted to run
on a limited set of systems in your organization (example: a VNC application allowed to run on Domain Admin
devices). A console administrator can choose to waive or block PUP's on a per device basis or globally quarantine
or safe list the file based on company policies. Depending on how much analysis can be performed against a PUP,
further subclassification may be possible. Those subclasses are shown below and will aid an administrator in
determining whether a particular PUP should be blocked or allowed to run.
Game These are technologies that create an interactive environment Steam Games,
with which a player can play. League of Legends
Generic This is any PUP that does not fit into an existing category.
HackingTool These are technologies that are designed to assist hacking Cobalt Strike,
attempts. MetaSpl0it
Scripting Tool This is any script that is able to run as if it were an executable. AutoIT, py2exe
Toolbar These are technologies that place additional buttons or input Nasdaq Toolbar,
boxes on-screen within a UI. Bring Me Sports
Other This is a category for things that don't fit anything else, but are
still PUP's. There are a lot of different PUP's, most of which are
not malicious but serveral that should still be brought to the
attention of the System Administrators through our product.
Usually because they have potentially negative uses or negatively
impact a system or network.
Dual Use: Dual Use indicates the file can be used for malicious and non-malicious purposes. Caution should be
used when allowing the use of these files in your organization.
Crack These are technologies that can alter (or crack) another
application in order to bypass licensing limitations or Digital
Rights Management (DRM) protection.
| RESTful API | 15
Subclass Definition Examples
Generic This is any Dual Use tool that does not fit into an existing
sublcass.
MonitoringTool These are technologies that track a user's online activities Veriato 360, Refog
without awareness of the user by logging and possibly Keylogger
transmitting logs of one or more of the following:
• User keystrokes
• Email messages
• Chat and instant messaging
• Web browsing activity
• Screenshot captures
• Application usage
Pass Crack These are technologies that can reveal a password or other I0phtcrack, Cain
sensitive user credentials either by cryptographically reversing & Abel
passwords or by revealing stored passwords.
RemoteAccess These are technologies that can access another system remotely Putty, PsExec,
and administer commands on the remote system, or monitor TeamViewer
user activities without user notification or consent.
Tool These are programs that offer administrative features but can be Nmap, Nessus, P0f
used to facilitate attacks or intrusions.
Malware: The BlackBerry Research team has definitively identified the file as a piece of malware; the file should be
removed or quarantined as soon as possible. Verified malware can be further subclassified.
Backdoor This is malware that provides unauthorized access to a system, Back Orifice,
bypassing security measures. Eleanor
Bot This is malware that connects to a central Command and Control QBot, Koobface
(C&C) botnet server.
Downloader This is malware that downloads data to the host system. Staged-Downloader
| RESTful API | 16
Subclass Definition Examples
Generic This is any malware that does not fit into an existing category. —
InfoStealer This is malware that records login credentials and/or other Snifula
sensitive information.
Parasitic These are parasitic viruses, also known as file viruses, spread —
by attaching themselves to programs. Typically when you start
a program infected with a parasitic virus, the virus code is run.
To hide itself, the virus then passes control back to the original
program.
Ransom This is malware that restricts access to system or files and CryptoLocker,
demands payment for removal of restriction, thereby holding the CryptoWall
system for ransom.
Remnant This is any file that has malware remnants after removal —
attempts.
Rootkit This is malware that enables access to a computer while TDL, Zero Access
shielding itself or other files to avoid detection and/or removal by Rootkit
administrators or security technologies.
Virus This is malware that propogates by inserting or appending itself Sality, Virut
to other files.
Worm This is malware that propagates by copying itself to another Code Red, Stuxnet
device.
Scope Description
| RESTful API | 17
Scope Description
globallist:create Add a new entry to the global quarantine list or global safe list.
globallist:delete Remove a convicted threat to either the global quarantine list or the global safe
list.
| RESTful API | 18
Scope Description
| RESTful API | 19
Scope Description
Authorization
In response to the authentication request, the client will receive a response that contains at least the access
token. The access token will contain the scopes that will dictate what can or cannot be done. This token is signed
by the server and the client will merely echo it on every request as it tries to access resources.
The access token represents the identity of the requester as well as some attributes like scopes. This token will
have an expiration and should be sent on every request in the authorization request header. Failing to do so will
result in an HTTP/1.1 401 unauthorized response. Should the token be provided and prove to be legitimate but
the server finds the action the caller is trying to attempt is not allowed (found in the scopes granted), an HTTP/1.1
403 forbidden will be returned.
| RESTful API | 20
Access token
The access token represents a grant to access BlackBerry resources. It contains information about the identity
of the caller (application) as well as control information form the token itself, for instance, date it was issued
and expiration. This token is also responsible for holding all scopes that would be used by our system to validate
actions attempted to be taken against BlackBerry resources.
There is an expiration associated to this token. The expiration time will be set during token creation on the server
side. After the token expires, the server will respond with HTTP/1.1 401 unauthorized indicating to the caller to
authenticate again with a new access token.
200 - OK This was a successful call and operation. The response payload will be JSON,
structured according to the nature of the request.
400 - Bad Request There was a problem with the structure of the request or the payload. If
determinable, the response payload will identify the failure in the request. A
common case of this type of error is malformed JSON in the request body. A
JSON validator can be used to troubleshoot these issues.
401 - Unauthorized Invalid credentials were passed or some other failure in authentication.
403 - Forbidden The request has been successfully authenticated, but authorization to access the
requested resource was not granted.
404 - Not Found A request was made for a resource that doesn't exist. Common causes are either
an improperly formed URL or an invalid API key.
409 - Conflict A request was made to create or update an aspect of the resource that conflicts
with another. The most common reason for this code is a tenant name or user
email that is already in use.
429 - Too Many Requests Too many requests were made within a given amount of time. This is a rate
limiting feature to stop flooding the server with requests. See API Rate Limit below
for more information.
500 - Internal Server Error This is a catch-all code response for any unhandled error that has occurred on the
server. Contact BlackBerry Support for help with this issue.
501 - Not Implemented A request was made against a resource with an operation that has yet to be
implemented. Such operations should be identified accordingly in documentation.
Other Contact BlackBerry Support if you encounter any status codes that are not on this
list.
| RESTful API | 21
API rate limit
The rate limiting for API endpoints is 100,000 requests per day, or about 20 requests per second. If a tenant
exceeds these limits, they will receive a 429 error (too many requests). If you encounter a 429 error, wait 60
seconds before retrying the API request.
The purpose of a rate limit is to maintain a good user experience for all API users. Without a rate limit,
API endpoints can flood the server with requests that overwhelm the system and negatively impact all users.
API Tools
The following is information about some REST and JSON tools that might help you when using the User APIs.
BlackBerry supports User API resources, including helping users troubleshoot User API requests. BlackBerry does
not write or train users on how to create scripts or code (like using Python).
Tool Description
REST clients Although the intent of the User API is to facilitate easy integration of BlackBerry
and other systems through the organization's developed code, using or testing
the User API doesn't require any specific programming knowledge. Free tools
are available for download that allow you to make ad hoc REST requests to the
User API. Some examples are:
• Fiddler: Free web debugging proxy. Also has an easy-to-use composer and
replay features for HTTP requests.
• Postman: Google Chrome browser extension designed for testing REST
APIs. There are also native Windows, macOS, and Linux clients available.
JSON validators User API requests and responses use JSON for the body payload. If the body
used in the request doesn't conform to proper JSON formatting, it will result in
an HTTP response of 400 - Bad Request. To ensure that your JSON is properly
formatted, use one of these free, popular tools:
• JSON Formatter and Validator: Online, simple interface with options to define
and transform the output according to the desired level of white space.
Provides highlights and informative descriptions of errors.
• Notepad++: Freeware text editor. Supports a wide variety of plug-in extensions,
including various JSON formatting and validation tools (like JSTool and
JSON Viewer).
About device ID
When attempting to query a CylanceOPTICS API call that utilizes a device ID value, be aware of the following:
See the following table to reference the format for the CylanceOPTICS API device ID value:
| RESTful API | 22
Product Format example
About zone ID
When attempting to query a CylanceOPTICS API call that utilizes a zone ID value, be aware of the following:
See the following table to reference the CylanceOPTICS API zone ID value:
| RESTful API | 23
User API
Users have access to the management console and what they can view depends on the permissions they have.
Create user
Create a new console user. This requires a unique email address for the user being created.
Example https://protectapi.cylance.com/users/v2
Request
{
"email": "testuser@email.com",
"user_role": "00000000-0000-0000-0000-000000000001",
"first_name": "Test",
"last_name": "User",
"zones": [
{
"id": "d27ff5c4-5c0d-4f56-a00d-a1fb297e440e",
"role_type": "00000000-0000-0000-0000-000000000002"
}
]
}
Response
email (Required) This is the user's email address, which must be unique.
| User API | 24
Field Name Description
first_name (Optional) This is the user's first name, which if specified, must be less than 64
characters.
last_name (Optional) This is the user's last name, which if specified, must be less than 64
characters.
zones These are the zones that the user has access to as an array of elements:
• id: Unique identifier for the zone
• role_type: User's role for this particular zone
• Zone Manager: 00000000-0000-0000-0000-000000000001
• User: 00000000-0000-0000-0000-000000000002
If the user is an Administrator, the zones array is not required.
To create a zone manager, set the user_role to User and assign a zone or zones to the user via the zones
parameter. Setting the user_role to Read-Only and using the zones parameter will result in a bad request error.
Note that if you are creating a Zone Manager, the 'email' and 'user_role' parameters are mandatory.
date_created This is the date and time (in UTC) the console user was created.
date_email_confirmed This is the date and time (in UTC) when the user confirmed the email provided.
This should be null because the user account was recently created.
date_last_login This is the date and time (in UTC) the user last logged in to the console. This
should be null because the user account was recently created.
date_modified This is the date and time (in UTC) the console user information was last updated.
default_zone_role_name This is the name of the role for the user in the zone.
default_zone_role_type This is the unique identifier for the user's default role when assigned to a zone:
• None: 00000000-0000-0000-0000-000000000000
• Zone Manager: 00000000-0000-0000-0000-000000000001
• User: 00000000-0000-0000-0000-000000000002
| User API | 25
Field Name Description
has_logged_in This should be false because the user account was recently created.
role_type This is the unique identifier defining the user's role in the console:
• User: 00000000-0000-0000-0000-000000000001
• Administrator: 00000000-0000-0000-0000-000000000002
• Read-Only: 00000000-0000-0000-0000-000000000003
• Zone Manager: 00000000-0000-0000-0000-000000000004
To create a Zone Manager, set the user_role to User and assign a zone or zones to
the user via the zones parameter. Setting the user_role to Read-Only and using the
zones parameter will result in a bad request error.
zones These are the zones that the user has access to as an array of elements:
• id: Unique identifier for the zone
• role_type: User's role for this particular zone
• None: 00000000-0000-0000-0000-000000000000
• Zone Manager: 00000000-0000-0000-0000-000000000001
• User: 00000000-0000-0000-0000-000000000002
• role_name: Name of the user's role in the zone
If the user is an administrator, the zones array will display empty brackets [ ].
Get users
Request a page with a list of console user resources belonging to a tenant, sorted by the created date, in
descending order (most recent user registered listed first). The page number and page size parameters are
optional. When the values are not specified, the default values are 1 and 10 respectively. The maximum page size
that can be specified is 200 entries per page.
| User API | 26
Request headers • Accept: application/json
• Authorization: Bearer JWT Token returned by Auth API with the user:list scope
encoded
Request
None
Response
date_created This is the date and time (in UTC) the console user was created.
date_email_confirmed This is the date and time (in UTC) when the user confirmed the email provided.
date_last_login This is the date and time (in UTC) the user last logged in to the console.
date_modified This is the date and time (in UTC) the console user information was last updated.
default_zone_role_name This is the name of the role for the user in the zone.
default_zone_role_type This is the unique identifier for the user's default role when assigned to a zone.
• None: 00000000-0000-0000-0000-000000000000
• Zone Manager: 00000000-0000-0000-0000-000000000001
• User: 00000000-0000-0000-0000-000000000002
has_logged_in This is true if the user has successfully logged in to the console.
role_type This is the unique identifier defining the user's role in the console.
• User: 00000000-0000-0000-0000-000000000001
• Administrator: 00000000-0000-0000-0000-000000000002
• Read-Only: 00000000-0000-0000-0000-000000000003
• Zone Manager: 00000000-0000-0000-0000-000000000004
| User API | 27
Field Name Description
total_pages This is the total number of pages that can be retrieved, based on the page size
specified.
zones These are the zones that the user has access to as an array of elements.
• id: Unique identifier for the zone
• role_type: User's role for this particular zone
• None: 00000000-0000-0000-0000-000000000000
• Zone Manager: 00000000-0000-0000-0000-000000000001
• User: 00000000-0000-0000-0000-000000000002
• role_name: Name of the user's role in this zone
Get user
Request information for a specific console user resource belonging to a tenant.
Request
None
Response
| User API | 28
Response JSON schema
date_created This is the date and time (in UTC) the console user was created.
date_email_confirmed This is the date and time (in UTC) when the user confirmed the email provided.
date_last_login This is the date and time (in UTC) the user last logged in to the console.
date_modified This is the date and time (in UTC) the console user information was last updated.
default_zone_role_name This is the name of the role for the user in the zone.
default_zone_role_type This is the unique identifier for the user's default role when assigned to a zone.
• None: 00000000-0000-0000-0000-000000000000
• Zone Manager: 00000000-0000-0000-0000-000000000001
• User: 00000000-0000-0000-0000-000000000002
has_logged_in This is true if the user has successfully logged in to the console.
role_type This is the unique identifier defining the user's role in the console.
• User: 00000000-0000-0000-0000-000000000001
• Administrator: 00000000-0000-0000-0000-000000000002
• Read-Only: 00000000-0000-0000-0000-000000000003
• Zone Manager: 00000000-0000-0000-0000-000000000004
total_pages This is the total number of pages that can be retrieved, based on the page size
specified.
zones These are the zones that the user has access to as an array of elements.
• id: unique identifier for the zone
• role_type: user's role for this particular zone
• None: 00000000-0000-0000-0000-000000000000
• Zone Manager: 00000000-0000-0000-0000-000000000001
• User: 00000000-0000-0000-0000-000000000002
• role_name: Name of the user's role in this zone.
| User API | 29
Update user
Update an existing console user resource.
Request
{
"email": "testuser@email.com",
"user_role": "00000000-0000-0000-0000-000000000001",
"first_name": "Test",
"last_name": "User",
"zones": [
{
"id": "d27ff5c4-5c0d-4f56-a00d-a1fb297e440e",
"role_type": "00000000-0000-0000-0000-000000000002"
}
]
}
Response
| User API | 30
Field Name Description
user_role This is the unique identifier defining the user's role in the console.
• User: 00000000-0000-0000-0000-000000000001
• Administrator: 00000000-0000-0000-0000-000000000002
• Read-Only: 00000000-0000-0000-0000-000000000003
zones These are the zones to which the user has access as an array of elements.
• id: Unique identifier for the zone
• role_type: User's role for this particular zone
• None: 00000000-0000-0000-0000-000000000000
• Zone Manager: 00000000-0000-0000-0000-000000000001
• User: 00000000-0000-0000-0000-000000000002
Note that administrators have zone management privileges in all zones; trying to
use the zones parameter to explicitly set an administrator to be a Zone Manager
will result in an error.
If you are updating a user to a Zone Manager, the zones array is required.
To update a zone manager or change a user to a zone manager, set the user_role to User and set the zones
role_type to Zone Manager.
Note that if you are updating a user to a Zone Manager, the 'email' and 'user_role' parameters are mandatory.
Delete user
Delete an existing console user resource.
Request headers Authorization: Bearer JWT Token returned by Auth API with the user:delete scope
encoded
Request
None
Response
| User API | 31
Send invite email
Request the console login invitation email to be resent to a user who has not logged into the console yet. The user
must already be created, either using the create user API or using the console.
Example https://protectapi.cylance.com/users/v2/username@email.com/invite
Request headers Authorization: Bearer JWT Token returned by Auth API with the user:read scope
encoded
Request
None
Response
Example https://protectapi.cylance.com/users/v2/username@email.com/resetpassword
Request headers Authorization: Bearer JWT Token returned by Auth API with the user:read scope
encoded
Request
None
Response
| User API | 32
Device API
Devices are endpoints with Cylance applications installed.
Get devices
Request a page with a list of device resources belonging to a tenant. The page number and page size parameters
are optional. When the values are not specified, these default to 1 and 100 respectively. The maximum page size
that can be specified is 10000 entries per page.
Request
None
Response
created This is the date and time (in UTC) when the device record was created.
days_to_deletion This is the number of days before a device will be deleted. Enable automated
device lifecycle management and remove inactive devices must both be enabled
under device management. If enable automated lifecycle management is enabled
and remove inactive devices is disabled, this field displays Unknown.
deviceCarrier This is the name of the device's service provider (for example, AT&T or Verizon).
deviceType This is the the type of device (for example, desktop or mobile).
| Device API | 33
Field Name Description
dlcm_status This is the device lifecycle management status of the device, which shows the
device as included or excluded from device lifecycle management. If device
lifecycle management is disabled, the status shows as unknown.
modelOfDevice This is the device model (for example, iPhone or Pixel 3 XL).
osDescription This is the operating system running on the device (for example, Windows 10 or
iOS 12.3.1).
quarantinedThreatCount This is the total number of quarantined threats for the device.
safeStatus This is the status of the device (for example, safe or risk).
Request
None
| Device API | 34
Response
agent_version This is the CylancePROTECT Desktop agent version installed on the device.
background_detection If this is true, the agent is currently running a background threat detection scan.
date_first_registered This is the date and time (in UTC) when the device record was created.
date_offline This is the date and time (in UTC) when the device last communicated with the
console.
days_to_deletion This is the number of days before a device will be deleted. Enable automated
device lifecycle management and remove inactive devices must both be enabled
under device management. If enable automated lifecycle management is enabled
and remove inactive devices is disabled, this field displays Unknown.
dlcm_status This is the device lifecycle management status of the device, which shows the
device as included or excluded from device lifecycle management. If device
lifecycle management is disabled, the status shows as unknown.
os_kernel_version This is the Kernel version for the operating system on the device.
products This is the name of the product installed on the device, the version number, and
status.
| Device API | 35
Field Name Description
state This signals whether the device is online or offline. If device lifecycle management
is enabled, the state could be inactive.
total_pages This is the otal number of pages that can be retrieved, based on the page size
specified.
Example https://protectapi.cylance.com/devices/v2/products
Request
None
Response
| Device API | 36
Get device
Request a specific device resource belonging to a tenant.
Example https://protectapi.cylance.com/devices/v2/cd5ee717-
d6aa-469f-8f7e-7ac6d69a4084
Request
None
Response
agent_version This is the CylancePROTECT Desktop agent version installed on the device.
background_detection If this is true, the agent is currently running a background threat detection scan.
date_first_registered This is the date and time (in UTC) when the device record was created.
date_last_modified This is the date and time (in UTC) when the device record was last modified.
date_offline This is the date and time (in UTC) when the device last communicated with the
console.
days_to_deletion This is the number of days before a device will be deleted. Enable automated
device lifecycle management and remove inactive devices must both be enabled
under device management. If enable automated lifecycle management is enabled
and remove inactive devices is disabled, this field displays Unknown.
distinguished_name This is the unique identifier for the device in the Lightweight Directory Access
Protocol (LDAP).
| Device API | 37
Field Name Description
dlcm_status This is the device lifecycle management status of the device, which shows the
device as included or excluded from device lifecycle management. If device
lifecycle management is disabled, the status shows as unknown.
last_logged_in_user This is the ID of the user who logged in last on to the device.
os_kernel_version This is the Kernel version for the operating system on the device.
products This is the name of the product installed on the device, the version number, and
status.
state This is the device is online or offline. If device lifecycle management is enabled,
the state could be inactive.
update_available If this is true, an agent update is available for the device based on the update type
(Phase).
Example https://protectapi.cylance.com/devices/v2/macaddress/28-F1-0E-45-AB-54
| Device API | 38
Request headers • Accept: application/json
• Authorization: Bearer JWT Token returned by Auth API with the device:read scope
encoded
Request
None
Response
agent_version This is the CylancePROTECT Desktop agent version installed on the device.
background_detection If this is true, the agent is currently running a background threat detection scan.
date_first_registered This is the date and time (in UTC) when the device record was created.
date_last_modified This is the date and time (in UTC) when the device record was last modified.
date_offline This is the date and time (in UTC) when the device last communicated with the
console.
days_to_deletion This is the number of days before a device will be deleted. Enable automated
device lifecycle management and remove inactive devices must both be enabled
under device management. If enable automated lifecycle management is enabled
and remove inactive devices is disabled, this field displays Unknown.
distinguished_name This is the unique identifier for the device in the Lightweight Directory Access
Protocol (LDAP).
dlcm_status This is the device lifecycle management status of the device, which shows the
device as included or excluded from device lifecycle management. If device
lifecycle management is disabled, the status shows as unknown.
last_logged_in_user This is the ID of the user who logged in last on to the device.
| Device API | 39
Field Name Description
os_kernel_version This is the Kernel version for the operating system on the device.
products This is the name of the product installed on the device, the version number, and
status.
state This is the device is online or offline. If device lifecycle management is enabled,
the state could be inactive.
update_available If this is true, an agent update is available for the device based on the update type
(Phase).
Example https://protectapi.cylance.com/devices/v2/hostname/User-Laptop-A123
Request
None
Response
| Device API | 40
Response JSON schema
agent_version This is the CylancePROTECT Desktop agent version installed on the device.
background_detection If this is true, the agent is currently running a background threat detection scan.
date_first_registered This is the date and time (in UTC) when the device record was created.
date_last_modified This is the date and time (in UTC) when the device record was last modified.
date_offline This is the date and time (in UTC) when the device last communicated with the
console.
days_to_deletion This is the number of days before a device will be deleted. Enable automated
device lifecycle management and remove inactive devices must both be enabled
under device management. If enable automated lifecycle management is enabled
and remove inactive devices is disabled, this field displays Unknown.
distinguished_name This is the unique identifier for the device in the Lightweight Directory Access
Protocol (LDAP).
dlcm_status This is the device lifecycle management status of the device, which shows the
device as included or excluded from device lifecycle management. If device
lifecycle management is disabled, the status shows as unknown.
last_logged_in_user This is the ID of the user who logged in last on to the device.
os_kernel_version This is the Kernel version for the operating system on the device.
products This is the name of the product installed on the device, the version number, and
status. The version number is major, minor, and build number to match the data
displayed in the console.
| Device API | 41
Field Name Description
state State of the device (for example, online or offline). If device lifecycle management
is enabled, the state could be inactive.
update_available If this is true, an agent update is available for the device based on the update type
(phase).
Update device
Update a specific device resource belonging to a tenant.
Example https://protectapi.cylance.com/devices/v2/e378dacb-9324-453a-
b8c6-5a8406952195
Request
{
"name": "User-Laptop-A123",
"policy_id": "d5c6d6a3-0599-4fb5-96bc-0fdc7eacb6ea",
"add_zone_ids": [
"d27ff5c4-5c0d-4f56-a00d-a1fb297e440e"
],
"remove_zone_ids": [
"639db7f7-c7f9-488d-b834-41c4522b32b6"
]
}
Response
| Device API | 42
Request JSON schema
add_zone_ids This is the list of zone identifiers which the device is to be assigned.
policy_id This is the unique identifier for the policy to assign to the device (specify as null or
leave the string empty to remove the current policy from the device).
remove_zone_ids This is the list of zone identifiers from which the device is to be removed.
Example https://protectapi.cylance.com/devices/v2/e378dacb-9324-453a-
b8c6-5a8406952195/threats?page=1&page_size=100
Request
None
Response
| Device API | 43
Field Name Description
cylance_score This is the Cylance score assigned to the threat. The User API returns a raw score
of -1 to 1. Threats have a negative raw score, while safe files have a positive raw
score. The management console only displays threats and uses a score of 1 to
100. A raw score of -1 equals a console score of 100.
date_found This is the date and time (in UTC) when the threat was found on the device.
file_path This is the file path to the threat, which includes the file name.
file_status This is the current status of the file on the device, which can be one of the
following:
• Default (0) (Unsafe)
• Quarantined (1)
• Whitelisted (2)
• Suspicious (3) (Abnormal)
• File Removed (4) (Delete) - The file was removed from the console.
• Corrupt (5) - The file could not be scanned. The file could be corrupt or
malformed.
total_pages This is the total number of pages that can be retrieved, based on the page size
specified.
Example https://protectapi.cylance.com/devices/v2/e378dacb-9324-453a-
b8c6-5a8406952195/threats
| Device API | 44
Method HTTP/1.1 POST
Request
{
"threat_id":
"bf17366ee3bb8068a9ad70fc9e68496e7e311a055bf4ffeeff53cc5d29ccce52",
"event": "Quarantine"
}
Response
event This is the requested status update for the convicted threat, which can be either
quarantine or waive
Example https://protectapi.cylance.com/devices/v2/d27ff5c4-5c0d-4f56-a00d-
a1fb297e440e/devices?page=1&page_size=100
| Device API | 45
Request headers • Accept: application/json
• Authorization: Bearer JWT Token returned by Auth API with the device:list scope
encoded
Request
None
Response
policy_id This is the unique identifier for the policy that the policy is currently assigned to
(can be assigned as null).
total_pages This is the total number of pages that can be retrieved, based on the page size
specified.
| Device API | 46
• If the API call passes in product=ProtectDriver then the build parameter must be the full agent version and
the path to the Protect Driver is returned. For example, this will return the path the Protect Driver for version
3.0.1000:
/devices/v2/installer?
product=ProtectDriver&os=Rhel8&architecture=RedHatEnterprise8&build=3.0.1000
Service /devices/v2/installer?product=p&os=o&package=k&architecture=a&build=v
endpoint
Optional
Product OS Package Architecture Build
query string
(optional)
parameters
• Protect • AmazonLinux1• Exe • X86 Full version
• Optics • AmazonLinux2 (Windows • X64 number of the
• CentOS7 only) • AmazonLinux1agent, such
CylanceOPTICS
does not • Linux • Msi • AmazonLinux2as 2.1.1590.
(Windows • CentOS6
support Linux. Use Linux only)
as the OS • CentOS6UI
• Dmg
family for • CentOS7
(macOS only)
CentOS6. • CentOS7UI
• Pkg
• Mac (macOS only) • RedHatEnterprise8
• Rhel8 • RedHatEnterprise8UI
• Suse11 • Suse11
• Suse12 • Suse11UI
• Ubuntu1404 • Suse12
• Ubuntu1604 • Suse12UI
• Ubuntu1804 • Ubuntu1404
• Windows • Ubuntu1404UI
• Ubuntu1604
• Ubuntu1604UI
• Ubuntu1804
• Ubuntu1804UI
Example https://protectapi.cylance.com/devices/v2/installer?
product=Protect&os=Windows&package=Msi&architecture=X64&build=1510
Response
| Device API | 47
Response JSON schema
url This is the URL you can use to download the requested agent installer. The
API call only provides the URL, it does not download the installer for you.
Delete Devices
Delete one or more devices from a tenant. This is an asynchronous operation and could take up to two hours to
delete the devices. If a callback URL is provided, the callback will occur when deletion is complete.
Example https://protectapi.cylance.com/devices/v2
Request
{
"device_ids":
[
"e378dacb-9324-453a-b8c6-5a8406952195",
"a358daac-2394-653a-a9c2-8a8408972163",
"b248cbba-6367-821b-a7a2-4a3200972163"
],
"callback_url": "https://exampleurl.com"
}
Response
| Device API | 48
Request JSON schema
device_ids These are the unique identifiers for the devices to be deleted:
• All device IDs should be well formed GUIDs. Non-conforming values will be
removed from the request.
• The maximum number of device IDs per request is 20.
Not all clients support sending a DELETE request. For this instance, use the following POST instead.
• Service Endpoint: /devices/v2/deleteExample: https://protectapi.cylance.com/devices/v2/delete
• Method: HTTP/1.1 POST
Delete this text and replace it with your own content.
Example https://protectapi.cylance.com/devices/v2/inactive/settings
| Device API | 49
Request
None
Response
inactiveBeforeRemoved Required. The number of days before inactive devices are removed. The
valid value is from 7 to 180 days. The default value is 30 days.
Example https://protectapi.cylance.com/devices/v2/inactive/settings
Request
{
"enableAutomatedDLCM": boolean,
"offlineBeforeInactive": integer,
"enableRemoveInactiveDevice": boolean,
"inactiveBeforeRemoved": integer
| Device API | 50
}
Response
inactiveBeforeRemoved Required. The number of days before inactive devices are removed. The
valid value is from 7 to 180 days. The default value is 30 days.
Example https://protectapi.cylance.com/devices/v2/inactive/exemptedDevices
Request
{
"string:{device guid}"
}
| Device API | 51
Response
device guid Required. The list of device identifiers belonging to a tenant. Maximum size is
1000. You can get the device guid by invoking the Get Device API.
Example https://protectapi.cylance.com/devices/v2/inactive/includedDevices
Request
{
"string:{device guid}"
}
Response
device guid Required. The list of device identifiers belonging to a tenant. The maximum size is
1000. You can get the device guid by invoking the Get Device API.
| Device API | 52
Reset the inactive period for a list of devices that are included in the
Device Lifecycle Management process
Allows a caller to reset the inactive period for a list of devices that are included in the Device Lifecycle
Management process.
Example https://protectapi.cylance.com/devices/v2/inactive/resetDevices
Request
{
"string:{device guid}"
}
Response
device guid Required. The list of device identifiers belonging to a tenant. The maximum size is
1000. You can get the device guid by invoking the Get Device API.
| Device API | 53
Global list API
The global list allows a file to be marked for quarantine or to allow those files on all devices in the organization.
Example https://protectapi.cylance.com/globallists/v2?listTypeId=[0|1]?
pageNumber=1&pageSize=20
Note: The listTypeId parameter is required and can be either 0 (GlobalQuarantine) or 1 (GlobalSafe).
Request
None
Response
added This is the date and time the global list item was added.
avIndustry —
category —
classification —
listType —
pageNumber —
pageSize —
reason This is the reason for adding the item to the global list.
subClassification —
totalNumberOfItems —
totalPages —
Example https://protectapi.cylance.com/globallists/v2
Request
{
"sha256": "bf17366ee3bb8068a9ad70fc9e68496e7e311a055bf4ffeeff53cc5d29ccce52",
"list_type": "GlobalSafe",
"category": "CommercialSoftware",
"reason": "Test"
}
Response
category This field is required only if the list_type value is GlobalSafe. The value can be one
of the following:
• AdminTool
• CommercialSoftware
• Drivers
• InternalApplication
• OperatingSystem
• SecuritySoftware
• None
There are no spaces in the category name when adding to a global list.
list_type This is the list type that the threat belongs to (GlobalQuarantine or GlobalSafe).
reason This is the reason why the file was added to the list.
Example https://protectapi.cylance.com/globallists/v2
Request
{
"sha256": "bf17366ee3bb8068a9ad70fc9e68496e7e311a055bf4ffeeff53cc5d29ccce52",
"list_type": "GlobalSafe"
}
list_type This is the list type that the threat belongs to (GlobalQuarantine or GlobalSafe).
Get policies
Request a page with a list of console policies belonging to a tenant, sorted by modified date, in descending order
(most recently modified policy listed first). The page number and page size parameters are optional. When the
values are not specified, these default to 1 and 10 respectively. When a policy is created, the modified date is the
same as the created date, until the policy is modified.
Request
None
Response
date_added This is the date and time (in UTC) when the console policy resource was first
created.
date_modified This is the date and time (in UTC) when the console policy resource was last
modified.
| Policy API | 58
Field Name Description
total_pages This is the total number of pages that can be retrieved based on the page size
specified.
Get policy
Get details for a policy, using the policy ID.
Example https://protectapi.cylance.com/policies/v2/
d5c6d6a3-0599-4fb5-96bc-0fdc7eacb6ea
Request
None
Response
| Policy API | 59
Response JSON schema
appcontrol Application control allows restricting any changes to applications on a device. Only the
applications that exist on a device before enabling application control are allowed to
execute on that device. Any new applications, as well as changes to the executables of
existing applications, will be denied.
The agent updater will also be disabled when application control is enabled.
• Allowed_folders: allows applications and additions to the specified folders. It must
be an absolute path (for example, c:\temp_appcontrol)
• Changewindow_enabled:
• 0 - Closed: No changes can be made to any applications on the device.
• 1 - Open: Allow, edit, and run new applications on the device. This includes
updating applications.
• Lockdown:
• Action:
• The deny action blocks (denies) the lockdown_type.
• Lockdown_type:
• Executionfromexternaldrives indicates execution of a file from an external
drive, like a USB hard drive or USB flash drive.
• pechange indicates changes made to existing applications on the device.
checksum Checksum is used to detect errors that may have occurred during transmission or
storage of data.
| Policy API | 60
Field Name Description
| Policy API | 61
Field Name Description
file_exclusions The policy safe list identifies file exclusions specific to the policy, and any devices
assigned to the policy will allow the excluded files to run.
• av_industry:
• false: The file hash has not been identified by the anti-virus industry.
• true: The file hash has been identified by the anti-virus industry.
• category_id: This is the category selected when adding the file to the policy safe list.
• 1 = None
• 2 = Admin Tool
• 3 = Internal Application
• 4 = Commercial Software
• 5 = Operating System
• 6 = Drivers
• 7 = Security Software
• cloud_score: This is the Cylance Score displayed in the console. The score can go up
to 100.
• file_hash: This is the SHA256 has for the file. This information is required.
• file_name: This is the name of the file. This is "null" if the filename is not available.
• file_type: This is the file scanner type. Should always return 1 for executable.
• infinity: This is the Cylance Cloud score. This is "null" if no score is available.
• md5: This is the MD5 hash for the file. This information is optional.
• reason: This is the reason for adding the file to the policy safe list. The reason must
be added when creating the file exclusion.
• research_class_id: This is the Cylance threat classification. If "infinity" is null, then the
research_class_id is not available.
• 1 = Trusted
• 2 = PUP
• 3 = Malware
• 4 = File Unavailable
• 5 = Possible PUP
• 6 = Dual Use
• research_subclass_id: Some threat classification have sub-classes to help
administrators determine if a file should be blocked or allowed to run. See Threat
classifications for more information.
filetype_actions These actions indicate the autoquarantine of unsafe and abnormal files.
• actions: This is the setting to enable or disable auto quarantine and auto upload.
• 0 - AutoQuarantine OFF and AutoUpload OFF
• 1 - AutoQuarantine ON and AutoUpload OFF
• 2 - AutoQuarantine OFF and AutoUpload ON
• 3 - AutoQuarantine ON and AutoUpload ON
• file_type: The only option is "executable".
• suspicious_files: These are abnormal files.
• threat_files: These are unsafe files.
| Policy API | 62
Field Name Description
memoryviolation These are the violation types for memory protection. The following 3 rows explain the
possible violation types:
_actions
| Policy API | 63
Field Name Description
memory_violations • lsassread (LSASS read): Memory belonging to the Windows Local Security Authority
process has been accessed in a manner that indicates an attempt to obtain users'
passwords.
• outofprocessallocation (remote allocation of memory): A process has allocated
memory in another process. Most allocations will only occur within the same
process. This generally indicates an attempt to inject code or data into another
process, which may be a first step in reinforcing a malicious presence on a system.
• outofprocessapc (remote APC scheduled): A process has diverted the execution
of another process’s thread. This is generally used by an attacker to activate a
malicious presence that has been injected into another process.
• outofprocesscreatethread (remote thread creation): A process has created a new
thread in another process. A process’s threads are usually only created by that same
process. This is generally used by an attacker to activate a malicious presence that
has been injected into another process.
• outofprocessmap (remote mapping of memory): A process has introduced code
and/or data into another process. This may indicate an attempt to begin executing
code in another process and thereby reinforce a malicious presence.
• outofprocessoverwritecode (remote overwrite code): A process has modified
executable memory in another process. Under normal conditions, executable
memory will not be modified, especially by another process. This usually indicates an
attempt to divert execution in another process.
• outofprocessunmapmemory (remote unmap of memory): A process has removed
a Windows executable from the memory of another process. This may indicate
an intent to replace the executable image with a modified copy for the purpose of
diverting execution.
• outofprocesswrite (remote write to memory): A process has modified memory
in another process. This is usually an attempt to store code or data in previously
allocated memory (see OutOfProcessAllocation), but it is possible that an attacker
is trying to overwrite existing memory in order to divert execution for a malicious
purpose.
• outofprocesswritepe (remote write PE to memory): A process has modified memory
in another process to contain an executable image. Generally, this indicates that an
attacker is attempting to execute code without first writing that code to disk.
• overwritecode (overwrite code): The code residing in a process’s memory has been
modified using a technique that may indicate an attempt to bypass Data Execution
Prevention (DEP).
• stackpivot (stack pivot): The stack for a thread has been replaced with a different
stack. Generally, the system will only allocate a single stack for a thread. An attacker
would use a different stack to control execution in a way that is not blocked by Data
Execution Prevention (DEP).
• stackprotect (stack protect): The memory protection of a thread’s stack has been
modified to enable execution permission. Stack memory should not be executable,
so usually this means that an attacker is preparing to run malicious code stored in
stack memory as part of an exploit, an attempt which would otherwise be blocked by
Data Execution Prevention (DEP).
| Policy API | 64
Field Name Description
memory_violation_ext • dyldinjection (DYLD injections): An environment variable has been set that will cause
a shared library to be injected into a launched process. Attacks can modify the plist
of applications like Safari or replace applications with bash scripts, causing their
modules to be loaded automatically when an application starts.
• maliciouspayload (malicious payload): A generic shellcode and payload detection
associated with exploitation has been detected.
• trackdataread (RAM scraping): A process is trying to read valid magnetic stripe track
data from another process. Typically related to point of sale systems (POS).
• zeroallocate (zero allocate): A null page has been allocated. The memory region
is typically reserved, but in certain circumstances, it can be allocated. Attacks can
use this to setup privilege escalation by taking advantage of some known null de-
reference exploit, typically in the kernel.
memory_exclusion These are the executable files to exclude from memory protection. This must be a
relative path to the excluded executable file (for example: \\temp).
_list_v2
policy Various policy settings are contained within this section. All policy settings must be
included in the request. For most policy settings, the possible values will be either 0
(disabled) or 1 (enabled). The remaining cells in this table explain policy settings in
detail.
Automatic policy • auto_blocking: This is the setting to auto quarantine unsafe threats.
settings • auto_delete: This is the setting to automatically delete quarantined files after a set
number of days. If this feature is enabled, set "days_until_deleted" for the number of
days to retain a quarantined file.
• auto_uploading: This is the setting to automatically upload files that BlackBerry has
not seen before. BlackBerry will perform an analysis on the file and provide details to
assist in manual analysis and triage.
• autoit_auto_uploading: This setting is currently not in use.
• pdf_auto_uploading
• powershell_auto_uploading
• python_auto_uploading
| Policy API | 65
Field Name Description
Various policy • days_until_deleted: This is the setting for the number of days to retain a quarantined
settings file. Quarantined files older than the set number of days will be automatically deleted.
The minimum number of days is 14, the maximum number of days is 365. The "auto-
delete" setting must be enabled.
• device_control: This is the setting to enable or disable the device control feature.
• docx_auto_uploading: This is the setting currently not in use.
• full_disc_scan: This is the setting to have Cylance analyze all executable files on disk
to detect any dormant threats. This is the background threat detection setting.
• 0: Disabled
• 1: Run Recurring (performs a scan every nine days)
• 2:Run Once (runs a full disk scan upon installation only)
• kill_running_threats: This is the setting to kill processes and children processes
regardless of the state when a threat is detected (EXE or DLL).
• logpolicy: This setting is not used.
• memory_exploit_detection: This is the setting to enable or disable the memory
protection feature. This affects "memory_violation_actions" ("memory_violations"
and "memory_violations_ext").
• sample_copy_path: This is the setting to copy all file samples to a network share
(CIFS/SMB).
Example:
{
"name": "sample_copy_path",
"value": "\\\\server_name\\shared_folder"
}
• scan_exception_list: This is the setting to exclude specific folders and subfolders
from being scanned by full_disc_scan and watch_for_new_files. Set the value to the
absolute path for the excluded files.
Example:
{
"name": "scan_exception_list",
"value": [
"c:\\temp"
]
}
• scan_max_archive_size: This is the setting for the maximum archive file size (in MB)
to be scanned. The value can be 0 to 150. If set to 0, then archive files will not be
scanned.
Example:
{
"name": "scan_max_archive_size",
"value": "0"
}
• script_control: This is the setting to enable or disable the script control feature. Also
set the script_control settings (see below in this table).
| Policy API | 66
Field Name Description
Various policy • show_notifications: This is the setting to enable or disable desktop notifications on
settings continued the endpoint for CylancePROTECT Desktop events.
• threat_report_limit: This is the number of threats to upload to the console.
Example:
{
"name": "threat_report_limit",
"value": "500"
}
• trust_files_in_scan_exception_list: This is the setting to allow execution of files in the
excluded folders. This is related to the scan_exception_list.
• watch_for_new_files: This is the setting to analyze new or modified executable files
for threats.
• ole_auto_uploading: This setting is currently not in use.
• prevent_service_shutdown: This is the setting that protects the Cylance service from
being shutdown, either manually or by another process.
• sample_copy_path: This is the setting to copy all file samples to a network share
(CIFS/SMB).
Example:
{
"name": "sample_copy_path",
"value": "\\\\server_name\\shared_folder"
}
| Policy API | 67
Field Name Description
{
"name": "optics_set_disk_usage_maximum_fixed",
"value": "1000"
}
• optics_show_notifications: This is the setting to enable or disable desktop
notifications on the endpoint for CylanceOPTICS events.
• optics_show_notification: This is the setting to enable or disable CylanceOPTICS
desktop notifications on the device.
| Policy API | 68
Field Name Description
policy_utctimestamp This is the date and time the policy was created (in UTC).
Create policy
Service endpoint /policies/v2
Example https://protectapi.cylance.com/policies/v2
| Policy API | 69
Method HTTP/1.1 POST
Request
The following example creates a policy with most features enabled and includes some sample exclusions. You
can copy this example, change the user_id, and this should create an example policy in your tenant.
Note: This example is provided just for testing the API. Do not use this example policy on your devices. Device
policies should be tested before applying to a large number of devices in your organization.
"policy_name": "testPolicy",
"script_control": {
"activescript_settings": {
"control_mode": "Alert",
"control_mode_v2":"BlockAbnormal"
},
"global_settings": {
"allowed_folders": ["/path.py"],
"allowed_folders_ext": [
{
"comment": "any test 200 chars long"
}
],
"control_mode": "Alert",
"score_all_scripts": false,
"upload_script_to_cloud": false,
"must_obtain_score_from_cloud": false,
"alert_suspicious_script_exec_only": false
},
"macro_settings": {
"control_mode": "Alert"
},
"powershell_settings": {
"control_mode": "Block",
"console_mode": "Block",
"control_mode_v2":"BlockAbnormal"
}
}
Response
| Policy API | 70
Request JSON schema
checksum Checksum is required when creating a policy. This uses an empty value.
Example:
"checksum": ""
| Policy API | 71
Field Name Description
"exclusion_list": [
{
"vendor_id": "1234",
"comment": "Test device control exclusion",
"serial_number": 987654321",
"product_id": "5678",
"control_mode": "FullAccess"
}
]
| Policy API | 72
Field Name Description
file_exclusions This adds file exclusions to the policy safe list, under file actions. Policy safe list are file
exclusions specific to the policy, and any endpoints assigned to the policy will allow the
excluded files to run.
• category_id: This is a list of categories to identify the type of file. This information is
optional.
• 1 - None
• 2 - AdminTool
• 3 - InternalApplication
• 4 - CommercialSoftware
• 5 - OperatingSystem
• 6 - Drivers
• 7 - SecuritySoftware
• file_hash: This is the SHA256 hash for the file. This information is required.
• file_name: This is the name of the file being excluded. This information is optional.
• md5: This is the MD5 hash for the file. This information is optional.
• reason: This is the reason the file was excluded. This information is required.
Example:
"exclusion_list": [
{
"reason": "Test Exclusion",
"category_id": "2",
"md5": "d41d8cd98f00b204e9800998ecf8427e",
"file_hash": "bf17366ee3bb8068a9ad70fc9e68
496e7e311a055bf4ffeeff53cc5d29ccce52",
"file_name": "filename"
}
]
filetype_actions These actions indicate the autoquarantine of unsafe and abnormal files.
• actions: Set auto-quarantine and auto-upload to enable or disable.
• 0: auto-quarantine OFF, auto-upload OFF
• 1: auto-quarantine ON, auto-upload OFF\
• 2: auto-quarantine OFF, auto-upload OFF
• Use for suspicious_files when threat_files is set to 3 and Auto-Quarantine
for suspicious_files is disabled.
• 3: auto-quarantine ON, auto-upload ON
• file_type: The only option is "executable".
• suspicious_files: Abnormal files
• threat_files: Unsafe files
| Policy API | 73
Field Name Description
memoryviolation These are the violation types for memory protection. The following 3 rows explain the
possible violation types:
_actions
| Policy API | 74
Field Name Description
memory_violations • lsassread (LSASS read): Memory belonging to the Windows Local Security Authority
process has been accessed in a manner that indicates an attempt to obtain users'
passwords.
• outofprocessallocation (remote allocation of memory): A process has allocated
memory in another process. Most allocations will only occur within the same
process. This generally indicates an attempt to inject code or data into another
process, which may be a first step in reinforcing a malicious presence on a system.
• outofprocessapc (remote APC scheduled): A process has diverted the execution
of another process’s thread. This is generally used by an attacker to activate a
malicious presence that has been injected into another process.
• outofprocesscreatethread (remote thread creation): A process has created a new
thread in another process. A process’s threads are usually only created by that same
process. This is generally used by an attacker to activate a malicious presence that
has been injected into another process.
• outofprocessmap (remote mapping of memory): A process has introduced code
and/or data into another process. This may indicate an attempt to begin executing
code in another process and thereby reinforce a malicious presence.
• outofprocessoverwritecode (remote overwrite code): A process has modified
executable memory in another process. Under normal conditions, executable
memory will not be modified, especially by another process. This usually indicates an
attempt to divert execution in another process.
• outofprocessunmapmemory (remote unmap of memory): A process has removed
a Windows executable from the memory of another process. This may indicate
an intent to replace the executable image with a modified copy for the purpose of
diverting execution.
• outofprocesswrite (remote write to memory): A process has modified memory
in another process. This is usually an attempt to store code or data in previously
allocated memory (see OutOfProcessAllocation), but it is possible that an attacker
is trying to overwrite existing memory in order to divert execution for a malicious
purpose.
• outofprocesswritepe (remote write PE to memory): A process has modified memory
in another process to contain an executable image. Generally, this indicates that an
attacker is attempting to execute code without first writing that code to disk.
• overwritecode (overwrite code): The code residing in a process’s memory has been
modified using a technique that may indicate an attempt to bypass Data Execution
Prevention (DEP).
• stackpivot (stack pivot): The stack for a thread has been replaced with a different
stack. Generally, the system will only allocate a single stack for a thread. An attacker
would use a different stack to control execution in a way that is not blocked by Data
Execution Prevention (DEP).
• stackprotect (stack protect): The memory protection of a thread’s stack has been
modified to enable execution permission. Stack memory should not be executable,
so usually this means that an attacker is preparing to run malicious code stored in
stack memory as part of an exploit, an attempt which would otherwise be blocked by
Data Execution Prevention (DEP).
| Policy API | 75
Field Name Description
memory_violations • dyldinjection (DYLD injections): An environment variable has been set that will cause
a shared library to be injected into a launched process. Attacks can modify the plist
_ext
of applications like Safari or replace applications with bash scripts, causing their
modules to be loaded automatically when an application starts.
• maliciouspayload (malicious payload): A generic shellcode and payload detection
associated with exploitation has been detected.
• trackdataread (RAM scraping): A process is trying to read valid magnetic stripe track
data from another process. Typically related to point of sale systems (POS).
• zeroallocate (zero allocate): A null page has been allocated. The memory region
is typically reserved, but in certain circumstances, it can be allocated. Attacks can
use this to setup privilege escalation by taking advantage of some known null de-
reference exploit, typically in the kernel.
| Policy API | 76
Field Name Description
memory_exclusion These are the executable files to exclude from Memory Protection. This must be a
relative path to the excluded executable file.
_list_v2
Example:
"memory_exclusions_list_v2": [
{
"violations": [],
"path": "C:\\temp\\file1.txt"
},
{
"violations": [],
"path": "C:\\temp\\file2.txt"
}
]
policy Various policy settings are contained within this section. Some policy
settings are enabled under policy and configured in a different section,
like device_control and logpolicy. For most policy settings, the possible values will be
either 0 (disabled) or 1 (enabled). The remaining cells in this table explain policy settings
in detail.
Automatic policy • auto_blocking: This is the setting to auto quarantine unsafe threats.
settings • auto_delete: This is the setting to automatically delete quarantined files after a set
number of days. If this feature is enabled, set "days_until_deleted" for the number of
days to retain a quarantined file.
• auto_uploading: This is the setting to automatically upload files that BlackBerry has
not seen before. BlackBerry will perform an analysis on the file and provide details to
assist in manual analysis and triage.
• autoit_auto_uploading: This setting is currently not in use.
• pdf_auto_uploading
• powershell_auto_uploading
• python_auto_uploading
| Policy API | 77
Field Name Description
{
"name": "sample_copy_path",
"value": "\\\\server_name\\shared_folder"
}
• scan_exception_list: This is the setting to exclude specific folders and subfolders
from being scanned by full_disc_scan and watch_for_new_files. Set the value to the
absolute path for the excluded files. For example:
{
"name": "scan_exception_list",
"value": [
"c:\\temp"
]
}
• scan_max_archive_size: This is the setting for the maximum archive file size (in MB)
to be scanned. The value can be 0 to 150. If set to 0, then archive files will not be
scanned. For example:
{
"name": "scan_max_archive_size",
"value": "0"
}
• script_control: This is the setting to enable or disable the script control feature. Also
set the script_control settings (see below in this table).
| Policy API | 78
Field Name Description
Various policy • show_notifications: This is the setting to enable or disable desktop notifications on
settings continued the endpoint for CylancePROTECT Desktop events.
• threat_report_limit: This is the number of threats to upload to the console.
Example:
{
"name": "threat_report_limit",
"value": "500"
}
• trust_files_in_scan_exception_list: This is the setting to allow execution of files in the
excluded folders. This is related to the scan_exception_list.
• watch_for_new_files: This is the setting to analyze new or modified executable files
for threats.
• ole_auto_uploading: This setting is currently not in use.
• prevent_service_shutdown: This is the setting that protects the Cylance service from
being shutdown, either manually or by another process.
• sample_copy_path: This is the setting to copy all file samples to a network share
(CIFS/SMB).
Example:
{
"name": "sample_copy_path",
"value": "\\\\server_name\\shared_folder"
}
| Policy API | 79
Field Name Description
{
"name": "optics_set_disk_usage_maximum_fixed",
"value": "1000"
}
• optics_show_notifications: This is the setting to enable or disable desktop
notifications on the endpoint for CylanceOPTICS events.
• optics_show_notification: This is the setting to enable or disable CylanceOPTICS
desktop notifications on the device.
policy_name This is the name of the policy. The name must be unique to your tenant.
| Policy API | 80
Field Name Description
script_control The policy settings for script control. script_control must be enabled (set to "1")
under policy.
activescript_settings
• control_mode: These are the setting for active script.
• Alert: The script is allowed to run and an alert is sent when an event occurs.
• Block: The script is blocked and an alert is sent.
• control_mode_v2:
• Allow: The script is allowed to run.
• Alert: The script is allowed to run and an alert is sent when an event occurs.
• Block: The script is blocked and an alert is sent.
• Block UNSAFE: The script will be scored and blocked if found to be unsafe.
• Block ABNORMAL and UNSAFE: The script will be scored and blocked if found to
be abnormal or unsafe.
global_settings
• allowed_folders: The relative path to scripts that are allowed to run when script
control is enabled. Script control folder exclusions apply to all agent versions (agent
1310 or later). For example:
"allowed_folders": [
"\\temp_scriptcontrol"
]
• control_mode: This is the setting to enable or disable script control for agent version
1370 or earlier. This works for active scripts and PowerShell. This does not work for
macros. To use script control with macros, use agent version 1380 or later.
• Allow: An alert is sent when an active script or PowerShell event occurs. The
script is allowed to run.
• Block: The active script or PowerShell is blocked and an alert is sent.
• score_all_scripts: This boolean setting controls if all scripts are going to be scored,
including scripts with the control_mode_v2 setting set to Alert or Block. Scripts with
the setting set to Block UNSAFE or Block ANORMARL and UNSAFE will be scored
automatically and this setting will be ignored.
• upload_script_to_cloud: This boolean setting controls if all scripts will be uploaded to
BlackBerry services when attempting to obtain the score of a script. If set to "false",
Infinity will be searched to see if it already has the score. If it does not, the script will
not be uploaded for scanning and will be assigned "UNSCORED".
• must_obtain_score_from_cloud: This boolean setting allows you to forcefully obtain
a score from Infinity before deciding what to do with a script execution. When a
cached result is used, this setting will be ignored.
• True: When a score can't be obtained from Infinity and control_mode_v2 =
Block, Block UNSAFE, or Block ABNORMAL and UNSAFE, the state will be set to
"UNSCORED" and "Block".
• False: When a score can't be obtained from Infinity, the state will be combined
with local classifiers and follow the control_mode_v2 setting. If the local classifier
is not available, the score will be set to "UNSCORED".
• alert_suspicious_script_exec_only: This boolean setting allows you to generate
events only for scripts that are suspicious or were not evaluated.
| Policy API | 81
Field Name Description
macro_settings
• control_mode: These are the setting for Microsoft Office macros.
• Alert: An alert is sent when an Microsoft Office macro event occurs. The macro is
allowed to run.
• Block: The Microsoft Office macro is blocked and an alert is sent.
Note: The script control macros feature works with agent version 1578 and earlier.
For newer agents, use the Dangerous VBA Macros violation type with memory
protection. Any macro exclusions created for script control of newer agents must be
added to the memory protection exclusions for the Dangerous VBA Macros violation
type.
powershell_settings
• console_mode: The PowerShell console is blocked to prevent PowerShell command
usage, including one-liners. To use this feature, the PowerShell control_mode must
be set to Block. Values can be either Allow or Block
• control_mode:
• Alert: The script is allowed to run and an alert is sent when an event occurs.
• Block: The script is blocked and an alert is sent.
• control_mode_v2:
• Allow: The script is allowed to run.
• Alert: The script is allowed to run and an alert is sent when an event occurs.
• Block: The script is blocked and an alert is sent.
• Block UNSAFE: The script will be scored and blocked if found to be unsafe.
• Block ABNORMAL and UNSAFE: The script will be scored and blocked if found to
be abnormal or unsafe.
| Policy API | 82
Field Name Description
"script_control": {
"global_settings": {
"allowed_folders": null,
"control_mode": "Alert",
"score_all_scripts": false,
"upload_script_to_cloud":true,
"must_obtain_score_from_cloud":true,
"alert_suspicious_script_exec_only": false
},
"activescript_settings": {
"control_mode": "Alert"
"control_mode_v2":"Block UnSAFE"
},
"powershell_settings": {
"control_mode": "Alert",
"console_mode": "Allow"
"control_mode_v2":"Block UnSAFE"
}
}
user_id This is the unique ID for the user creating the policy. Only administrators can create
policies.
To get the user_id, use Get users.
This table only covers descriptions not covered in the Request JSON Schema Descriptions table (see previous
table).
policy_utctimestamp This is the date and time (in UTC) when the policy was created.
Update policy
Update an existing policy. The request contents for update policy are similar to create policy, except you must
include the policy_id in the update policy request.
| Policy API | 83
Service endpoint /policies/v2
Example https://protectapi.cylance.com/policies/v2
Request
{
"user_id":"a2c0ac7a-a63d-4583-b646-ae10db9c9769",
"policy":{
"memoryviolation_actions":{
"memory_violations_ext_v2":[
{
"violation_type":"syscallprobe",
"action":"Alert",
"order":"1"
},
{
"action":"Alert",
"order":"2",
"violation_type":"directsyscall"
},
{
"order":"3",
"violation_type":"systemdllwrite",
"action":"Alert"
},
{
"order":"4",
"action":"Alert",
"violation_type":"dangerouscomobject"
},
{
"order":"5",
"violation_type":"doppelganger",
"action":"Alert"
},
{
"violation_type":"dangerousenvvariable",
"action":"Alert",
"order":"6"
},
{
"order":"7",
"violation_type":"oopprotect",
"action":"Alert"
},
{
| Policy API | 84
"action":"Alert",
"order":"8",
"violation_type":"childprocessprotect"
},
{
"order":"9",
"action":"Alert",
"violation_type":"stolensystemtoken"
},
{
"order":"10",
"violation_type":"maliciouslowintegrity",
"action":"Alert"
},
{
"violation_type":"injectionviaapc",
"action":"Alert",
"order":"11"
},
{
"order":"12",
"action":"Alert",
"violation_type":"runmacroscript"
}
],
"memory_violations":[
{
"violation_type":"lsassread",
"action":"Alert"
},
{
"violation_type":"outofprocessunmapmemory",
"action":"Alert"
},
{
"violation_type":"stackpivot",
"action":"Alert"
},
{
"violation_type":"stackprotect",
"action":"Alert"
},
{
"violation_type":"outofprocessoverwritecode",
"action":"Alert"
},
{
"action":"Alert",
"violation_type":"outofprocesscreatethread"
},
{
"violation_type":"overwritecode",
"action":"Alert"
},
{
"action":"Alert",
"violation_type":"outofprocesswritepe"
},
{
"violation_type":"outofprocessallocation",
"action":"Alert"
| Policy API | 85
},
{
"violation_type":"outofprocessmap",
"action":"Alert"
},
{
"violation_type":"outofprocesswrite",
"action":"Alert"
},
{
"action":"Alert",
"violation_type":"outofprocessapc"
}
],
"memory_violations_ext":[
{
"violation_type":"dyldinjection",
"action":"Alert"
},
{
"violation_type":"trackdataread",
"action":"Alert"
},
{
"action":"Alert",
"violation_type":"zeroallocate"
},
{
"action":"Alert",
"violation_type":"maliciouspayload"
}
],
"memory_exclusion_list_v2":[
{
"violations":[
],
"path":"\\Application\\TestApp\\MyApp\\program.exe"
}
],
"memory_exclusion_list":[
"\\Application\\TestApp\\MyApp\\program.exe"
]
},
"persona":{
"mitigation_actions":[
{
"action":"alertsOnly",
"threshold":"70"
},
{
"threshold":"30",
"action":"promptUsernameAndPassword"
}
],
"admin_whitelist":[
{
"username":"admin"
}
],
"mode":"1"
| Policy API | 86
},
"device_control":{
"configurations":[
{
"device_class":"AndroidUSB",
"control_mode":"FullAccess"
},
{
"control_mode":"FullAccess",
"device_class":"iOS"
},
{
"control_mode":"FullAccess",
"device_class":"StillImage"
},
{
"device_class":"USBCDDVDRW",
"control_mode":"FullAccess"
},
{
"control_mode":"FullAccess",
"device_class":"USBDrive"
},
{
"device_class":"VMWareMount",
"control_mode":"FullAccess"
},
{
"control_mode":"FullAccess",
"device_class":"WPD"
}
],
"exclusion_list":[
{
"vendor_id":"1234",
"comment":"Test external device",
"serial_number":null,
"product_id":"5678",
"control_mode":"FullAccess",
"date_added":"2022-02-01T23:56:32.479Z"
}
]
},
"policy":[
{
"value":"1",
"name":"auto_blocking"
},
{
"value":"1",
"name":"auto_uploading"
},
{
"value":"500",
"name":"threat_report_limit"
},
{
"name":"full_disc_scan",
"value":"2"
},
{
| Policy API | 87
"value":"1",
"name":"watch_for_new_files"
},
{
"name":"memory_exploit_detection",
"value":"1"
},
{
"value":"0",
"name":"trust_files_in_scan_exception_list"
},
{
"value":"1",
"name":"logpolicy"
},
{
"name":"script_control",
"value":"1"
},
{
"name":"prevent_service_shutdown",
"value":"1"
},
{
"value":"0",
"name":"scan_max_archive_size"
},
{
"name":"sample_copy_path",
"value":"\\\\server_name\\shared_folder"
},
{
"name":"kill_running_threats",
"value":"1"
},
{
"name":"show_notifications",
"value":"1"
},
{
"name":"optics_set_disk_usage_maximum_fixed",
"value":"1000"
},
{
"value":"1",
"name":"optics_malware_auto_upload"
},
{
"name":"optics_memory_defense_auto_upload",
"value":"1"
},
{
"value":"0",
"name":"optics_script_control_auto_upload"
},
{
"value":"0",
"name":"optics_application_control_auto_upload"
},
{
"value":"1",
| Policy API | 88
"name":"optics_sensors_dns_visibility"
},
{
"name":"optics_sensors_private_network_address_visibility",
"value":"1"
},
{
"value":"1",
"name":"optics_sensors_windows_event_log_visibility"
},
{
"name":"optics_sensors_windows_advanced_audit_visibility",
"value":"1"
},
{
"name":"optics_sensors_advanced_powershell_visibility",
"value":"1"
},
{
"name":"optics_sensors_advanced_wmi_visibility",
"value":"1"
},
{
"name":"optics_sensors_advanced_executable_parsing",
"value":"1"
},
{
"name":"optics_sensors_enhanced_process_hooking_visibility",
"value":"1"
},
{
"value":"1",
"name":"optics_sensors_enhanced_file_read_visibility"
},
{
"value":"1",
"name":"device_control"
},
{
"name":"optics",
"value":"1"
},
{
"name":"auto_delete",
"value":"1"
},
{
"name":"days_until_deleted",
"value":"14"
},
{
"name":"pdf_auto_uploading",
"value":"0"
},
{
"name":"ole_auto_uploading",
"value":"0"
},
{
"name":"docx_auto_uploading",
"value":"0"
| Policy API | 89
},
{
"value":"0",
"name":"python_auto_uploading"
},
{
"value":"0",
"name":"autoit_auto_uploading"
},
{
"value":"0",
"name":"powershell_auto_uploading"
},
{
"value":null,
"name":"custom_thumbprint"
},
{
"name":"scan_exception_list",
"value":[
"C:\\Test"
]
},
{
"value":"1",
"name":"optics_show_notifications"
}
],
"script_control":{
"powershell_settings":{
"control_mode":"Alert",
"console_mode":"Allow"
},
"macro_settings":{
"control_mode":"Alert"
},
"global_settings":{
"control_mode":"Alert",
"allowed_folders":[
"/users/*/temp/*"
]
},
"activescript_settings":{
"control_mode":"Alert"
}
},
"filetype_actions":{
"suspicious_files":[
{
"actions":"3",
"file_type":"executable"
}
],
"threat_files":[
{
"actions":"3",
"file_type":"executable"
}
]
},
"logpolicy":{
| Policy API | 90
"retentiondays":"30",
"log_upload":{
"compress":"True",
"delete":"False"
},
"maxlogsize":"100"
},
"file_exclusions":[
{
"reason":"SHA256 for testing",
"category_id":"2",
"md5":null,
"research_class_id":"0",
"file_hash":"443010d98917908efb64a1e8c4a560ec126649bd7e4d0ddd87643356e6f3506f",
"cloud_score":null,
"av_industry":false,
"file_name":"Test file",
"file_type":1,
"research_subclass_id":"0",
"infinity":null
}
],
"checksum":"",
"script_control_v2":{
"python_settings":{
"control_mode":"Alert"
},
"dotnet_dlr_settings":{
"control_mode":"Alert"
}
},
"policy_name":"Example Policy",
"policy_id":"52c9f06b-1cef-4837-8001-ca5da50fef32"
}
}
Response
checksum Checksum is required when you create a policy. Checksum uses an empty value.
Example:
"checksum": ""
| Policy API | 91
Field Name Description
"exclusion_list": [
{
"vendor_id": "1234",
"comment": "Test device control exclusion",
"serial_number": 987654321",
"product_id": "5678",
"control_mode": "FullAccess"
}
]
| Policy API | 92
Field Name Description
file_exclusions This setting adds file exclusions to the policy safe list, under file actions. Policy safe List
are file exclusions specific to the policy, and any endpoints assigned to the policy will
allow the excluded files to run.
• category_id: This is the list of categories to identify the type of file. This information
is optional.
• 1 - None
• 2 - AdminTool
• 3 - InternalApplication
• 4 - CommercialSoftware
• 5 - OperatingSystem
• 6 - Drivers
• 7 - SecuritySoftware
• file_hash: This is the SHA256 hash for the file. This information is required.
• file_name: This is the name of the file being excluded. This information is optional.
• md5: This is the MD5 hash for the file. This information is optional.
• reason: Tis is the reason the file was excluded. This information is required.
Example:
"file_exclusions": [
{
"reason": "Test Exclusion",
"category_id": "2",
"md5": "d41d8cd98f00b204e9800998ecf8427e",
"file_hash": "bf17366ee3bb8068a9ad70fc9e68
496e7e311a055bf4ffeeff53cc5d29ccce52",
"file_name": "filename"
}
]
| Policy API | 93
Field Name Description
filetype_actions This setting is used for the auto-quarantine of unsafe (threat_files) and
abnormal (suspicious_files).
• actions: This is the setting to enable or disable auto quarantine and auto upload.
• 0 - auto-quarantine OFF, auto-upload OFF
• 1 - auto-quarantine ON, auto-upload OFF
• 2 - auto-quarantine OFF, auto-upload ON
• Use for suspicious_files when threat_files is set to 3 and Auto-Quarantine
for suspicious_files is disabled.
• 3 - auto-quarantine ON, auto-upload ON
• file_type: The only option is "executable".
• suspicious_files: These are abnormal files.
• threat_files: These are unsafe files.
Examples of filetype_actions settings and the results in the management console.
0 0 No n/a No
2 2 No n/a Yes
1 0 Yes No No
3 2 Yes No Yes
1 1 Yes Yes No
| Policy API | 94
Field Name Description
memory_violations • lsassread (LSASS Read): Memory belonging to the Windows Local Security Authority
process has been accessed in a manner that indicates an attempt to obtain Users’
passwords.
• outofprocessallocation (Remote Allocation of Memory): A process has allocated
memory in another process. Most allocations will only occur within the same
process. This generally indicates an attempt to inject code or data into another
process, which may be a first step in reinforcing a malicious presence on a system.
• outofprocessapc (Remote APC Scheduled): A process has diverted the execution
of another process’s thread. This is generally used by an attacker to activate a
malicious presence that has been injected into another process.
• outofprocesscreatethread (Remote Thread Creation): A process has created a new
thread in another process. A process’s threads are usually only created by that same
process. This is generally used by an attacker to activate a malicious presence that
has been injected into another process.
• outofprocessmap (Remote Mapping of Memory): A process has introduced code
and/or data into another process. This may indicate an attempt to begin executing
code in another process and thereby reinforce a malicious presence.
• outofprocessoverwritecode (Remote Overwrite Code): A process has modified
executable memory in another process. Under normal conditions, executable
memory will not be modified, especially by another process. This usually indicates an
attempt to divert execution in another process.
• outofprocessunmapmemory (Remote Unmap of Memory): A process has removed
a Windows executable from the memory of another process. This may indicate
an intent to replace the executable image with a modified copy for the purpose of
diverting execution.
• outofprocesswrite (Remote Write to Memory): A process has modified memory
in another process. This is usually an attempt to store code or data in previously
allocated memory (see OutOfProcessAllocation), but it is possible that an attacker
is trying to overwrite existing memory in order to divert execution for a malicious
purpose.
• outofprocesswritepe (Remote Write PE to Memory): A process has modified memory
in another process to contain an executable image. Generally, this indicates that an
attacker is attempting to execute code without first writing that code to disk.
• overwritecode (Overwrite Code): The code residing in a process’s memory has been
modified using a technique that may indicate an attempt to bypass Data Execution
Prevention (DEP).
• stackpivot (Stack Pivot): The stack for a thread has been replaced with a different
stack. Generally, the system will only allocate a single stack for a thread. An attacker
would use a different stack to control execution in a way that is not blocked by Data
Execution Prevention (DEP).
• stackprotect (Stack Protect): The memory protection of a thread’s stack has been
modified to enable execution permission. Stack memory should not be executable,
so usually this means that an attacker is preparing to run malicious code stored in
stack memory as part of an exploit, an attempt which would otherwise be blocked by
Data Execution Prevention (DEP).
| Policy API | 95
Field Name Description
memory_violations • dyldinjection (DYLD Injection): An environment variable has been set that will cause
a shared library to be injected into a launched process. Attacks can modify the plist
_ext
of applications like Safari or replace applications with bash scripts, causing their
modules to be loaded automatically when an application starts.
• maliciouspayload (Malicious Payload): A generic shellcode and payload detection
associated with exploitation has been detected.
• trackdataread (RAM Scraping): A process is trying to read valid magnetic stripe track
data from another process. Typically related to point of sale systems (POS).
• zeroallocate (Zero Allocate): A null page has been allocated. The memory region
is typically reserved, but in certain circumstances, it can be allocated. Attacks can
use this to setup privilege escalation by taking advantage of some known null de-
reference exploit, typically in the kernel.
memory_exclusion These are the executable files to exclude from Memory Protection. This must be a
relative path to the excluded executable file.
_list_v2
Example:
"memory_exclusion_list_v2": [
"\\temp"
]
policy Various policy settings are contained within this section. All policy settings must be
included in the request. For most policy settings, the possible values will be either 0
(disabled) or 1 (enabled). The remaining cells in this table explain policy settings in
detail.
Automatic policy • auto_blocking: This is the setting to auto quarantine unsafe threats.
settings • auto_delete: This is the setting to automatically delete quarantined files after a set
number of days. If this feature is enabled, set "days_until_deleted" for the number of
days to retain a quarantined file.
• auto_uploading: This is the setting to automatically upload files that BlackBerry has
not seen before. BlackBerry will perform an analysis on the file and provide details to
assist in manual analysis and triage.
• autoit_auto_uploading: This setting is currently not in use.
• pdf_auto_uploading
• powershell_auto_uploading
• python_auto_uploading
| Policy API | 96
Field Name Description
Various policy • days_until_deleted: This is the setting for the number of days to retain a quarantined
settings file. Quarantined files older than the set number of days will be automatically deleted.
The minimum number of days is 14, the maximum number of days is 365. The "auto-
delete" setting must be enabled.
• device_contro: This is the setting to enable or disable the device control feature.
• docx_auto_uploading: This setting is currently not in use.
• full_disc_scan: This is the setting to have Cylance analyze all executable files on disk
to detect any dormant threats. This is the background threat detection setting.
• 0 - Disabled
• 1 - Run Recurring (performs a scan every nine days)
• 2 - Run Once (runs a full disk scan upon installation only)
• kill_running_threats: This is the setting to kill processes and children processes
regardless of the state when a threat is detected (EXE or DLL).
• logpolicy: This setting is not used.
• memory_exploit_detection: This is the setting to enable or disable the memory
protection feature. This affects "memory_violation_actions" ("memory_violations"
and "memory_violations_ext").
• sample_copy_path: This is the setting to copy all file samples to a network share
(CIFS/SMB). For example:
{
"name": "sample_copy_path",
"value": "\\\\server_name\\shared_folder"
}
• scan_exception_list: This is the setting to exclude specific folders and subfolders
from being scanned by full_disc_scan and watch_for_new_files. Set the value to the
absolute path for the excluded files. For example:
{
"name": "scan_exception_list",
"value": [
"c:\\temp"
]
}
• scan_max_archive_size: This is the setting for the maximum archive file size (in MB)
to be scanned. The value can be 0 to 150. If set to 0, then archive files will not be
scanned. For example:
{
"name": "scan_max_archive_size",
"value": "0"
}
• script_control: This is the setting to enable or disable the script control feature.
Also set the script_control settings (see below in this table).
| Policy API | 97
Field Name Description
Various policy • show_notifications: This is the setting to enable or disable desktop notifications on
settings continued the endpoint for CylancePROTECT Desktop events.
• threat_report_limit: This is the number of threats to upload to the console.
Example:
{
"name": "threat_report_limit",
"value": "500"
}
• trust_files_in_scan_exception_list: This is the setting to allow execution of files in the
excluded folders. This is related to the scan_exception_list.
• watch_for_new_files: This is the setting to analyze new or modified executable files
for threats.
• ole_auto_uploading: This setting is currently not in use.
• prevent_service_shutdown: This is the setting that protects the Cylance service from
being shutdown, either manually or by another process.
| Policy API | 98
Field Name Description
{
"name": "optics_set_disk_usage_maximum_fixed",
"value": "1000"
}
• optics_show_notifications: This is the setting to enable or disable desktop
notifications on the endpoint for CylanceOPTICS events.
• optics_show_notification: This is the setting to enable or disable CylanceOPTICS
desktop notifications on the device.
policy_name This is the name of the policy. The name must be unique to your tenant.
| Policy API | 99
Field Name Description
script_control These are the policy settings for script control. script_control must be enabled (set to
"1") under policy.
activescript_settings
• control_mode: These are the settings for active script.
• Alert: The script is allowed to run and an alert is sent when an event occurs.
• Block: The script is blocked and an alert is sent.
• control_mode_v2:
• Allow: The script is allowed to run.
• Alert: The script is allowed to run and an alert is sent when an event occurs.
• Block: The script is blocked and an alert is sent.
• Block UNSAFE: The script will be scored and blocked if found to be unsafe.
• Block ABNORMAL and UNSAFE: The script will be scored and blocked if found to
be abnormal or unsafe.
global_settings
• allowed_folders: These are the relative path to scripts that are allowed to run when
Script Control is enabled. Script Control Folder Exclusions apply to all Agent versions
(Agent 1310 or higher). For example:
"allowed_folders": [ "\\temp_scriptcontrol"]
• control_mode: This is the setting to enable or disable script control for agent version
1370 or earlier. This works for active scripts and PowerShell. This does not work for
macros. To use script control with macros, use sgent version 1380 or later.
• Allow: An alert is sent when an Active Script or PowerShell event occurs. The
script is allowed to run.
• Block: The active script or PowerShell is blocked and an alert is sent.
• score_all_scripts: This boolean setting controls if all scripts are going to be scored,
including scripts with the control_mode_v2 setting set to Alert or Block. Scripts with
the setting set to Block UNSAFE or Block ANORMARL and UNSAFE will be scored
automatically and this setting will be ignored.
• upload_script_to_cloud: This boolean setting controls if all scripts will be uploaded to
BlackBerry services when attempting to obtain the score of a script. If set to "false",
Infinity will be searched to see if it already has the score. If it does not, the script will
not be uploaded for scanning and will be assigned "UNSCORED".
• must_obtain_score_from_cloud: This boolean setting allows you to forcefully obtain
a score from Infinity before deciding what to do with a script execution. When a
cached result is used, this setting will be ignored.
• True: When a score can't be obtained from Infinity and control_mode_v2 =
Block, Block UNSAFE, or Block ABNORMAL and UNSAFE, the state will be set to
"UNSCORED" and "Block".
• False: When a score can't be obtained from Infinity, the state will be combined
with local classifiers and follow the control_mode_v2 setting. If the local classifier
is not available, the score will be set to "UNSCORED".
• alert_suspicious_script_exec_only: This boolean setting allows you to generate
events only for scripts that are suspicious or were not evaluated.
macro_settings
• control_mode: These are the settings for Microsoft Office Macros.
• Alert: An alert is sent when an Microsoft Office macro event occurs. The macro is
allowed to run.
• Block: The Microsoft Office macro is blocked and an alert is sent.
Note: The script control macros feature works with agent version 1578 and earlier.
For newer agents, use the Dangerous VBA Macros violation type with memory
protection. Any macro exclusions created for script control of newer agents must be
added to the memory protection exclusions for the Dangerous VBA Macros violation
type.
powershell_settings
• console_mode: The PowerShell console is blocked to prevent PowerShell command
usage, including one-liners. To use this feature, the PowerShell control_mode must
be set to Block. Value can either be Allow or Block.
• control_mode:
• Alert: The script is allowed to run and an alert is sent when an event occurs.
• Block: The script is blocked and an alert is sent.
• control_mode_v2:
• Allow: The script is allowed to run.
• Alert: The script is allowed to run and an alert is sent when an event occurs.
• Block: The script is blocked and an alert is sent.
• Block UNSAFE: The script will be scored and blocked if found to be unsafe.
• Block ABNORMAL and UNSAFE: The script will be scored and blocked if found to
be abnormal or unsafe.
script_control For agent versions 1430 and later, you can disable script control for active script,
continued PowerShell, or macros. Disabling script control allows the selected script type to run
and does not send an alert to the console. To disable script control for a specific script
type, do not include the script type in the create policy API request. For example: script
control for macros is disabled.
"script_control": {
"global_settings": {
"allowed_folders": null,
"control_mode": "Alert",
"score_all_scripts": false,
"upload_script_to_cloud":true,
"must_obtain_score_from_cloud":true,
"alert_suspicious_script_exec_only": false
},
"activescript_settings": {
"control_mode": "Alert"
"control_mode_v2":"Block UnSAFE"
},
"powershell_settings": {
"control_mode": "Alert",
"console_mode": "Allow"
"control_mode_v2":"Block UnSAFE"
}
}
user_id This is the unique ID for the user creating the policy. Only administrators can create
policies.
To get the user_id, use Get users.
Delete policy
Delete a policy from a tenant.
Request headers Authorization: Bearer JWT Token returned by Auth API with the policy:delete scope
encoded
None
Response
Delete policies
Delete multiple polices from a tenant.
Example https://protectapi.cylance.com/policies/v2
Request headers • Authorization: Bearer JWT Token returned by Auth API with the policy:delete
scope encoded
• Content-Type: application/json
Request
{
"tenant_policy_ids": [
"d5c6d6a3-0599-4fb5-96bc-0fdc7eacb6ea",
"376e21d1-f227-49c4-85fb-d9be1e5d766b",
"b7a4a177-e385-489b-bcb0-3a4f25276320"
]
}
Response
Create zone
Add a zone to a tenant.
Example https://protectapi.cylance.com/zones/v2
Request
{
"name": "Test Zone",
"policy_id": "d5c6d6a3-0599-4fb5-96bc-0fdc7eacb6ea",
"criticality": "Normal"
}
The policy_id or criticality requests can be removed if they are not needed. If the policy_id is removed, the zone is
created with the default policy. If the criticality is removed, the zone is created with the normal criticality.
Response
criticality This is the value of the zone (low, normal, or high). The default setting, normal, is
assigned if a value is not included.
name This is the name of the zone. The maximum character limit for a zone name is
255. The following special characters are invalid: &<>. Zone names are case-
preserving, but case-insensitive.
policy_id This is the unique ID for the zone rule created for the zone. Null is displayed if no
zone rule exists.
date_created This is the date and time (in UTC) when the zone was created.
policy_id This is the unique ID for the zone rule created for the zone. Null is displayed if no
zone rule exists.
Get zones
Request a page with a list of zones resources belonging to a tenant, sorted by the created date, in descending
order (most recent user registered listed first). The page number and page size parameters are optional. When
the values are not specified, the default values are 1 and 10 respectively. The maximum page size that can be
specified is 200 entries per page.
Request
None
date_created This is the date and time (in UTC) when the zone was created.
date_modified This is the date and time (in UTC) when the zone was last modified.
policy_id This is the unique ID for the policy assigned to the zone.
update_type This is the update type for the zone (production, pilot, or test).
zone_rule_id This is the unique ID for the zone rule created for the zone. Null is displayed if no
zone rule exists.
Get zone
Request zone information for a specific zone in a tenant.
Request
None
date_created This is the date and time (in UTC) when the zone was created.
date_modified This is the date and time (in UTC) when the zone was last modified.
policy_id This is the unique ID for the policy assigned to the zone.
update_type This is the update type for the zone (production, pilot, or test).
zone_rule_id This is the unique ID for the zone rule created for the zone. Null is displayed if no
zone rule exists.
Request
None
date_created This is the date and time (in UTC) when the zone was created.
date_modified This is the date and time (in UTC) when the zone was last modified.
policy_id This is the unique ID for the policy assigned to the zone.
update_type This is the update type for the zone (production, pilot, or test).
zone_rule_id This is the unique ID for the zone rule created for the zone. Null is displayed if no
zone rule exists.
Update zone
Update a zone in a tenant.
Request
{
"name": "Test Policy",
"policy_id": "d5c6d6a3-0599-4fb5-96bc-0fdc7eacb6ea",
"criticality": "Normal"
Response
policy_id This is the unique ID for the policy assigned to the zone.
Delete zone
Delete a zone in a tenant.
Request
None
Response
Get threats
Get a list of threats detected in a tenant.
Example https://protectapi.cylance.com/threats/v2/?
page=1&page_size=20&start_time=2023-11-14T21:07:10&end_time=2023-11-24T21:07:10
Request
None
Response
certTimestamp This is the date and time when the certificate was created.
classification This is the classification of the threat (For example, PUP indicates a potentially
unwanted program).
dateDetected This is the date and time the threat was detected on the device. Note that the date
parameters filter on dateDetected.
dateFirstDetected This is the date and time when the threat was first detected.
end_time The end of the time range in ISO-8601 date/time format (optional) (default value:
now)
fileSize This is the size of the file, in bytes (for example, 1000 is 1KB).
globalQuarantined —
mostRecentDetection This is the date and time of the most recent detection of the threat.
page_size The number of device records to retrieve per page. (optional) (default value: 10,
maximum value: 200)
safelisted —
signed —
start_time The start of the time range in ISO-8601 date/time format (required if using
end_time)
subClassification —
threatHistory —
uniqueToCylance —
Get threat
Request threat details for a specific threat.
Example https://protectapi.cylance.com/threats/v2/
bf17366ee3bb8068a9ad70fc9e68496e7e311a055bf4ffeeff53cc5d29ccce52
Request
None
Response
auto_run This setting indicates if the file is set to automatically run on system startup.
• false: The file is not set to automatically run on system startup.
• true: The file is set to automatically run on system startup.
av_industry This is the score provided by the antivirus industry. If there is no antivirus industry
score, then null is displayed.
cert_timestamp This is the date and time (in UTC) when the file was signed using the certificate.
classification This is the threat classification for the threat. See Threat classifications for more
information.
detected_by This is the name of the module that detected the threat.
global_quarantine This setting identifies if the threat is on the global quarantine list.
• false: The file is not on the global quarantine list.
• true: The file is on the global quarantine list.
running This setting identifies if the threat is executing, or another executable loaded or
called it.
• false: The threat is not running.
• true: The threat is running.
sub_classification This is the threat sub-classification for the threat. See Threat classifications for
more information.
unique_to_cylance This setting identifies that the threat was identified by Cylance but not by other
antivirus sources.
• false: The file has been identified by other antivirus sources.
• true: The file has only been identified as a threat by Cylance.
Example return the first page with 100 devices that have the
specified threat: https://protectapi.cylance.com/threats/v2/
bf17366ee3bb8068a9ad70fc9e68496e7e311a055bf4ffeeff53cc5d29ccce52/
devices?page1&page_size=100
Request
None
Response
agent_version This is the CylancePROTECT Desktop agent version installed on the device.
date_found This is the date and time (in UTC) when the threat was found on the device.
file_path This is the path where the file was found on the device.
Only one file_path is listed per page_item, therefore the same device could have
multiple entries, one entry per file_path.
file_status This is the current quarantine status of the file on the device.
• Default (unsafe)
• Quarantined
• Whitelisted
• Suspicious (abnormal)
• File Removed (delete): The file was removed from the console
• Corrupt: The file could not be scanned, it could be corrupt or malformed.
policy_id This is the unique identifier for the policy assigned to the device, or null if no policy
is assigned.
total_pages This is the total number of pages that can be retrieved, based on the page size
specified.
Example https://protectapi.cylance.com/threats/v2/download/
bf17366ee3bb8068a9ad70fc9e68496e7e311a055bf4ffeeff53cc5d29ccce52
Request
None
Response
url This is the URL you can use to download the file. The API call only provides the
URL, it does not download the file for you.
Example https://protectapi.cylance.com/memoryprotection/v2?
page=1&page_size=100&start_time=2019-11-01T12:00:00&
end_time:2019-11-30T12:00:00
Request
None
Response
agent_event_id This is the unique identifier for the memory protection event, created by the Agent.
created This is the date and time the memory protection event was created.
device_image_file_event_id This is the unique identifier for the memory protection event. Use this information
for get memory protection event.
dll_version This is the agent version that identified the memory protection event.
file_version This is the version number of the file that caused the memory protection event.
image_name This is the path and name of the file that triggered the memory protection event.
process_id This is the process ID of the memory protection event. It is generated by the
operating system.
sid This is the security identifier for the user, group, or other security principal. It is
generated by the operating system.
username This is the name of the user who was logged in to the device when the memory
protection event occurred.
violation_type This is the violation type number for the memory protection event. See Memory
violation types for more information.
Request
None
Response
agent_event_id This is the unique identifier for the memory protection event, created by the agent.
created This is the date and time the memory protection event was created.
device_image_file_event_id This is the unique identifier for the memory protection event. Use this information
for get memory protection event.
dll_version This is the agent version that identified the memory protection event.
file_version This is the version number of the file that caused the memory protection event.
image_name This is the path and name of the file that triggered the memory protection event.
process_id This is the process ID of the memory protection event. It is generated by the
operating system.
sid This is the security identifier for the user, group, or other security principal. It is
generated by the operating system.
username This is the name of the user who was logged in to the device when the memory
protection event occurred.
violation_type This is the violation type number for the memory protection event. See Memory
violation types for more information.
Get detections
Request a page with a list of detections belonging to a tenant, sorted in descending order (most recent detection
listed first). The page number and page size parameters are optional. When the values are not specified, the
default values are 1 and 20 respectively.
Request
None
Response
Device This is the device information that contains the device ID and device name.
OccurrenceTime This is the time when the detection occurred according to the associated endpoint
agent.
ReceivedTime This is the time when the detection was received by Cylance's cloud services.
total_pages This is the total number of pages that can be retrieved, based on the page size
specified.
Get detection
Request a specific detection resource belonging to a tenant. Use get detections to obtain the unique detection ID.
Example https://protectapi.cylance.com/detections/v2/
f2d6c020-53e2-4300-9005-2e006d9a0f57/details
Request
None
Response
ActivationTime This is the time that this particular detection first started to occur.
AppliedExceptions These are the exceptions that were applied to the detection.
• Id: This is the unique identifier for the exception.
• Version: This is the version number for the exception.
ArtifactsOfInterest This is the artifact associated with the rule that triggered the exception. This is a
dynamic object.
• Artifact:
• Type: This is the type of artifact.
• Uid: This is the unique identifier for the artifact.
• Source: This is the source for the artifact.
• StateA: This is this is the name of the artifact of interest.
AssociatedArtifacts This is the list of artifacts that were involved in this detection. These are dynamic
objects.
DetectionRule This is the description of the rule from which this detection originated.
• Category: This is the category of the rule.
• Description: This is the description of the rule.
• Id: This is the ID of the rule.
• Name: This is the name of the rule.
• Version: This is the version of the rule.
Detector This is the description of the plugin that originated the detection.
• Name: This is the name of the detector.
• Version: This is the version of the detector.
Product This is the description of the Cylance product that originated the detection.
• Name: This is the name of the Cylance product.
• Version: This is the version of the Cylance product.
SchemaVersion This is the version of the schema to which the object conforms.
ZoneIds This is the list of IDs for the zones associated with the detection.
Example https://protectapi.cylance.com/detections/v2/recent?
since=2018-07-26T01:20:07.596Z
Request
None
Response
Example retrieve the first page with up to 100 detections, with a high severity, and
sorted by occurrence time: https://protectapi.cylance.com/detections/v2/csv?
page=1&page_size=100&severity=High&sort=OccurrenceTime
Request
None
Response
Detected On This is the time when the detection occurred according to the associated endpoint
agent.
ReceivedTime This is the time when the detection was received by Cylance's cloud services.
Optional query string • start: This is the start date-time of the query range.
parameters • end: This is the end date-time of the query range.
• interval: This is the timer interval used for grouping detection resources.
• detection_type: This is the detection type filter.
• detected_on: This is the detected on filter.
• event_number: This is the event number filter.
• device: This is the device name filter.
• status: The values for this are new, in progress, follow up, reviewed, done, false
positive.
Example https://protectapi.cylance.com/detections/v2/severity?
start=2019-09-13T00:00:00Z&end=2019-09-15T23:59:59Z&interval=1d
Request
None
detected_on This is the time when the detection was received by Cylance's cloud services.
facet This is the facet used for the search. This is severity.
Update detection
Update the status or comment fields for an existing detection for a tenant.
Example https://protectapi.cylance.com/detections/v2/update
Request
[
{
"detection_id": "f2d6c020-53e2-4300-9005-2e006d9a0f57",
"field_to_update": {
"status": "Done"
}
}
]
When creating the request JSON, include the status or comment string, but not both in the same request.
Attempting to send the request with the status and comment strings included will result in a 400 bad request
error.
Response
Delete detection
Soft delete a specific CylanceOPTICS detection resource belonging to a tenant. Use get detections to obtain the
unique ID for the detection.
Example https://protectapi.cylance.com/detections/v2/
f2d6c020-53e2-4300-9005-2e006d9a0f57
None
Response
Delete detections
Delete CylanceOPTICS detection resources for a specific tenant.
Example https://protectapi.cylance.com/detections/v2/
Request
{
"ids": [
"f2d6c020-53e2-4300-9005-2e006d9a0f57",
"23f22a53-e656-4253-8bc5-e40b13e980d4"
]
}
Response
Create package
Create a new CylanceOPTICS package resource for a tenant.
Example https://protectapi.cylance.com/packages/v2
Request
{
"checksum":
"bf17366ee3bb8068a9ad70fc9e68496e7e311a055bf4ffeeff53cc5d29ccce52",
"packageDescriptor": {
"name": "Test Package",
"description": "This is a test package",
Response
examples This is a list of examples of how to use the package. This information is optional.
• description: A description of what the example does.
• invocationString: An example of how to invoke the package.
packageUrl This is the URL to retrieve the package (after the actual package has been
uploaded).
Request
None
Response
category This is the category of the package. The values are custom or cylance.
timeout This is the amount of time (in seconds) for the package to upload before the
status changes to timeout.
total_pages This is the total number of pages that can be retrieved based on the page size
specified.
uploadedBy This is the unique identifier of the user who uploaded the package.
• id: The unique ID for the user.
• login: The email address of the user.
uploadedOn This is the date and time (in UTC) when the package was uploaded.
Get package
Request a specific package resource belonging to a tenant. Use get packages to obtain the unique package ID.
Example https://protectapi.cylance.com/packages/v2/e378dacb-9324-453a-
b8c6-5a8406952195
Request
None
Response
category This is the category of the package. The values are custom or cylance.
playbookCount This is the number of playbooks that the package is associated with.
status This is the status of the package in the upload process. The statuses are started,
success, failed, and timeout.
timeout This is the amount of time (in seconds) for a package upload before the status
changes to timeout.
uploadedBy These are the unique identifiers of the user who uploaded the package.
• id: This is the unique ID for the user.
• login: This is the email address of the user.
uploadedOn This is the date and time (in UTC) when the package was uploaded.
Delete package
Delete a specific package resource belonging to a tenant. Use get packages to obtain the unique package ID.
Example https://protectapi.cylance.com/packages/v2/e378dacb-9324-453a-
b8c6-5a8406952195
Request
None
Response
Example https://protectapi.cylance.com/packages/v2/executions
Notes • To create a package execution, either provide a list of devices or a list of zones.
• For "devices" or "zones", use a format that is all upper case with the dashes
removed. Example: "E378DACB9324453AB8C65A8406952195"
• For "package" use the UUID4 format. Example: "61d8944e-d900-4724-87eb-
d10078b90a41"
Request
{
"execution": {
"name": "Package Execution",
"target": {
"devices": [
"E378DACB9324453AB8C65A8406952195"
]
},
"destination": "",
"packageExecutions": [
{
"arguments": [
"-browser ALL"
],
"package": "61d8944e-d900-4724-87eb-d10078b90a41"
}
],
"keepResultsLocally": true
}
}
{
"execution": {
"name": "Package Execution",
"target": {
"devices": [
"E378DACB9324453AB8C65A8406952195"
]
},
"destination": "",
Response
destination This is the FTP, SFTP, or SAMBA URL for saving the results. If saving the results to
the local disk drive, leave this empty ("").
keepResultsLocally This is the setting to save the results to the local disk drive. If true, the results are
saved to file://[Cylance Data Directory]/Optics.
target These are the devices or zones to execute the packages against.
• devices: This is the list of device IDs to execute the packages against.
• zones: This is the list of zone IDs to execute the packages against.
Target devices only or zones only per request, not both.
Device IDs and zone IDs must be uppercase letters and no hyphens.
createdAt This is the date and time (in UTC) when the execution was requested.
destination This is the FTP, SFTP, or SAMBA URL for saving the results.
deviceCount This is the number of online devices at the moment the package execution request
was made.
deviceStatuses These are the statuses of the package executions on the devices.
• acked (acknowledged): This is the number of devices that receive the package
execution command but have not yet responded.
• failed: This is the number of devices that failed to execute the packages.
• succeeded: This is the number of devices that have successfully executed the
packages.
keepResultsLocally This is the setting to save the results to the local disk drive. If true, the results are
saved to file//[Cylance Data Directory]/Optics.
target These are the devices and/or zones to execute the packages against.
• devices: This is the list of device IDs to execute the packages against.
• zones: This is the list of zone IDs to execute the packages against.
Example retrieve the first page with up to 100 Detections, filtered by ID, and
sorted by ID: https://protectapi.cylance.com/packages/v2/executions?
page=1&page_size=100&id=1C04-1C2D&sort=id
Request
None
Response
createdAt This is the date and time (in UTC) when the execution was requested.
destination This is the FTP, SFTP, or SAMBA URL for saving the results.
deviceCount This is the number of online devices at the moment the package execution request
was made.
deviceStatuses These are the statuses of the package executions on the device.
• acked (acknowledged): This is the number of devices that received the
package.
• failed: This is the number of devices that failed to execute the packages.
• succeeded: This is the number of devices that have successfully executed the
packages.
keepResultsLocally This is the setting to save the results to the local disk drive. If true, the results are
saved to file://[Cylance Data Directory]/Optics.
target These are the devices and/or zones to execute the packages against.
• devices: This is the list of device IDs to execute the packages against.
• The list of zone IDs to execute the packages against.
total_pages This is the total number of pages that can be retrieved based on the page size
specified.
Example https://protectapi.cylance.com/packages/v2/executions/abebf88c-
f283-4edc-834b-aa8ad3bc682c
Request
None
Response
createdAt This is the date and time (in UTC) when the execution was requested.
destination This is the FTP, SFTP, or SAMBA URL for saving the results.
deviceCount This is the number of online devices at the moment the package execution request
was made.
deviceStatuses These are the statuses of the package executions on the devices.
• acked (acknowledged): This is the number of devices that received the
package execution.
• failed: This is the number of devices that failed to execute the packages.
• succeeded: This is the number of devices that have successfully executed the
packages.
keepResultsLocally This is the setting to save the results to the local disk drive. If true, the results are
saved to file://[Cylance Data Directory]/Optics.
target These are the devices and/or zones to execute the package against.
• devices: This is the list of device IDs to execute the packages against.
• zones: This is the list of zone IDs to execute the packages against.
Example https://protectapi.cylance.com/packages/v2/executions/abebf88c-
f283-4edc-834b-aa8ad3bc682c
Request
None
Response
createdAt This is the date and time (in UTC) when the execution was requested.
destination This is the FTP, SFTP, or SAMBA URL for saving the results.
deviceCount This is the number of online devices at the moment the package execution request
was made.
deviceStatuses These are the statuses of the package executions on the devices.
• acked (acknowledged): This is the number of devices that received the
package execution.
• failed: This is the number of devices that failed to execute the packages.
• succeeded: This is the number of devices that have successfully executed the
packages.
keepResultsLocally This is the setting to save the results to the local disk drive. If true, the results are
saved to file://[Cylance Data Directory]/Optics.
target These are the devices and/or zones to execute the package against.
• devices: This is the list of device IDs to execute the packages against.
• zones: This is the list of zone IDs to execute the packages against.
Request
None
Response
Category This is the category of rule grouping that the detection rule belongs to. Possible
values include:
• Custom: These are custom rules that users have uploaded to a tenant.
• Cylance rules: These are the rules from Cylance.
• Cylance experimental: These are the rules from Cylance that are deemed to be
experimental.
DeviceCount This is the number of devices that have the detection rule applied.
LastModified This is the timestamp (in UTC) of the last time that the detection rule was
modified.
ModifiedBy This is an object detailing the last user to modify the detection rule. It includes the
following fields:
• id: This is the unique ID of the user who modified the detection rule.
• login: This is the email address of the user who modified the detection rule.
OperatingSystems This is an object detailing the operating systems that the detection rule can be
applied to. It will include the "name" field. This can consist of:
• "Windows"
• "MacOS"
RulesetCount This is the number of detection rule sets that have the detection rule enabled.
Severity This is the severity assigned to the detection rule. Possible values are:
• High
• Medium
• Low
• Informational
Example https://protectapi.cylance.com/rules/v2/csv
Request
None
Response
Category This is the category that the detection rule belongs to.
Device Count This is the number of devices that have the detection rule applied.
Last Modified This is the timestamp (in UTC) of the last time that the detection rule was
modified.
Modified By This is the email address of the user who last modified the detection rule.
Ruleset Count This is the number of detection rule sets that have the detection rule enabled.
Example https://protectapi.cylance.com/rules/v2/008ece50-49af-472a-
b0d8-3c3700883738
Request
None
Response
ActivationCanUtlize This indicates if state events (historical rundowns) should be considered when
evaluating for matches.
DeviceStateEvents
ActivationLifetimeLimit This is the amount of time a rule is active. If the rule has been active past this
duration, then the instance of the rule will be removed.
AllowMultipleActivations This indicates if the rule can be activated multiple times, simultaneously.
PerContext
MaximumConcurrent This indicates the maximum number of concurrently executing instances of this
rule.
Activations
NotValidAfter This is the date and time (in UTC) after which the detection rule is not valid.
NotValidBefore This is the date and time (in UTC) before which the detection rule is not valid.
Paths This defines the paths by which this deterministic finite automata (DFA) can be
iterated.
Plugin This is the CylanceOPTICS plugin associated with the detection rule.
Product This is the name of the product associated with the detection rule.
RuleSourceGrouping This is the classification or designator for the rule source (for example,
CylanceOPTICS).
Severity This is the severity assigned to the detection rule. Possible values are:
• High
• Medium
• Low
• Informational
States This is the list of all available states. If no paths are specified, the states are
transitioned in the order they are specified.
TerminateActiveDfaIf If the activating process (and, if applicable, all other processes that have been
absorbed as activating processes) end, then this will terminate the active DFA.
ActivatingProcessesEnd
Example https://protectapi.cylance.com/rules/v2/validate
Request
{
"Name": "Name of Detection Rule",
"Description": "Description of Detection Rule",
"Severity": "Medium",
"ObjectType": "DetectionRule",
"OperatingSystems": [
{
"Name": "Windows",
}
],
"Plugin": {
"Name": "OpticsDetector"
},
"Product": {
"Name": "CylanceOPTICS"
},
"SchemaVersion": 1,
"States": [
{
"Name": "MaliciousApp",
"Scope": "Global",
"Function": "Function",
"FieldOperators": {
"Function": {
"Type": "EqualsAny",
"Operands": [
{
"Source": "LiteralSet",
"Data": "badapp.exe"
}
],
"OperandType": "string",
"Options": {
"IgnoreCase": true
}
}
},
"Actions": [
{
"Type": "AOI",
"ItemName": "InstigatingProcess",
Response
Plugin This is the CylanceOPTICS plugin associated with the detection rule.
Product This is the name of the product associated with the detection rule.
Severity This is the severity assigned to the detection rule. Possible values are:
• High
• Medium
• Low
• Informational
States This is the list of all available states. If no paths are specified, the states are
transitioned in the order they are specified.
errors This is a list of error messages that will prevent the Detection Rule from validating
and operating correctly.
valid This returns "true" if the Detection Rule passes validation. It returns "false" if the
Detection Rule does not pass validation.
warnings This is a list of warning message strings that may impact the performance or
validity of the Detection Rule.
Example https://protectapi.cylance.com/rules/v2
Request
{
"Name": "Name of Detection Rule",
"Description": "Description of Detection Rule",
"Severity": "Medium",
"ObjectType": "DetectionRule",
"OperatingSystems": [
{
"Name": "Windows"
}
],
Response
Plugin This is the CylanceOPTICS plugin associated with the detection rule.
Product This is the name of the product associated with the detection rule.
Severity This is the severity assigned to the detection rule. Possible values are:
• High
• Medium
• Low
• Informational
States This is the list of all available states. If no paths are specified, the states are
transitioned in the order they are specified.
Plugin This is the CylanceOPTICS plugin associated with the detection rule.
Product This is the name of the product associated with the detection rule.
RuleSourceGrouping This is the classification or designator for the rule source (for example,
CylanceOPTICS).
Severity This is the severity assigned to the detection rule. The possible values are:
• High
• Medium
• Low
• Informational
States This is the list of all available states. If no paths are specified, the states are
transitioned in the order they are specified.
The response JSON schema contains the entirety of the Detection Rule Logic.
The "id" and "version" fields are automatically populated when the request is submitted.
Example https://protectapi.cylance.com/rules/v2/c407f28a-3805-4014-
b32c-0c2553ac1e10
{
"Name": "Name of Detection Rule",
"Description": "Description of Detection Rule",
"Severity": "High",
"ObjectType": "DetectionRule",
"OperatingSystems": [
{
"Name": "Windows"
}
],
"Plugin": {
"Name": "OpticsDetector"
},
"Product": {
"Name": "CylanceOPTICS"
},
"SchemaVersion": 1,
"States": [
{
"Name": "MaliciousApp",
"Scope": "Global",
"Function": "Function",
"FieldOperators": {
"Function": {
"Type": "EqualsAny",
"Operands": [
{
"Source": "LiteralSet",
"Data": "badapp.exe"
}
],
"OperandType": "string",
"Options": {
"IgnoreCase": true
}
}
},
"Actions": [
{
"Type": "AOI",
"ItemName": "InstigatingProcess",
"Position": "PostActivation"
}
],
"Filters": [
{
"Type": "Event",
"Data": {
"Category": "Process",
"SubCategory": "",
"Type": "*"
}
}
]
}
],
"Tags": [
"CylanceOPTICS"
Response
Plugin This is the CylanceOPTICS plugin associated with the detection rule.
Product This is the name of the product associated with the detection rule.
Severity This is the severity assigned to the detection rule. Possible values are:
• High
• Medium
• Low
• Informational
States This is the list of all available states. If no paths are specified, the states are
transitioned in the order they are specified.
Plugin This is the CylanceOPTICS plugin associated with the detection rule.
Product This is the name of the product associated with the detection rule.
RuleSourceGrouping This is the classification or designator for the rule source (for example,
CylanceOPTICS).
Severity This is the severity assigned to the detection rule. The possible values are:
• High
• Medium
• Low
• Informational
States This is the list of all available states. If no paths are specified, the states are
transitioned in the order they are specified.
The response JSON schema contains the entirety of the detection rule Logic.
The "id" and "version" fields are automatically populated when the request is submitted.
Example https://protectapi.cylance.com/rules/v2/c407f28a-3805-4014-
b32c-0c2553ac1e10/deactivate
Request
None
Response
Example https://protectapi.cylance.com/rules/v2/c407f28a-3805-4014-
b32c-0c2553ac1e10/natlang
Request
None
Response
Example https://protectapi.cylance.com/rules/v2/c407f28a-3805-4014-
b32c-0c2553ac1e10/counts
Request
None
Response
DeviceCount This is the number of devices that have the requested detection rule applied.
PolicyCount This is the number of device policies that have the requested detection rule
applied.
RulesetCount This is the number of detection rule sets that have the requested detection rule
enabled.
None
Response
page_items This is a list of exception objects that are available in the tenant that will contain
the following fields.
last_modified This is the timestamp (in UTC) of the last time that the detection rule was
modified.
modified_by This is an object detailing the last user to modify the detection rule. It includes the
following fields:
• id: This is the unique ID of the user who modified the detection rule.
• login: This is the email address of the user who modified the detection rule.
policies This is a list of policy IDs that a detection rule set is applied to.
device_count This is the number of devices that have the detection rule applied.
category This is the category of rule grouping that the detection rule belongs to. Possible
values include:
• Custom: These are custom rules that users have uploaded to a tenant.
• Cylance rules: These are the rules from Cylance.
• Cylance experimental: These are the rules from Cylance that are deemed to be
experimental.
Example https://protectapi.cylance.com/rulesets/v2/csv
Request
None
Response
Last Modified This is the timestamp (in UTC) of the last time the detection rule set was modified.
Modified By This is the email address of the user who last modified the detection rule set.
Notification This is the notification message to display on a device if the detection rule
triggers.
Device Count This is the number of devices that have the detection rule set applied.
Example https://protectapi.cylance.com/rulesets/v2/c407f28a-3805-4014-
b32c-0c2553ac1e17
Request
None
Response
notification_message This is the message to display on the endpoint when a detection rule is triggered.
last_modified This is the timestamp (in UTC) of the last time that the detection rule set was
modified.
modified_by This is an object detailing the last user to modify the detection rule. It includes the
following fields:
• id: This is the unique ID of the user who modified the detection rule.
• login: This is the email address of the user who modified the detection rule.
rules This is a list of detection rule objects and their associated response actions,
detection exceptions, and package playbooks.
severity This is the severity assigned to the detectionrule. Possible values are:
• High
• Medium
• Low
• Informational
operating_systems This is an object detailing the operating systems to which the detection rule can
be applied. It will include the "name" field. This can consist of:
• "Windows"
• "MacOS"
date_added This is the timestamp (in UTC) when the detection rule was added to the tenant.
enabled This determines whether or not a detection rule is enabled in the detection rule
set. When viewing the content of a detection rule set, this should always be set to
'true'.
notification_enabled This determines whether or not the message defined in the 'notification_message'
field should display on the device when the detection rule is triggered.
To enable display desktop notification on device using the API, set
notification_enabled and DisplayDesktopNotification to "true". To disable, set both
to "false". The DisplayDesktopNotification setting enables or disables the feature.
The notification_enabled setting affects the display desktop notification on device
checkbox in the console as enabled (checked) or disabled (unchecked).
responses This is a list of response objects for each response action enabled for a particular
detection rule. each object will include the following fields:
• template_id: This is the ID of the response template to use (this is provided by
Cylance).
• response_rule_id: This is the ID of the response rule to enable (this is provided
by Cylance).
• response_rule_version: This is the version of the response rule to enable (this is
provided by Cylance).
• description: This is the description/name of the response rule.
• value: This is a currently unused field.
• enabled: This will always be 'true' when viewing a detection rule set.
• created: This is the date that the response rule was added to the tenant.
exceptions This is a list of exception rule objects that should be applied to the detection rule.
Each object will include the following fields:
• exception_id: This is the unique ID of the exception rule.
• enabled: This will always be 'true' when viewing a detection rule set.
• name: This is the name of the exception rule.
playbooks This is a list of package playbook unique IDs that will be executed when the
detection rule is triggered on the device.
Example https://protectapi.cylance.com/rulesets/v2
Request
{
"name": "Test Rule Set",
"description": "Test Detection Rule Set",
"notification_message": "",
"category": "Custom",
"rules": [
{
"detection_rule_id": "008ece50-49af-472a-b0d8-3c3700883738",
"detection_rule_version": 1,
"detection_name": "Gatekeeper Bypass (MITRE)",
"detection_description": "Detects on usage to bypass Gatekeeper",
"category": "Custom",
"severity": "Low",
"operating_systems": [
{
"Name": "macOS"
}
],
"date_added": "2018-11-20T17:58:49Z",
Response
notification_message This is the message to display on the endpoint when a detection rule is triggered.
last_modified This is the timestamp (in UTC) of the last time that the detection rule set was
modified.
modified_by This is an object detailing the last user to modify the detection rule. It includes the
following fields:
• id: This is the unique ID of the user who modified the detection rule.
• login: This is the email address of the user who modified the detection rule.
rules This is a list of detection rule objects and their associated response actions,
detection exceptions, and package playbooks.
severity This is the severity assigned to the detection rule. Possible values are:
• High
• Medium
• Low
• Informational
operating_systems This is an object detailing the operating systems to which the detection rule can
be applied. It will include the "name" field. This can consist of:
• "Windows"
• "MacOS"
date_added This is the timestamp (in UTC) when the detection rule was added to the tenant.
enabled This determines whether or not a detection rule is enabled in the detection rule
set. When viewing the content of a detection rule set, this should always be set to
'true'.
notification_enabled This determines whether or not the message defined in the 'notification_message'
field should display on the device when the detection rule is triggered.
To enable display desktop notification on device using the API, set
notification_enabled and DisplayDesktopNotification to "true". To disable, set both
to "false". The DisplayDesktopNotification setting enables or disables the feature.
The notification_enabled setting affects the display desktop notification on device
checkbox in the console as enabled (checked) or disabled (unchecked).
responses This is a list of response objects for each response action enabled for a particular
detection rule. Each object will include the following fields:
• template_id: This is the ID of the response template to use (this is provided by
Cylance).
• response_rule_id: This is the ID of the response rule to enable (this is provided
by Cylance).
• response_rule_version: This is the version of the response rule to enable (this is
provided by Cylance).
• description: This is the description/name of the response rule.
• value: This is a currently unused field.
• enabled: This will always be 'true' when viewing a detection rule set.
• created: This is the date that the response rule was added to the tenant.
exceptions This is a list of exception rule objects that should be applied to the detection rule.
Each object will include the following fields:
• exception_id: This is the unique ID of the exception rule.
• enabled: This will always be 'true' when viewing a detection rule set.
• name: This is the name of the exception rule.
playbooks This is a list of package playbook unique IDs that will be executed when the
detection rule is triggered on the device.
Example https://protectapi.cylance.com/rulesets/v2/default
Request
None
Response
notification_message This is the message to display on the endpoint when a detection rule is triggered.
rules This is a list of detection rule objects and their associated response actions,
detection exceptions, and package playbooks.
severity This is the severity assigned to the detection rule. Possible values are:
• High
• Medium
• Low
• Informational
operating_systems This is an object detailing the operating systems to which the detection rule can
be applied. It will include the "name" field. This can consist of:
• "Windows"
• "MacOS"
date_added This is the timestamp (in UTC) when the detection rule was added to the tenant.
enabled This determines whether or not a detection rule is enabled in the detection rule
set. When viewing the content of a detection rule set, this should always be set to
'true'.
notification_enabled This determines whether or not the message defined in the 'notification_message'
field should display on the device when the detection rule is triggered.
To enable display desktop notification on device using the API, set
notification_enabled and DisplayDesktopNotification to "true". To disable, set both
to "false". The DisplayDesktopNotification setting enables or disables the feature.
The notification_enabled setting affects the display desktop notification on device
checkbox in the console as enabled (checked) or disabled (unchecked).
responses This is a list of response objects for each response action enabled for a particular
detection rule. Each object will include the following fields:
• template_id: This is the ID of the response template to use (this is provided by
Cylance).
• response_rule_id: This is the ID of the response rule to enable (this is provided
by Cylance).
• response_rule_version: This is the version of the response rule to enable (this is
provided by Cylance).
• description: This is the description/name of the response rule.
• value: This is a currently unused field.
• enabled: This will always be 'true' when viewing a detection rule set.
• created: This is the date that the response rule was added to the tenant.
exceptions This is a list of exception rule objects that should be applied to the detection rule.
Each object will include the following fields:
• exception_id: This is the unique ID of the exception rule.
• enabled: This will always be 'true' when viewing a detection rule set.
• name: This is the name of the exception rule.
playbooks This is a list of package playbook unique IDs that will be executed when the
detection rule is triggered on the device.
Example https://protectapi.cylance.com/rulesets/v2/c407f28a-3805-4014-
b32c-0c2553ac1e17
Request
{
"name": "",
"description": "",
"notification_message": "",
Response
notification_message This is the message to display on the endpoint when a detection rule is triggered.
rules This is a list of detection rule objects and their associated response actions,
detection exceptions, and package playbooks.
severity This is the severity assigned to the detection rule. Possible values are:
• High
• Medium
• Low
• Informational
operating_systems This is an object detailing the operating systems to which the detection rule can
be applied. It will include the "name" field. This can consist of:
• "Windows"
• "MacOS"
date_added This is the timestamp (in UTC) when the detection rule was added to the tenant.
enabled This determines whether or not a detection rule is enabled in the detection rule
set. When viewing the content of a detection rule set, this should always be set to
'true'.
notification_enabled This determines whether or not the message defined in the 'notification_message'
field should display on the device when the detection rule is triggered.
To enable display desktop notification on device using the API, set
notification_enabled and DisplayDesktopNotification to "true". To disable, set both
to "false". The DisplayDesktopNotification setting enables or disables the feature.
The notification_enabled setting affects the display desktop notification on device
checkbox in the console as enabled (checked) or disabled (unchecked).
responses This is a list of response objects for each response action enabled for a particular
detection rule. Each object will include the following fields:
• template_id: This is the ID of the response template to use (this is provided by
Cylance).
• response_rule_id: This is the ID of the response rule to enable (this is provided
by Cylance).
• response_rule_version: This is the version of the response rule to enable (this is
provided by Cylance).
• description: This is the description/name of the response rule.
• value: This is a currently unused field.
• enabled: This will always be 'true' when viewing a detection rule set.
• created: This is the date that the response rule was added to the tenant.
exceptions This is a list of exception rule objects that should be applied to the detection rule.
Each object will include the following fields:
• exception_id: This is the unique ID of the exception rule.
• enabled: This will always be 'true' when viewing a detection rule Set.
• name: This is the name of the exception rule.
playbooks This is a list of package playbook unique IDs that will be executed when the
detection rule is triggered on the device.
Example https://protectapi.cylance.com/rulesets/v2/c407f28a-3805-4014-
b32c-0c2553ac1e17
Request
None
Example https://protectapi.cylance.com/rulesets/v2
Request
{
"ids": [
"c407f28a-3805-4014-b32c-0c2553ac1e17",
"998ece50-49af-472a-b0d8-3c3700883736"
]
}
Response
success This is a boolean field denoting whether or not the detection rule set was deleted.
Example https://protectapi.cylance.com/exceptions/v2
Request
None
Response
page_items This is a list of exception objects that are available in the tenant.
DeviceCount This is the number of devices that have the exception applied.
LastModified This is the timestamp (in UTC) of the last time that the exception was modified.
OperatingSystem These are the operating systems that the exception can be applied to. The "name"
field can consist of:
• "Windows"
• "MacOS"
PolicyCount This is the number of policies that have the exception applied.
RulesetCount This is the number of detection rule sets that have the exception applied.
Example https://protectapi.cylance.com/rulesets/v2/csv
None
Response
Last Modified This is the timestamp (in UTC) of the last time the exception was modified.
Modified By This is the email address of the user who last modified the exception.
Device Count This is the number of devices that have the exception applied.
Ruleset Count This is the number of detection rule sets that have the exception enabled.
Example https://protectapi.cylance.com/exceptions/v2/24eff732-4d39-47df-b246-
f7dbb8a8fd87
Request
None
OperatingSystems This is the list of operating systems to which the detection exception applies.
Plugin This is the name of the product feature to which the detection exception applies.
Product This is the name of the Cylance product to which the detection exception applies.
SchemaVersion This is the version of the schema to which the object conforms.
States This is the list of all available states. If no paths are specified, the states are
transitioned in the order they are specified.
Tags This is the list of tags associated with the detection exception.
Example https://protectapi.cylance.com/exceptions/v2
{
"Name": "My Exception",
"Description": "My Exception Description",
"ObjectType": "ExceptionRule",
"OperatingSystems": [
{
"Name": "Windows"
}
],
"Plugin": {
"Name": "OpticsDetector"
},
"Product": {
"Name": "CylanceOPTICS"
},
"SchemaVersion": 1,
"States": [
{
"Name": "UnsignedProc",
"Scope": "Global",
"Function": "Function",
"FieldOperators": {
"Function": {
"Type": "EqualsAny",
"Operands": [
{
"Source": "LiteralSet",
"Data": iexplore.exe"
}
],
"OperandType": "string",
"Options": {
"IgnoreCase": true
}
}
},
"Actions": [
{
"Type": "AOI",
"ItemName": "InstigatingProcess",
"Position": "PostActivation"
}
]
}
],
"Tags": [
"CylanceOPTICS, Exception"
]
}
Response
OperatingSystems This is the list of operating systems to which the detection exception applies.
Plugin This is the name of the product feature to which the detection exception applies.
Product This is the name of the Cylance product to which the detection exception applies.
States This is the list of all available states. If no paths are specified, the states are
transitioned in the order they are specified.
Tags This is the list of tags associated with the detection exception.
The "id" and "version" fields are automatically populated when the request is submitted.
Example https://protectapi.cylance.com/exceptions/v2/24eff732-4d39-47df-b246-
f7dbb8a8fd87
Request
{
"Name": "My Exception",
"Description": "My Exception Description",
"ObjectType": "ExceptionRule",
"OperatingSystems": [
{
"Name": "Windows"
}
],
"Plugin": {
"Name": "OpticsDetector"
},
"Product": {
"Name": "Optics"
},
"SchemaVersion": 1,
"States": [
{
"Name": "UnsignedProc",
"Scope": "Global",
"Function": "Function",
"FieldOperators": {
"Function": {
"Type": "EqualsAny",
"Operands": [
{
"Source": "LiteralSet",
"Data": iexplore.exe"
}
],
"OperandType": "string",
"Options": {
"IgnoreCase": true
}
}
},
"Actions": [
{
"Type": "AOI",
"ItemName": "InstigatingProcess",
"Position": "PostActivation"
}
]
}
],
"Tags": [
"Optics, Exception"
]
}
OperatingSystems This is the list of operating systems to which the detection exception applies.
Plugin This is the name of the product feature to which the detection exception applies.
Product This is the name of the Cylance product to which the detection exception applies.
States This is the list of all available states. If no paths are specified, the states are
transitioned in the order they are specified.
Tags This is the list of tags associated with the detection exception.
The "id" and "version" fields are automatically populated when the request is submitted.
Example https://protectapi.cylance.com/exceptions/v2/24eff732-4d39-47df-b246-
f7dbb8a8fd87/deactivate
Request
None
Response
Please see the Response status codes for more information. Detection rule sets are not automatically
communicated to all endpoints when updates to detection exceptions are made. To ensure that the latest logic is
applied to endpoints in the quickest manner, re-save any affected detection rule sets (either via the UI or API).
Optional query string • value: The value specifies whether to lockdown or not. The default value is
parameters 'true'.
• expires: This is the duration of the lockdown. The Format is 'd:hh:mm', where
the maximum is 3 days and the minimum is 5 minutes.
Example https://protectapi.cylance.com/devicecommands/
v2/45E07F34E76B4A9EB167D6D0C510D6BA/lockdown?
value=true&expires=0:00:05
Note: The format of the device ID must be in all caps with no hyphens.
Request
{
"lockdown_config_id": 1,
"lockdown_type": "Lockdown",
"expires": "0:00:05",
"parameters": {
"Network": {}
}
}
Response
id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
hostname This is the hostname of the device that the lockdown command was issued to.
tenant_id This is the unique tenant ID of the tenant that the device belongs to.
connection_status This displays whether or not the device is connected to Cylance's cloud services.
optics_device_version This returns the numerical version of CylanceOPTICS running on the device.
lockdown_expiration This is the timestamp (in UTC) of when the current device lockdown is set to
expire.
lockdown_initiated This is the timestamp (in UTC) of when the current device lockdown was initiated.
lockdown_history This is a list of historical device lockdown commands issued to this particular
device.
user_id This is the unique ID of the user who locked down the device.
timestamp This is the timestamp (in UTC) of when the command was initiated.
Example https://protectapi.cylance.com/devicecommands/
v2/45E07F34E76B4A9EB167D6D0C510D6BA/lockdown
Note: The format of the device ID must be in all caps with no hyphens.
None
Response
id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
hostname This is the hostname of the device that the lockdown command was issued to.
tenant_id This is the unique tenant ID of the tenant that the device belongs to.
connection_status This displays whether or not the device is connected to Cylance's cloud services.
optics_device_version This returns the numerical version of CylanceOPTICS running on the device.
lockdown_expiration This is the timestamp (in UTC) of when the current device lockdown is set to
expire.
lockdown_initiated This is the timestamp (in UTC) of when the current device lockdown was initiated.
lockdown_history This is a list of historical device lockdown commands issued to this particular
device.
user_id This is the unique ID of the user who locked down the device.
timestamp This is the timestamp (in UTC) of when the command was initiated.
Example https://protectapi.cylance.com/devicecommands/v2/retrieved_files?
page=1&page_size=100
Request
None
Response
data This is an object containing the various fields associated with the file retrieval
request.
tenant_id This is the unique tenant ID of the tenant that the device belongs to.
user_id This is the unique ID of the user who locked down the device.
device_id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
created_at This is the timestamp (in UTC) of when the file retrieval was requested.
download_url This is the unique URL and parameters required to download the retrieved file.
file_status This is the status of the file retrieval. This will always be "PENDING" for newly
created file retrievals.
• REQUEST: The file retrieval has not been requested, but the user may issue a
request for it.
• RETRY_REQUEST: The file retrieval has been requested previously but no
results were received. It can be requested again.
• PENDING: The file retrieval has been requested but has not yet been
completed.
• DOES_NOT_EXIST: The file retrieval has been requested but is not present on
the device.
• AVAILABLE: The file is available for download. A download link (download_url)
is generated and valid for the next 10 minutes.
• UNAVAILABLE: The file is not available. This status may indicate that the
requested device is not online, or the requested device failed to upload the
file. This status will become RETRY_REQUEST after an hour.
file_status_description This displays any errors or status messages associated with the retrieval request.
user_login This is the email address of the user who initiated the file retrieval request.
hostname This is the hostname of the device that the file retrieval was requested on.
Example https://protectapi.cylance.com/devicecommands/
v2/45E07F34E76B4A9EB167D6D0C510D6BA/getfile
Note: The format of the device ID must be in all caps with no hyphens.
Request
{
"file_path": "C:\path\to\file.txt"
}
Response
data This is an object containing the various fields associated with the file retrieval
request.
tenant_id This is the unique tenant ID of the tenant that the device belongs to.
user_id This is the unique ID of the user who locked down the device.
device_id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
created_at This is the timestamp (in UTC) of when the file retrieval was requested.
download_url This is the unique URL and parameters required to download the retrieved file.
file_status This is the status of the file retrieval. This will always be "PENDING" for newly
created file retrievals.
file_status_description This displays any errors or status messages associated with the retrieval request.
user_login This is the email address of the user who initiated the file retrieval request.
hostname This is the hostname of the device that the file retrieval was requested on.
Example https://protectapi.cylance.com/devicecommands/
v2/45E07F34E76B4A9EB167D6D0C510D6BA/getfile:get
Note: The format of the device ID must be in all caps with no hyphens.
Request
{
"file_path": "C:\path\to\file.txt"
}
Response
data This is an object containing the various fields associated with the file retrieval
request.
tenant_id This is the unique tenant ID of the tenant that the device belongs to.
user_id This is the unique ID of the user who locked down the device.
device_id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
created_at This is the timestamp (in UTC) of when the file retrieval was requested.
download_url This is the unique URL and parameters required to download the retrieved file.
file_status This is the status of the file retrieval. This will always be "PENDING" for newly
created file retrievals.
• REQUEST: The file retrieval has not been requested, but the user may issue a
request for it.
• RETRY_REQUEST: The file retrieval has been requested previously but no
results were received. It can be requested again.
• PENDING: The file retrieval has been requested but has not yet been
completed.
• DOES_NOT_EXIST: The file retrieval has been requested but is not present on
the device.
• AVAILABLE: The file is available for download. A download link (download_url)
is generated and valid for the next 10 minutes.
• UNAVAILABLE: The file is not available. This status may indicate that the
requested device is not online, or the requested device failed to upload the
file. This status will become RETRY_REQUEST after an hour.
file_status_description This displays any errors or status messages associated with the retrieval request.
user_login This is the email address of the user who initiated the file retrieval request.
hostname This is the hostname of the device that the file retrieval was requested on.
Optional query string The 'q' request parameter was replaced with multiple request parameters to
parameters provide more flexibility when filtering the Focus View List. Any Get Focus View
List requests that contain the 'q' request parameter will not return any results.
Requests should use the following parameters:
• artifact_type: This is the type of Artifact for the Focus View. Types include
Protect, Process, File, and NetworkConnection. The artifact type is case-
insensitive.
• created_at: This is the date when the file retrieval was requested. The date
format is YYYY-MM-DD. The results are for a 24 hour period. For example,
using "&created_at=2019-11-01" will return results that occurred from
2019-11-01:00:00:00 to 2019-11-01:23:59:59.
• description: This is the human-readable description for the Focus View. The
description is case-insensitive.
• hostname: This is the hostname of the device for which the retrieval was
requested. The hostname is case-insensitive.
• status: This is the status of the Focus View request or result. Statuses include
AVAILABLE, DOES_NOT_EXIST, PENDING, REQUEST, RETRY_REQUEST,
UNAVAILABLE, and UNKNOWN_DEVICE. The statuses are case-sensitive.
• page: This is the page number to request. The default is 1.
• page_size: This is the number of file retrieval records to retrieve per page. The
default is 20.
• sort: This is used to sort by field (adding '-' in front of the value denotes
descending order).
Example https://protectapi.cylance.com/foci/v2?page=1&page_size=100
Request
None
Response
total_number_of_items This is the total number of Focus Views available in the tenant.
device_id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
value This is the UID of the Artifact used to gather the focus view.
threat_type This is an option field to use with a "Protect" artifact_type to denote the type of
threat that a focus view is being generated for.
tenant_id This is the unique tenant ID of the tenant that the device belongs to.
created_at This is the timestamp (in UTC) of when the file retrieval was requested.
hostname This is the hostname of the device that the file retrieval was requested on.
status This is the status of the focus view result or request. Possible values are:
• AVAILABLE: A focus view has been generated and is available for viewing.
• DOES_NOT_EXIST: The focus view requested on the device cannot be
completed because the requested parameters do not exist on the device.
• PENDING: The focus view has been requested.
• REQUEST: The focus view has not been generated, but it can be requested.
• RETRY_REQUEST: The focus view has not been generated. It was previously
requested but no results were received. It can be requested again.
• UNAVAILABLE: The focus view is not available, and the associated device is
not online to fulfill the request. It can be requested at a later time.
• UNKNOWN_DEVICE: The F focus view is not available, and the associated
device is no longer known.
relations This is a list of objects that are related to this focus view. The following fields can
be contained:
• Object: The URL of a focus view, InstaQuery, or Detection Event that is linked to
this focus view.
• Relationship: How the relationship was established.
Example https://protectapi.cylance.com/foci/v2/search
[
{
"uid": "59F849F29BBE4F1F889AAF50F9153618",
"device_id": "E378DACB9324453AB8C65A8406952195"
}
]
Response
uid This is the unique ID of a CylancePROTECT Desktop event. This is "value" from Get
focus view list.
device_id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
device_id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
status This is the status of the focus view result or request. Possible values are:
• AVAILABLE: A focus view has been generated and is available for viewing.
• PENDING: The focus view has been requested.
• REQUEST: The focus view has not been generated, but it can be requested.
• RETRY_REQUEST: The focus view has not been generated. It was previously
requested but no results were received. It can be requested again.
• DOES_NOT_EXIST: The focus view requested on the device cannot be
completed because the requested parameters do not exist on the device.
• UNAVAILABLE: The focus view is not available, and the associated device is
not online to fulfill the request. It can be requested at a later time.
• UNKNOWN_DEVICE: The focus view is not available, and the associated device
is no longer known.
Example https://protectapi.cylance.com/foci/v2
Request
{
"device_id": "E378DACB9324453AB8C65A8406952195",
"artifact_type": "Process",
"artifact_subtype": "Uid",
"value": "59F849F29BBE4F1F889AAF50F9153618",
"threat_type": "THREAT",
"description": "Focus View Example"
}
Response
device_id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
value This is the UID of the artifact to gather a focus view about. This can be obtained
from InstaQuery results, another focus view, the details/associated artifacts of a
detection event, or anywhere else an artifact is referenced.
threat_type This is an optional field to use with a "Protect" artifact_type to denote the type of
threat that a focus view is being generated for.
device_id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
value This is the UID of the artifact to gather a focus view about. This can be obtained
from InstaQuery results, another focus view, the details/associated artifacts of a
detection event, or anywhere else an artifact is referenced.
threat_type This is an optional field to use with a "Protect" artifact_type to denote the type of
threat that a focus view is being generated for.
tenant_id This is the unique ID of the tenant associated with the focus view.
create_at This is the timestamp (in UTC) of when the focus view was created.
hostname This is the hostname of the device that the focus view was requested from.
status This is the status of the focus view result or request. Possible values are:
• AVAILABLE: A focus view has been generated and is available for viewing.
• PENDING: The focus view has been requested.
• REQUEST: The focus view has not been generated, but it can be requested.
• RETRY_REQUEST: The focus view has not been generated. It was previously
requested but no results were received. It can be requested again.
• DOES_NOT_EXIST: The focus view requested on the device cannot be
completed because the requested parameters do not exist on the device.
• UNAVAILABLE: The focus view is not available, and the associated device is
not online to fulfill the request. It can be requested at a later time.
• UNKNOWN_DEVICE: The focus view is not available, and the associated device
is no longer known.
relations This is a list of objects that are related to this focus view. The following fields can
be contained:
• Object: This is the URL of a focus view, InstaQuery, or detection event that is
linked to this focus view.
• Relationship: This shows how the relationship was established.
Example https://protectapi.cylance.com/foci/v2/
A0AC3D2117C40D0576CED0D99069E96G
Request
None
Response
device_id This is the unique device ID that the lockdown command was issued to. See About
device ID for device ID formatting.
value This is the UID of the Artifact used to gather the focus view.
threat_type This is an optional field to use with a "Protect" artifact_type to denote the type of
threat that a focus view is being generated for.
tenant_id This is the unique tenant ID of the tenant that the device belongs to.
created_at This is the timestamp (in UTC) of when the file retrieval was requested.
hostname This is the hostname of the device that the file retrieval was requested on.
status This is the status of the focus view result or request. The possible values are:
• AVAILABLE: A focus view has been generated and is available for viewing.
• PENDING: The focus view has been requested.
• REQUEST: The focus view has not been generated, but it can be requested.
• RETRY_REQUEST: The focus view has not been generated. It was previously
requested but no results were received. It can be requested again.
• DOES_NOT_EXIST: The focus view requested on the device cannot be
completed because the requested parameters do not exist on the device.
• UNAVAILABLE: The focus view is not available, and the associated device is
not online to fulfill the request. It can be requested at a later time.
• UNKNOWN_DEVICE: The focus view is not available, and the associated device
is no longer known.
relations This is a list of objects that are related to this focus view. The following fields can
be contained:
• Object: This is the URL of a focus view, InstaQuery, or detection event that is
linked to this focus view.
• Relationship: This shows how the relationship was established.
Example https://protectapi.cylance.com/foci/v2/
A0AC3D2117C40D0576CED0D99069E96G/results
Request
None
Response
status This is the status of the focus view result or request. The possible values are:
• AVAILABLE: A focus view has been generated and is available for viewing.
• PENDING: The focus view has been requested.
• REQUEST: The focus viewhas not been generated, but it can be requested.
• RETRY_REQUEST: The focus view has not been generated. It was previously
requested but no results were received. It can be requested again.
• DOES_NOT_EXIST: The focus view requested on the device cannot be
completed because the requested parameters do not exist on the device.
• UNAVAILABLE: The focus view is not available, and the associated device is
not online to fulfill the request. It can be requested at a later time.
• UNKNOWN_DEVICE: The focus view is not available, and the associated device
is no longer known.
result This is the large structure of data that is used to generate the focus view chart and
table in the UI. This field will only be populated if the status field is AVAILABLE.
Parsing this data is beyond the scope of this guide.
Get InstaQueries
Request a page with a list of CylanceOPTICS InstaQuery resources belonging to a tenant, sorted by occurrence
time, in descending order (most recent occurred InstaQuery listed first). The page number and page size
parameters are optional, when the values are not specified, they default to 1 and 20 respectively.
Optional query string • q: This is the case-insensitive search term (e.g. name, zones, artifact).
parameters • archived: Include archived surveys.
• originated-from: Limit the query by the relationship.
• page: This is the page number to request. Defaults to 1.
• page_size: This is the number of detection records to retrieve per page.
Defaults to 20.
• sort: Sort by field (adding '-' in front of the value denotes descending order).
Example https://protectapi.cylance.com/instaqueries/v2?page=m&page_size=n
Request
None
Response
total_pages This is the total number of pages that can be retrieved based on the page size
specified.
match_value_type This is the type (or Facet) of the artifact that was queried.
case_sensitive This value indicates whether or not the InstaQuery should take case into account.
match_type This is the match type configured for the query, either "fuzzy" or "exact."
relations This is the list of objects (e.g.: Focus Views) that the InstaQuery is related to.
progress This provides the number of devices queried and the number of devices that have
responded.
Create InstaQuery
Update CylanceOPTICS InstaQuery resources for a specific tenant.
Example https://protectapi.cylance.com/instaqueries/v2
Request
{
"name": "InstaQuery Name",
"description": "Test InstaQuery",
"artifact": "File",
"match_value_type": "Path",
"match_values": [
"exe"
],
"case_sensitive": true,
"match_type": "Fuzzy",
"zones": [
"D27FF5C45C0D4F56A00DA1FB297E440F"
],
"filters": [
{
"aspect": "OS",
"value": "Windows"
}
],
"relations": [
{
"object": "/focus/focus_id",
"relationship": "originated-from"
}
]
}
Response
artifact This is the type of artifact to search. Possible values are "File", "Process",
"NetworkConnection", and "RegistryKey".
match_value_type This is the type of value (also known as a facet) to search. Possible values are
dependent on the selected artifact type. Valid selections for each are as follows:
• File
• Path
• Md5
• Sha2
• Owner
• CreationDateTime
• Process
• Name
• Commandline
• PrimaryImagePath
• PrimaryImageMd5
• StartDateTime
• NetworkConnection
• DestAddr
• DestPort
• RegistryKey
• ProcessName
• ProcessPrimaryImagePath
• ValueName
• FilePath
• FileMd5
• IsPersistencePoint
case_sensitive This determines whether to consider case sensitivity when matching values.
match_type This determines whether or not to use an exact or "fuzzy" match. The default
behavior of InstaQuery is to use a "fuzzy" match. Possible values are:
• Fuzzy
• Exact
aspect This is the aspect (or type) of filters (for example, "OS").
relations This is a list of objects (for example, Focus View URLs) that are related to the
InstaQuery. This is similar to the "Pivot Query" functionality in the Console.
object This is the URL of the focus view that the InstaQuery relates to.
relationship This is how the InstaQuery relates to the URL. This should almost always be
"originated-from".
artifact This is the type of artifact to search. Possible values are "File", "Process",
"NetworkConnection", and "RegistryKey".
match_value_type This is the type of value (also known as a facet) to search. Possible values are
dependent on the selected artifact type. Valid selections for each are as follows:
• File
• Path
• Md5
• Sha2
• Owner
• CreationDateTime
• Process
• Name
• Commandline
• PrimaryImagePath
• PrimaryImageMd5
• StartDateTime
• NetworkConnection
• DestAddr
• DestPort
• RegistryKey
• ProcessName
• ProcessPrimaryImagePath
• ValueName
• FilePath
• FileMd5
• IsPersistencePoint
case_sensitive This determines whether to consider case sensitivity when matching values.
match_type This determines whether or not to use an exact or "fuzzy" match. The default
behavior of InstaQuery is to use a "fuzzy" match. Possible values are:
• Fuzzy
• Exact
aspect This is the aspect (or type) of filters (for example, "OS").
relations This is a list of objects (for example, Focus View URLs) that are related to the
InstaQuery. This is similar to the "Pivot Query" functionality in the Console.
object This is the URL of the focus view that the InstaQuery relates to.
relationship This is how the InstaQuery relates to the URL. This should almost always be
"originated-from".
created_at This is the date and time that the InstaQuery was created.
Get InstaQuery
Request a specific InstaQuery resource belonging to a tenant.
Example https://protectapi.cylance.com/instaqueries/v2/
AF593F38EDC1B743BDC0A6FCC53A03CE
None
Response
artifact This is the type of artifact to search. Possible values are "File", "Process",
"NetworkConnection", and "RegistryKey".
match_value_type This is the type of value (also known as a facet) to search. Possible values are
dependent on the selected artifact type. Valid selections for each are as follows:
• File
• Path
• MD5
• SHA256
• Owner
• CreationDateTime
• Process
• Name
• CommandLine
• PrimaryImagePath
• PrimaryImageMd5
• StartDateTime
• NetworkConnection
• DestAddr
• DestPort
• RegistryKey
• ProcessName
• ProcessPrimaryImagePath
• ValueName
• FilePath
• FileMd5
• IsPersistencePoint
case_sensitive This determines whether to consider case sensitivity when matching values.
match_type This determines whether or not to use an exact or "fuzzy" match. The default
behavior of InstaQuery is to use a "fuzzy" match. Possible values are:
• Fuzzy
• Exact
aspect This is the aspect (or type) of filters (for example, "OS").
relations This is a list of objects (for example, Focus View URLs) that are related to the
InstaQuery. This is similar to the "Pivot Query" functionality in the Console.
object This is the URL of the focus view that the InstaQuery relates to.
relationship This is how the InstaQuery relates to the URL. This should almost always be
"originated-from".
created_at This is the date and time that the InstaQuery was created.
Example https://protectapi.cylance.com/instaqueries/v2/
AF593F38EDC1B743BDC0A6FCC53A03CE/results
None
Response
@timestamp This is the timestamp that the result was reported in Unix epoch time.
HostName This is the hostname of the device that returned the result.
DeviceID This is the unique ID of the device that returned the result.
FirstObservedTime This is the timestamp that the result was first observed on the system (for
example, when a file was first observed on the system as in a file being created)
.
LastObservedTime This is the timestamp that the result was last observed on the system (for
example, when a file was last observed as in the last time a file was interacted
with).
This value will be the same as the FirstObservedTimestamp for
NetworkConnection and process artifacts.
Type This is the type of artifact that the result's "properties" contain.
Properties This is the object containing the individual elements of the result. This will vary
depending on the artifact and type that was queried. The following 4 cells outline
the possible property values:
Network • DestinationAddress: This is the IP address that the connection was destined to.
• DestinationPort: This is the port associated with the remote IP address.
• ProcessName: This is the process name that was associated with the
connection.
• ProcessPrimaryImageUid: This is the unique ID of the process associated with
the connection.
• ProcessPrimaryImagePath: This is the image file path of the process
associated with the connection.
• ProcessImageMd5: This is the MD5 hash of the image file of the process
associated with the connection.
• ProcessImageSha256: This is the SHA256 hash of the image file of the
process associated with the connection.
• SuspectedFileType: This is the suspected file type of the image file of the
process associated with the connection.
Archive InstaQuery
Archive a CylanceOPTICS InstaQuery resource belonging to a tenant. Surveys are archived instead of deleted so
that user activity history can be maintained.
Example https://protectapi.cylance.com/instaqueries/v2/
AF593F38EDC1B743BDC0A6FCC53A03CE/archive
Request
None
Response
Example https://protectapi.cylance.com/opticsPolicies/v2/configurations
Request
None
Response
configuration_id This is the unique ID for the detection rule set. Matching this number to the
DETECTION number gives you the name of the detection rule set assigned to the
policy.
DETECTION This is the unique ID for the detection rule set assigned to the policy.
total_pages This is the total number of pages, based on the page_size selected.
type This is the configuration type. For detection rule sets, this is DETECTION.
Example https://protectapi.cylance.com/opticsPolicies/v2/configurations/
d5c6d6a3-0599-4fb5-96bc-0fdc7eacb6ea
Request
None
Response
configuration_id This is the unique ID for the Detection Rule Set. Matching this number to the
DETECTION number gives you the name of the Detection Rule Set assigned to the
policy.
DETECTION This is the unique ID for the Detection Rule Set assigned to the policy.
type This is the configuration type. For Detection Rule Sets, this is DETECTION.
Example https://protectapi.cylance.com/opticsPolicies/v2/configurations
Request
{
"configuration_type": "DETECTION",
"configuration_id": "d23198bd-2725-4660-969c-971f1548ffc3",
"link": [d5c6d6a3-0599-4fb5-96bc-0fdc7eacb6ea],
"unlink": []
}
Response
configuration_id This is the detection rule set unique identifier (ID). Use get all detection rule sets or
get single detection rule set requests to get this ID.
configuration_type This is the configuration type. For detection rule sets, this is DETECTION.
link This adds the policy ID to assign the detection rule set to the policy.
unlink This adds the policy ID to remove the detection rule set from the policy.
message This displays the assignment of the detection rule set to the policy.
• link: This is the detection rule set is assigned to the policy.
• unlink: This is the detection rule set was removed from the policy.
Optional query string parameters count: This is a boolean to include the count of devices currently locked
with this configuration
Example https://protectapi.cylance.com/opticsLockdownConfigurations/v2
Response
{
"lockdown_config_id":123,
"name":"Test Config",
"description":"Optional Description",
"date_added":"DateTime",
"date_modified":"DateTime",
"default_config":0,
"count":(optional)
}
Example https://protectapi.cylance.com/opticsLockdownConfigurations/v2/123
Response
{
"lockdown_config_id":123,
"name":"Test Config",
"description":"Optional Description",
"parameters":{
"WhitelistedAddresses":[
{
"ip_address":"192.168.0.10",
"direction":1
}
],
"WhitelistedPorts":[
{
"port":"22",
"direction":1
}
]
}
}
Example https://protectapi.cylance.com/opticsLockdownConfigurations/v2
Request
{
"name":"Test Config",
"description":"Optional Description",
"parameters":{
"WhitelistedAddresses":[
{
"ip_address":"192.168.0.10",
"direction":1
}
],
"WhitelistedPorts":[
{
"port":"22",
"direction":1
}
]
}
}
Response
Example https://protectapi.cylance.com/opticsLockdownConfigurations/v2/123
{
"name":"Test Config",
"description":"Optional Description",
"parameters":{
"WhitelistedAddresses":[
{
"ip_address":"192.168.0.10",
"direction":1
}
],
"WhitelistedPorts":[
{
"port":"22",
"direction":1
},
{
"port":"3268",
"direction":2
}
]
}
}
Response
Example https://protectapi.cylance.com/opticsLockdownConfigurations/v2/123
Response
BlackBerry Limited
2200 University Avenue East
Waterloo, Ontario
Canada N2K 0A7
BlackBerry UK Limited
Ground Floor, The Pearce Building, West Street,
Maidenhead, Berkshire SL6 1RL
United Kingdom
Published in Canada