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

# Cancel Appointment_External

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

# Cancel Appointment (`mutation`)

Este método permite cancelar una cita existente en el sistema identificándola a través de su `councilId`. La operación admite la posibilidad de notificar de forma automática al participante sobre la revocación de la cita mediante el parámetro `notify`, así como incluir un texto descriptivo con el motivo de la cancelación a través del campo `message`.

### 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 | Id de la cita que se desea cancelar. | SI | Integer |
| notify | Campo para activar o desactivar el aviso de cancelación de la cita al participante. | SI | Boolean |
| message | Mensaje con el motivo de cancelación de la cita. | NO | String |

> StartFragment⚠️ **Nota de Depuración:** En ejemplos de integración antiguos figuraba el campo `reason` dentro de las variables. Este parámetro no forma parte de la firma de la mutación `cancelAppointment` y el backend lo ignorará por completo. Se recomienda eliminarlo de los payloads activos.EndFragment 
  

### Campos de Respuesta (Payload)

La operación devuelve un resultado funcional simple bajo el objeto `cancelAppointment`:

| **Campo** | **Tipo** | **Descripción** |
| --- | --- | --- |
| **success** | Boolean | Devuelve `true` si la cancelación se procesó correctamente; `false` en caso contrario. |
| **message** | String | Mensaje informativo del sistema o detalle del error. Puede devolver `null` si la operación es limpia. |

## Ejemplos de Código y Peticiones

### 1\. Mutación GraphQL

``` graphql
mutation CancelAppointment($councilId: Int!, $notify: Boolean!, $message: String) {
    cancelAppointment(councilId: $councilId, notify: $notify, message: $message) {
        success
        message
    }
}

 ```

### 2\. Variables de la Petición (JSON Payload)

``` json
{
    "councilId": 64683,
    "notify": true,
    "message": "MOTIVO CANCELACION"
}

 ```

### 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 CancelAppointment($councilId: Int!, $notify: Boolean!, $message: String){ cancelAppointment(councilId: $councilId, notify:$notify, message: $message){ success message } }","variables":{"councilId":64683,"notify":true,"message":"MOTIVO CANCELACION"}}'

 ```

### 4\. Respuesta Esperada (200 OK)

``` json
{
    "data": {
        "cancelAppointment": {
            "success": true,
            "message": null
        }
    }
}

 ```

> **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como `/graphql/cancelappointment-2` 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/cancel-appointment-2

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: ovac
  version: 1.0.0
paths:
  /graphql/cancelappointment-2:
    post:
      operationId: cancel-appointment-2
      summary: Cancel Appointment_External
      description: >
        # Cancel Appointment (`mutation`)


        Este método permite cancelar una cita existente en el sistema
        identificándola a través de su `councilId`. La operación admite la
        posibilidad de notificar de forma automática al participante sobre la
        revocación de la cita mediante el parámetro `notify`, así como incluir
        un texto descriptivo con el motivo de la cancelación a través del campo
        `message`.


        ### 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 | Id de la cita que se desea cancelar. | SI | Integer |

        | notify | Campo para activar o desactivar el aviso de cancelación de la
        cita al participante. | SI | Boolean |

        | message | Mensaje con el motivo de cancelación de la cita. | NO |
        String |


        > StartFragment⚠️ **Nota de Depuración:** En ejemplos de integración
        antiguos figuraba el campo `reason` dentro de las variables. Este
        parámetro no forma parte de la firma de la mutación `cancelAppointment`
        y el backend lo ignorará por completo. Se recomienda eliminarlo de los
        payloads activos.EndFragment 
          

        ### Campos de Respuesta (Payload)


        La operación devuelve un resultado funcional simple bajo el objeto
        `cancelAppointment`:


        | **Campo** | **Tipo** | **Descripción** |

        | --- | --- | --- |

        | **success** | Boolean | Devuelve `true` si la cancelación se procesó
        correctamente; `false` en caso contrario. |

        | **message** | String | Mensaje informativo del sistema o detalle del
        error. Puede devolver `null` si la operación es limpia. |


        ## Ejemplos de Código y Peticiones


        ### 1\. Mutación GraphQL


        ``` graphql

        mutation CancelAppointment($councilId: Int!, $notify: Boolean!,
        $message: String) {
            cancelAppointment(councilId: $councilId, notify: $notify, message: $message) {
                success
                message
            }
        }

         ```

        ### 2\. Variables de la Petición (JSON Payload)


        ``` json

        {
            "councilId": 64683,
            "notify": true,
            "message": "MOTIVO CANCELACION"
        }

         ```

        ### 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 CancelAppointment($councilId: Int!, $notify:
        Boolean!, $message: String){ cancelAppointment(councilId: $councilId,
        notify:$notify, message: $message){ success message }
        }","variables":{"councilId":64683,"notify":true,"message":"MOTIVO
        CANCELACION"}}'

         ```

        ### 4\. Respuesta Esperada (200 OK)


        ``` json

        {
            "data": {
                "cancelAppointment": {
                    "success": true,
                    "message": null
                }
            }
        }

         ```

        > **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como
        `/graphql/cancelappointment-2` 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_cancelAppointment_2_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: GraphQL operation
                variables:
                  $ref: >-
                    #/components/schemas/GraphqlCancelappointment2PostRequestBodyContentApplicationJsonSchemaVariables
                  description: GraphQL variables
              required:
                - query
servers:
  - url: https://api.ovac.pre.councilbox.com
  - url: https://api.ovac.councilbox.com
components:
  schemas:
    GraphqlCancelappointment2PostRequestBodyContentApplicationJsonSchemaVariables:
      type: object
      properties: {}
      description: GraphQL variables
      title: >-
        GraphqlCancelappointment2PostRequestBodyContentApplicationJsonSchemaVariables
    OVAC_cancelAppointment_2_Response_200:
      type: object
      properties: {}
      title: OVAC_cancelAppointment_2_Response_200
  securitySchemes:
    JwtToken:
      type: apiKey
      in: header
      name: x-jwt-token
      description: JWT token obtained from Login.

```

## SDK Code Examples

```python Cancel Appointment_External
import requests

url = "https://api.ovac.pre.councilbox.com/graphql/cancelappointment-2"

payload = {
    "query": "mutation CancelAppointment(
  $councilId: Int!
  $notify: Boolean!
  $message: String
) {
  cancelAppointment(
    councilId: $councilId
    notify: $notify
    message: $message
  ) {
     ",
    "variables": {
        "councilId": 98765,
        "notify": True,
        "reason": "Motivo",
        "message": "Cancelación por imprevisto en la agenda"
    }
}
headers = {
    "x-jwt-token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Cancel Appointment_External
const url = 'https://api.ovac.pre.councilbox.com/graphql/cancelappointment-2';
const options = {
  method: 'POST',
  headers: {'x-jwt-token': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"query":"mutation CancelAppointment(\r\n  $councilId: Int!\r\n  $notify: Boolean!\r\n  $message: String\r\n) {\r\n  cancelAppointment(\r\n    councilId: $councilId\r\n    notify: $notify\r\n    message: $message\r\n  ) {\r\n     ","variables":{"councilId":98765,"notify":true,"reason":"Motivo","message":"Cancelación por imprevisto en la agenda"}}'
};

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

```go Cancel Appointment_External
package main

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

func main() {

	url := "https://api.ovac.pre.councilbox.com/graphql/cancelappointment-2"

	payload := strings.NewReader("{\n  \"query\": \"mutation CancelAppointment(\\r\\n  $councilId: Int!\\r\\n  $notify: Boolean!\\r\\n  $message: String\\r\\n) {\\r\\n  cancelAppointment(\\r\\n    councilId: $councilId\\r\\n    notify: $notify\\r\\n    message: $message\\r\\n  ) {\\r\\n     \",\n  \"variables\": {\n    \"councilId\": 98765,\n    \"notify\": true,\n    \"reason\": \"Motivo\",\n    \"message\": \"Cancelación por imprevisto en la agenda\"\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 Cancel Appointment_External
require 'uri'
require 'net/http'

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

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 CancelAppointment(\\r\\n  $councilId: Int!\\r\\n  $notify: Boolean!\\r\\n  $message: String\\r\\n) {\\r\\n  cancelAppointment(\\r\\n    councilId: $councilId\\r\\n    notify: $notify\\r\\n    message: $message\\r\\n  ) {\\r\\n     \",\n  \"variables\": {\n    \"councilId\": 98765,\n    \"notify\": true,\n    \"reason\": \"Motivo\",\n    \"message\": \"Cancelación por imprevisto en la agenda\"\n  }\n}"

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

```java Cancel Appointment_External
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.ovac.pre.councilbox.com/graphql/cancelappointment-2")
  .header("x-jwt-token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"mutation CancelAppointment(\\r\\n  $councilId: Int!\\r\\n  $notify: Boolean!\\r\\n  $message: String\\r\\n) {\\r\\n  cancelAppointment(\\r\\n    councilId: $councilId\\r\\n    notify: $notify\\r\\n    message: $message\\r\\n  ) {\\r\\n     \",\n  \"variables\": {\n    \"councilId\": 98765,\n    \"notify\": true,\n    \"reason\": \"Motivo\",\n    \"message\": \"Cancelación por imprevisto en la agenda\"\n  }\n}")
  .asString();
```

```php Cancel Appointment_External
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ovac.pre.councilbox.com/graphql/cancelappointment-2', [
  'body' => '{
  "query": "mutation CancelAppointment(\\r\\n  $councilId: Int!\\r\\n  $notify: Boolean!\\r\\n  $message: String\\r\\n) {\\r\\n  cancelAppointment(\\r\\n    councilId: $councilId\\r\\n    notify: $notify\\r\\n    message: $message\\r\\n  ) {\\r\\n     ",
  "variables": {
    "councilId": 98765,
    "notify": true,
    "reason": "Motivo",
    "message": "Cancelación por imprevisto en la agenda"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-jwt-token' => '<apiKey>',
  ],
]);

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

```csharp Cancel Appointment_External
using RestSharp;

var client = new RestClient("https://api.ovac.pre.councilbox.com/graphql/cancelappointment-2");
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 CancelAppointment(\\r\\n  $councilId: Int!\\r\\n  $notify: Boolean!\\r\\n  $message: String\\r\\n) {\\r\\n  cancelAppointment(\\r\\n    councilId: $councilId\\r\\n    notify: $notify\\r\\n    message: $message\\r\\n  ) {\\r\\n     \",\n  \"variables\": {\n    \"councilId\": 98765,\n    \"notify\": true,\n    \"reason\": \"Motivo\",\n    \"message\": \"Cancelación por imprevisto en la agenda\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Cancel Appointment_External
import Foundation

let headers = [
  "x-jwt-token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "query": "mutation CancelAppointment(
  $councilId: Int!
  $notify: Boolean!
  $message: String
) {
  cancelAppointment(
    councilId: $councilId
    notify: $notify
    message: $message
  ) {
     ",
  "variables": [
    "councilId": 98765,
    "notify": true,
    "reason": "Motivo",
    "message": "Cancelación por imprevisto en la agenda"
  ]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.ovac.pre.councilbox.com/graphql/cancelappointment-2")! 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()
```