# Update Product

Updates an existing Product resource, applying only the fields supplied in the JSON body (PATCH semantics).
            
## Authentication
            
Requires a valid API key in the X-API-KEY header.
            
## Headers
            
### Accept-Language
            
Culture used to interpret the localized field values supplied in the request body.
- omitted / null: tenant's default culture.
- culture-code (e.g. en-US, es): the specified culture.
            
## Request Body
            
A single JSON object with the subset of writable fields to update (PATCH semantics —
only the supplied fields are modified). Field names must match those published by
/Products/$metadata. Normalization rules:
            
- Must be a non-empty JSON object.
- A JSON array is accepted only if it contains exactly one element.
- Values are coerced to CLR primitives, nested objects and arrays.
- The cat_id field is accepted as either a single integer or an array of integers
  to assign the product to one or several categories.
            
## Response
            
200 OK — Update applied.
            
## Error Responses
            
- 400 Bad Request — Payload normalization or validation failure
  (returns ValidationFailureRepresentation for validation errors).
- 401 Unauthorized — Missing or invalid API key.
- 404 Not Found — Product with the given identifier does not exist.
- 500 Internal Server Error — Unexpected technical error.
            
## Example
            
Request:
http
PATCH /Products(456) HTTP/1.1
X-API-KEY: your-api-key-here
Accept-Language: en-US
Content-Type: application/json
            
{
  "prod_description": "Updated description",
  "cat_id": [123, 124]
}

            
Response:
http
HTTP/1.1 200 OK

Endpoint: PATCH /Products({productId})
Version: 2.0.0

## Header parameters:

  - `X-API-KEY` (string)
    Tenant's API key (required)

  - `Accept-Language` (string)
    Culture for localized field values in the request body (Accept-Language header)

## Path parameters:

  - `productId` (integer, required)
    Product resource identifier

## Response 200 fields (application/json):

  - `readLink` (object)

  - `readLink.uri` (string,null)

  - `value` (any,null)

## Response 400 fields (application/json):

  - `validationFailures` (object,null)
    Example: {"Layout":[{"PropertyName":"Layout","ErrorMessage":"The layout must contain exactly the attributes of the stored layout. Missing: tags. Unknown: extra_field.","AttemptedValue":null}]}

## Response 401 fields (application/json):

  - `type` (string,null)

  - `title` (string,null)

  - `status` (integer,null)

  - `detail` (string,null)

  - `instance` (string,null)

## Response 500 fields (application/json):

  - `error` (string,null)

  - `details` (any,null)


