# Update a metaobject definition

> Partially update a metaobject definition using JSON Merge Patch.

`PATCH /rest/api/metaobject_definitions/{id}`

Updates the MetaobjectDefinition resource.

Partially updates a metaobject definition. The body is a [JSON Merge Patch](https://datatracker.ietf.org/doc/html/rfc7396) document: change the `name`, `displayNameField`, or the `fieldDefinitions`.

> **Changing fields affects records**
>
> Editing `fieldDefinitions` changes the shape every [Metaobject](/api/product-management/metaobjects/) of this type is validated against. Removing or retyping a field can invalidate existing records' values.

## Headers

| Name                         | Type     | Required | Description                                                                                                                                      |
| ---------------------------- | -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `X-Flowkiwi-Organization-Id` | `string` | Yes      | The organization the request acts as. Determines the identity, permissions and ownership applied when reading or modifying data on the instance. |

## Path parameters

| Name | Type     | Required | Description                     |
| ---- | -------- | -------- | ------------------------------- |
| `id` | `string` | Yes      | MetaobjectDefinition identifier |

## Request body

| Property           | Type                                          | Required | Description                                                                                                                                                                                                                                                                               |
| ------------------ | --------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`             | `string \| null`                              | -        |                                                                                                                                                                                                                                                                                           |
| `description`      | `string \| null`                              | -        |                                                                                                                                                                                                                                                                                           |
| `displayNameField` | `string \| null`                              | -        | The key of the field definition used as the display name for records of this type. Optional - when omitted it is null and records have no derived display name. When set, it must match the key of one of this definition's fieldDefinitions, otherwise the request is rejected with 422. |
| `fieldDefinitions` | `EmbeddedMetaobjectFieldDefinitionResource[]` | -        | The field definitions that make up this metaobject definition.                                                                                                                                                                                                                            |

## Response

**200** - MetaobjectDefinition resource updated

| Property           | Type                                          | Required | Description                                                                                                                                                                                                                                                                               |
| ------------------ | --------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `@context`         | `object`                                      | -        |                                                                                                                                                                                                                                                                                           |
| `@id`              | `string`                                      | Yes      |                                                                                                                                                                                                                                                                                           |
| `@type`            | `string`                                      | Yes      |                                                                                                                                                                                                                                                                                           |
| `id`               | `string`                                      | -        | The resource's unique identifier (UUID).                                                                                                                                                                                                                                                  |
| `type`             | `string`                                      | Yes      | The unique slug identifier for this metaobject definition.                                                                                                                                                                                                                                |
| `name`             | `string`                                      | Yes      | The human-readable name of the metaobject definition.                                                                                                                                                                                                                                     |
| `description`      | `string \| null`                              | -        | The description of the metaobject definition.                                                                                                                                                                                                                                             |
| `displayNameField` | `string \| null`                              | -        | The key of the field definition used as the display name for records of this type. Optional - when omitted it is null and records have no derived display name. When set, it must match the key of one of this definition's fieldDefinitions, otherwise the request is rejected with 422. |
| `fieldDefinitions` | `EmbeddedMetaobjectFieldDefinitionResource[]` | -        | The field definitions that make up this metaobject definition.                                                                                                                                                                                                                            |
| `createdAt`        | `string`                                      | -        | The date and time when the resource was created (ISO 8601 format).                                                                                                                                                                                                                        |
| `updatedAt`        | `string`                                      | -        | The date and time when the resource was last modified (ISO 8601 format).                                                                                                                                                                                                                  |

## Errors

**400** - Invalid input

| Property   | Type             | Required | Description                                                                                                                          |
| ---------- | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `@context` | `object`         | -        |                                                                                                                                      |
| `@id`      | `string`         | Yes      |                                                                                                                                      |
| `@type`    | `string`         | Yes      |                                                                                                                                      |
| `title`    | `string \| null` | -        | A short, human-readable summary of the problem.                                                                                      |
| `detail`   | `string \| null` | -        | A human-readable explanation specific to this occurrence of the problem.                                                             |
| `status`   | `number \| null` | -        |                                                                                                                                      |
| `instance` | `string \| null` | -        | A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. |
| `type`     | `string`         | -        | A URI reference that identifies the problem type                                                                                     |

**403** - Access denied. The caller is missing one or more identity permissions required for this operation.

| Property             | Type       | Required | Description                                                                                                                                |
| -------------------- | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `@context`           | `object`   | -        |                                                                                                                                            |
| `@id`                | `string`   | Yes      |                                                                                                                                            |
| `@type`              | `string`   | Yes      |                                                                                                                                            |
| `type`               | `string`   | -        |                                                                                                                                            |
| `title`              | `string`   | -        |                                                                                                                                            |
| `status`             | `integer`  | -        |                                                                                                                                            |
| `detail`             | `string`   | -        |                                                                                                                                            |
| `missingPermissions` | `string[]` | -        | Identity permissions that the caller is missing for this operation. Present only when the 403 is caused by a denied identity:* permission. |

**404** - Not found

| Property   | Type             | Required | Description                                                                                                                          |
| ---------- | ---------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `@context` | `object`         | -        |                                                                                                                                      |
| `@id`      | `string`         | Yes      |                                                                                                                                      |
| `@type`    | `string`         | Yes      |                                                                                                                                      |
| `title`    | `string \| null` | -        | A short, human-readable summary of the problem.                                                                                      |
| `detail`   | `string \| null` | -        | A human-readable explanation specific to this occurrence of the problem.                                                             |
| `status`   | `number \| null` | -        |                                                                                                                                      |
| `instance` | `string \| null` | -        | A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. |
| `type`     | `string`         | -        | A URI reference that identifies the problem type                                                                                     |

**422** - An error occurred

| Property     | Type             | Required | Description |
| ------------ | ---------------- | -------- | ----------- |
| `@context`   | `object`         | -        |             |
| `@id`        | `string`         | Yes      |             |
| `@type`      | `string`         | Yes      |             |
| `status`     | `integer`        | -        |             |
| `violations` | `object[]`       | -        |             |
| `detail`     | `string`         | -        |             |
| `type`       | `string`         | -        |             |
| `title`      | `string \| null` | -        |             |
| `instance`   | `string \| null` | -        |             |

## Examples

### Example request

```bash
curl -X PATCH 'https://<tenant>.product-management.flowkiwi.net/rest/api/metaobject_definitions/<product_id>' \
  -H 'Authorization: Bearer {token}' \
  -H 'X-Flowkiwi-Organization-Id: <org_id>' \
  -H 'Accept: application/ld+json' \
  -H 'Content-Type: application/merge-patch+json' \
  -d '{
  "name": "Size chart"
}'
```

### Example response

```json
{
  "@context": "/contexts/MetaobjectDefinition",
  "@id": "/rest/api/metaobject_definitions/019afc01-1a2b-7c3d-8e4f-0a1b2c3d4e5f",
  "@type": "MetaobjectDefinition",
  "id": "019afc01-1a2b-7c3d-8e4f-0a1b2c3d4e5f",
  "type": "size_guide",
  "name": "Size guide",
  "description": "Size charts shown on product pages.",
  "displayNameField": "title",
  "fieldDefinitions": [
    {
      "id": "019afc02-2b3c-7d4e-9f50-1a2b3c4d5e6f",
      "key": "title",
      "name": "Title",
      "description": "The size guide title.",
      "type": "/rest/api/metafield_definition_types/single_line_text_field",
      "required": true,
      "validations": []
    },
    {
      "id": "019afc03-3c4d-7e5f-8a60-2b3c4d5e6f70",
      "key": "body",
      "name": "Body",
      "description": "The size chart body.",
      "type": "/rest/api/metafield_definition_types/multi_line_text_field",
      "required": false,
      "validations": []
    }
  ],
  "createdAt": "2026-01-15T09:30:00+00:00",
  "updatedAt": "2026-02-03T14:45:12+00:00"
}
```
