> 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 AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ovac.councilbox.com/_mcp/server.

# Close Appointment

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

# Close Appointment (`mutation`)

Esta operación permite finalizar una cita o gestión. Al ejecutar esta mutación, el sistema bloquea cualquier interacción posterior, actualiza el estado del encuentro al ciclo de cierre y consolida de forma definitiva el rastro de auditoría junto con las anotaciones administrativas aportadas por el agente o el sistema de origen.

### 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 numérico único de la cita o gestión que se desea consultar. | SI | Int |
| internalNotes | Texto libre para incorporar notas internas sobre la resolución de la cita/gestión. | NO | String |

### Campos de respuesta (Payload)

La mutación devuelve un objeto de confirmación bajo el campo raíz `endCouncil`:

| Parámetro | Descripción | Tipo |
| --- | --- | --- |
| endCouncil | Objeto contenedor con el resultado de la solicitud de finalización. | Object |
| endCouncil.success | Bandera booleana que confirma si el proceso de cierre de la cita fue satisfactorio (`true` | `false`). | Boolean |

## Ejemplos de código y peticiones

### 1\. Consulta GraphQL

``` graphql
mutation endCouncil (
    $councilId: Int!
    $internalNotes: String
){
    endCouncil(
        councilId: $councilId
        internalNotes: $internalNotes
    ) {
        success
    }
}

 ```

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

``` json
{
    "councilId": 65164,
    "internalNotes": "Se finaliza la gestión de forma correcta"
}

 ```

### 3\. Ejemplo de comando cURL

``` bash
curl --location 'https://api.ovac.pre.councilbox.com/graphql' \
--header 'Content-Type: application/json' \
--header 'x-jwt-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNmQxOTY3ZS04MDY3LTRiMDUtYjQ0MS0zZmFhYWVlN2M3ZDUiLCJ1c2VyX2lkIjozNDc2LCJ0b2tlbl90eXBlIjoidXNlciIsImlhdCI6MTt4MTA3NjAyMH0.aXYLM7tX0xYjzi4m7gGNUlZ4Dj15cG-iIakmzGwhDTs' \
--data '{"query":"mutation endCouncil ($councilId: Int!, $internalNotes: String){ endCouncil(councilId: $councilId, internalNotes: $internalNotes) { success } }","variables":{"councilId":65164,"internalNotes":"Se finaliza la gestión de forma correcta"}}'

 ```

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

``` json
{
    "data": {
        "endCouncil": {
            "success": true
        }
    }
}

 ```

> **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como `/graphql/endcouncil` 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/08-remote-council-actions/end-council

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: ovac
  version: 1.0.0
paths:
  /graphql/endcouncil:
    post:
      operationId: end-council
      summary: Close Appointment
      description: >
        # Close Appointment (`mutation`)


        Esta operación permite finalizar una cita o gestión. Al ejecutar esta
        mutación, el sistema bloquea cualquier interacción posterior, actualiza
        el estado del encuentro al ciclo de cierre y consolida de forma
        definitiva el rastro de auditoría junto con las anotaciones
        administrativas aportadas por el agente o el sistema de origen.


        ### 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 numérico único de la cita o gestión que se
        desea consultar. | SI | Int |

        | internalNotes | Texto libre para incorporar notas internas sobre la
        resolución de la cita/gestión. | NO | String |


        ### Campos de respuesta (Payload)


        La mutación devuelve un objeto de confirmación bajo el campo raíz
        `endCouncil`:


        | Parámetro | Descripción | Tipo |

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

        | endCouncil | Objeto contenedor con el resultado de la solicitud de
        finalización. | Object |

        | endCouncil.success | Bandera booleana que confirma si el proceso de
        cierre de la cita fue satisfactorio (`true` | `false`). | Boolean |


        ## Ejemplos de código y peticiones


        ### 1\. Consulta GraphQL


        ``` graphql

        mutation endCouncil (
            $councilId: Int!
            $internalNotes: String
        ){
            endCouncil(
                councilId: $councilId
                internalNotes: $internalNotes
            ) {
                success
            }
        }

         ```

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


        ``` json

        {
            "councilId": 65164,
            "internalNotes": "Se finaliza la gestión de forma correcta"
        }

         ```

        ### 3\. Ejemplo de comando cURL


        ``` bash

        curl --location 'https://api.ovac.pre.councilbox.com/graphql' \

        --header 'Content-Type: application/json' \

        --header 'x-jwt-token:
        eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNmQxOTY3ZS04MDY3LTRiMDUtYjQ0MS0zZmFhYWVlN2M3ZDUiLCJ1c2VyX2lkIjozNDc2LCJ0b2tlbl90eXBlIjoidXNlciIsImlhdCI6MTt4MTA3NjAyMH0.aXYLM7tX0xYjzi4m7gGNUlZ4Dj15cG-iIakmzGwhDTs'
        \

        --data '{"query":"mutation endCouncil ($councilId: Int!, $internalNotes:
        String){ endCouncil(councilId: $councilId, internalNotes:
        $internalNotes) { success }
        }","variables":{"councilId":65164,"internalNotes":"Se finaliza la
        gestión de forma correcta"}}'

         ```

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


        ``` json

        {
            "data": {
                "endCouncil": {
                    "success": true
                }
            }
        }

         ```

        > **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como
        `/graphql/endcouncil` para que Fern pueda mostrarla como operación
        independiente. La ruta técnica real de ejecución es `POST /graphql`.
      tags:
        - subpackage_08RemoteCouncilActions
      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/08 - Remote Council
                  Actions_endCouncil_Response_200
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: GraphQL operation
                variables:
                  $ref: >-
                    #/components/schemas/GraphqlEndcouncilPostRequestBodyContentApplicationJsonSchemaVariables
                  description: GraphQL variables
              required:
                - query
servers:
  - url: https://api.ovac.pre.councilbox.com
    description: Pre-production
  - url: https://api.ovac.councilbox.com
    description: Production
components:
  schemas:
    GraphqlEndcouncilPostRequestBodyContentApplicationJsonSchemaVariables:
      type: object
      properties: {}
      description: GraphQL variables
      title: GraphqlEndcouncilPostRequestBodyContentApplicationJsonSchemaVariables
    08 - Remote Council Actions_endCouncil_Response_200:
      type: object
      properties: {}
      title: 08 - Remote Council Actions_endCouncil_Response_200
  securitySchemes:
    JwtToken:
      type: apiKey
      in: header
      name: x-jwt-token
      description: JWT token obtained from Login.

```

## Examples



**Request**

```json
{
  "query": "mutation endCouncil (\r\n    $councilId: Int!\r\n    $internalNotes: String\r\n){\r\n    endCouncil(\r\n        councilId: $councilId\r\n        internalNotes: $internalNotes\r\n    ) {\r\n        success\r\n    }\r\n}",
  "variables": {
    "councilId": 12345,
    "internalNotes": "Se finaliza la gestión de forma correcta"
  }
}
```

**Response**

```json
{
  "data": {
    "endCouncil": {
      "success": true
    }
  }
}
```

**SDK Code**

```python Close Appointment
import requests

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

payload = {
    "query": "mutation endCouncil (
    $councilId: Int!
    $internalNotes: String
){
    endCouncil(
        councilId: $councilId
        internalNotes: $internalNotes
    ) {
        success
    }
}",
    "variables": {
        "councilId": 12345,
        "internalNotes": "Se finaliza la gestión de forma correcta"
    }
}
headers = {
    "x-jwt-token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Close Appointment
const url = 'https://api.ovac.pre.councilbox.com/graphql/endcouncil';
const options = {
  method: 'POST',
  headers: {'x-jwt-token': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"query":"mutation endCouncil (\r\n    $councilId: Int!\r\n    $internalNotes: String\r\n){\r\n    endCouncil(\r\n        councilId: $councilId\r\n        internalNotes: $internalNotes\r\n    ) {\r\n        success\r\n    }\r\n}","variables":{"councilId":12345,"internalNotes":"Se finaliza la gestión de forma correcta"}}'
};

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

```go Close Appointment
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"query\": \"mutation endCouncil (\\r\\n    $councilId: Int!\\r\\n    $internalNotes: String\\r\\n){\\r\\n    endCouncil(\\r\\n        councilId: $councilId\\r\\n        internalNotes: $internalNotes\\r\\n    ) {\\r\\n        success\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"councilId\": 12345,\n    \"internalNotes\": \"Se finaliza la gestión de forma correcta\"\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 Close Appointment
require 'uri'
require 'net/http'

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

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 endCouncil (\\r\\n    $councilId: Int!\\r\\n    $internalNotes: String\\r\\n){\\r\\n    endCouncil(\\r\\n        councilId: $councilId\\r\\n        internalNotes: $internalNotes\\r\\n    ) {\\r\\n        success\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"councilId\": 12345,\n    \"internalNotes\": \"Se finaliza la gestión de forma correcta\"\n  }\n}"

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

```java Close 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/endcouncil")
  .header("x-jwt-token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"mutation endCouncil (\\r\\n    $councilId: Int!\\r\\n    $internalNotes: String\\r\\n){\\r\\n    endCouncil(\\r\\n        councilId: $councilId\\r\\n        internalNotes: $internalNotes\\r\\n    ) {\\r\\n        success\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"councilId\": 12345,\n    \"internalNotes\": \"Se finaliza la gestión de forma correcta\"\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ovac.pre.councilbox.com/graphql/endcouncil', [
  'body' => '{
  "query": "mutation endCouncil (\\r\\n    $councilId: Int!\\r\\n    $internalNotes: String\\r\\n){\\r\\n    endCouncil(\\r\\n        councilId: $councilId\\r\\n        internalNotes: $internalNotes\\r\\n    ) {\\r\\n        success\\r\\n    }\\r\\n}",
  "variables": {
    "councilId": 12345,
    "internalNotes": "Se finaliza la gestión de forma correcta"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-jwt-token' => '<apiKey>',
  ],
]);

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

```csharp Close Appointment
using RestSharp;

var client = new RestClient("https://api.ovac.pre.councilbox.com/graphql/endcouncil");
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 endCouncil (\\r\\n    $councilId: Int!\\r\\n    $internalNotes: String\\r\\n){\\r\\n    endCouncil(\\r\\n        councilId: $councilId\\r\\n        internalNotes: $internalNotes\\r\\n    ) {\\r\\n        success\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"councilId\": 12345,\n    \"internalNotes\": \"Se finaliza la gestión de forma correcta\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Close Appointment
import Foundation

let headers = [
  "x-jwt-token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "query": "mutation endCouncil (
    $councilId: Int!
    $internalNotes: String
){
    endCouncil(
        councilId: $councilId
        internalNotes: $internalNotes
    ) {
        success
    }
}",
  "variables": [
    "councilId": 12345,
    "internalNotes": "Se finaliza la gestión de forma correcta"
  ]
] as [String : Any]

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

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