CYRISMA’s Provisioning and Reporting API offers organizations using the CYRISMA risk management platform an enhanced way to automate the setup of new instances and collect scan data for reporting. This API enables organizations to manage partner relationships, monitor usage, and retrieve detailed scan results, all while supporting secure access through token-based authentication.
Contact CYRISMA Support to obtain the API Key (also called “Username”) and API Secret (also called “Password”) to start communication with the API.
Change the API Secret:
Update the API Secret to ensure only authorized applications can access the API.
Request a Session Token:
Use the API credentials to request a session token.
The CYRISMA platform is cloud-based, and the initial session token can be distributed among the cloud servers supporting risk management across organizations and instances.
Session Token Use:
Once the session token is established, subsequent transactions must present the token as evidence of authorization.
Tokens last for a few minutes and can be renewed as needed using the credentials.
Provision Partner Organization or Instance:
Request to provision a partner organization or an instance under a partner.
Processing is automated and typically takes less than 5 minutes.
Assign Users for Web Platform Access:
Request to assign at least one user to the partner account.
Users can sign on at the organization level to access and inspect all organizations under management.
Users can set up a password via the self-service password reset feature.
Set Up Multiple Organizations and Users:
Set up multiple organizations, each with its own set of users.
Multi-Factor Authentication (via email code or authenticator apps) can be enabled during the initial organization provisioning request.
Partner Login and Instance Setup:
Partners can log in to their organization and set up instances for their customer base.
Retrieve Usage and Utilization Details:
Use the API to retrieve usage and utilization data at any time.
Retrieve Scan Result Data:
Use the API to get scan result data (including Vulnerability, Baseline Configurations, or Data Scans).
Manage Partners:
Manage partner accounts (convert, suspend, or reactivate) as needed.
API Endpoints Overview:
A graphic is available that identifies the various API Endpoints described throughout this document.
CYRISMA API Credentials
Obtain API Credentials:
Contact CYRISMA Support to obtain your API Key and TEMPORARY Secret.
Example API Key and Secret:
API Key: 407cc078-46c7-11ed-8e42-000d3a3ba598
API Secret: ZjNkMjg4MTdlOTA2Y2UyYzcyNDAzYzk5ZWNlMTFkOGQ
Important Security Note:
Always connect to the API service using SSL. Any connection type other than SSL will be ignored or rejected.
Login and Obtain Access Token
Use API Credentials to Log In:
With your API Key and Secret, access the API to receive the initial access token.
Data Submission:
Since the interaction with the API is in plaintext, use x-www-form-urlencoded data type when submitting data elements.
API Response:
The API will respond with plaintext formatted as JSON.
grant_type: This key indicates that the request is using a password grant type, as per OAuth 2.0 principles.
access_token: The token returned by the API, which is required for future interactions with the API.
expires_in: The access token typically expires in 600 seconds (10 minutes).
refresh_token: The optional token used to refresh the access token's expiration time. If your API setup doesn't handle refresh tokens, you can request a new access token by re-issuing the login call with valid credentials.
Provisioning Endpoints
Once a session token is obtained, it is used as authorization to access all API capabilities. Below are the endpoints for accessing and managing the provisioning process.
Primary URL: https://api.cyrisma.com/app
Provisioning Endpoints and Their Functions:
Function
Verb
Endpoint
Reset Password
POST
/partner/login/regen-pass
Get All Structure
GET
/partner/instances/info/
Get Single Partner
GET
/partner/instances/info/[instanceID]
Provision New
POST
/partner/instances/create
Create User
POST
/partner/instances/users/create
Convert to Managed
PATCH
/partner/instances/convert
Suspend Partner
PATCH
/partner/instances/suspend
Reactivate Partner
PATCH
/partner/instances/info
Get All Users
GET
/partner/users/info
Get Specific User
GET
/partner/users/info/[UserRef]
Disable User
PATCH
/partner/users/disable
Set MFA Method
PATCH
/partner/instances/mfa
Reset Password
First-time API use should always begin with a password reset to ensure that only authorized applications have access to the API.
Password Reset Endpoint: POST https://api.cyrisma.com/app/partner/login/regen-pass
No form data is required in this example other than the token itself.
Example Response:
json
[{"instance_id":"7BD9226DA1AE0FC1EDDFFEF756342E54","name":"East Side Stories","short_name":"East Side Stories","parent_id":"D9A7AB1C9A3EA47693C4CC9987D10FA8","heirarchy":"/MyCo/Security Metrics/East Side Stories","instance_type":"mssp","is_consulting":true,"number_of_endpoints":18,"tenant_id":"","url":"cc2d78ea.cyrisma.com","mfa":"email"},{"instance_id":"4D3596F48BE76EE68E309D6A1C38EBE4","name":"Cyber Security Solutions","short_name":"Cyber Security Solutions","parent_id":"F8E6AA6015A6EFC5EAF67DCF8287E94D","heirarchy":"/MyCo/Cyber Security Solutions","instance_type":"msp","is_consulting":false,"number_of_endpoints":0,"tenant_id":"","url":"cc7e6744.cyrisma.com","mfa":"none"}]
Key Information:
instance_type: Indicates whether the instance is an organization (typically "msp" or "mssp") or an end instance ("standard").
is_consulting: Indicates whether the instance is a trial (used during consulting engagements) or a month-to-month instance.
Retrieve Single Partner
This endpoint retrieves the provisioned details for a single specified partner instance.
Endpoint: GET https://api.cyrisma.com/app/partner/instances/info/[instanceID]
Authorization: Include the API Key access_token [Token Value] in the header.
It is important to understand the hierarchy of organizations set up within the CYRISMA platform. New instances can be created under existing organizations or sub-organizations, or new sub-organizations can be created.
Endpoint: POST https://api.cyrisma.com/app/partner/instances/create
Authorization: Include the API Key access_token [Token Value] in the header.
Instance creation generally takes less than 5 minutes to complete.
Check the completion of your order by using the provision-status API call along with the returned instance ID.
parent_instance_id: This is the immediate parent under which this new instance or sub-organization will appear in the hierarchy.
is_consulting: For new sub-organizations, the value must be false. You cannot create a sub-organization that is marked as "Trial" or "Consulting."
If creating a new instance, set is_consulting to true to indicate that the instance is in temporary consulting mode, which will eventually be converted to "standard."
short_name: This is the name displayed at the top left of the browser window when logged into the instance. It is also the name of the browser tab, so it should be kept short for easy identification.
country: This value determines the geographic location where the instance will reside, which is critical for compliance with data sovereignty restrictions.
mfa_type: Defaults to 0 (none) but can be set to 1 (Email) or 2 (Authenticator) for added security when submitting the provisioning request.
tenant_id: This is an optional string parameter that can be used to associate the provisioning with a pre-existing tenant in an MDR/XDR suite.
Create User under Partner
This endpoint allows you to create a new user under an organization in the CYRISMA platform.
Endpoint: POST https://api.cyrisma.com/app/partner/instances/users/create
Authorization: Include the API Key X-API-Key: [Token Value] in the header.
cURL Example – Create New User under Organization:
Users must be added to organization instances: You can only add users to instance IDs associated with organizations. You cannot add users to "standard," "trial," or "consulting" instances.
Convert Consulting to Managed
This endpoint allows you to convert a consulting instance to a managed (standard) instance in the CYRISMA platform.
{"instance_id":"322048E99EB5A84AD6492081D32B2A45","name":"Stella Blow Dryers","consulting_status":"Converted from Consulting to Standard"}
Important Notes:
One-Way Operation: Conversion from consulting to managed is a one-way operation. Once an instance is converted to a managed instance, it cannot be reverted back to a consulting instance.
Suspend a Partner or Instance
This endpoint allows you to suspend a partner or instance, blocking access to it while keeping it operational in the backend.
Visibility: Suspended instances are not visible in the MSP web interface.
API Requests: Suspended instances are also not shown in the "Get All" request via the API.
Restoration: To restore a suspended instance or organization, the instanceID is required. It's important to document the instanceID for future restoration.
Functionality: While access is blocked, suspended instances still work in the backend. Only access to the suspended instance is restricted.
Impact on Sub-Organizations: If an organization is suspended, access to all instances and sub-organizations within that organization is also blocked.
Reactivate a Partner or Instance
This endpoint allows you to reactivate a previously suspended partner or instance, restoring access.
MFA modification is only allowed for organization instances (instance_id that are not "standard", "trial", or "consulting").
The mfa_type parameter allows you to set different MFA methods:
0: No MFA
1: Email-based MFA
2: Authenticator (TOTP) MFA
Make sure to replace the instance_id with the correct ID of the organization instance for which you wish to modify MFA settings.
INSTANCE REPORTING OPERATIONS
This section covers API usage for retrieving scan data for the purpose of reporting. Since thousands of CYRISMA cloud instances are hosted in an elastic infrastructure of cloud based servers, the individual instances must also be authenticated and authorized to grant access to the scan data through the API.
Before scan results can be fetched from any CYRISMA cloud instance, authorization must be established first. Authorization is granted via session token delivery using an encrypted channel. Each CYRISMA cloud instance is represented by its own unique URL. Session tokens can be applied per specific instance URL or session tokens can be delivered to all available URLs at once.
Instance Authentication
This endpoint is used to authenticate a CYRISMA instance, enabling access to subsequent reporting endpoints. Authentication is required whenever a new session token is generated or when the current token expires.
Endpoint: POST https://api.cyrisma.com/app/partner/instances/login/[optional instance_id]
Authorization: Include the API Key in the header with Authorization: access_token [Token Value].
Authentication Requirement: This step is essential before using any reporting or instance-related endpoints.
Token Expiration: When the session token expires, all instances must be re-authenticated using the latest session token.
Optional instance_id: If you provide an instance_id, only that specific instance will be authenticated. If no instance_id is provided, all available instances will be authenticated at once.
After successful authentication, you can interact with various endpoints related to the authenticated instance using the full instance URL (e.g., https://bag94c12.cyrisma.com/...).
Make sure to use the latest session token for all subsequent requests following the initial authentication.
Available Reporting Endpoints and Their Functions:
Function
Verb
Endpoint
Data Scan Summary
GET
/partner/scans/data
Baseline Scan Summary
GET
/partner/scans/baseline
Vulnerability Scan Summary
GET
/partner/scans/vulnerability
Overall Dashboard Results
GET
/partner/dashboards/overall
Data Dashboard
GET
/partner/dashboards/data
Baseline Dashboard
GET
/partner/dashboards/baseline
Vulnerability Dashboard
GET
/partner/dashboards/vulnerability
Vulnerability CVE Detail
GET
/partner/dashboards/vulnerability/cve
Get Data Scan Summary
Endpoint:
GET https://ccnnnnnn.cyrisma.com/app/partner/scans/data
Secure Baseline Scan Summary includes details like the average scan grade, number of failed tests, score, and pass rate.
Individual scan details provide insights into each baseline scan, including the scan start and finish times, grade, user issuing the scan, and target test results.
Make sure to substitute "nnnnnn" with your actual instance URL when making the request.
Get Vulnerability Scan Information
Endpoint:
GET https://ccnnnnnn.cyrisma.com/app/partner/scans/vulnerability
Vulnerability Scan Summary provides an overview of total vulnerabilities, broken down into critical, high, medium, and low categories, along with the overall vulnerability grade.
Individual scan details include the number of vulnerabilities, the start and finish times, the grade, and the user issuing the scan.
Make sure to replace "nnnnnn" with your actual instance URL when making the request.
Get Overall Risk Dashboard
Endpoint:
GET https://ccnnnnnn.cyrisma.com/app/partner/dashboards/overall
{"current_grade":"F","previous_grade":"F","top_5_baselines":[],"lowest_pass_targets_domain":[{"name":"PBS2144","ip":"192.168.108.11","scan_date":"1/1/2024 12:00:00 AM","pass_rate":0.0,"grade":"N/A","profile_name":"[CIS Security] MS Windows 10","profile_type":"Level1"},{"name":"pbs-cyr-w10PC","ip":"10.10.2.110","scan_date":"1/1/2024 12:00:00 AM","pass_rate":0.0,"grade":"N/A","profile_name":"[CIS Security] MS Windows 10","profile_type":"Level1"},{"name":"PBS-2560","ip":"172.22.96.1","scan_date":"1/1/2024 12:00:00 AM","pass_rate":0.0,"grade":"N/A","profile_name":"[CIS Security] MS Windows 11","profile_type":"Level1"},{"name":"pbs-ts","ip":"192.168.100.101","scan_date":"5/10/2023 12:00:00 AM","pass_rate":0.0,"grade":"F","profile_name":"[CIS Security] MS Windows Server 2012 R2","profile_type":"Level 1 Member Server"}],"lowest_pass_targets_nondomain":[]}
Key Information:
Current Grade and Previous Grade: The baseline security grade showing the overall state of secure baseline configurations. In this example, the grade is F for both current and previous.
Top 5 Baselines: This array is empty in the response, meaning there are no baseline configurations with notable performance.
Lowest Pass Targets Domain: This section lists the domain targets with the lowest pass rates. Each entry includes:
Name: The name of the target (e.g., "PBS2144")
IP: The IP address of the target
Scan Date: When the scan was performed
Pass Rate: The percentage of successful baseline compliance checks
Grade: The grade assigned to the baseline target (e.g., "N/A" or "F")
Profile Name: The security profile applied (e.g., "[CIS Security] MS Windows 10")
Profile Type: The level or type of the profile (e.g., "Level1")
Lowest Pass Targets Non-Domain: This array is empty in the response, indicating there are no non-domain targets with low pass rates.
Make sure to replace "nnnnnn" with your actual instance URL when making the request.
Get Vulnerability Dashboard
Endpoint:
GET https://ccnnnnnn.cyrisma.com/app/partner/dashboards/vulnerability
{"current_grade":"D","previous_grade":"D","top_5_profiles":[{"name":"MS Windows 10","times_used":1579,"machines":65},{"name":"MS Windows Server 2016","times_used":204,"machines":28},{"name":"MS Windows Server 2019","times_used":331,"machines":16},{"name":"MS Windows 11","times_used":266,"machines":15},{"name":"MS Windows Server 2012 R2","times_used":142,"machines":8}],"top_10_most_sensitive":[{"name":"365sc (SRV)","ip_address":"192.168.100.27","os":"MS Windows Server 2019","last_scanned":"1/18/2024 12:00:00 AM","vuln_count_critical":30,"vuln_count_high":388,"vuln_count_medium":140,"vuln_count_low":1},{"name":"embs-d (SRV)","ip_address":"192.168.100.37","os":"MS Windows Server 2022","last_scanned":"1/16/2024 12:00:00 AM","vuln_count_critical":17,"vuln_count_high":92,"vuln_count_medium":104,"vuln_count_low":12}]}
Key Information:
Current Grade and Previous Grade: These represent the security grade for vulnerabilities. In this example, the grade is D for both the current and previous periods.
Top 5 Profiles: Lists the most commonly used security profiles. Each entry includes:
Name: The name of the profile (e.g., "MS Windows 10")
Times Used: The number of times the profile was used
Machines: The number of machines using the profile
Top 10 Most Sensitive: Lists the most sensitive machines based on their vulnerability counts. Each entry includes:
Name: The name of the machine (e.g., "365sc (SRV)")
IP Address: The machine's IP address
OS: The operating system of the machine (e.g., "MS Windows Server 2019")
Last Scanned: The last date the machine was scanned
Vulnerability Counts: The count of vulnerabilities broken down by severity (critical, high, medium, and low)
Make sure to replace "nnnnnn" with your actual instance URL when making the request.
Get CVE Details
Endpoint:
GET https://ccnnnnnn.cyrisma.com/app/partner/dashboards/vulnerability/cve
{"cve_items":[{"id":"CVE-2023-24895","title":".NET Framework Remote code execution Vulnerability. This type of exploit is sometimes referred to as Arbitrary Code Execution (ACE). The attack itself is carried out locally. In order to exploit this vulnerability, an attacker convinces a victim to download and open a specially crafted file from a website which leads to a local attack on their computer.","cve_score":7.8,"cve_risk":"High","published_date":"2023-06-14","affected_targets":"Target01 (WS)","num_affected_targets":1}]}
Key Information:
CVE ID: A unique identifier for the vulnerability (e.g., "CVE-2023-24895").
Title: A detailed description of the vulnerability, including how it works and potential exploitation methods.
CVE Score: The CVSS score assigned to the vulnerability, indicating its severity (e.g., 7.8 which is considered high).
CVE Risk: The risk level associated with the CVE (e.g., High).
Published Date: The date when the CVE was published (e.g., 2023-06-14).
Affected Targets: The targets that are impacted by the vulnerability (e.g., "Target01 (WS)").
Number of Affected Targets: The total number of affected targets (e.g., 1).
Notes:
Optionally, you can pass a specific cve_id into the request body (e.g., {'cve_id': 'cve-2023-24895'}) to retrieve details for an individual CVE.
Make sure to replace "nnnnnn" with your actual instance URL when making the request.
API Documentation
For comprehensive endpoint details, usage examples, and additional setup instructions, please refer to the full CYRISMA API Guide: