---
title: "Update Dataset Access Filters and Metadata"
method: PATCH
path: "/v1/projects/{projectId}/datasets/{name}"
tags: ["Dataset Management"]
---

# Update Dataset Access Filters and Metadata

`PATCH /v1/projects/{projectId}/datasets/{name}`

You can use this endpoint to update `approvalRequired`, `ownerOnly`, and `accessFilter`. However, you cannot update other properties, such as `name`.

The `approvalRequired` flag controls the Entity creation flow. If it is `true`, then the Submission must be approved before an Entity can be created from it. If it is `false`, then an Entity is created as soon as the Submission is received by ODK Central. By default, `approvalRequired` is `false` for Datasets created after v2023.3. Datasets created prior to that will have `approvalRequired` set to `true`.

The `accessFilter` field filters which Entities are visible to [App Users](/central-api-accounts-and-users/#app-users) and [Public Links](/central-api-form-management/#public-access-links) when they download the Dataset via a linked Form Attachment. When `accessFilter` is present, it takes precedence over the legacy `ownerOnly` flag.

| `accessFilter` value | Behavior |
| --- | --- |
| `null` | No restrictions; all Entities are visible. |
| `{ "type": "ownerOnly" }` | Each Actor only sees Entities they created. |
| `{ "type": "property", "rules": [...] }` | Each Actor only sees Entities where the specified Dataset property matches their [Actor property](/central-api-accounts-and-users/#actor-properties) value. Multiple rules are ANDed together. |

The legacy `ownerOnly` boolean field is still accepted when `accessFilter` is absent, and behaves as before. If `ownerOnly` is `true`, and the Actor using the OpenRosa client only has access to the Dataset CSV file via linked Form Attachments, then only Entities created by the Actor will be included. This is true of App Users, Web Users with a role of Data Collector, and Public Access Links. If `ownerOnly` is `false`, or if the Actor has direct access to the Dataset CSV file, then all Entities will be included. Accessing the Dataset CSV file via linked Form Attachments using a [draftToken](/central-api-form-management/#draft-form) will also retrieve all Entities; this functionality assumes the `draftToken` is used by Actors with full dataset access, such as Project Managers and System Administrators. By default, `ownerOnly` is `false`.

## Path parameters

- `projectId` number, required
- `name` string, required

## Request body

- object
  - `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. Ignored when `accessFilter` is also present.
  - `accessFilter` object, nullable — Controls which Entities are visible to restricted Actors (App Users, Data Collectors, Public Links) via linked Form Attachments. Takes precedence over `ownerOnly` when present. Set to `null` to remove all restrictions.
    - `type` 'ownerOnly' | 'property', required — `ownerOnly` restricts each Actor to Entities they created. `property` restricts based on matching dataset and actor property values.
    - `rules` object[] — Required when `type` is `property`. Each rule matches a Dataset property against an Actor property; all rules must match.
      - `datasetProperty` string, required — The name of a Dataset property to compare.
      - `actorProperty` string, required — The name of an Actor property to compare against.

## Response `200`

OK

- DatasetMetadata
  - `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
  - `lastUpdate` string — ISO date format. The timestamp of the most recent change to the dataset or its entities
  - `linkedForms` FormKeyValue[] — Forms that consume data from the Dataset
    - `xmlFormId` string — The `id` of this form as given in its XForms XML definition
    - `name` string — The friendly name of this form. It is given by the `<title>` in the XForms XML definition. Returns `xmlFormId` if there is no title in the form definition.
  - `sourceForms` FormKeyValue[] — Forms that create Entities in the Dataset
    - `xmlFormId` string — The `id` of this form as given in its XForms XML definition
    - `name` string — The friendly name of this form. It is given by the `<title>` in the XForms XML definition. Returns `xmlFormId` if there is no title in the form definition.
  - `properties` PropertyDetailed[] — All properties of the Dataset
    - `name` string, required — The name of the Property.
    - `odataName` string — The name of the property as it will appear in OData. OData property names can only contain alphanumeric characters and underscores.
    - `publishedAt` string, required — Publishing timestamp of the form that defined this property for the first time.
    - `forms` FormKeyValue[] — List of forms that create the property
      - `xmlFormId` string — The `id` of this form as given in its XForms XML definition
      - `name` string — The friendly name of this form. It is given by the `<title>` in the XForms XML definition. Returns `xmlFormId` if there is no title in the form definition.

## Changes

- **2026-07-03** `2ff2c2a4dfc7` — 2 info
  - added the new optional request property `accessFilter`
  - added the optional property `allOf[#/components/schemas/Dataset]/accessFilter` to the response with the `200` status
- **2025-12-20** `022694254f0d` — 1 info
  - api operation id `Update Dataset Metadata` removed and replaced with `updateDatasetMetadata`
- **2025-10-27** `b11b54eea487` — 1 info
  - removed the non-success response with the status `403`
- **2025-10-10** `196d7d957d94` — 1 info
  - endpoint added
- **2025-03-13** `e8c2858fd4eb` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/getodk/apis/odk-central-api/changes/v1/projects/:projectId/datasets/:name/patch.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)
