---
title: "Patch Data Product"
method: PATCH
path: "/api/products/v2/{id}"
tags: ["Data Products"]
---

# Patch Data Product

`PATCH /api/products/v2/{id}`

Partially updates an existing ACTIVE data product. Each provided field is validated against the data product's current state and the caller's role. If any field cannot be updated, the entire request is rejected and no changes are applied.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `actingRole` 'PROVIDER' | 'ADMIN'

## Request body

- DataProductUpdateDto — Data transfer object representing a data product
  - `name` DataProductNameDto
    - `de` string — German name of the data product
    - `fr` string — French name of the data product
    - `it` string — Italian name of the data product
  - `description` DataProductDescriptionDto
    - `de` string — German description of the data product
    - `fr` string — French description of the data product
    - `it` string — Italian description of the data product
  - `dataSourceSystemId` string, uuid
  - `restClientId` string, uuid
  - `restClientPathTemplate` string — Template for the path from which the data product will be fetched
  - `restClientRequestTemplate` string — Template for the path from which the data product will be fetched
  - `restClientMethodCode` 'POST' | 'GET'
  - `flowCode` 'UID_BASED_PRE_VALIDATION' | 'UID_BASED_POST_VALIDATION' | 'BUR_BASED_PRE_VALIDATION' | 'BUR_BASED_POST_VALIDATION' | 'UNBOUND_UID_BASED_POST_VALIDATION' | 'UNBOUND_BUR_BASED_POST_VALIDATION'
  - `restClientChangeDetectionPathTemplate` string — Template for the path for retrieving updates to the data product
  - `links` LinkDto[] — List of relevant product links
    - `url` string
    - `displayText` string
  - `extendedDescription` DataProductExtendedDescriptionDto
    - `de` string — German extended description of the data product
    - `fr` string — French extended description of the data product
    - `it` string — Italian extended description of the data product
  - `consentRequired` boolean — If a consent is required for this data product

## Response `200`

OK

- DataProductDto
  - `id` string, uuid, required
  - `dataSourceSystemCode` string — Code of data source system from which this product originates
  - `dataSourceSystem` DataSourceSystemDto
    - `id` string, uuid, required
    - `code` string — Stable technical code of the source
    - `name` TranslationDto
      - `de` string
      - `fr` string
      - `it` string
    - `dataProvider` DataProviderDto, required
      - `id` string, uuid, required
      - `code` string — Stable technical code of the provider
      - `name` TranslationDto
        - `de` string
        - `fr` string
        - `it` string
      - `uid` string — UID of the data provider
    - `legalBasis` TranslationDto, required
      - `de` string
      - `fr` string
      - `it` string
  - `restClient` RestClientDto
    - `id` string, uuid
    - `code` string — Stable technical code of the rest client
    - `displayName` string — Human-readable name of the REST client, intended for display in user interfaces
    - `url` string — Base URL of the external API accessed by this REST client
  - `restClientPathTemplate` string — Template for the path where the data product is fetched from
  - `restClientRequestTemplate` string — Template of the request body for fetching the data product
  - `restClientMethodCode` 'POST' | 'GET'
  - `flowCode` 'UID_BASED_PRE_VALIDATION' | 'UID_BASED_POST_VALIDATION' | 'BUR_BASED_PRE_VALIDATION' | 'BUR_BASED_POST_VALIDATION' | 'UNBOUND_UID_BASED_POST_VALIDATION' | 'UNBOUND_BUR_BASED_POST_VALIDATION'
  - `name` TranslationDto
    - `de` string
    - `fr` string
    - `it` string
  - `description` TranslationDto
    - `de` string
    - `fr` string
    - `it` string
  - `links` LinkDto[] — List of relevant product links
    - `url` string
    - `displayText` string
  - `extendedDescription` TranslationDto
    - `de` string
    - `fr` string
    - `it` string
  - `deprecatedSince` string, date-time
  - `stateCode` union, required — State of the data product
    - 'DRAFT' | 'ACTIVE'
    - object
  - `restClientChangeDetectionPathTemplate` string — Template for the path for retrieving updates to the data product
  - `consentRequired` boolean, required — If a consent is required for this data product

## Other responses

- `401` — Not Authorized
- `403` — Not Allowed
- `404` — The resource or element was not found
- `500` — Internal server error: unexpected error

## Changes

- **2026-08-31** `5760204210ed` — 3 info
  - the `extendedDescription/de` request property's maxLength was increased from `1000` to `10000`
  - the `extendedDescription/fr` request property's maxLength was increased from `1000` to `10000`
  - the `extendedDescription/it` request property's maxLength was increased from `1000` to `10000`
- **2026-08-13** `a0609096db65` — 2 info
  - added the new optional request property `consentRequired`
  - added the required property `consentRequired` to the response with the `200` status
- **2026-08-11** `52c1637abca0` — 1 breaking, 2 warning, 4 info
  - removed the enum value `UNBOUND_POST_VALIDATION` of the request property `flowCode`
  - added the new `UNBOUND_BUR_BASED_POST_VALIDATION` enum value to the `flowCode` response property for the response status `200`
  - added the new `UNBOUND_UID_BASED_POST_VALIDATION` enum value to the `flowCode` response property for the response status `200`
  - added the new `UNBOUND_BUR_BASED_POST_VALIDATION` enum value to the request property `flowCode`
  - …3 more
- **2026-07-23** `afc89996cbbc` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/agridata/apis/agridata-ch-api/changes/api/products/v2/:id/patch.md)

---

[API](https://skmtc.dev/agridata/apis/agridata-ch-api.md) · [All operations](https://skmtc.dev/agridata/apis/agridata-ch-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/agridata/agridata-ch-api/revisions/5760204210ed/schema)
