Download OpenAPI specification:
The Birdseye API gives you programmatic access to your cyber risk program: business units, qualitative assessments, and the FAIR scenarios and simulations built on top of them.
| Environment | Base URL |
|---|---|
| Production | https://api.ostrichcyber-risk.com |
| Preview | https://api.ostrichsecure.com |
Every endpoint except POST /v1/auth/token requires a bearer token. Exchange
your API key for one, then send it on each request. Tokens are short lived, so
fetch a new one rather than caching it for long periods.
curl -X POST https://api.ostrichcyber-risk.com/v1/auth/token \
-H 'Content-Type: application/json' \
-d '{"apiKey": "YOUR_API_KEY"}'
curl https://api.ostrichcyber-risk.com/v1/businessUnits \
-H 'Authorization: Bearer YOUR_TOKEN'
Successful responses share one envelope: a human readable message and a
response object holding the payload. Create endpoints return the ID of the
object they created.
{
"message": "Created scenario successfully",
"response": { "scenarioId": "8f2c1d9e4b7a" }
}
Birdseye uses conventional HTTP status codes. 401 means the token is missing
or expired, 403 means the token is valid but lacks a role on the business
unit in the path, and 404 means the object does not exist or is not visible
to you.
Almost every path is scoped to a businessUnitId. A token only reaches the
business units its API key was granted roles on, and roles are inherited by
child units in the hierarchy.
Exchange a Birdseye API key for a short-lived bearer token. Every other
endpoint expects that token in the Authorization header.
Generates a JWT from an API Key
The API Key to generate a token for
| apiKey required | string |
| message required | string | ||||
required | object | ||||
| |||||
{- "apiKey": "string"
}{- "message": "string",
- "response": {
- "token": "string",
- "expiresAt": "2019-08-24T14:15:22Z"
}
}Business units are the organizational entities every other object hangs off. They form a parent/child hierarchy, and access is granted per unit.
Retrieves summary info for all business units for the authenticated token
| message required | string | ||||||||||
required | object (ApiGetBusinessUnits200ResponseResponse) | ||||||||||
| |||||||||||
{- "message": "string",
- "response": {
- "businessUnits": [
- {
- "businessUnitId": "kwZhJvbywXQQnImPQ6Cz",
- "name": "My Business Unit",
- "businessUnits": [
- {
- "businessUnitId": "abCdEfghiJIIzMmCD3Ez",
- "name": "My Business Unit"
}
]
}
]
}
}Creates a business unit under the specified parent business unit
| businessUnitId required | string The ID of the parent business unit to create the new business unit under |
The business unit data to create a business unit with.
required | object | ||||||||||||||||||||||
| |||||||||||||||||||||||
| message required | string | ||
required | object (ApiCreateBusinessUnitResponse) | ||
| |||
{- "businessUnit": {
- "name": "string",
- "employeeCount": 0,
- "revenue": 0.1,
- "industry": "string",
- "scoreScale": "ONE_HUNDRED_POINT",
- "scoreStrategy": "aggregate",
- "targetStrategy": "aggregate",
- "country": "string",
- "state": "string",
- "city": "string",
- "aiOptIn": true
}
}{- "message": "string",
- "response": {
- "businessUnitId": "string"
}
}Retrieves the details for a specific business unit
| businessUnitId required | string The ID of the business unit |
| message required | string | ||||||||||||||||||||||||||||||||||||||||||||
required | object (apiBusinessUnit) | ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
{- "message": "string",
- "response": {
- "businessUnitId": "kwZhJvbywXQQnImPQ6Cz",
- "name": "My Business Unit",
- "businessUnits": [
- {
- "businessUnitId": "abCdEfghiJIIzMmCD3Ez",
- "name": "My Business Unit"
}
]
}
}Create a new user if they do not exist, or add roles for an existing user. At least one role must be included.
| businessUnitId required | string |
| email required | string <email> The email address of the user to create. | ||
| displayName required | string The display name of the user. | ||
| manager | boolean Assign the Manager role on the requesting business unit. | ||
| delegator | boolean Assign the Delegator role on the requesting business unit. | ||
object A map of business unit IDs to booleans, assigning the Practitioner Assessments role on those BUs. This role can only be assigned to leaf business units. | |||
| |||
object A map of business unit IDs to booleans, assigning the Practitioner Reports role on those BUs. | |||
| |||
| simulator | boolean Assign the Simulator role on the requesting business unit. | ||
| securityAdmin | boolean Assign the Security Admin role on the requesting business unit. | ||
| apiAccess | boolean Assign the API Access role on the requesting business unit. Requires the Manager role. | ||
| expiry | string <date-time> Optional expiry date for the assigned roles. Must be in the future and within one year. | ||
| message required | string | ||||||||||||||||||||||||||
required | object (UserResponse) | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "email": "jane.doe@example.com",
- "displayName": "Jane Doe",
- "manager": true,
- "apiAccess": true,
- "practitionerAssessments": {
- "bu-12345": true,
- "bu-67890": false
}, - "practitionerReports": {
- "bu-12345": true
}, - "expiry": "2026-01-15T23:59:59Z"
}{- "message": "string",
- "response": {
- "displayName": "string",
- "email": "string",
- "userId": "string",
- "roles": {
- "manager": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "practitionerAssessments": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "practitionerReports": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "securityAdmin": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "simulator": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "delegator": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "ssoOnly": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "apiAccess": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
]
}
}
}Retrieves all users with access to the specified business unit
| businessUnitId required | string The ID of the business unit |
| message required | string | ||||||||
required | object | ||||||||
| |||||||||
{- "message": "string",
- "response": {
- "users": [
- {
- "userId": "string",
- "displayName": "string"
}
]
}
}Updates user roles for a business unit
| businessUnitId required | string The ID of the business unit to update user roles on |
| userId required | string The ID of the user to update roles for |
A list of roles to assign or unassign to the user
required | Array of objects (apiUpdateRoleRequest) | ||||
Array
| |||||
| message required | string |
{- "roles": [
- {
- "roleType": "practitionerAssessments",
- "assigned": true
}
]
}{- "message": "string"
}Retrieves the details of a user. Returned roles will only include business units the authorizing api key is a manager or delegator on.
| userId required | string The ID of the user |
| message required | string | ||||||||||||||||||||||||||
required | object (UserResponse) | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "message": "string",
- "response": {
- "displayName": "string",
- "email": "string",
- "userId": "string",
- "roles": {
- "manager": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "practitionerAssessments": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "practitionerReports": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "securityAdmin": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "simulator": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "delegator": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "ssoOnly": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
], - "apiAccess": [
- {
- "businessUnitId": "string",
- "expiry": "2019-08-24T14:15:22Z"
}
]
}
}
}Qualitative assessments of a business unit against a framework such as NIST CSF or CRI, plus the question content behind them.
Retrieves summaries of the assessments for a business unit
| businessUnitId required | string The ID of the business unit |
| after | string filters the response to only assessments with a last modified date greater than or equal to the passed in timestamp. Expected format is RFC 3339 ex: 2006-01-02T15:04:05.000000000Z07:00 |
| message required | string | ||||||||||||||||
required | object | ||||||||||||||||
| |||||||||||||||||
{- "message": "string",
- "response": {
- "assessments": [
- {
- "businessUnitId": "kwZhJvbywXQQnImPQ6Cz",
- "businessUnitName": "My Business Unit 1",
- "assessmentId": "abCdEfghiJIIzMmCD3Ez",
- "assessmentName": "My Assessment 1",
- "assessments": [
- {
- "businessUnitId": "abCdEfghiJIIzMmCD3Ez",
- "businessUnitName": "My Business Unit 2",
- "assessmentId": "deFGEfghxYZZzMmCD3Ez",
- "assessmentName": "My Assessment 2",
- "assessmentTypeId": "abCdEfghiJIIzMmCD3Ez"
}
]
}
]
}
}Adds a new assessment to a business unit
| businessUnitId required | string The ID of the business unit to add the assessment to |
The assessment data to create an assessment with. Note that dates need to be formatted exactly as the example shows.
required | object | ||||||||||
| |||||||||||
| message required | string | ||
required | object (ApiAddAssessmentResponse) | ||
| |||
{- "assessment": {
- "assessmentName": "string",
- "assessmentTypeId": "string",
- "startDate": "2025-01-01T19:53:17.473382900Z",
- "dueDate": "2025-03-01T19:53:17.473382900Z",
- "notificationsOn": true
}
}{- "message": "string",
- "response": {
- "assessmentId": "string"
}
}Retrieves details of an assessment in a business unit
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment to retrieve details of |
| message required | string | ||||||||||||||||||||||
required | object Returns either a single assessment or a rollup assessment | ||||||||||||||||||||||
| |||||||||||||||||||||||
{- "message": "string",
- "response": {
- "assessmentId": "kwZhJvbywXQQnImPQ6Cz",
- "assessmentName": "My Assessment",
- "version": "1.0",
- "assessmentTypeId": "abCdEfghiJIIzMmCD3Ez",
- "subAssessments": [
- {
- "assessmentId": "abCdEfghiJIIzMmCD3Ez",
- "businessUnitId": "abCdEfghiJIIzMmCD3Ez"
}
]
}
}Retrieves the content for an assessment
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment |
| message required | string | ||||||||
required | object | ||||||||
| |||||||||
{- "message": "string",
- "response": {
- "businessUnitId": "string",
- "assessmentId": "string",
- "assessmentTypeId": "string",
- "content": null
}
}Current and target scores for an assessment, and the questions excluded from scoring.
Retrieves the results for an assessment
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment |
| profileId | string The ID of the profile to retrieve scores for |
| controlIds | Array of strings The given control ids to apply as an adhoc profile to the scores. profileId and controlIds should not both be provided. Example ?controlIds=GV,DE.AE-2,GV.OC |
| message required | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{- "message": "string",
- "response": {
- "businessUnitId": "string",
- "assessmentId": "string",
- "assessmentTypeId": "string",
- "scoreLabels": [
- {
- "subId": "string",
- "abbr": "string",
- "name": "string"
}
], - "targetLabels": [
- {
- "subId": "string",
- "abbr": "string",
- "name": "string"
}
], - "profileId": "string",
- "scores": [
- {
- "itemId": "string",
- "aspectPercentDone": 0,
- "aspectTotalAnswerCount": 0,
- "aspectTotalCount": 0,
- "percentDone": 0,
- "percentOfTarget": 0,
- "questionCount": 0,
- "score": 0,
- "subs": [
- {
- "subId": "string",
- "answerCount": 0,
- "percentDone": 0,
- "percentOfTarget": 0,
- "questionCount": 0,
- "score": 0,
- "target": 0,
- "weight": 0,
- "weightLabel": "string"
}
], - "target": 0,
- "weight": 0,
- "weightLabel": "string"
}
], - "ignoredQuestions": [
- "string"
]
}
}Save scores on an assessment. Both the api key and associate user must have the "Assessment practitioner" role.
| businessUnitId required | string The ID of the business unit that owns the assessment |
| assessmentId required | string The ID of the assessment to save scores on |
The list of scores to save to the assessment. Either "score" or "unknown" is required on each score, but both cannot be provided on a single score. If "score" is provided it must be a valid score for the aspect. A valid score for coverage is any multiple of 5 from 0 to 100. For any other aspect the allowed scores are specified in the content type. This can be found via the "Get Assessment Content" route.
required | Array of objects (saveScoreRequest) | ||||||
Array
| |||||||
| message required | string |
{- "scores": [
- {
- "aspectId": "string",
- "score": 0,
- "unknown": true
}
]
}{- "message": "string"
}Save targets on an assessment
| businessUnitId required | string The ID of the business unit that owns the assessment |
| assessmentId required | string The ID of the assessment to save targets on |
A list of targets to save to the assessment. Needs at least "target" or "weight" defined on each target. Both can be defined.
required | Array of objects (saveTargetRequest) | ||||||
Array
| |||||||
| message required | string |
{- "targets": [
- {
- "aspectId": "string",
- "target": 0,
- "weight": "LOW"
}
]
}{- "message": "string"
}Sets ignore status on a list of questions
| businessUnitId required | string The ID of the business unit to ignore questions on |
| assessmentTypeId required | string The ID of the assessment type used for the questions |
A list of questions to save ignore status on
required | Array of objects (ignoredQuestionRequest) | ||||
Array
| |||||
| message required | string |
{- "ignoredQuestions": [
- {
- "aspectId": "string",
- "ignored": true
}
]
}{- "message": "string"
}Gets findings on an assessment
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment |
| message required | string | ||||||||||||
required | object | ||||||||||||
| |||||||||||||
{- "message": "string",
- "response": {
- "findings": [
- {
- "aspectId": "string",
- "value": "string",
- "modifiedBy": "string",
- "modifiedAt": "string"
}
]
}
}Saves findings on an assessment
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment |
The list of findings to save to the assessment. Duplicate aspectIds between findings are not allowed.
required | Array of objects (saveAspectTextMetadataRequest) | ||||
Array
| |||||
| message required | string |
{- "findings": [
- {
- "aspectId": "string",
- "value": "string"
}
]
}{- "message": "string"
}Gets notes on an assessment
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment |
| message required | string | ||||||||||||
required | object | ||||||||||||
| |||||||||||||
{- "message": "string",
- "response": {
- "notes": [
- {
- "aspectId": "string",
- "value": "string",
- "modifiedBy": "string",
- "modifiedAt": "string"
}
]
}
}Saves notes on an assessment
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment |
The list of notes to save to the assessment. Duplicate aspectIds between notes are not allowed.
required | Array of objects (saveAspectTextMetadataRequest) | ||||
Array
| |||||
| message required | string |
{- "notes": [
- {
- "aspectId": "string",
- "value": "string"
}
]
}{- "message": "string"
}Get evidences for an assessment
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment |
| message required | string | ||||||||||||||||||||
required | object | ||||||||||||||||||||
| |||||||||||||||||||||
{- "message": "string",
- "response": {
- "evidences": [
- {
- "id": "string",
- "aspectId": "string",
- "title": "string",
- "url": "string",
- "createdBy": "string",
- "createdAt": "string",
- "archivedBy": "string",
- "archivedAt": "string"
}
]
}
}Saves evidences on an assessment
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment |
The list of evidences to save to the assessment.
required | Array of objects (saveEvidenceRequest) | ||||||
Array
| |||||||
| message required | string |
{- "evidences": [
- {
- "aspectId": "string",
- "title": "string",
- "url": "string"
}
]
}{- "message": "string"
}Archives evidence on an assessment
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment |
| evidenceId required | string The evidence id to archive on the assessment. |
| message required | string |
{- "message": "string"
}Profiles select which subset of an assessment type applies to a business unit, including custom profiles you define yourself.
Gets all profiles the business unit can view
| businessUnitId required | string The ID of the business unit |
| message required | string | ||||||||||||
required | Array of objects (profileWithOrigin) | ||||||||||||
Array
| |||||||||||||
{- "message": "string",
- "response": [
- {
- "profileId": "string",
- "assessmentTypeId": "string",
- "profileName": "string",
- "businessUnitOwner": "string",
- "threatId": "string",
- "subcategories": [
- "string"
]
}
]
}Creates a custom profile for the given assessment type on a business unit
| businessUnitId required | string |
| assessmentTypeId required | string |
| profileName required | string |
| threatId | string |
| subCategories | Array of strings |
| message required | string |
| profileId required | string |
{- "profileName": "string",
- "threatId": "string",
- "subCategories": [
- "string"
]
}{- "message": "string",
- "profileId": "string"
}Updates an existing custom profile on a business unit
| businessUnitId required | string |
| assessmentTypeId required | string |
| profileId required | string |
| profileName required | string |
| threatId | string |
| subCategories | Array of strings |
| message required | string |
{- "profileName": "string",
- "threatId": "string",
- "subCategories": [
- "string"
]
}{- "message": "string"
}Retrieves the assessment profiles for a business unit
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment |
| message required | string | ||||||||||||||||||||
required | object | ||||||||||||||||||||
| |||||||||||||||||||||
{- "message": "string",
- "response": {
- "profiles": [
- {
- "profileId": "string",
- "assessmentTypeId": "string",
- "profileName": "string",
- "threatId": "string",
- "subcategories": [
- "string"
]
}
], - "assessmentTypeId": "string",
- "businessUnitId": "string",
- "assessmentId": "string"
}
}Retrieves matched UCF controls for the given UCF control id for the selected assessment and business unit
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment to retrieve details of |
| ucfControlId required | string the ID of the matched ucf control |
| message required | string |
| response required | Array of strings |
{- "message": "string",
- "response": [
- "string"
]
}Retrieves UCF Common Control Ids for the assessment if they've been generated
| businessUnitId required | string The ID of the business unit |
| assessmentId required | string The ID of the assessment to retrieve details of |
| message required | string | ||||||||||||||||||||
required | object (ucfMapping) | ||||||||||||||||||||
| |||||||||||||||||||||
{- "message": "string",
- "response": {
- "generatedAt": "2019-08-24T14:15:22Z",
- "generatedBy": "string",
- "mandatedControls": [
- {
- "ucfId": "string",
- "ucfControlId": 0,
- "ucfReferenceId": "string",
- "ostrichControlId": "string",
- "taggedText": "string",
- "matchedControls": [
- {
- "ucfId": "string",
- "name": "string"
}
]
}
]
}
}gets all the scenario families in a business unit
| businessUnitId required | string The ID of the business unit |
| message | string | ||||||||
object | |||||||||
| |||||||||
{- "message": "string",
- "response": {
- "scenarioFamilies": [
- {
- "scenarioFamilyName": "Default 01 - Fraud and Ransomware",
- "scenarioFamilyId": "584YU95ux8vuKhALajNh"
}
]
}
}Creates a new scenario family in a business unit.
| businessUnitId required | string The ID of the business unit. |
The scenario family data to create a scenario family with.
required | object | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
| message required | string | ||
required | object (ApiCreateScenarioFamilyResponse) | ||
| |||
{- "scenarioFamily": {
- "name": "string",
- "description": "string",
- "assessmentId": "string",
- "threatFrequency": {
- "name": "Threat Frequency",
- "scopeItems": [
- {
- "lexicon": "threat-community",
- "values": [
- "Organized Crime Groups: _All",
- "Independent Cybercriminals: _All"
]
}
], - "narrativeJustification": "ransomware is a particularly dangerous threat for our company because of the sensitive data we handle",
- "keyConsiderations": "this is a higher priority threat vector for our company"
}, - "notes": [
- {
- "lexiconPath": "threat-community|Script Kiddies",
- "note": "competing community"
}
]
}
}{- "message": "string",
- "response": {
- "scenarioFamilyId": "string"
}
}gets a specific scenario family
| businessUnitId required | string The ID of the business unit |
| scenarioFamilyId required | string Unique identifier for the scenario family. |
| message | string | ||||||||||||||||||||||||||||
object | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
{- "message": "string",
- "response": {
- "scenarioFamilyName": "Default 01 - Fraud and Ransomware",
- "scenarioFamilyId": "584YU95ux8vuKhALajNh",
- "description": "Cybercriminal organizations and independent actors targeting organizations rich in financial data for monetary gain",
- "assessmentId": "yJh6dtjIiyGuTf36qV8R",
- "scopeCategories": [
- {
- "name": "Threat Frequency",
- "scopeItems": [
- {
- "lexicon": "threat-community",
- "values": [
- "Organized Crime Groups: _All",
- "Independent Cybercriminals: _All"
]
}
], - "narrativeJustification": "ransomware is a particularly dangerous threat for our company because of the sensitive data we handle",
- "keyConsiderations": "this is a higher priority threat vector for our company"
}
], - "notes": [
- {
- "lexiconPath": "threat-community|Script Kiddies",
- "note": "competing community"
}
]
}
}Updates the specified scenario family.
| businessUnitId required | string The ID of the business unit. |
| scenarioFamilyId required | string The ID of the scenario family to be updated. |
The scenario family data to update the specified scenario family with.
required | object (updateScenarioFamilyRequestScenarioFamily) | ||||||||||||||||||||||||
| |||||||||||||||||||||||||
| message required | string |
{- "scenarioFamily": {
- "name": "string",
- "description": "string",
- "threatFrequency": {
- "name": "Threat Frequency",
- "scopeItems": [
- {
- "lexicon": "threat-community",
- "values": [
- "Organized Crime Groups: _All",
- "Independent Cybercriminals: _All"
]
}
], - "narrativeJustification": "ransomware is a particularly dangerous threat for our company because of the sensitive data we handle",
- "keyConsiderations": "this is a higher priority threat vector for our company"
}, - "notes": [
- {
- "lexiconPath": "threat-community|Script Kiddies",
- "note": "competing community"
}
]
}
}{- "message": "string"
}Deletes the specified scenario family.
| businessUnitId required | string The ID of the business unit. |
| scenarioFamilyId required | string The ID of the scenario family to be deleted. |
| message required | string |
{- "message": "string"
}A scenario is a FAIR risk model for one threat event, holding the frequency and magnitude factors used by the simulation.
gets all the scenarios in a scenario family
| businessUnitId required | string The ID of the business unit |
| scenarioFamilyId required | string Unique identifier for the scenario family. |
| message | string | ||||||||
object | |||||||||
| |||||||||
{- "message": "string",
- "response": {
- "scenarios": [
- {
- "scenarioName": "Insider Threats",
- "scenarioId": "NanXEvGH3D35zR8F8j4h"
}
]
}
}Creates a new scenario in the specified scenario family.
| businessUnitId required | string The ID of the business unit. |
| scenarioFamilyId required | string The ID of the scenario family to add the scenario to. |
Supported Factors
Supported Factor Combinations
Supported Probability Distributions
required | object | ||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||
| message required | string | ||
required | object (ApiCreateScenarioResponse) | ||
| |||
{- "scenario": {
- "scenarioName": "string",
- "factors": [
- {
- "shortName": "LEF",
- "probabilityDistribution": "BetaPERT",
- "min": 1000,
- "mode": 2000,
- "max": 3000,
- "lambda": 4
}
], - "effect": "The effect of the scenario on the business unit",
- "threat": "The threat of the scenario on the business unit",
- "asset": "The asset of the scenario on the business unit",
- "scenarioPurpose": "The purpose of the scenario on the business unit",
- "scenarioNarrativeAndDetail": "The narrative and detail of the scenario on the business unit"
}
}{- "message": "string",
- "response": {
- "scenarioId": "string"
}
}gets a specific scenario
| businessUnitId required | string The ID of the business unit |
| scenarioFamilyId required | string Unique identifier for the scenario family. |
| scenarioId required | string Unique identifier for the scenario. |
| message | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{- "message": "string",
- "response": {
- "lastRun": {
- "simulationResults": {
- "minALE": 0.1,
- "aveALE": 0.1,
- "maxALE": 0.1,
- "modeALE": 0.1,
- "percentiles": [
- {
- "percentile": 0.01,
- "loss": 5.853759876731206e+44
}
]
}, - "runSimulationParameters": {
- "scenarioName": "string",
- "businessUnitId": "string",
- "sampleCount": 0,
- "factors": [
- {
- "shortName": "LEF",
- "probabilityDistribution": "BetaPERT",
- "min": 1000,
- "mode": 2000,
- "max": 3000,
- "lambda": 4
}
]
}, - "factorStatistics": [
- {
- "factorName": "string",
- "min": 0.1,
- "ave": 0.1,
- "max": 0.1,
- "mode": 0.1,
- "percentiles": [
- {
- "percentile": 0.01,
- "loss": 5.853759876731206e+44
}
]
}
], - "lastRunTime": "2019-08-24T14:15:22Z",
- "userId": "66c55a49-1d1d-494e-8c39-12b70fceb1dd"
}, - "lastSavedAt": "2019-08-24T14:15:22Z",
- "lastModifiedUserId": "66c55a49-1d1d-494e-8c39-12b70fceb1dd",
- "scopeData": {
- "scopeCategories": [
- {
- "name": "Threat Frequency",
- "scopeItems": [
- {
- "lexicon": "threat-community",
- "values": [
- "Organized Crime Groups: _All",
- "Independent Cybercriminals: _All"
]
}
], - "narrativeJustification": "ransomware is a particularly dangerous threat for our company because of the sensitive data we handle",
- "keyConsiderations": "this is a higher priority threat vector for our company"
}
], - "notes": [
- {
- "lexiconPath": "threat-community|Script Kiddies",
- "note": "competing community"
}
], - "scenarioFamilyId": "584YU95ux8vuKhALajNh",
- "effect": "The effect of the scenario on the business unit",
- "threat": "The threat of the scenario on the business unit",
- "asset": "The asset of the scenario on the business unit",
- "scenarioPurpose": "The purpose of the scenario on the business unit",
- "scenarioNarrativeAndDetail": "The narrative and detail of the scenario on the business unit"
}, - "id": "string",
- "scenarioName": "string",
- "factors": [
- {
- "shortName": "LEF",
- "probabilityDistribution": "BetaPERT",
- "min": 1000,
- "mode": 2000,
- "max": 3000,
- "lambda": 4
}
]
}
}Updates the specified scenario.
| businessUnitId required | string The ID of the business unit. |
| scenarioFamilyId required | string The ID of the scenario family the updated scenario exists in. |
| scenarioId required | string The ID of the scenario to be updated. |
Supported Factors
Supported Factor Combinations
Supported Probability Distributions
required | object | ||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||
| message required | string |
{- "scenario": {
- "scenarioName": "string",
- "factors": [
- {
- "shortName": "LEF",
- "probabilityDistribution": "BetaPERT",
- "min": 1000,
- "mode": 2000,
- "max": 3000,
- "lambda": 4
}
], - "effect": "The effect of the scenario on the business unit",
- "threat": "The threat of the scenario on the business unit",
- "asset": "The asset of the scenario on the business unit",
- "scenarioPurpose": "The purpose of the scenario on the business unit",
- "scenarioNarrativeAndDetail": "The narrative and detail of the scenario on the business unit"
}
}{- "message": "string"
}Deletes the specified scenario.
| businessUnitId required | string The ID of the business unit. |
| scenarioFamilyId required | string The ID of the scenario family to delete the scenario from. |
| scenarioId required | string The ID of the scenario to be deleted. |
| message required | string |
{- "message": "string"
}Runs a simulation for the specified scenario.
| businessUnitId required | string The ID of the business unit. |
| scenarioFamilyId required | string The ID of the scenario family the scenario exists in. |
| scenarioId required | string The ID of the scenario to run the simulation for. |
The request to run a simulation, includes the number of random samples to run. Accepted values for numSamples are 1000, 5000, 10000, 50000, and 100000
| numSamples | integer Enum: 1000 5000 10000 50000 100000 The number of random samples for simulation. |
object (simulationResults) | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
object (runSimulationParameters) | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
Array of objects (factorStatistic) | |||||||||||||||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||||||||||||||
| lastRunTime | string <date-time> | ||||||||||||||||||||||||||||||||||||||||||||
| userId | string | ||||||||||||||||||||||||||||||||||||||||||||
{- "numSamples": 1000
}{- "simulationResults": {
- "minALE": 0.1,
- "aveALE": 0.1,
- "maxALE": 0.1,
- "modeALE": 0.1,
- "percentiles": [
- {
- "percentile": 0.01,
- "loss": 5.853759876731206e+44
}
]
}, - "runSimulationParameters": {
- "scenarioName": "string",
- "businessUnitId": "string",
- "sampleCount": 0,
- "factors": [
- {
- "shortName": "LEF",
- "probabilityDistribution": "BetaPERT",
- "min": 1000,
- "mode": 2000,
- "max": 3000,
- "lambda": 4
}
]
}, - "factorStatistics": [
- {
- "factorName": "string",
- "min": 0.1,
- "ave": 0.1,
- "max": 0.1,
- "mode": 0.1,
- "percentiles": [
- {
- "percentile": 0.01,
- "loss": 5.853759876731206e+44
}
]
}
], - "lastRunTime": "2019-08-24T14:15:22Z",
- "userId": "66c55a49-1d1d-494e-8c39-12b70fceb1dd"
}