Skip to content

Cases

Part of the API reference. Authentication, scopes, rate limits and errors are on the overview.

BitHive Reporting Desk API · 0.11.0

Cases

GET/v1/cases

List the CRA cases

Returns the account's cases under Article 14 of the Cyber Resilience Act, an actively exploited vulnerability or a severe incident, newest first, each with its state, product, vulnerability identifiers and the stage whose stored deadline comes next. A token limited to one product lists that product's cases only. Deadlines are dates and times; the answer says nothing about whether one has passed. Pages hold limit cases; next_cursor reads the next page, sent as cursor with the same filters, and is null on the last. Requires the scope cases:read.

Scope: cases:read

Parameters

ParameterInTypeDescription
product_idquerystring (uuid)Only the cases of this product. With a token limited to another product, the list is empty.
closedquerybooleanTrue for the cases that are closed or dismissed only, false for the others only. Leaving it out lists both.
limitqueryintegerThe most cases a page holds.
cursorquerystringThe `next_cursor` of the page before.

Responses

200 A page of the cases the token sees. CaseList

{
  "cases": [
    {
      "id": "7b1c2e8a-4f0d-4c55-9a3e-2d6f1b0c9e41",
      "type": "exploited_vulnerability",
      "state": "early_warning_submitted",
      "product_id": "2d244e39-9353-4652-b8bb-fde203139229",
      "cve": "CVE-2026-12345",
      "euvd_id": null,
      "advisory_id": "GHSA-abcd-efgh-ijkl",
      "detected_at": "2026-10-12T06:25:31Z",
      "became_aware_at": "2026-10-12T06:25:31Z",
      "next_deadline": {
        "stage": "notification",
        "due_at": "2026-10-15T06:25:31Z"
      }
    }
  ],
  "next_cursor": "MTc2MDI1MDMzMTAwMDAwMC43YjFjMmU4YS00ZjBkLTRjNTUtOWEzZS0yZDZmMWIwYzllNDE"
}

400 A query parameter is not one the list takes, or the cursor is not one this API gave. Problem

{
  "type": "about:blank",
  "title": "Bad Request",
  "status": 400,
  "detail": "limit is a whole number from 1 to 100."
}

Example

curl --fail-with-body -sS \
  -H "Authorization: Bearer $BITHIVE_TOKEN" \
  "https://app.bithive-it.com/v1/cases"

GET/v1/cases/{caseId}

Read one CRA case with its deadlines and the state of its reports

Returns the case with the moments its page shows (detected, aware, first alert delivered, first acknowledged, corrective measure available, incident occurred), each stored deadline with the moment it is counted from, the rule that computed it and whether its report was submitted by it, and per stage whether its report is drafted or recorded as submitted, and when. What a person wrote about the case or a report is not in the answer. A case of another account, of a product the token is not limited to, and a record of another kind are reported as not found. Requires the scope cases:read.

Scope: cases:read

Parameters

ParameterInTypeDescription
caseId requiredpathstring (uuid)Identifier of the CRA case.

Responses

200 The case. Case

{
  "id": "7b1c2e8a-4f0d-4c55-9a3e-2d6f1b0c9e41",
  "type": "exploited_vulnerability",
  "state": "early_warning_submitted",
  "product_id": "2d244e39-9353-4652-b8bb-fde203139229",
  "cve": "CVE-2026-12345",
  "euvd_id": null,
  "advisory_id": "GHSA-abcd-efgh-ijkl",
  "detected_at": "2026-10-12T06:25:31Z",
  "became_aware_at": "2026-10-12T06:25:31Z",
  "next_deadline": {
    "stage": "notification",
    "due_at": "2026-10-15T06:25:31Z"
  },
  "first_notified_at": "2026-10-12T06:26:02Z",
  "first_acknowledged_at": "2026-10-12T07:03:40Z",
  "fix_available_at": null,
  "occurred_at": null,
  "deadlines": [
    {
      "stage": "early_warning",
      "due_at": "2026-10-13T06:25:31Z",
      "basis": "became_aware_at",
      "basis_at": "2026-10-12T06:25:31Z",
      "met_at": "2026-10-12T15:10:00Z",
      "on_time": true,
      "rule": "cra.aev.early_warning",
      "rule_version": 1
    },
    {
      "stage": "notification",
      "due_at": "2026-10-15T06:25:31Z",
      "basis": "became_aware_at",
      "basis_at": "2026-10-12T06:25:31Z",
      "met_at": null,
      "on_time": null,
      "rule": "cra.aev.notification",
      "rule_version": 1
    }
  ],
  "reports": [
    {
      "stage": "early_warning",
      "state": "submitted",
      "submitted_at": "2026-10-12T15:10:00Z",
      "recorded_at": "2026-10-12T15:12:44Z"
    },
    {
      "stage": "notification",
      "state": "draft",
      "submitted_at": null,
      "recorded_at": null
    },
    {
      "stage": "final_report",
      "state": "none",
      "submitted_at": null,
      "recorded_at": null
    }
  ]
}

Example

curl --fail-with-body -sS \
  -H "Authorization: Bearer $BITHIVE_TOKEN" \
  "https://app.bithive-it.com/v1/cases/$CASEID"

The contract itself. This page is built from the OpenAPI document of the service. It is published as a file, so a client generator can read the same contract this page describes. Download openapi.yaml

Docs

Start free 14-day trial