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
| 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.
{
"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:
{
"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" }
]
}| 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.
{
"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.