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

# Programaciones

> Automatiza las ejecuciones de conciliación con programaciones basadas en cron por contexto y gestiónalas con un ciclo de vida completo de creación, listado, recuperación, actualización y eliminación.

Las programaciones permiten ejecutar la conciliación de forma automática con una cadencia recurrente en lugar de disparar ejecuciones de coincidencia a mano. Cada programación pertenece a un contexto de conciliación y se dispara con una expresión cron, con un intervalo mínimo de cinco minutos entre disparos.

## ¿Qué es una programación?

***

Una programación es un disparador basado en cron adjunto a un contexto. Cuando se dispara, Matcher lanza una ejecución de conciliación para ese contexto con sus reglas y fuentes activas.

| Campo                     | Tipo      | Descripción                                                                                                                                        |
| ------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                      | UUID      | Identificador único de la programación                                                                                                             |
| `contextId`               | UUID      | Contexto al que pertenece esta programación                                                                                                        |
| `cronExpression`          | String    | Expresión cron que define la frecuencia (por ejemplo, `0 0 * * *` para todos los días a medianoche)                                                |
| `enabled`                 | Boolean   | Si la programación está activa                                                                                                                     |
| `lastRunAt`               | Timestamp | Momento en que Matcher despachó por última vez el disparador asíncrono de la ejecución de coincidencia; no indica finalización ni éxito (RFC 3339) |
| `nextRunAt`               | Timestamp | Próximo momento de ejecución programado (RFC 3339)                                                                                                 |
| `createdAt` / `updatedAt` | Timestamp | Marcas de tiempo de creación y de última actualización (RFC 3339)                                                                                  |

## Ciclo de vida de la programación

***

Las programaciones admiten un ciclo de vida CRUD completo bajo `/v1/contexts/{contextId}/schedules`.

| Acción                  | Método y ruta                                            |
| ----------------------- | -------------------------------------------------------- |
| Crear programación      | `POST /v1/contexts/{contextId}/schedules`                |
| Listar programaciones   | `GET /v1/contexts/{contextId}/schedules`                 |
| Recuperar programación  | `GET /v1/contexts/{contextId}/schedules/{scheduleId}`    |
| Actualizar programación | `PATCH /v1/contexts/{contextId}/schedules/{scheduleId}`  |
| Eliminar programación   | `DELETE /v1/contexts/{contextId}/schedules/{scheduleId}` |

<Tip>
  Referencia de API:

  * [Crear programación](/es/reference/products/matcher/create-schedule)
  * [Listar programaciones](/es/reference/products/matcher/list-schedules)
  * [Obtener programación](/es/reference/products/matcher/retrieve-schedule)
  * [Actualizar programación](/es/reference/products/matcher/update-schedule)
  * [Eliminar programación](/es/reference/products/matcher/delete-schedule)
</Tip>

## Crear una programación

***

Entrega un `cronExpression`. El campo `enabled` queda activo de forma predeterminada cuando se omite.

```bash cURL theme={null}
curl -X POST "https://api.matcher.example.com/v1/contexts/{contextId}/schedules" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "cronExpression": "0 0 * * *",
   "enabled": true
 }'
```

<ParamField path="cronExpression" type="String" required>
  Expresión cron que define la frecuencia de ejecución (de 1 a 100 caracteres), con al menos cinco minutos entre disparos. Matcher rechaza las programaciones por minuto y de menos de un minuto
</ParamField>

<ParamField path="enabled" type="Boolean">
  Si la programación está activa de inmediato
</ParamField>

La respuesta devuelve la programación creada, incluidos su `id`, su `nextRunAt` y sus marcas de tiempo. Listar las programaciones (`GET`) devuelve todas las programaciones del contexto, habilitadas y deshabilitadas por igual.

## Pausar vs. eliminar una programación

***

Cuando necesitas detener una conciliación recurrente, tienes dos opciones.

**Deshabilita** la programación para pausar las ejecuciones automáticas y conservar su configuración y su historial. Volver a habilitarla después es una sola llamada, sin necesidad de recrearla. Actualiza la expresión cron, cambia `enabled`, o ambos (los campos omitidos quedan sin cambios):

```bash cURL theme={null}
curl -X PATCH "https://api.matcher.example.com/v1/contexts/{contextId}/schedules/{scheduleId}" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "cronExpression": "0 6 * * *",
   "enabled": false
 }'
```

**Elimina** la programación (`DELETE .../schedules/{scheduleId}`) solo cuando la cadencia desaparece para siempre. La eliminación es permanente. Para tomar una pausa, deshabilítala en su lugar.

## Mejores prácticas

***

<AccordionGroup>
  <Accordion title="Alinea la cadencia con la disponibilidad de las fuentes">
    Programa las ejecuciones para que se disparen después de que todas las fuentes del contexto hayan entregado sus datos del período. Ejecutar antes de que termine la ingesta produce excepciones evitables.
  </Accordion>

  <Accordion title="Prefiere deshabilitar antes que eliminar">
    Para pausar una cadencia de conciliación, deshabilita la programación. Conserva el historial y la configuración, y volver a habilitarla es una sola llamada.
  </Accordion>

  <Accordion title="Usa expresiones cron explícitas">
    Mantén las expresiones cron legibles y documentadas (por ejemplo, `0 0 * * *` = todos los días a las 00:00). Verifica los supuestos de zona horaria de tu despliegue antes de depender de una programación para ejecuciones sensibles al SLA.
  </Accordion>
</AccordionGroup>

## Próximos pasos

***

<Card title="Contextos y fuentes" icon="folder-tree" href="/es/products/matcher/configuration/matcher-contexts-and-sources" horizontal>
  Configura los contextos y las fuentes que una programación concilia.
</Card>

<Card title="Generar informes" icon="chart-pie" href="/es/products/matcher/daily-reconciliation/matcher-generating-reports" horizontal>
  Revisa los resultados que producen las ejecuciones programadas.
</Card>
