VulnerabilitiesGet a vulnerability

Get a vulnerability

Returns one finding by vulnerabilityId from list or get. Missing ids return 404. Custom field definitions are merged with stored values on the finding. Optional expansions via fields: affectedResources, tickets, mappedRisks. affectedResources is omitted until requested. Those resources default to status open and risk. Override with resourceStatus. Requires scope vulnerability:read or vulnerability:write.

curl -X GET "https://api.scrut.io/v1/vulnerabilities/import%23CVE-2024-1234?resourceStatus=open&fields=affectedResources%2Ctickets%2CmappedRisks" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN (JWT)"
{
  "data": {
    "vulnerabilityId": "import%23CVE-2024-1234",
    "title": "Public S3 bucket",
    "description": "Bucket is world-readable.",
    "status": "open",
    "severity": "critical",
    "source": "aws",
    "assignees": [
      {
        "name": "Alex Rivera",
        "email": "alex@example.com",
        "isPrimary": true
      }
    ],
    "firstSeen": 1704067200000,
    "lastScannedOn": 1704067200000,
    "cveId": "CVE-2024-1234",
    "cvssScore": 7.5,
    "sla": 4,
    "reportLink": "https://example.com/report",
    "affectedResources": [
      {
        "name": "s3://bucket",
        "type": "s3",
        "tags": [
          "public"
        ],
        "firstSeen": 1704067200000,
        "status": "open"
      }
    ],
    "remediation": "Block public ACLs.",
    "stepsToReproduce": "Open the bucket URL.",
    "addedBy": {
      "name": "Alex Rivera",
      "email": "alex@example.com"
    },
    "addedOn": 1704067200000,
    "lastModifiedBy": {
      "name": "Alex Rivera",
      "email": "alex@example.com"
    },
    "modifiedOn": 1704067200000,
    "customFields": [
      {
        "customFieldId": "e760f5cb-3de6-49b4-a0c9-425076e033a1",
        "title": "Environment",
        "fieldType": "text_box",
        "options": [
          {}
        ],
        "fieldValue": "null"
      }
    ],
    "tickets": [
      {
        "id": "SEC-104",
        "url": "https://jira.example/browse/SEC-104",
        "source": "jira"
      }
    ],
    "mappedRisks": [
      {
        "riskId": "c3d4e5f6-a7b8-4901-8c2d-3e4f5a6b7c8d",
        "riskName": "Unauthorized access to production systems"
      }
    ]
  },
  "meta": {
    "requestId": "550e8400-e29b-41d4-a716-446655440000"
  }
}
GET
/v1/vulnerabilities/{vulnerabilityId}
GET
Base URLstring

Target server for requests. Edit to use your own host.

Bearer Token (JWT)
Bearer Tokenstring
Required

Machine access token from POST /oauth/token. Send Authorization: Bearer $SCRUT_ACCESS_TOKEN on every /v1 request.

Machine access token from POST /oauth/token. Send Authorization: Bearer $SCRUT_ACCESS_TOKEN on every /v1 request.
path
vulnerabilityIdstring
Required

Use the vulnerabilityId returned by list or get. It is already URL-encoded, so paste it as the path segment: /v1/vulnerabilities/{vulnerabilityId}.

query
resourceStatusstring

Filter affected resources. Default is open and risk. Pass a comma-separated list (no spaces required). Allowed values: open, closed, acknowledged, ignored, risk.

query
fieldsstring

Optional expansions. Default get response already includes core metadata; use this to add affectedResources, tickets, or mappedRisks. Pass a comma-separated list (no spaces required). Allowed values: affectedResources, tickets, mappedRisks.

Request Preview
Response

Response will appear here after sending the request

Authentication

header
Authorizationstring
Required

Bearer token (JWT). Machine access token from POST /oauth/token. Send Authorization: Bearer $SCRUT_ACCESS_TOKEN on every /v1 request.

Path Parameters

vulnerabilityIdstring
Required

Use the vulnerabilityId returned by list or get. It is already URL-encoded, so paste it as the path segment: /v1/vulnerabilities/{vulnerabilityId}.

Example:
import%23CVE-2024-1234

Query Parameters

resourceStatusstring

Filter affected resources. Default is open and risk. Pass a comma-separated list (no spaces required). Allowed values: open, closed, acknowledged, ignored, risk.

Example:
open
fieldsstring

Optional expansions. Default get response already includes core metadata; use this to add affectedResources, tickets, or mappedRisks. Pass a comma-separated list (no spaces required). Allowed values: affectedResources, tickets, mappedRisks.

Example:
affectedResources,tickets,mappedRisks

Responses

dataobject
Required
metaobject
Required