Reschedule Appointment

View as Markdown
# Reschedule Appointment (`rescheduleAppointment`) Esta mutación permite cambiar la fecha y hora de una cita existente en el sistema. El método incluye opciones integradas para validar la disponibilidad del nuevo hueco en tiempo real, inyectar un mensaje personalizado de notificación para el ciudadano y gestionar de forma dinámica la asignación o reasignación del agente encargado de la atención. ### Autenticación > **Tipo:** API Key** Header:** `x-jwt-token` **Ubicación:** Header HTTP_ Ejemplo:_ `x-jwt-token: eyJhbGciOiJIUzI1NiIsInR5cCI6...` ## Referencia de la API ### Parámetros de Entrada (Variables) | Parámetro | Descripción | Requerido | Tipo | | --- | --- | --- | --- | | councilId | Identificador único de la cita que se va a modificar. | SI | Integer | | newDate | Nueva fecha y hora programada para la cita, expresada en formato UTC (ISO 8601). | SI | String | | message | Mensaje de texto opcional que se enviará al ciudadano notificando el cambio. | NO | String | | checkagenda | `true` -> El sistema valida que el nuevo slot esté libre. <br>`false` -> Fuerza el cambio y permite reagendar saltándose la validación de la agenda. | NO | Boolean | | assignedUser | Control de asignación del agente profesional: <br>`-1` -> Delega la gestión en el sistema para una asignación automática. <br>`ID numérico` -> Fuerza la asignación al ID interno del usuario en OVAC. <br>`Omitido / null` -> La cita quedará desasignada. | NO | Integer | > ⚠️ **Regla de Negocio Crítica (Asignación):** Si el parámetro `assignedUser` se omite de las variables o se envía como `null`, la cita pasará automáticamente al estado de **"Sin asignar"**, perdiendo el operador original. Se recomienda verificar las reglas del flujo de tu organización antes de dejar este campo vacío. #### Campos de respuesta (Payload) La operación devuelve un objeto funcional con el estado resultante del cambio temporal: | **Parámetro** | Descripción | **Tipo** | | --- | --- | --- | | success | Valor booleano que indica si la cita se pudo reagendar correctamente (`true`) o si fue denegada (`false`). | Boolean | | message | Cadena de texto explicativa en caso de fallo (ej. "Slot no disponible"). Si la operación es exitosa, se devuelve como `null`. | String | ## Ejemplos de Código y Peticiones ### 1\. Mutación GraphQL ``` graphql mutation RescheduleAppointment( $councilId: ID!, $newDate: String!, $message: String, $checkAgenda: Boolean, $assignedUser: Int ) { rescheduleAppointment( councilId: $councilId, newDate: $newDate, message: $message, checkAgenda: $checkAgenda, assignedUser: $assignedUser ) { success message } } ``` ### 2\. Variables de la Petición (JSON Payload) ``` json { "councilId": 64876, "newDate": "2026-05-20T12:00Z", "message": "Su cita ha sido reprogramada por motivos de agenda institucional.", "checkAgenda": true, "assignedUser": -1 } ``` ### 3\. Ejemplo de comando cURL ``` bash curl --location "https://api.ovac.pre.councilbox.com/graphql" \ --header "Content-Type: application/json" \ --header "x-jwt-token: {{token}}" \ --data '{"query":"mutation RescheduleAppointment($councilId: ID!, $newDate: String!, $message: String, $checkAgenda: Boolean, $assignedUser: Int){ rescheduleAppointment(councilId: $councilId, newDate: $newDate, message: $message, checkAgenda: $checkAgenda, assignedUser: $assignedUser){ success message } }","variables":{"councilId":64876,"newDate":"2026-05-20T12:00Z","message":"","checkAgenda":true,"assignedUser":-1}}' ``` ### 4\. Respuesta Esperada (200 OK) ``` json { "data": { "rescheduleAppointment": { "success": true, "message": null } } } ``` > **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como `/graphql/rescheduleappointment` para que Fern pueda mostrarla como operación independiente. La ruta técnica real de ejecución es `POST /graphql`.

Authentication

x-jwt-tokenstring
JWT token obtained from Login.

Request

This endpoint expects an object.
querystringRequired
GraphQL operation
variablesobjectOptional
GraphQL variables

Response

Successful response. GraphQL business errors may be returned inside the JSON errors field while transport status remains HTTP 200.