Detected country: US
logo
API Docs
‌
‌
‌
logo

Powered by

  • Home
  • Cobalt API
  • Engagement Findings

Engagement Findings

8min read

Share

States

The table below describes how the engagement finding state values used by the API correspond to finding states shown in the user interface.

API ValueUI NameDescription
newDraftA pentester has created a draft finding but has not yet submitted it for triaging
triagingTriagingThe finding is being triaged
need_fixPending FixThe finding is valid and needs to be fixed
check_fixReady for RetestA fix is awaiting validation by a pentester
valid_fixFixedThe finding was fixed and validated by a pentester
wont_fixAccepted RiskThe risk has been accepted. The finding will not be fixed
invalidInvalidThe finding is invalid
duplicateInvalidThe finding is invalid
out_of_scopeInvalidThe finding is invalid

Get All Engagement Findings

This endpoint retrieves a list of all engagement findings that belong to the organization specified in the X-Org-Token header.

Calculations

We follow the standard risk model described by OWASP, where:

Risk = Impact * Likelihood

Cobalt Risk Input Fields:

  • impact: 1, 2, 3, 4, or 5
  • likelihood: 1, 2, 3, 4, or 5

Cobalt Risk Classification (severity, a.k.a. criticality):

CategoryScoreDescription
critical25Includes vulnerabilities that require immediate attention.
high16-24Impacts the security of your application/platform/hardware, including supported systems. Includes high probability vulnerabilities with a high business impact.
medium5-15Includes vulnerabilities that are: medium risk, medium impact; low risk, high impact; high risk, low impact.
low2-4Specifies common vulnerabilities with minimal impact.
informational 1Notes vulnerabilities of minimal risk to your business.

HTTP Request

GET https://api.us.cobalt.io/engagement_findings

URL Parameters

ParameterDefaultDescription
cursorN/AUsed for pagination. Example: https://api.us.cobalt.io/engagement_findings?cursor=eyJwYWdlIjoyLCJzaXplIjoxMH0=
sortcreated_atIf specified, returns engagement findings sorted in ascending order by one of these properties: created_at, impact, likelihood, severity, state, or updated_at. To sort in descending order, use a - before the sort property. Example: https://api.us.cobalt.io/engagement_findings?sort=-state.

Response Fields

The fields that are returned depend on the engagement finding type. This can be determined from the finding_type field, which is common to all engagement finding types.

FieldEngagement Finding Type(s)Description
affected_resourceAllResource(s) impacted by the returned finding
attachmentsAllA list of finding attachments. Attachment download URLs are pre-authorized and will expire after 10 minutes
code_snippetsSecure code review findingsCode snippets demonstrating the issue with the returned finding
created_atAllThe timestamp when this finding was created. Format: 2024-05-28T11:39:25.011Z
cvss_scoreSecure code review findingsCVSS score for this finding
descriptionAllThe description of the returned finding
engagement_idAllThe unique ID of the engagement this finding belongs to
finding_typeAllThe finding type. digital_risk_assessment_finding or secure_code_review_finding
idAllA unique ID representing the finding
impactAllIf exploited, the potential impact of this finding. 0 (very low impact) - 5 (very high impact)
likelihoodAllHow likely this finding is to be exploited. 0 (very unlikely) - 5 (very likely)
prerequisitesDigital risk assessment findingsConditions that must be fulfilled to successfully exploit the returned finding
proof_of_conceptAllA proof of concept for the returned finding
severityAllnull likelihood/impact have not yet been set by the pentester, otherwise the rating as described above
severity_descriptionAllDescription of the impact and likelihood of the returned finding
stateAllThe state of the finding. new, triaging, out_of_scope, invalid, duplicate, need_fix, check_fix, valid_fix, or wont_fix
suggested_fixAllHow to fix the returned finding
tagAllA human-friendly unique ID representing the finding
target_asset_idAllThe unique ID of the asset impacted by the returned finding
titleAllThe title of the returned finding
type_categoryAllThe general type category of the returned finding. Example: XSS
links.ui.urlAllA link to redirect an authorized user to this finding in the Cobalt web application
curl -X GET "https://api.us.cobalt.io/engagement_findings" \
  -H "Accept: application/vnd.cobalt.v2+json" \
  -H "Authorization: Bearer YOUR-PERSONAL-API-TOKEN" \
  -H "X-Org-Token: YOUR-V2-ORGANIZATION-TOKEN"

The above command returns JSON structured like this:

{
  "pagination": {
    "next_page": "/engagement_findings?cursor=eyJwYWdlIjoyLCJzaXplIjoxMH0=",
    "prev_page": null
  },
  "data": [
    {
      "resource": {
        "finding_type": "digital_risk_assessment_finding",
        "id": "draf_5HPNLdMGN7kRV3Wjn3BDWv",
        "tag": "#DRA20540_6",
        "engagement_id": "dra_J9Edby7Qso4HzhgRzwktW4",
        "created_at": "2024-04-30T10:49:26.536Z",
        "title": "Title.",
        "description": "Description.",
        "affected_resource": "Resource.",
        "proof_of_concept": "Proof of concept.",
        "severity_description": "Severity description.",
        "suggested_fix": "Suggested fix.",
        "prerequisites": "Prerequisites.",
        "state": "new",
        "type_category": "",
        "impact": 1,
        "likelihood": 2,
        "severity": "low",
        "attachments": []
      },
      "links": {
        "ui": {
          "url": "https://api.us.cobalt.io/links/eyJ0eXBlIjoiRU5HQUdFTUVOVCIsIm9yZ1NsdWciOiJtb2hyLXdhbGtlci05IiwicGVudGVzdFRhZyI6IiIsImZpbmRpbmdJZCI6IiIsImFzc2V0VGFnIjoiIiwiZW5nYWdlbWVudElkIjoiZHJhZl81SFBOTGRNR043a1JWM1dqbjNCRFd2IiwiZGFzdFRhcmdldElkIjoiIiwiZGFzdEZpbmRpbmdJZCI6IiIsImVuZ2FnZW1lbnRGaW5kaW5nSWQiOiIifQ=="
        }
      }
    },
    {
      "resource": {
        "finding_type": "secure_code_review_finding",
        "id": "scrf_6iz9f9PkNQe2P4PFXMP162",
        "tag": "#SCR26733_2",
        "engagement_id": "scr_HQFC6FaM8kZv17QBTe3rmR",
        "created_at": "2024-05-28T11:42:30.508Z",
        "title": "Title.",
        "description": "Description.",
        "affected_resource": "Affected resource.",
        "proof_of_concept": "Proof of concept.",
        "severity_description": "Severity descrption.",
        "suggested_fix": "Suggested fix.",
        "code_snippets": "Code snippets.",
        "state": "triaging",
        "target_asset_id": "as_A7EhhrnMZxSvfQPLqSFbE7",
        "type_category": "",
        "impact": 3,
        "likelihood": 3,
        "severity": "medium",
        "cvss_score": null,
        "attachments": []
      },
      "links": {
        "ui": {
          "url": "https://api.us.cobalt.io/links/eyJ0eXBlIjoiRU5HQUdFTUVOVCIsIm9yZ1NsdWciOiJtb2hyLXdhbGtlci05IiwicGVudGVzdFRhZyI6IiIsImZpbmRpbmdJZCI6IiIsImFzc2V0VGFnIjoiIiwiZW5nYWdlbWVudElkIjoic2NyZl82aXo5ZjlQa05RZTJQNFBGWE1QMTYyIiwiZGFzdFRhcmdldElkIjoiIiwiZGFzdEZpbmRpbmdJZCI6IiIsImVuZ2FnZW1lbnRGaW5kaW5nSWQiOiIifQ=="
        }
      }
    }
  ]
}

:::info Remember - you can only request engagement findings scoped to the organization specified in the X-Org-Token header.

:::

Get an Engagement Finding

This endpoint retrieves a specific engagement finding that belongs to the organization specified in the X-Org-Token header.

HTTP Request

GET https://api.us.cobalt.io/engagement_findings/YOUR-ENGAGEMENT-FINDING-IDENTIFIER-HERE

Response Fields

For details about each response field, please refer to the table above.

curl -X GET "https://api.us.cobalt.io/engagement_findings/YOUR-ENGAGEMENT-FINDING-IDENTIFIER" \
  -H "Accept: application/vnd.cobalt.v2+json" \
  -H "Authorization: Bearer YOUR-PERSONAL-API-TOKEN" \
  -H "X-Org-Token: YOUR-V2-ORGANIZATION-TOKEN"

The above command returns JSON structured like this:

{
  "data": {
    "resource": {
      "finding_type": "secure_code_review_finding",
      "id": "scrf_CrmugETa3zTJWbu6ybRZMJ",
      "tag": "#SCR26733_1",
      "engagement_id": "scr_HQFC6FaM8kZv17QBTe3rmR",
      "created_at": "2024-05-28T11:39:25.011Z",
      "title": "Finding Title",
      "description": "Description.",
      "affected_resource": "Affected resource.",
      "proof_of_concept": "Proof of concept.",
      "severity_description": "Severity description.",
      "suggested_fix": "Suggested fix.",
      "code_snippets": "Code snippets.",
      "state": "need_fix",
      "target_asset_id": "as_4L4ZjKgfzP7VBwUmqCZmmL",
      "type_category": "Binary Planting",
      "impact": 3,
      "likelihood": 3,
      "severity": "medium",
      "cvss_score": "8.8 (AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H)",
      "attachments": [
        {
          "id": "at_LA5GcEL4HRitFGCHREqmzL",
          "file_name": "rainbow.jpeg",
          "download_url": "https://s3.amazonaws.com/acmecorp/uploads/attachment/file/12345/rainbow.jpeg?something=1"
        }
      ]
    },
    "links": {
      "ui": {
        "url": "https://api.us.cobalt.io/links/eyJ0eXBlIjoiRU5HQUdFTUVOVF9GSU5ESU5HIiwib3JnU2x1ZyI6Im1vaHItd2Fsa2VyLTkiLCJwZW50ZXN0VGFnIjoiIiwiZmluZGluZ0lkIjoiIiwiYXNzZXRUYWciOiIiLCJlbmdhZ2VtZW50SWQiOiJzY3JfSFFGQzZGYU04a1p2MTdRQlRlM3JtUiIsImRhc3RUYXJnZXRJZCI6IiIsImRhc3RGaW5kaW5nSWQiOiIiLCJlbmdhZ2VtZW50RmluZGluZ0lkIjoic2NyZl9Dcm11Z0VUYTN6VEpXYnU2eWJSWk1KIn0="
      }
    }
  }
}

:::info Remember - you can only request an engagement finding scoped to the organization specified in the X-Org-Token header.

:::

Update Engagement Finding State

This endpoint updates the current state of an engagement finding.

HTTP Request

PATCH https://api.us.cobalt.io/findings/YOUR-ENGAGEMENT-FINDING-IDENTIFIER

URL Parameters

ParameterDescription
YOUR-ENGAGEMENT-FINDING-IDENTIFIERA unique ID representing the engagement finding. The general form is P_I, where P is a prefix (such as scrf) indicating the type of finding, and I is a unique identifier.

Body

FieldDescription
stateThe desired next state of the engagement finding. Should be one of the possible states.

Response Fields

For details about each response field, please refer to the table above.

The returned object will reflect the updated state.

curl -X PATCH "https://api.us.cobalt.io/engagement_findings/YOUR-ENGAGEMENT-FINDING-IDENTIFIER" \
  -H "Accept: application/vnd.cobalt.v2+json" \
  -H "Content-Type: application/vnd.cobalt.v2+json" \
  -H "Idempotency-Key: A-UNIQUE-IDENTIFIER-TO-PREVENT-UNINTENTIONAL-DUPLICATION" \
  -H "Authorization: Bearer YOUR-PERSONAL-API-TOKEN" \
  -H "X-Org-Token: YOUR-V2-ORGANIZATION-TOKEN" \
  -d '{"state":"triaging"}'

If successful, this command returns 200 .

Share