> For the complete documentation index, see [llms.txt](https://docs.airops.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.airops.com/docs/es/integraciones/overview/integrations/craft-cms.md).

# Craft CMS

Integra tu flujo de trabajo con Craft CMS

El paso de integración de Craft CMS te permite conectar tus flujos de trabajo de AirOps con tu instancia de Craft CMS. Esta integración nativa ofrece capacidades integrales de gestión de entradas y activos directamente desde tus flujos de trabajo.

## Descripción general

Craft CMS es un sistema de gestión de contenidos flexible y fácil de usar, creado para generar experiencias digitales personalizadas. Al conectar Craft CMS con AirOps, puedes automatizar la creación de contenido, la publicación y la gestión de activos en todos tus proyectos de Craft.

## Autenticación

Antes de usar la integración de Craft CMS en tus flujos de trabajo, primero debes conectar tu cuenta de Craft CMS en la configuración de AirOps:

1. Navega a **Ajustes > Integraciones**
2. Busca la sección de Craft CMS y haz clic en "Configurar"
3. Introduce tu **Token de GraphQL** — un token con permisos de escritura generado en el panel de control de tu Craft CMS en **GraphQL > Tokens**
4. Introduce tu **URL del sitio** — la URL base de tu instancia de Craft CMS (p. ej. `https://example.com`)
5. Opcionalmente, introduce un **ID predeterminado del autor** — el ID numérico del usuario de Craft CMS que se asignará como autor de las entradas de forma predeterminada. Las acciones individuales pueden anular este valor

{% hint style="info" %}
Tu token de GraphQL debe tener permisos para leer y escribir entradas y activos en las secciones que pretendes usar.
{% endhint %}

## Acciones disponibles

### Gestión de entradas

* **Crear entrada** -- agregar una nueva entrada a una sección de Craft CMS
* **Actualizar entrada** -- modificar los campos, el estado o los metadatos de una entrada existente
* **Obtener entrada** -- recuperar una sola entrada por ID o slug
* **Listar entradas** -- obtener varias entradas de una sección con filtros opcionales
* **Eliminar entrada** -- eliminar permanentemente una entrada

### Gestión de activos

* **Obtener activo** -- recuperar un solo activo por ID
* **Listar activos** -- obtener activos de un volumen con filtros opcionales
* **Adjuntar activo a la entrada** -- asociar activos existentes con el campo de activos de una entrada
* **Eliminar activo** -- eliminar permanentemente un activo de un volumen

## Parámetros de acción

### Crear entrada

1. **Sección** (obligatorio) -- el identificador de la sección a la que pertenece la entrada (p. ej. `blog`, `noticias`)
2. **Tipo de entrada** -- el identificador del tipo de entrada (p. ej. `default`, `artículo`). El valor predeterminado es `default`
3. **Título** -- el título de la entrada
4. **Slug** -- el slug de URL de la entrada
5. **Estado** -- estado de la entrada: `publicada` o `desactivada`
6. **Fecha de publicación** -- la fecha en que la entrada debe publicarse (formato ISO 8601)
7. **Fecha de expiración** -- la fecha en que la entrada debe expirar (formato ISO 8601)
8. **Campos personalizados** -- un objeto JSON de valores de campos personalizados, con claves del identificador del campo
9. **ID del autor** -- el ID numérico del autor de la entrada. Anula el ID predeterminado del autor configurado en las credenciales

### Actualizar entrada

1. **ID de la entrada** (obligatorio) -- el ID numérico de la entrada que se va a actualizar
2. **Sección** -- el identificador de la sección a la que pertenece la entrada
3. **Tipo de entrada** -- el identificador del tipo de entrada
4. **Título** -- el título de la entrada
5. **Slug** -- el slug de URL de la entrada
6. **Estado** -- estado de la entrada: `publicada` o `desactivada`
7. **Fecha de publicación** -- la fecha en que la entrada debe publicarse
8. **Fecha de expiración** -- la fecha en que la entrada debe expirar
9. **Campos personalizados** -- un objeto JSON de valores de campos personalizados, con claves del identificador del campo
10. **ID del autor** -- el ID numérico del autor de la entrada. Anula el ID predeterminado del autor configurado en las credenciales

### Obtener entrada

1. **Buscar por** (obligatorio) -- cómo identificar la entrada: `id` o `slug`
2. **Valor de búsqueda** (obligatorio) -- el valor de ID o slug que se va a buscar
3. **Tipo de entrada** -- el identificador del tipo de entrada, usado para construir fragmentos de campos personalizados
4. **Campos** -- lista separada por comas de identificadores de campos personalizados para incluir en la respuesta (p. ej. `heroImage,body`)

### Listar entradas

1. **Sección** -- el identificador de la sección por la que filtrar
2. **Tipo de entrada** -- el identificador del tipo de entrada, usado para construir fragmentos de campos personalizados
3. **Campos** -- lista separada por comas de identificadores de campos personalizados para incluir en la respuesta
4. **Buscar** -- una cadena de consulta de búsqueda para filtrar entradas
5. **Límite** -- el número máximo de entradas a devolver
6. **Desplazamiento** -- el número de entradas que se omitirán (para la paginación)

### Eliminar entrada

1. **ID de la entrada** (obligatorio) -- el ID numérico de la entrada que se va a eliminar

### Obtener activo

1. **ID del activo** (obligatorio) -- el ID numérico del activo que se va a recuperar

### Listar activos

1. **Volumen** -- el identificador del volumen por el que filtrar los activos (p. ej. `imágenes`, `documentos`)
2. **Buscar** -- una cadena de consulta de búsqueda para filtrar activos
3. **Límite** -- el número máximo de activos a devolver

### Adjuntar activo a la entrada

1. **ID de la entrada** (obligatorio) -- el ID numérico de la entrada a la que se van a adjuntar los activos
2. **Sección** (obligatorio) -- el identificador de la sección a la que pertenece la entrada
3. **Tipo de entrada** -- el identificador del tipo de entrada
4. **Identificador del campo** (obligatorio) -- el identificador del campo de activos en la entrada (p. ej. `heroImage`, `imágenes`)
5. **IDs de activos** (obligatorio) -- lista separada por comas de IDs de activos para adjuntar (p. ej. `123,456`). Reemplaza cualquier activo existente en el campo
6. **ID del autor** -- el ID numérico del autor de la entrada. Anula el ID predeterminado del autor configurado en las credenciales

### Eliminar activo

1. **ID del activo** (obligatorio) -- el ID numérico del activo que se va a eliminar

## Casos de uso comunes

* Crear y publicar automáticamente entradas de blog a partir de contenido generado por IA
* Actualizar en masa el estado de las entradas según las condiciones del flujo de trabajo
* Adjuntar imágenes generadas o cargadas a las entradas como activos principales
* Obtener entradas por slug para enriquecer o reescribir contenido existente
* Crear canalizaciones de contenido que generen entradas en borrador y las publiquen después de la revisión
* Limpiar programáticamente entradas y activos caducados u obsoletos

{% hint style="info" %}
Nota: La integración de Craft CMS requiere un token de GraphQL con los permisos adecuados. Asegúrate de que tu token conceda acceso a las secciones y volúmenes que pretendes usar.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.airops.com/docs/es/integraciones/overview/integrations/craft-cms.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
