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

# Changes to Update a product

`PATCH /v3/products/{id}`

> Every recorded change to this operation, newest first.
> 12 revisions in range; 1 not diffed.

## Timeline

Changed in 6 of 12 revisions.

- **2026-11-02** `0088bcd57a3c`: 1 breaking, 1 warning
- **2026-09-25** `a25b6aaa706c`: 1 info
- **2026-08-18** `66dcb6293180`: 3 breaking, 2 info
- **2026-08-06** `ec1259c12475`: 7 breaking, 3 warning, 28 info
- **2024-09-18** `0560e1411bee`: 7 info
- **2024-07-29** `68856b660d76`: 4 breaking, 5 warning, 10 info

## Changes

- **2026-11-02** `0088bcd57a3c`: 1 breaking, 1 warning
  - removed the required property `metadata` from the response with the `200` status
  - removed the request property `metadata`
- **2026-09-25** `a25b6aaa706c`: 1 info
  - the `metadata/items/value` request property's maxLength was increased from `4096` to `8192`
- **2026-08-18** `66dcb6293180`: 3 breaking, 2 info
  - added the pattern `^(?!\s)(?!.*\s$)[^\p{Cc}\p{Cf}\p{Zl}\p{Zp}]+$` to the request property `displayName`
  - added the pattern `^(?!\s)(?![\s\S]*\s$)(?:[^\p{Cc}\p{Cf}\p{Zl}\p{Zp}]|[\t\n\r])+$` to the request property `description`
  - added the pattern `^[a-zA-Z0-9_.-]+( +[a-zA-Z0-9_.-]+)*$` to the request property `name`
  - added the new optional request property `customAttributes`
  - added the required property `customAttributes` to the response with the `200` status
- **2026-08-06** `ec1259c12475`: 7 breaking, 3 warning, 28 info
  - the `metadata/items/key` request property's minLength was increased from `0` to `1`
  - the `message` response property's minLength was decreased from `1` to `0` for the response status `400`
  - the `message` response property's minLength was decreased from `1` to `0` for the response status `401`
  - the `message` response property's minLength was decreased from `1` to `0` for the response status `403`
  - the `message` response property's minLength was decreased from `1` to `0` for the response status `404`
  - the `message` response property's minLength was decreased from `1` to `0` for the response status `429`
  - the `message` response property's minLength was decreased from `1` to `0` for the response status `500`
  - the `licenseTemplateId` request property's maxLength was set to `256`
  - the `trialPolicyId` request property's maxLength was set to `256`
  - removed the request property `automatedEmails`
  - added the new optional request property `iconUrl`
  - the request property `description` became nullable
  - the request property `displayName` became nullable
  - the request property `licenseTemplateId` became nullable
  - the request property `name` became nullable
  - added the optional property `iconUrl` to the response with the `200` status
  - the response property `automatedEmails` became required for the status `200`
  - the response property `createdAt` became required for the status `200`
  - the response property `description` became required for the status `200`
  - the response property `displayName` became required for the status `200`
  - the response property `id` became required for the status `200`
  - the response property `licenseTemplateId` became required for the status `200`
  - the response property `metadata` became required for the status `200`
  - the response property `metadata/items/createdAt` became required for the status `200`
  - the response property `metadata/items/id` became required for the status `200`
  - the response property `metadata/items/key` became required for the status `200`
  - the response property `metadata/items/updatedAt` became required for the status `200`
  - the response property `metadata/items/viewPermissions` became required for the status `200`
  - the response property `metadata/items/visible` became required for the status `200`
  - the response property `name` became required for the status `200`
  - the response property `publicKey` became required for the status `200`
  - the response property `totalFeatureFlags` became required for the status `200`
  - the response property `totalLicenses` became required for the status `200`
  - the response property `totalProductVersions` became required for the status `200`
  - the response property `totalReleases` became required for the status `200`
  - the response property `totalTrialActivations` became required for the status `200`
  - the response property `trialPolicyId` became required for the status `200`
  - the response property `updatedAt` became required for the status `200`
- **2024-09-18** `0560e1411bee`: 7 info
  - added the new optional request property `metadata/items/viewPermissions`
  - the request property `metadata/items/visible` became nullable
  - the request property `metadata/items/visible` became optional
  - request property `metadata/items/visible` deprecated
  - the request required property `metadata/items/visible` became write-only
  - added the optional property `metadata/items/viewPermissions` to the response with the `200` status
  - the response optional property `metadata/items/visible` became read-only for the status `200`
- **2024-07-29** `68856b660d76`: 4 breaking, 5 warning, 10 info
  - request body became required
  - removed the media type `application/*+json` from the request body
  - removed the media type `text/json` from the request body
  - removed the media type `text/json` for the response with the status `200`
  - deleted the `header` request parameter `Authorization`
  - removed the request property `emailTemplates`
  - removed the optional property `emailTemplates` from the response with the `200` status
  - removed the optional property `licensePolicy` from the response with the `200` status
  - removed the optional property `trialPolicy` from the response with the `200` status
  - api operation id `patch/v3/products/{id}` removed and replaced with `UpdateProduct`
  - the endpoint scheme security `JWT` was added to the API
  - added the new optional request property `automatedEmails`
  - added the new optional request property `licenseTemplateId`
  - the request property `licensePolicyId` became nullable
  - request property `licensePolicyId` deprecated
  - the `licensePolicyId` request property's minLength was decreased from `1` to `0`
  - added the optional property `automatedEmails` to the response with the `200` status
  - added the optional property `licenseTemplateId` to the response with the `200` status
  - added the optional property `trialPolicyId` to the response with the `200` status

---

[Operation](https://skmtc.dev/cryptlex/apis/cryptlex-web-api/docs/v3/products/:id/patch.md) - [API](https://skmtc.dev/cryptlex/apis/cryptlex-web-api.md) - [Page](https://skmtc.dev/cryptlex/apis/cryptlex-web-api/changes/v3/products/:id/patch)
