*MCP › Referencia › Catálogo e inventario › Disponibilidad*

# Declarar una indisponibilidad

> Declara que un recurso no está disponible en una ventana: vacaciones, un mantenimiento, un cierre.

`reason` se ACEPTA y no se devuelve: se queda en Filmo para quien tenga acceso. Para una persona o un vehículo, los compromisos que se solapan no bloquean: la indisponibilidad se registra y `warningCount` indica cuántos compromisos ya reservados se solapan con ella. Un espacio es distinto: declararlo `unavailable` en una ventana en la que está reservado responde 409 `conflict` y no se escribe nada, así que en un espacio `warningCount` es siempre 0. También responde 409 si ya existe una indisponibilidad idéntica (mismo recurso, ventana, estado, tipo y motivo). Responde 400 `validation_error`, con `errors[0].path` en el campo, cuando `endDate` no es posterior a `startDate`, cuando `resourceId` no existe o pertenece a otra cuenta, y cuando `absenceType` no es uno de los de su tipo de recurso: `vacation`, `sick`, `personal`, `training` u `other` para el personal; `maintenance`, `inspection`, `repair`, `reserved` u `other` para los vehículos; `academic`, `maintenance`, `event`, `closure` u `other` para los espacios. En un espacio responde 503 `service_unavailable` mientras las indisponibilidades de espacios estén desactivadas para la cuenta.

HERRAMIENTA `filmo_unavailabilities_create` · `availability:write` · 120/min

## Argumentos

| Nombre | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `resourceType` | string | Sí | Qué recurso se declara no disponible. `staff`, `vehicle`, `space` |
| `resourceId` | string | Sí | Identificador de ese recurso. |
| `startDate` | string<date-time> | Sí | Inicio, en ISO 8601 con desplazamiento. |
| `endDate` | string<date-time> | Sí | Fin, en ISO 8601 con desplazamiento. |
| `state` | string | Sí | Lo que se declara para esa ventana. `available`, `unavailable`, `unknown` |
| `absenceType` | string | No | Tipo de ausencia. `vacation`, `sick`, `personal`, `training`, `maintenance`, `inspection`, `repair`, `reserved`, `academic`, `event`, `closure`, `other` |
| `reason` | string | No | Motivo. Se guarda en Filmo y la API NO lo devuelve. |
| `idempotencyKey` | string | No | Clave de idempotencia elegida por el cliente (se recomienda un UUID). Repetir la misma clave con los mismos argumentos en 24 h devuelve la respuesta almacenada sin volver a ejecutar; con argumentos distintos responde 422. Es la forma segura de reintentar tras un fallo de red. |

## Resultado

En un éxito el resultado lleva `structuredContent` con `data` y `meta`. Estos son los atributos de `data`.

| Nombre | Tipo | Descripción |
| --- | --- | --- |
| `availability` | object | La indisponibilidad tal como queda ahora. |
| `availability.id` | string | Identificador único de la indisponibilidad. |
| `availability.resourceType` | string | Qué recurso: staff, vehicle o space. |
| `availability.resourceId` | string | Identificador de ese recurso. |
| `availability.resourceName` | string | Nombre del recurso; null si no consta. |
| `availability.startDate` | string<date-time> | Inicio de la indisponibilidad en ISO 8601 UTC. |
| `availability.endDate` | string<date-time> | Fin de la indisponibilidad en ISO 8601 UTC. |
| `availability.state` | string | Estado declarado. Este listado solo devuelve ventanas `unavailable` que aún no han terminado, así que aquí siempre es `unavailable`; `available` y `unknown` existen como declaraciones pero no se listan. |
| `availability.absenceType` | string | Tipo de ausencia. Solo se emite para vehículos y espacios, donde es operativo; para el personal es un dato de salud y se devuelve como null. |
| `availability.updatedAt` | string<date-time> | Última modificación en ISO 8601 UTC; null si no está registrada. |
| `warningCount` | integer | Compromisos del recurso que se solapan con esta indisponibilidad. |

*Llamada · filmo_unavailabilities_create*

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "filmo_unavailabilities_create",
    "arguments": {
      "resourceType": "staff",
      "resourceId": "reso_8f2a1c",
      "startDate": "2026-09-01T08:00:00Z",
      "endDate": "2026-09-01T08:00:00Z",
      "state": "available"
    }
  }
}
```

*Resultado (generado desde el esquema)*

```json
{
  "structuredContent": {
    "data": {
      "availability": {
        "id": "id_8f2a1c",
        "resourceType": "<resourceType>",
        "resourceId": "reso_8f2a1c",
        "resourceName": "Example",
        "startDate": "2026-09-01T08:00:00Z",
        "endDate": "2026-09-01T08:00:00Z",
        "state": "<state>",
        "absenceType": "<absenceType>",
        "updatedAt": "2026-09-01T08:00:00Z"
      },
      "warningCount": 1
    },
    "meta": {
      "idempotencyKey": "<the key you sent, or the one the server generated>",
      "rateLimit": {
        "limit": 120,
        "remaining": 119,
        "reset": 42
      }
    }
  }
}
```

## La misma operación por REST

Esta herramienta ejecuta [`POST /api/v1/availability/unavailabilities`](https://docs.filmo.io/es/rest-api/endpoint-reference/availability/declare-an-unavailability).

---

URL canónica: https://docs.filmo.io/es/mcp/tools/availability/filmo-unavailabilities-create  
Última actualización: 2026-10-25