> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ovac.councilbox.com/llms.txt.
> For full documentation content, see https://docs.ovac.councilbox.com/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ovac.councilbox.com/_mcp/server.

# Reschedule Appointment

POST https://api.ovac.pre.councilbox.com/graphql/rescheduleappointment
Content-Type: application/json

# 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`.


Reference: https://docs.ovac.councilbox.com/metodos-api/ovac/reschedule-appointment

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: ovac
  version: 1.0.0
paths:
  /graphql/rescheduleappointment:
    post:
      operationId: reschedule-appointment
      summary: Reschedule Appointment
      description: >
        # 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`.
      tags:
        - subpackage_ovac
      parameters:
        - name: x-jwt-token
          in: header
          description: JWT token obtained from Login.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            Successful response. GraphQL business errors may be returned inside
            the JSON `errors` field while transport status remains HTTP 200.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OVAC_rescheduleAppointment_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: GraphQL operation
                variables:
                  $ref: >-
                    #/components/schemas/GraphqlRescheduleappointmentPostRequestBodyContentApplicationJsonSchemaVariables
                  description: GraphQL variables
              required:
                - query
servers:
  - url: https://api.ovac.pre.councilbox.com
  - url: https://api.ovac.councilbox.com
components:
  schemas:
    GraphqlRescheduleappointmentPostRequestBodyContentApplicationJsonSchemaVariables:
      type: object
      properties: {}
      description: GraphQL variables
      title: >-
        GraphqlRescheduleappointmentPostRequestBodyContentApplicationJsonSchemaVariables
    OVAC_rescheduleAppointment_Response_200:
      type: object
      properties: {}
      title: OVAC_rescheduleAppointment_Response_200
  securitySchemes:
    JwtToken:
      type: apiKey
      in: header
      name: x-jwt-token
      description: JWT token obtained from Login.

```

## SDK Code Examples

```python Reschedule Appointment
import requests

url = "https://api.ovac.pre.councilbox.com/graphql/rescheduleappointment"

payload = {
    "query": "mutation RescheduleAppointment(
    $councilId: ID!, 
    $newDate: String!, 
    $message: String, 
    $checkAgenda: Boolean, 
    $assignedUser: Int
    )
    {
        rescheduleAppointment(
    	",
    "variables": {
        "councilId": 98765,
        "newDate": "2026-11-15T09:30Z",
        "message": "Se ha reprogramado su cita para la nueva fecha indicada.",
        "checkAgenda": True,
        "assignedUser": 1024
    }
}
headers = {
    "x-jwt-token": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Reschedule Appointment
const url = 'https://api.ovac.pre.councilbox.com/graphql/rescheduleappointment';
const options = {
  method: 'POST',
  headers: {'x-jwt-token': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"query":"mutation RescheduleAppointment(\n    $councilId: ID!, \n    $newDate: String!, \n    $message: String, \n    $checkAgenda: Boolean, \n    $assignedUser: Int\n    )\n    {\n        rescheduleAppointment(\n    \t","variables":{"councilId":98765,"newDate":"2026-11-15T09:30Z","message":"Se ha reprogramado su cita para la nueva fecha indicada.","checkAgenda":true,"assignedUser":1024}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Reschedule Appointment
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.ovac.pre.councilbox.com/graphql/rescheduleappointment"

	payload := strings.NewReader("{\n  \"query\": \"mutation RescheduleAppointment(\\n    $councilId: ID!, \\n    $newDate: String!, \\n    $message: String, \\n    $checkAgenda: Boolean, \\n    $assignedUser: Int\\n    )\\n    {\\n        rescheduleAppointment(\\n    \\t\",\n  \"variables\": {\n    \"councilId\": 98765,\n    \"newDate\": \"2026-11-15T09:30Z\",\n    \"message\": \"Se ha reprogramado su cita para la nueva fecha indicada.\",\n    \"checkAgenda\": true,\n    \"assignedUser\": 1024\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-jwt-token", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Reschedule Appointment
require 'uri'
require 'net/http'

url = URI("https://api.ovac.pre.councilbox.com/graphql/rescheduleappointment")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-jwt-token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"query\": \"mutation RescheduleAppointment(\\n    $councilId: ID!, \\n    $newDate: String!, \\n    $message: String, \\n    $checkAgenda: Boolean, \\n    $assignedUser: Int\\n    )\\n    {\\n        rescheduleAppointment(\\n    \\t\",\n  \"variables\": {\n    \"councilId\": 98765,\n    \"newDate\": \"2026-11-15T09:30Z\",\n    \"message\": \"Se ha reprogramado su cita para la nueva fecha indicada.\",\n    \"checkAgenda\": true,\n    \"assignedUser\": 1024\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java Reschedule Appointment
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.ovac.pre.councilbox.com/graphql/rescheduleappointment")
  .header("x-jwt-token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"mutation RescheduleAppointment(\\n    $councilId: ID!, \\n    $newDate: String!, \\n    $message: String, \\n    $checkAgenda: Boolean, \\n    $assignedUser: Int\\n    )\\n    {\\n        rescheduleAppointment(\\n    \\t\",\n  \"variables\": {\n    \"councilId\": 98765,\n    \"newDate\": \"2026-11-15T09:30Z\",\n    \"message\": \"Se ha reprogramado su cita para la nueva fecha indicada.\",\n    \"checkAgenda\": true,\n    \"assignedUser\": 1024\n  }\n}")
  .asString();
```

```php Reschedule Appointment
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ovac.pre.councilbox.com/graphql/rescheduleappointment', [
  'body' => '{
  "query": "mutation RescheduleAppointment(\\n    $councilId: ID!, \\n    $newDate: String!, \\n    $message: String, \\n    $checkAgenda: Boolean, \\n    $assignedUser: Int\\n    )\\n    {\\n        rescheduleAppointment(\\n    \\t",
  "variables": {
    "councilId": 98765,
    "newDate": "2026-11-15T09:30Z",
    "message": "Se ha reprogramado su cita para la nueva fecha indicada.",
    "checkAgenda": true,
    "assignedUser": 1024
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-jwt-token' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Reschedule Appointment
using RestSharp;

var client = new RestClient("https://api.ovac.pre.councilbox.com/graphql/rescheduleappointment");
var request = new RestRequest(Method.POST);
request.AddHeader("x-jwt-token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"query\": \"mutation RescheduleAppointment(\\n    $councilId: ID!, \\n    $newDate: String!, \\n    $message: String, \\n    $checkAgenda: Boolean, \\n    $assignedUser: Int\\n    )\\n    {\\n        rescheduleAppointment(\\n    \\t\",\n  \"variables\": {\n    \"councilId\": 98765,\n    \"newDate\": \"2026-11-15T09:30Z\",\n    \"message\": \"Se ha reprogramado su cita para la nueva fecha indicada.\",\n    \"checkAgenda\": true,\n    \"assignedUser\": 1024\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Reschedule Appointment
import Foundation

let headers = [
  "x-jwt-token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "query": "mutation RescheduleAppointment(
    $councilId: ID!, 
    $newDate: String!, 
    $message: String, 
    $checkAgenda: Boolean, 
    $assignedUser: Int
    )
    {
        rescheduleAppointment(
    	",
  "variables": [
    "councilId": 98765,
    "newDate": "2026-11-15T09:30Z",
    "message": "Se ha reprogramado su cita para la nueva fecha indicada.",
    "checkAgenda": true,
    "assignedUser": 1024
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.ovac.pre.councilbox.com/graphql/rescheduleappointment")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```