> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bevor.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Findings

> Python SDK reference for the findings resource

<Note>The Bevor SDK is coming soon. This page previews its planned Python interface.</Note>

Access this resource from `client.findings`. Both async and sync clients expose the same methods.

## `list`

GET `/security/findings`

<CodeGroup>
  ```python Async theme={null}
  result = await client.findings.list()
  ```

  ```python Sync theme={null}
  result = client.findings.list()
  ```
</CodeGroup>

| Parameter            | Type                                                   | Required | Default |
| -------------------- | ------------------------------------------------------ | -------- | ------- |
| `page`               | `int \| None`                                          | No       | `None`  |
| `page_size`          | `int \| None`                                          | No       | `None`  |
| `project_id`         | `ID \| None`                                           | No       | `None`  |
| `project_slug`       | `str \| None`                                          | No       | `None`  |
| `user_id`            | `ID \| None`                                           | No       | `None`  |
| `code_version_id`    | `ID \| None`                                           | No       | `None`  |
| `analysis_id`        | `ID \| None`                                           | No       | `None`  |
| `created_by_user_id` | `ID \| None`                                           | No       | `None`  |
| `finding_type`       | `FindingType \| None`                                  | No       | `None`  |
| `level`              | `FindingLevel \| None`                                 | No       | `None`  |
| `is_acknowledged`    | `bool \| None`                                         | No       | `None`  |
| `leaf_only`          | `bool \| None`                                         | No       | `None`  |
| `operation`          | `FindingDraftOperation \| UNSET \| None`               | No       | `None`  |
| `order_by`           | `Literal['created_at', 'updated_at', 'level'] \| None` | No       | `None`  |
| `order`              | `Literal['desc', 'asc'] \| None`                       | No       | `None`  |

**Returns:** `PaginatedResource[FindingSchema]`

## `add`

POST `/security/findings`

<CodeGroup>
  ```python Async theme={null}
  result = await client.findings.add(
      version_id=version_id,
      findings=findings,
  )
  ```

  ```python Sync theme={null}
  result = client.findings.add(
      version_id=version_id,
      findings=findings,
  )
  ```
</CodeGroup>

| Parameter    | Type                    | Required | Default |
| ------------ | ----------------------- | -------- | ------- |
| `version_id` | `ID`                    | Yes      | `—`     |
| `findings`   | `List[FindingBodyDict]` | Yes      | `—`     |

**Returns:** `ResultsResponse[FindingSchema]`

## `get`

GET `/security/findings/{finding_id}`

<CodeGroup>
  ```python Async theme={null}
  result = await client.findings.get(
      finding_id=finding_id,
  )
  ```

  ```python Sync theme={null}
  result = client.findings.get(
      finding_id=finding_id,
  )
  ```
</CodeGroup>

| Parameter    | Type | Required | Default |
| ------------ | ---- | -------- | ------- |
| `finding_id` | `ID` | Yes      | `—`     |

**Returns:** `FindingSchema`

## `edit_metadata`

PATCH `/security/findings/{finding_id}`

<CodeGroup>
  ```python Async theme={null}
  result = await client.findings.edit_metadata(
      finding_id=finding_id,
  )
  ```

  ```python Sync theme={null}
  result = client.findings.edit_metadata(
      finding_id=finding_id,
  )
  ```
</CodeGroup>

| Parameter        | Type                   | Required | Default |
| ---------------- | ---------------------- | -------- | ------- |
| `finding_id`     | `ID`                   | Yes      | `—`     |
| `type`           | `FindingType \| None`  | No       | `None`  |
| `level`          | `FindingLevel \| None` | No       | `None`  |
| `name`           | `str \| None`          | No       | `None`  |
| `explanation`    | `str \| None`          | No       | `None`  |
| `recommendation` | `str \| None \| UNSET` | No       | `None`  |
| `reference`      | `str \| None \| UNSET` | No       | `None`  |

**Returns:** `BooleanResponse`

## `delete`

DELETE `/security/findings/{finding_id}`

<CodeGroup>
  ```python Async theme={null}
  result = await client.findings.delete(
      finding_id=finding_id,
  )
  ```

  ```python Sync theme={null}
  result = client.findings.delete(
      finding_id=finding_id,
  )
  ```
</CodeGroup>

| Parameter    | Type | Required | Default |
| ------------ | ---- | -------- | ------- |
| `finding_id` | `ID` | Yes      | `—`     |

**Returns:** `BooleanResponse`

## `revert`

POST `/security/findings/{finding_id}/revert`

<CodeGroup>
  ```python Async theme={null}
  result = await client.findings.revert(
      finding_id=finding_id,
  )
  ```

  ```python Sync theme={null}
  result = client.findings.revert(
      finding_id=finding_id,
  )
  ```
</CodeGroup>

| Parameter    | Type | Required | Default |
| ------------ | ---- | -------- | ------- |
| `finding_id` | `ID` | Yes      | `—`     |

**Returns:** `BooleanResponse`

## `toggle_acknowledgement`

PATCH `/security/findings/{finding_id}/status`

<CodeGroup>
  ```python Async theme={null}
  result = await client.findings.toggle_acknowledgement(
      finding_id=finding_id,
  )
  ```

  ```python Sync theme={null}
  result = client.findings.toggle_acknowledgement(
      finding_id=finding_id,
  )
  ```
</CodeGroup>

| Parameter    | Type | Required | Default |
| ------------ | ---- | -------- | ------- |
| `finding_id` | `ID` | Yes      | `—`     |

**Returns:** `BooleanResponse`

## `comments`

GET `/security/findings/{finding_id}/comments`

<CodeGroup>
  ```python Async theme={null}
  result = await client.findings.comments(
      finding_id=finding_id,
  )
  ```

  ```python Sync theme={null}
  result = client.findings.comments(
      finding_id=finding_id,
  )
  ```
</CodeGroup>

| Parameter    | Type | Required | Default |
| ------------ | ---- | -------- | ------- |
| `finding_id` | `ID` | Yes      | `—`     |

**Returns:** `ResultsResponse[FindingCommentSchema]`

## `comment`

POST `/security/findings/{finding_id}/comments`

<CodeGroup>
  ```python Async theme={null}
  result = await client.findings.comment(
      finding_id=finding_id,
      message=message,
  )
  ```

  ```python Sync theme={null}
  result = client.findings.comment(
      finding_id=finding_id,
      message=message,
  )
  ```
</CodeGroup>

| Parameter    | Type  | Required | Default |
| ------------ | ----- | -------- | ------- |
| `finding_id` | `ID`  | Yes      | `—`     |
| `message`    | `str` | Yes      | `—`     |

**Returns:** `FindingCommentSchema`
