> ## Documentation Index
> Fetch the complete documentation index at: https://firespark.cloud/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# CMS

> Bloques de contenido con nombre para textos legales, videos, imágenes y documentos — editables en el dashboard y consultables por nombre desde Storefront.

**CMS** en Fire spark es cómo publicas **bloques de contenido con nombre** que los canales pueden pedir por un nombre reservado. Úsalo para términos de servicio, videos promocionales, PDFs y otro contenido que no vive en la sincronización de menú del POS.

## Plantillas y bloques

| Concepto | Qué es |
| - | - |
| **Plantilla (template)** | Solo estructura — claves y tipos (`TEXT`, `IMAGE`, `VIDEO`, `DOCUMENT`, `LIST`), sin contenido. Se reutiliza al crear bloques. |
| **Bloque (block)** | Contenido consumible con un `name` único por merchant y environment, más de 1 a 25 slots con nombre. |

En el dashboard, CMS está en **Templates** (`/cms/templates`) y **Blocks** (`/cms/blocks`).

## Tipos de ítem y límites

| Tipo | Uso | Límite de peso |
| - | - | - |
| `TEXT` | Copy — textos legales, titulares, avisos | — |
| `IMAGE` | Banners, ilustraciones | 5 MB |
| `VIDEO` | Video promocional o instructivo | 50 MB |
| `DOCUMENT` | PDFs y archivos descargables | 10 MB |
| `LIST` | Repetidor con nombre — entradas homogéneas (`item_type` + `items[]`) | Igual al tipo hijo |

Cada bloque tiene **1–25** slots de primer nivel (`key`). Un slot `LIST` guarda **1–10** entradas de un solo tipo leaf. Las listas no se anidan.

En el storefront, busca el slot por `key` (por ejemplo `banners`) y haz map de `items` cuando el tipo sea `LIST`.

## Cómo consumen los canales los bloques

1. Crea una **plantilla** (opcional) con claves y tipos de ítems.
2. Crea un **bloque**, opcionalmente desde esa plantilla, y reserva un `name` único (por ejemplo `legal-tos`).
3. Completa el contenido en el dashboard.
4. Obtén el bloque desde Storefront con `GET /api/storefront/v1/cms/blocks/{name}`.

Solo se devuelven bloques **ACTIVE** y no eliminados. El nombre es único por merchant y environment.

```bash theme={null}
curl "https://firespark.cloud/api/storefront/v1/cms/blocks/legal-tos" \
  -H "Authorization: Bearer ACCESS_TOKEN"
```

Consulta [Obtener bloque CMS](https://firespark.cloud/docs/es/storefront-api/cms/blocks/\[name]/get).

> [!NOTE]
>
> Las plantillas antiguas de campos en entidades vinculadas a marcas y tiendas
> (`cms_template_id`) siguen en la API por compatibilidad. El contenido nuevo
> de merchandising debe usar bloques CMS.

## Cuándo ayuda el CMS

| Situación | Por qué ayudan los bloques |
| - | - |
| Páginas legales | Publicar TOS o privacidad en PDF sin un deploy |
| Creatividades de temporada | Cambiar un video o imagen hero actualizando el bloque |
| Apps storefront | Reservar nombres estables y renderizar lo que ops publique |

## Conceptos relacionados

> [card] [Canales](https://firespark.cloud/docs/es/concepts/channels.md)
>
> Dónde corren las apps storefront

> [card] [Marcas](https://firespark.cloud/docs/es/concepts/brands.md)
>
> Identidad de marca y CMS legado en entidades

> [card] [Tiendas](https://firespark.cloud/docs/es/concepts/stores.md)
>
> Páginas de ubicación

> [card] [Menús](https://firespark.cloud/docs/es/concepts/menus.md)
>
> Estructura de catálogo desde tu POS


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.