---
title: "Changes to Update a product"
method: PATCH
path: "/products/{product_id}"
---

# Changes to Update a product

`PATCH /products/{product_id}`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 4 of 19 revisions.

- **2026-02-02** (v1) `9ba8be0f2006`: 21 breaking, 1 warning, 34 info
- **2025-03-07** (v1) `a3359d7731fd`: 5 breaking, 1 info
- **2024-05-14** (v1) `61fe84bfd516`: 1 info
- **2024-02-19** (v1) `a4a4068ff792`: 7 breaking, 1 warning, 5 info

## Changes

- **2026-02-02** (v1) `9ba8be0f2006`: 21 breaking, 1 warning, 34 info
  - added the new path request parameter `product_id`
  - request body became required
  - added `#/components/schemas/CatalogType` to the `type` request property `allOf` list
  - the request property `description` became not nullable
  - removed the enum value `custom` of the request property `type`
  - removed the enum value `standard` of the request property `type`
  - removed `#/components/schemas/custom_data, subschema #2` from the `custom_data` request property `oneOf` list
  - removed `subschema #1, subschema #2, subschema #3` from the `image_url` request property `oneOf` list
  - added the pattern `.*\S.*` to the request property `name`
  - the `type` request property type changed from `string` to no type
  - response property `data/description` list-of-types was widened by adding types `null` to media type `application/json` of response `200`
  - the `data/created_at` response's property type changed from `string` to no type, and format from `date-time` to no format for status `200`
  - the `data/id` response's property type changed from `string` to no type for status `200`
  - the `data/status` response's property type changed from `string` to no type for status `200`
  - the `data/type` response's property type changed from `string` to no type for status `200`
  - the `data/updated_at` response's property type changed from `string` to no type, and format from `date-time` to no format for status `200`
  - the `error` response's property type changed from `object` to no type for status `default`
  - removed the required property `error/code` from the response with the `default` status
  - removed the required property `error/detail` from the response with the `default` status
  - removed the required property `error/documentation_url` from the response with the `default` status
  - removed the required property `error/type` from the response with the `default` status
  - removed the optional property `error/errors` from the response with the `default` status
  - added `#/components/schemas/CustomData, subschema #2` to the `custom_data` request property `anyOf` list
  - added `#/components/schemas/ImageUrl, #/components/schemas/EmptyString, subschema #2` to the `image_url` request property `anyOf` list
  - request property `description` list-of-types was widened by adding types `null` to media type `application/json`
  - the response optional property `data/import_meta` became not read-only for the status `200`
  - added `#/components/schemas/ApiError` to the `error` response property `allOf` list for the response status `default`
  - added `#/components/schemas/CatalogType` to the `data/type` response property `allOf` list for the response status `200`
  - added `#/components/schemas/CreatedAt` to the `data/created_at` response property `allOf` list for the response status `200`
  - added `#/components/schemas/ProductId` to the `data/id` response property `allOf` list for the response status `200`
  - added `#/components/schemas/Status` to the `data/status` response property `allOf` list for the response status `200`
  - added `#/components/schemas/UpdatedAt` to the `data/updated_at` response property `allOf` list for the response status `200`
  - added `#/components/schemas/CustomData, subschema #2` to the `data/custom_data` response property `anyOf` list for the response status `200`
  - added `#/components/schemas/ImageUrl, #/components/schemas/EmptyString, subschema #2` to the `data/image_url` response property `anyOf` list for the response status `200`
  - added `#/components/schemas/ImportMeta, subschema #2` to the `data/import_meta` response property `anyOf` list for the response status `200`
  - the response property `data/created_at` became required for the status `200`
  - the response property `data/custom_data` became required for the status `200`
  - the response property `data/description` became required for the status `200`
  - the response property `data/id` became required for the status `200`
  - the response property `data/image_url` became required for the status `200`
  - …16 more
- **2025-03-07** (v1) `a3359d7731fd`: 5 breaking, 1 info
  - the `data/import_meta/oneOf[subschema #1: ImportMeta]/external_id` response property's maxLength was unset from `200` for the response status `200`
  - the `data/import_meta/oneOf[subschema #1: ImportMeta]/external_id` response property's minLength was decreased from `1` to `0` for the response status `200`
  - added `#/components/schemas/external_id, subschema #2` to the `data/import_meta/oneOf[subschema #1: ImportMeta]/external_id` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/migration_provider_public` to the `data/import_meta/oneOf[subschema #1: ImportMeta]/imported_from` response property `oneOf` list for the response status `200`
  - the `data/import_meta/oneOf[subschema #1: ImportMeta]/external_id` response's property type changed from `string, null` to no type for status `200`
  - the response required property `data/import_meta/oneOf[subschema #1: ImportMeta]/imported_from` became read-only for the status `200`
- **2024-05-14** (v1) `61fe84bfd516`: 1 info
  - added the optional property `data/updated_at` to the response with the `200` status
- **2024-02-19** (v1) `a4a4068ff792`: 7 breaking, 1 warning, 5 info
  - the request property `custom_data` became not nullable
  - the `custom_data` request property type changed from `object, null` to no type
  - added `#/components/schemas/custom_data, subschema #2` to the `data/custom_data` response property `oneOf` list for the response status `200`
  - added `#/components/schemas/import_meta, subschema #2` to the `data/import_meta` response property `oneOf` list for the response status `200`
  - the `data/custom_data` response's property type changed from `object, null` to no type for status `200`
  - the `data/import_meta` response's property type changed from `object, null` to no type for status `200`
  - removed the required property `data/import_meta/imported_from` from the response with the `200` status
  - removed the optional property `data/import_meta/external_id` from the response with the `200` status
  - added `#/components/schemas/custom_data, subschema #2` to the `custom_data` request property `oneOf` list
  - removed the non-success response with the status `400`
  - removed the non-success response with the status `401`
  - removed the non-success response with the status `404`
  - removed the non-success response with the status `500`

---

[Operation](https://skmtc.dev/paddlehq/apis/paddle-api/docs/products/:product_id/patch.md) - [API](https://skmtc.dev/paddlehq/apis/paddle-api.md) - [Page](https://skmtc.dev/paddlehq/apis/paddle-api/changes/products/:product_id/patch)
