---
title: "List an organization's reports"
method: GET
path: "/v1/organizations/{organization_id}/reports/"
tags: ["organizations"]
---

# List an organization's reports

`GET /v1/organizations/{organization_id}/reports/`

## Request

- Base URL: `https://api.ethiack.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ethiack.com/v1/organizations/{organization_id}/reports/`
- Auth: none declared

List reports belonging to an organization.

Scoped to organization and partner integrators; a 404 is returned
when the organization is outside the caller's scope.

Args:
    organization_id (int): Identifier of the organization.
    db (AsyncSession): Request-scoped database session.
    context (ActiveContext): Resolved caller identity and scope.
    query (PaginationQuery): Pagination query params.
    pager (Paginator): Fills the response's navigation metadata.

Returns:
    ReportListResponse: The organization's reports.

## Path parameters

- `organization_id` integer, required

## Query parameters

- `page` integer
- `per_page` integer: Page size. Values above 500 are clamped to it (or rejected, per REST__PAGINATION__PER_PAGE_OVER_MAX).
- `organization_id` integer, nullable
- `report_id` integer, nullable
- `pentest_slug` string, nullable

## Response `200`

Successful Response

- ReportListResponse: Paginated list wrapper for :class:`ReportResponse`. Shared by ``/v1/reports``, ``/v1/organizations/{id}/reports``, and ``/v1/pentests/{slug}/reports`` — all three are paginated list routes, so every returner is wired through :class:`~phoenix.api.rest.pagination.Paginator`. Attributes: reports (list[ReportResponse]): Report objects.
  - `total` integer, nullable
  - `page` integer, nullable
  - `per_page` integer, nullable
  - `_links` object, nullable: RFC 8288 rel to URL. Always first; last unless the route opted out of counting; prev and next when applicable.
  - `reports` ReportResponse[], required
    - `id` integer, required
    - `pentest_slug` string, nullable
    - `options` object: Generation options this report was requested with. Empty for types that take none.
    - `document_type` string, required
    - `status` integer, required
    - `url` string, nullable
    - `start_date` string, date-time, nullable
    - `end_date` string, date-time, nullable
    - `generation_date` string, date-time, nullable
    - `error` string, nullable
    - `convert_to_pdf` boolean
    - `language` 'en' | 'pt' | 'de' | 'fr' | 'es': Language a document is rendered in. Members are ISO 639-1 codes. This docstring is served as the field description in the public OpenAPI spec, so keep it about the contract; the reasoning behind the closed set is on :attr:`~phoenix.db.models.document.Document.language` and in revision ``a3f8d2c15e47``. The values are what ``documents.language`` stores (a native PostgreSQL enum of member *values*, unlike ``document_type`` above -- NULL there for the CSV exports, which render no text) and what the report-generation microservice takes on the wire, where they must match its own ``Language`` enum label for label — it ships translations for exactly these five and answers anything else with English, so a member added here without one there is silently wrong rather than an error.
    - `created` string, date-time, nullable
    - `event_slug` string, nullable, required: Previous name for pentest_slug.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/ethiack/apis/ethiack-api.md) - [All operations](https://skmtc.dev/ethiack/apis/ethiack-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ethiack/apis/ethiack-api/revisions/4eaba89bfebf?raw)
