---
title: "Listing Datasets"
method: GET
path: "/v1/projects/{projectId}/datasets"
tags: ["Dataset Management"]
---

# Listing Datasets

`GET /v1/projects/{projectId}/datasets`

The Dataset listing endpoint returns all published Datasets in a Project. If a Draft Form defines a new Dataset, that Dataset will not be included in this list until the Form is published.

The query `?deleted=true` can be added to list deleted Datasets with their numeric IDs, which can be used to [download a deleted Dataset's Entity data](/central-api-dataset-management/#downloading-deleted-dataset-entities).

## Path parameters

- `projectId` number, required

## Query parameters

- `deleted` boolean

## Response `200`

OK

- Dataset[]
  - `name` string, required — The name of the Dataset
  - `createdAt` string, required — ISO date format.
  - `projectId` number, required — The numerical ID of the Project that the Dataset belongs to.
  - `approvalRequired` boolean — Control whether a Submission should be approved before an Entity is created from it.
  - `ownerOnly` boolean — Legacy flag. If `ownerOnly` is `true`, and an Actor only has access to the Dataset CSV file via linked Form Attachments, then only Entities created by the Actor will be downloaded to the OpenRosa client. Superseded by `accessFilter` when set.
  - `accessFilter` object, nullable — Controls which Entities are visible to restricted Actors (App Users, Data Collectors, Public Links) via linked Form Attachments. `null` means no restrictions. When present, supersedes `ownerOnly`.
    - `type` 'ownerOnly' | 'property', required — `ownerOnly` restricts each Actor to Entities they created. `property` restricts based on matching dataset and actor property values.
    - `rules` object[] — Present when `type` is `property`. Each rule specifies a Dataset property and an Actor property that must match.
      - `datasetProperty` string
      - `actorProperty` string

## Changes

- **2026-07-03** `2ff2c2a4dfc7` — 2 info
  - added the optional property `items/accessFilter` to the response with the `200` status (media type: application/json)
  - added the optional property `items/allOf[#/components/schemas/Dataset]/accessFilter` to the response with the `200` status (media type: application/json; extended)
- **2026-04-03** `2aed27d9e013` — 1 info
  - added the new optional `query` request parameter `deleted`
- **2025-12-20** `022694254f0d` — 1 info
  - api operation id `Listing Datasets` removed and replaced with `listDatasets`
- **2025-10-27** `b11b54eea487` — 1 info
  - removed the non-success response with the status `403`
- **2025-10-10** `196d7d957d94` — 1 info
  - endpoint added

[Full history](https://skmtc.dev/getodk/apis/odk-central-api/changes/v1/projects/:projectId/datasets/get.md)

---

[API](https://skmtc.dev/getodk/apis/odk-central-api.md) · [All operations](https://skmtc.dev/getodk/apis/odk-central-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getodk/odk-central-api/revisions/d4f5ba77f644/schema)
