Revalidate payload

JSON body Enad sends to the revalidate endpoint for each content item.

This guide preserves published revalidation compatibility guidance. A canonical revalidation delivery schema is not attached here. Revalidation payloads are separate from webhook Event catalog schemas. Confirm delivery fields and operational limits against the owning implementation before production; Enad app is authoritative for current setup controls.

Each revalidate request contains a single JSON object. The type field is a discriminator (product, category, or collection); remaining fields depend on the content type.

All UUIDs are serialized as strings. Translation fields are arrays of \{ locale, value \} objects converted from Enad's locale maps.

Common types

Translation

FieldTypeDescription
localestringLocale code (for example en, sv).
valuestringTranslated string for that locale.

Non-string values in the source locale map are serialized as an empty string.

Product

Sent when a product (or its channel content) changes.

{
  "type": "product",
  "id": "0195a1b2-c3d4-7890-abcd-ef1234567890",
  "name": "Base Product",
  "slug": "base-product",
  "sku": "SKU-1",
  "translations_name": [
    { "locale": "en", "value": "Base EN" },
    { "locale": "sv", "value": "Base SV" }
  ],
  "translations_slug": [
    { "locale": "en", "value": "base-en" },
    { "locale": "sv", "value": "base-sv" }
  ]
}
FieldTypeDescription
type"product"Content discriminator.
idstring (UUID)Product ID.
namestringDisplay name (channel override when endpoint has a channel).
slugstringURL slug (channel override when endpoint has a channel).
skustringStock keeping unit (always from base product).
translations_nameTranslation[]Localized names.
translations_slugTranslation[]Localized slugs.

Channel override example

When the endpoint is tied to a channel and channel content exists:

{
  "type": "product",
  "id": "0195a1b2-c3d4-7890-abcd-ef1234567890",
  "name": "Channel Product",
  "slug": "channel-product",
  "sku": "SKU-1",
  "translations_name": [
    { "locale": "en", "value": "Channel Product EN" }
  ],
  "translations_slug": [
    { "locale": "en", "value": "channel-product-en" }
  ]
}

Category

Sent when a category changes.

{
  "type": "category",
  "id": "0195a1b2-c3d4-7890-abcd-ef1234567890",
  "name": "Base Category",
  "slug": "base-category",
  "uri": "/base-category",
  "translations_name": [
    { "locale": "en", "value": "Category EN" }
  ],
  "translations_slug": [
    { "locale": "en", "value": "category-en" }
  ],
  "translations_uri": [
    { "locale": "en", "value": "/category-en" }
  ]
}
FieldTypeDescription
type"category"Content discriminator.
idstring (UUID)Category ID.
namestringDisplay name.
slugstringURL slug.
uristringCanonical path or URI.
translations_nameTranslation[]Localized names.
translations_slugTranslation[]Localized slugs.
translations_uriTranslation[]Localized URIs.

Collection

Sent when a collection changes.

{
  "type": "collection",
  "id": "0195a1b2-c3d4-7890-abcd-ef1234567890",
  "name": "Base Collection",
  "slug": "base-collection",
  "uri": "/base-collection",
  "translations_name": [
    { "locale": "en", "value": "Collection EN" }
  ],
  "translations_slug": [
    { "locale": "en", "value": "collection-en" }
  ],
  "translations_uri": [
    { "locale": "en", "value": "/collection-en" }
  ]
}
FieldTypeDescription
type"collection"Content discriminator.
idstring (UUID)Collection ID.
namestringDisplay name.
slugstringURL slug.
uristringCanonical path or URI.
translations_nameTranslation[]Localized names.
translations_slugTranslation[]Localized slugs.
translations_uriTranslation[]Localized URIs.

Batch delivery

When multiple items are pending for the same endpoint, Enad sends one HTTP request per item, not a batch array. Requests may arrive concurrently. The endpoint should be idempotent per type + id.

Revalidate payload

# Revalidate payload > This guide preserves published revalidation compatibility guidance. A canonical revalidation delivery schema is not attached here. Revalidation payloads are separate from webhook Event catalog schemas. Confirm delivery fields and operational limits against the owning implementation before production; Enad app is authoritative for current setup controls. Each revalidate request contains a single JSON object. The `type` field is a discriminator (`product`, `category`, or `collection`); remaining fields depend on the content type. All UUIDs are serialized as strings. Translation fields are arrays of `{ locale, value }` objects converted from Enad's locale maps. ## Common types ### Translation | Field | Type | Description | |-------|------|-------------| | `locale` | `string` | Locale code (for example `en`, `sv`). | | `value` | `string` | Translated string for that locale. | Non-string values in the source locale map are serialized as an empty string. ## Product Sent when a product (or its channel content) changes. ```json { "type": "product", "id": "0195a1b2-c3d4-7890-abcd-ef1234567890", "name": "Base Product", "slug": "base-product", "sku": "SKU-1", "translations_name": [ { "locale": "en", "value": "Base EN" }, { "locale": "sv", "value": "Base SV" } ], "translations_slug": [ { "locale": "en", "value": "base-en" }, { "locale": "sv", "value": "base-sv" } ] } ``` | Field | Type | Description | |-------|------|-------------| | `type` | `"product"` | Content discriminator. | | `id` | `string` (UUID) | Product ID. | | `name` | `string` | Display name (channel override when endpoint has a channel). | | `slug` | `string` | URL slug (channel override when endpoint has a channel). | | `sku` | `string` | Stock keeping unit (always from base product). | | `translations_name` | `Translation[]` | Localized names. | | `translations_slug` | `Translation[]` | Localized slugs. | ### Channel override example When the endpoint is tied to a channel and channel content exists: ```json { "type": "product", "id": "0195a1b2-c3d4-7890-abcd-ef1234567890", "name": "Channel Product", "slug": "channel-product", "sku": "SKU-1", "translations_name": [ { "locale": "en", "value": "Channel Product EN" } ], "translations_slug": [ { "locale": "en", "value": "channel-product-en" } ] } ``` ## Category Sent when a category changes. ```json { "type": "category", "id": "0195a1b2-c3d4-7890-abcd-ef1234567890", "name": "Base Category", "slug": "base-category", "uri": "/base-category", "translations_name": [ { "locale": "en", "value": "Category EN" } ], "translations_slug": [ { "locale": "en", "value": "category-en" } ], "translations_uri": [ { "locale": "en", "value": "/category-en" } ] } ``` | Field | Type | Description | |-------|------|-------------| | `type` | `"category"` | Content discriminator. | | `id` | `string` (UUID) | Category ID. | | `name` | `string` | Display name. | | `slug` | `string` | URL slug. | | `uri` | `string` | Canonical path or URI. | | `translations_name` | `Translation[]` | Localized names. | | `translations_slug` | `Translation[]` | Localized slugs. | | `translations_uri` | `Translation[]` | Localized URIs. | ## Collection Sent when a collection changes. ```json { "type": "collection", "id": "0195a1b2-c3d4-7890-abcd-ef1234567890", "name": "Base Collection", "slug": "base-collection", "uri": "/base-collection", "translations_name": [ { "locale": "en", "value": "Collection EN" } ], "translations_slug": [ { "locale": "en", "value": "collection-en" } ], "translations_uri": [ { "locale": "en", "value": "/collection-en" } ] } ``` | Field | Type | Description | |-------|------|-------------| | `type` | `"collection"` | Content discriminator. | | `id` | `string` (UUID) | Collection ID. | | `name` | `string` | Display name. | | `slug` | `string` | URL slug. | | `uri` | `string` | Canonical path or URI. | | `translations_name` | `Translation[]` | Localized names. | | `translations_slug` | `Translation[]` | Localized slugs. | | `translations_uri` | `Translation[]` | Localized URIs. | ## Batch delivery When multiple items are pending for the same endpoint, Enad sends one HTTP request per item, not a batch array. Requests may arrive concurrently. The endpoint should be idempotent per `type` + `id`.