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

# Appointments

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

# Appointments (`query`)

Este método permite obtener un listado paginado o filtrado de las citas (consejos) que cumplan con los criterios de búsqueda especificados. Devuelve la información general y de control de cada registro junto con el recuento total de resultados coincidentes, siendo de gran utilidad para la sincronización de agendas y la generación de reportes consolidados por organización, rango de fechas o estados.

### 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 |
| --- | --- | --- | --- |
| companyId | Identificador de la organización | SI | Integer |
| externalId | Identificador externo de la organización. Si se indica el externalId no se debe indicar companyId | NO | String |
| state | lista de estados por los que filtrar las citas:  <br>'`-1`' -> Cancelado  <br>`10` -> Confirmado  <br>`20` -> Sala abierta  <br>`25` -> Pausa  <br>`40` -> Finalizada la sesión de vídeoatención/Gestión  <br>`45` -> Procesando informe  <br>`60` -> Completada  <br>`65` -> Incompleta | SI | Integer |
| fromDate | fecha inicial del rango de búsqueda, formato UTC. | SI | String |
| toDate | fecha final del rango de búsqueda, formato UTC. | SI | String |
| councilTypes | Filtro de tipo de cita:  <br>`5` -> Videoatención  <br>`6` -> Gestión  <br>`7` -> Presencial | NO | Integer |

⚠️ **Nota sobre** **`councilTypes`****:** Aunque en algunos ejemplos heredados de variables se incluye el campo `councilTypes`, este no se encuentra declarado en la firma de la consulta base provista por el backend. Cualquier intento de enviarlo sin modificar la declaración de la query será ignorado de forma silenciosa.

### Campos de Respuesta (Payload)

La consulta devuelve un objeto raíz `councils` compuesto por las siguientes propiedades:

|  | Descripción | Tipo |
| --- | --- | --- |
| **data** | Objeto del conjunto de datos | Object |
| data.**councils** | Objeto de la cita | Object |
| data.councils.**list** | Array de las citas obtenidas aplicando el filtro | Object |
| data.councils.list\[\].**id** | Identificador de la cita | Integer |
| data.councils.list\[\].**name** | Nombre del trámite o cita modificado tras la creación | String |
| data.councils.list\[\].**observations** | Observaciones que se han añadido para la cita | String |
| data.councils.list\[\].**state** | Estado de la cita | Integer |
| data.councils.list\[\].**councilType** | Tipo de cita (videoatención \[5\], gestión\[6\] o presencial\[7\]) | Integer |
| data.councils.list\[\].**creationDate** | Fecha de creación de cita, en formato UTC | String |
| data.councils.list\[\].**dateStart** | Fecha determinada en la cual se va a realizar el trámite, en formato UTC | String |
| data.councils.list\[\].**dateRealEnd** | Fecha en la que se ha finalizado oficialmente la cita, en formato UTC | String |
| data.councils.list\[\].**dateRealStart** | echa en la que se iniciado oficialmente la cita, en formato UTC | String |
| data.councils.list\[\].**participants** | Array de los participantes | Array |
| data.councils.list\[\].participants\[\].**name** | Nombre del participante | String |
| data.councils.list\[\].participants\[\].**surname** | Apellido del participante | String |
| data.councils.list\[\].**statute** | Objeto del trámite | Object |
| data.councils.list\[\].statute.**title** | Nombre del trámite en OVAC | String |
| data.councils.list\[\].statute.**statuteId** | Identificador único del trámite | Integer |
| data.councils.total | Recuento del número de citas obtenidas con el filtro aplcado | Integer |

## Ejemplos de Código y Peticiones

### 1\. Consulta GraphQL

``` graphql
query Councils(
    $companyId: Int
    $companyExternalId: String
    $state: [Int]
    $externalId: String
    $options: OptionsInput
    $fromDate: String
    $toDate: String
) {
    councils(
        companyId: $companyId
        companyExternalId: $companyExternalId
        state: $state
        externalId: $externalId
        options: $options
        fromDate: $fromDate
        toDate: $toDate
    ) {
        list {
            id
            name
            observations
            state
            councilType
            creationDate
            dateStart
            dateRealEnd
            dateRealStart
            participants {
                name
                surname
            }
            statute {
                    title
                    statuteId
            }            
        }
        total
    }
}

 ```

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

``` json
{
    "companyId": 2191,
    "fromDate": "2026-05-17T00:00Z",
    "toDate": "2026-05-19T00:00Z",
    "state": [60],
    "externalId": ""
}

 ```

### 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":"query Councils($companyId: Int, $companyExternalId: String, $state: [Int], $externalId: String, $options: OptionsInput, $fromDate: String, $toDate: String) { councils (companyId: $companyId, companyExternalId: $companyExternalId, state: $state, externalId: $externalId, options: $options, fromDate: $fromDate, toDate: $toDate ){ list { id name observations state councilType creationDate dateStart dateRealEnd dateRealStart participants { name surname } } total } }","variables":{"companyId":2191,"fromDate":"2026-05-17T00:00Z","toDate":"2026-05-19T00:00Z","state":[60],"externalId":""}}'

 ```

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

``` json
{
    "data": {
        "councils": {
            "list": [
                {
                    "id": 64767,
                    "name": "test creación cita",
                    "observations": "opcional",
                    "state": 60,
                    "councilType": 5,
                    "creationDate": "2026-04-23T15:16:10.085Z",
                    "dateStart": "2026-05-18T15:00:00.000Z",
                    "dateRealEnd": "2026-05-18T09:48:53.988Z",
                    "dateRealStart": "2026-05-18T09:48:37.215Z",
                    "participants": [
                        {
                            "name": "Name of participant",
                            "surname": "Surname of participant"
                        }
                    ],
                    "statute": {
                        "id": 64888,
                        "title": "TEST",
                        "statuteId": 4685
                    }
                }
            ],
            "total": 1
        }
    }
}

 ```

> **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como `/graphql/councils` 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/04-search-and-view-appointments/councils

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: ovac
  version: 1.0.0
paths:
  /graphql/councils:
    post:
      operationId: councils
      summary: Appointments
      description: >
        # Appointments (`query`)


        Este método permite obtener un listado paginado o filtrado de las citas
        (consejos) que cumplan con los criterios de búsqueda especificados.
        Devuelve la información general y de control de cada registro junto con
        el recuento total de resultados coincidentes, siendo de gran utilidad
        para la sincronización de agendas y la generación de reportes
        consolidados por organización, rango de fechas o estados.


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

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

        | companyId | Identificador de la organización | SI | Integer |

        | externalId | Identificador externo de la organización. Si se indica el
        externalId no se debe indicar companyId | NO | String |

        | state | lista de estados por los que filtrar las citas:  <br>'`-1`' ->
        Cancelado  <br>`10` -> Confirmado  <br>`20` -> Sala abierta  <br>`25` ->
        Pausa  <br>`40` -> Finalizada la sesión de vídeoatención/Gestión 
        <br>`45` -> Procesando informe  <br>`60` -> Completada  <br>`65` ->
        Incompleta | SI | Integer |

        | fromDate | fecha inicial del rango de búsqueda, formato UTC. | SI |
        String |

        | toDate | fecha final del rango de búsqueda, formato UTC. | SI | String
        |

        | councilTypes | Filtro de tipo de cita:  <br>`5` -> Videoatención 
        <br>`6` -> Gestión  <br>`7` -> Presencial | NO | Integer |


        ⚠️ **Nota sobre** **`councilTypes`****:** Aunque en algunos ejemplos
        heredados de variables se incluye el campo `councilTypes`, este no se
        encuentra declarado en la firma de la consulta base provista por el
        backend. Cualquier intento de enviarlo sin modificar la declaración de
        la query será ignorado de forma silenciosa.


        ### Campos de Respuesta (Payload)


        La consulta devuelve un objeto raíz `councils` compuesto por las
        siguientes propiedades:


        |  | Descripción | Tipo |

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

        | **data** | Objeto del conjunto de datos | Object |

        | data.**councils** | Objeto de la cita | Object |

        | data.councils.**list** | Array de las citas obtenidas aplicando el
        filtro | Object |

        | data.councils.list\[\].**id** | Identificador de la cita | Integer |

        | data.councils.list\[\].**name** | Nombre del trámite o cita modificado
        tras la creación | String |

        | data.councils.list\[\].**observations** | Observaciones que se han
        añadido para la cita | String |

        | data.councils.list\[\].**state** | Estado de la cita | Integer |

        | data.councils.list\[\].**councilType** | Tipo de cita (videoatención
        \[5\], gestión\[6\] o presencial\[7\]) | Integer |

        | data.councils.list\[\].**creationDate** | Fecha de creación de cita,
        en formato UTC | String |

        | data.councils.list\[\].**dateStart** | Fecha determinada en la cual se
        va a realizar el trámite, en formato UTC | String |

        | data.councils.list\[\].**dateRealEnd** | Fecha en la que se ha
        finalizado oficialmente la cita, en formato UTC | String |

        | data.councils.list\[\].**dateRealStart** | echa en la que se iniciado
        oficialmente la cita, en formato UTC | String |

        | data.councils.list\[\].**participants** | Array de los participantes |
        Array |

        | data.councils.list\[\].participants\[\].**name** | Nombre del
        participante | String |

        | data.councils.list\[\].participants\[\].**surname** | Apellido del
        participante | String |

        | data.councils.list\[\].**statute** | Objeto del trámite | Object |

        | data.councils.list\[\].statute.**title** | Nombre del trámite en OVAC
        | String |

        | data.councils.list\[\].statute.**statuteId** | Identificador único del
        trámite | Integer |

        | data.councils.total | Recuento del número de citas obtenidas con el
        filtro aplcado | Integer |


        ## Ejemplos de Código y Peticiones


        ### 1\. Consulta GraphQL


        ``` graphql

        query Councils(
            $companyId: Int
            $companyExternalId: String
            $state: [Int]
            $externalId: String
            $options: OptionsInput
            $fromDate: String
            $toDate: String
        ) {
            councils(
                companyId: $companyId
                companyExternalId: $companyExternalId
                state: $state
                externalId: $externalId
                options: $options
                fromDate: $fromDate
                toDate: $toDate
            ) {
                list {
                    id
                    name
                    observations
                    state
                    councilType
                    creationDate
                    dateStart
                    dateRealEnd
                    dateRealStart
                    participants {
                        name
                        surname
                    }
                    statute {
                            title
                            statuteId
                    }            
                }
                total
            }
        }

         ```

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


        ``` json

        {
            "companyId": 2191,
            "fromDate": "2026-05-17T00:00Z",
            "toDate": "2026-05-19T00:00Z",
            "state": [60],
            "externalId": ""
        }

         ```

        ### 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":"query Councils($companyId: Int, $companyExternalId:
        String, $state: [Int], $externalId: String, $options: OptionsInput,
        $fromDate: String, $toDate: String) { councils (companyId: $companyId,
        companyExternalId: $companyExternalId, state: $state, externalId:
        $externalId, options: $options, fromDate: $fromDate, toDate: $toDate ){
        list { id name observations state councilType creationDate dateStart
        dateRealEnd dateRealStart participants { name surname } } total }
        }","variables":{"companyId":2191,"fromDate":"2026-05-17T00:00Z","toDate":"2026-05-19T00:00Z","state":[60],"externalId":""}}'

         ```

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


        ``` json

        {
            "data": {
                "councils": {
                    "list": [
                        {
                            "id": 64767,
                            "name": "test creación cita",
                            "observations": "opcional",
                            "state": 60,
                            "councilType": 5,
                            "creationDate": "2026-04-23T15:16:10.085Z",
                            "dateStart": "2026-05-18T15:00:00.000Z",
                            "dateRealEnd": "2026-05-18T09:48:53.988Z",
                            "dateRealStart": "2026-05-18T09:48:37.215Z",
                            "participants": [
                                {
                                    "name": "Name of participant",
                                    "surname": "Surname of participant"
                                }
                            ],
                            "statute": {
                                "id": 64888,
                                "title": "TEST",
                                "statuteId": 4685
                            }
                        }
                    ],
                    "total": 1
                }
            }
        }

         ```

        > **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como
        `/graphql/councils` para que Fern pueda mostrarla como operación
        independiente. La ruta técnica real de ejecución es `POST /graphql`.
      tags:
        - subpackage_04SearchAndViewAppointments
      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/04 - Search and View
                  Appointments_councils_Response_200
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: GraphQL operation
                variables:
                  $ref: >-
                    #/components/schemas/GraphqlCouncilsPostRequestBodyContentApplicationJsonSchemaVariables
                  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:
    GraphqlCouncilsPostRequestBodyContentApplicationJsonSchemaVariables:
      type: object
      properties: {}
      description: GraphQL variables
      title: GraphqlCouncilsPostRequestBodyContentApplicationJsonSchemaVariables
    04 - Search and View Appointments_councils_Response_200:
      type: object
      properties: {}
      title: 04 - Search and View Appointments_councils_Response_200
  securitySchemes:
    JwtToken:
      type: apiKey
      in: header
      name: x-jwt-token
      description: JWT token obtained from Login.

```

## Examples



**Request**

```json
{
  "query": "query Councils(\r\n    $companyId: Int\r\n\t$state: [Int]\r\n    $externalId: String\r\n\t$options: OptionsInput\r\n\t$fromDate: String,\r\n    $toDate: String\r\n) {\r\n    councils (\r\n            companyId: $companyId\r\n            companyExternalId: $companyExternalId\r\n            state: $state\r\n            externalId: $externalId\r\n            options: $options\r\n            fromDate: $fromDate,\r\n            toDate: $toDate\r\n    ){\r\n        list {\r\n            id\r\n            name\r\n            observations\r\n            state\r\n            councilType\r\n            creationDate\r\n            dateStart\r\n            dateRealEnd\r\n            dateRealStart\r\n            participants {\r\n                name\r\n                surname\r\n            }\r\n            statute {\r\n                    id\r\n                    title\r\n            }\r\n        }\r\n        total\r\n    }\r\n}",
  "variables": {
    "companyId": 12345,
    "fromDate": "2026-05-17T00:00Z",
    "toDate": "2026-05-19T00:00Z",
    "state": [
      60
    ],
    "externalId": "",
    "councilTypes": [
      5,
      6,
      7
    ]
  }
}
```

**Response**

```json
{
  "data": {
    "councils": {
      "list": [
        {
          "id": 64879,
          "name": "TEST",
          "state": 60,
          "councilType": 5,
          "creationDate": "2026-05-18T14:54:55.478Z",
          "dateStart": "2026-05-18T17:00:44.244Z",
          "dateRealEnd": "2026-05-20T16:36:45.828Z",
          "dateRealStart": "2026-05-18T15:27:37.328Z",
          "participants": [
            {
              "name": "SOY EL PARTICIPANTE",
              "surname": "TEST"
            }
          ],
          "statute": {
            "title": "TEST",
            "statuteId": 4685
          }
        },
        {
          "id": 64767,
          "name": "test creación cita",
          "state": 60,
          "councilType": 5,
          "creationDate": "2026-04-23T15:16:10.085Z",
          "dateStart": "2026-05-18T15:00:00.000Z",
          "dateRealEnd": "2026-05-18T09:48:53.988Z",
          "dateRealStart": "2026-05-18T09:48:37.215Z",
          "participants": [
            {
              "name": "Name of participant",
              "surname": "Surname of participant"
            },
            {
              "name": "Name of participant",
              "surname": "Surname of participant"
            },
            {
              "name": "Name of participant",
              "surname": "Surname of participant"
            },
            {
              "name": "Name of participant",
              "surname": "Surname of participant"
            }
          ],
          "statute": {
            "title": "TEST",
            "statuteId": 4685
          }
        },
        {
          "id": 64817,
          "name": "test creación cita",
          "state": 60,
          "councilType": 5,
          "creationDate": "2026-05-06T10:28:28.123Z",
          "dateStart": "2026-05-16T15:00:00.000Z",
          "dateRealEnd": "2026-05-18T09:54:30.864Z",
          "dateRealStart": "2026-05-18T09:49:51.227Z",
          "participants": [
            {
              "name": "Name of participant",
              "surname": "Surname of participant"
            }
          ],
          "statute": {
            "title": "TEST",
            "statuteId": 4685
          }
        },
        {
          "id": 64706,
          "name": "TEST",
          "state": 60,
          "councilType": 5,
          "creationDate": "2026-04-21T07:30:28.381Z",
          "dateStart": "2026-04-21T08:00:47.339Z",
          "dateRealEnd": "2026-04-21T07:58:30.345Z",
          "dateRealStart": "2026-04-21T07:31:23.016Z",
          "participants": [
            {
              "name": "SOY EL PARTICIPANTE",
              "surname": "TEST"
            }
          ],
          "statute": {
            "title": "TEST",
            "statuteId": 4685
          }
        },
        {
          "id": 64692,
          "name": "TEST",
          "state": 60,
          "councilType": 5,
          "creationDate": "2026-04-17T10:00:01.636Z",
          "dateStart": "2026-04-17T10:30:51.581Z",
          "dateRealEnd": "2026-04-17T10:01:37.188Z",
          "dateRealStart": "2026-04-17T10:00:40.635Z",
          "participants": [
            {
              "name": "SOY EL PARTICIPANTE",
              "surname": "TEST"
            }
          ],
          "statute": {
            "title": "TEST",
            "statuteId": 4685
          }
        },
        {
          "id": 64690,
          "name": "TEST",
          "state": 60,
          "councilType": 5,
          "creationDate": "2026-04-17T09:35:42.743Z",
          "dateStart": "2026-04-17T10:00:27.195Z",
          "dateRealEnd": "2026-04-17T09:37:51.758Z",
          "dateRealStart": "2026-04-17T09:36:34.266Z",
          "participants": [
            {
              "name": "SOY EL PARTICIPANTE",
              "surname": "TEST"
            }
          ],
          "statute": {
            "title": "TEST",
            "statuteId": 4685
          }
        },
        {
          "id": 64687,
          "name": "TEST",
          "state": 60,
          "councilType": 5,
          "creationDate": "2026-04-17T07:53:05.205Z",
          "dateStart": "2026-04-17T08:00:40.436Z",
          "dateRealEnd": "2026-04-17T08:33:45.051Z",
          "dateRealStart": "2026-04-17T08:33:37.537Z",
          "participants": [
            {
              "name": "SOY EL PARTICIPANTE",
              "surname": "TEST"
            }
          ],
          "statute": {
            "title": "TEST",
            "statuteId": 4685
          }
        }
      ],
      "total": 7
    }
  }
}
```

**SDK Code**

```python Appointments
import requests

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

payload = {
    "query": "query Councils(
    $companyId: Int
	$state: [Int]
    $externalId: String
	$options: OptionsInput
	$fromDate: String,
    $toDate: String
) {
    councils (
            companyId: $companyId
            companyExternalId: $companyExternalId
            state: $state
            externalId: $externalId
            options: $options
            fromDate: $fromDate,
            toDate: $toDate
    ){
        list {
            id
            name
            observations
            state
            councilType
            creationDate
            dateStart
            dateRealEnd
            dateRealStart
            participants {
                name
                surname
            }
            statute {
                    id
                    title
            }
        }
        total
    }
}",
    "variables": {
        "companyId": 12345,
        "fromDate": "2026-05-17T00:00Z",
        "toDate": "2026-05-19T00:00Z",
        "state": [60],
        "externalId": "",
        "councilTypes": [5, 6, 7]
    }
}
headers = {
    "x-jwt-token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Appointments
const url = 'https://api.ovac.pre.councilbox.com/graphql/councils';
const options = {
  method: 'POST',
  headers: {'x-jwt-token': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"query":"query Councils(\r\n    $companyId: Int\r\n\t$state: [Int]\r\n    $externalId: String\r\n\t$options: OptionsInput\r\n\t$fromDate: String,\r\n    $toDate: String\r\n) {\r\n    councils (\r\n            companyId: $companyId\r\n            companyExternalId: $companyExternalId\r\n            state: $state\r\n            externalId: $externalId\r\n            options: $options\r\n            fromDate: $fromDate,\r\n            toDate: $toDate\r\n    ){\r\n        list {\r\n            id\r\n            name\r\n            observations\r\n            state\r\n            councilType\r\n            creationDate\r\n            dateStart\r\n            dateRealEnd\r\n            dateRealStart\r\n            participants {\r\n                name\r\n                surname\r\n            }\r\n            statute {\r\n                    id\r\n                    title\r\n            }\r\n        }\r\n        total\r\n    }\r\n}","variables":{"companyId":12345,"fromDate":"2026-05-17T00:00Z","toDate":"2026-05-19T00:00Z","state":[60],"externalId":"","councilTypes":[5,6,7]}}'
};

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

```go Appointments
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"query\": \"query Councils(\\r\\n    $companyId: Int\\r\\n\\t$state: [Int]\\r\\n    $externalId: String\\r\\n\\t$options: OptionsInput\\r\\n\\t$fromDate: String,\\r\\n    $toDate: String\\r\\n) {\\r\\n    councils (\\r\\n            companyId: $companyId\\r\\n            companyExternalId: $companyExternalId\\r\\n            state: $state\\r\\n            externalId: $externalId\\r\\n            options: $options\\r\\n            fromDate: $fromDate,\\r\\n            toDate: $toDate\\r\\n    ){\\r\\n        list {\\r\\n            id\\r\\n            name\\r\\n            observations\\r\\n            state\\r\\n            councilType\\r\\n            creationDate\\r\\n            dateStart\\r\\n            dateRealEnd\\r\\n            dateRealStart\\r\\n            participants {\\r\\n                name\\r\\n                surname\\r\\n            }\\r\\n            statute {\\r\\n                    id\\r\\n                    title\\r\\n            }\\r\\n        }\\r\\n        total\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"companyId\": 12345,\n    \"fromDate\": \"2026-05-17T00:00Z\",\n    \"toDate\": \"2026-05-19T00:00Z\",\n    \"state\": [\n      60\n    ],\n    \"externalId\": \"\",\n    \"councilTypes\": [\n      5,\n      6,\n      7\n    ]\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 Appointments
require 'uri'
require 'net/http'

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

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\": \"query Councils(\\r\\n    $companyId: Int\\r\\n\\t$state: [Int]\\r\\n    $externalId: String\\r\\n\\t$options: OptionsInput\\r\\n\\t$fromDate: String,\\r\\n    $toDate: String\\r\\n) {\\r\\n    councils (\\r\\n            companyId: $companyId\\r\\n            companyExternalId: $companyExternalId\\r\\n            state: $state\\r\\n            externalId: $externalId\\r\\n            options: $options\\r\\n            fromDate: $fromDate,\\r\\n            toDate: $toDate\\r\\n    ){\\r\\n        list {\\r\\n            id\\r\\n            name\\r\\n            observations\\r\\n            state\\r\\n            councilType\\r\\n            creationDate\\r\\n            dateStart\\r\\n            dateRealEnd\\r\\n            dateRealStart\\r\\n            participants {\\r\\n                name\\r\\n                surname\\r\\n            }\\r\\n            statute {\\r\\n                    id\\r\\n                    title\\r\\n            }\\r\\n        }\\r\\n        total\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"companyId\": 12345,\n    \"fromDate\": \"2026-05-17T00:00Z\",\n    \"toDate\": \"2026-05-19T00:00Z\",\n    \"state\": [\n      60\n    ],\n    \"externalId\": \"\",\n    \"councilTypes\": [\n      5,\n      6,\n      7\n    ]\n  }\n}"

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

```java Appointments
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.ovac.pre.councilbox.com/graphql/councils")
  .header("x-jwt-token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"query Councils(\\r\\n    $companyId: Int\\r\\n\\t$state: [Int]\\r\\n    $externalId: String\\r\\n\\t$options: OptionsInput\\r\\n\\t$fromDate: String,\\r\\n    $toDate: String\\r\\n) {\\r\\n    councils (\\r\\n            companyId: $companyId\\r\\n            companyExternalId: $companyExternalId\\r\\n            state: $state\\r\\n            externalId: $externalId\\r\\n            options: $options\\r\\n            fromDate: $fromDate,\\r\\n            toDate: $toDate\\r\\n    ){\\r\\n        list {\\r\\n            id\\r\\n            name\\r\\n            observations\\r\\n            state\\r\\n            councilType\\r\\n            creationDate\\r\\n            dateStart\\r\\n            dateRealEnd\\r\\n            dateRealStart\\r\\n            participants {\\r\\n                name\\r\\n                surname\\r\\n            }\\r\\n            statute {\\r\\n                    id\\r\\n                    title\\r\\n            }\\r\\n        }\\r\\n        total\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"companyId\": 12345,\n    \"fromDate\": \"2026-05-17T00:00Z\",\n    \"toDate\": \"2026-05-19T00:00Z\",\n    \"state\": [\n      60\n    ],\n    \"externalId\": \"\",\n    \"councilTypes\": [\n      5,\n      6,\n      7\n    ]\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ovac.pre.councilbox.com/graphql/councils', [
  'body' => '{
  "query": "query Councils(\\r\\n    $companyId: Int\\r\\n\\t$state: [Int]\\r\\n    $externalId: String\\r\\n\\t$options: OptionsInput\\r\\n\\t$fromDate: String,\\r\\n    $toDate: String\\r\\n) {\\r\\n    councils (\\r\\n            companyId: $companyId\\r\\n            companyExternalId: $companyExternalId\\r\\n            state: $state\\r\\n            externalId: $externalId\\r\\n            options: $options\\r\\n            fromDate: $fromDate,\\r\\n            toDate: $toDate\\r\\n    ){\\r\\n        list {\\r\\n            id\\r\\n            name\\r\\n            observations\\r\\n            state\\r\\n            councilType\\r\\n            creationDate\\r\\n            dateStart\\r\\n            dateRealEnd\\r\\n            dateRealStart\\r\\n            participants {\\r\\n                name\\r\\n                surname\\r\\n            }\\r\\n            statute {\\r\\n                    id\\r\\n                    title\\r\\n            }\\r\\n        }\\r\\n        total\\r\\n    }\\r\\n}",
  "variables": {
    "companyId": 12345,
    "fromDate": "2026-05-17T00:00Z",
    "toDate": "2026-05-19T00:00Z",
    "state": [
      60
    ],
    "externalId": "",
    "councilTypes": [
      5,
      6,
      7
    ]
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-jwt-token' => '<apiKey>',
  ],
]);

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

```csharp Appointments
using RestSharp;

var client = new RestClient("https://api.ovac.pre.councilbox.com/graphql/councils");
var request = new RestRequest(Method.POST);
request.AddHeader("x-jwt-token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"query\": \"query Councils(\\r\\n    $companyId: Int\\r\\n\\t$state: [Int]\\r\\n    $externalId: String\\r\\n\\t$options: OptionsInput\\r\\n\\t$fromDate: String,\\r\\n    $toDate: String\\r\\n) {\\r\\n    councils (\\r\\n            companyId: $companyId\\r\\n            companyExternalId: $companyExternalId\\r\\n            state: $state\\r\\n            externalId: $externalId\\r\\n            options: $options\\r\\n            fromDate: $fromDate,\\r\\n            toDate: $toDate\\r\\n    ){\\r\\n        list {\\r\\n            id\\r\\n            name\\r\\n            observations\\r\\n            state\\r\\n            councilType\\r\\n            creationDate\\r\\n            dateStart\\r\\n            dateRealEnd\\r\\n            dateRealStart\\r\\n            participants {\\r\\n                name\\r\\n                surname\\r\\n            }\\r\\n            statute {\\r\\n                    id\\r\\n                    title\\r\\n            }\\r\\n        }\\r\\n        total\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"companyId\": 12345,\n    \"fromDate\": \"2026-05-17T00:00Z\",\n    \"toDate\": \"2026-05-19T00:00Z\",\n    \"state\": [\n      60\n    ],\n    \"externalId\": \"\",\n    \"councilTypes\": [\n      5,\n      6,\n      7\n    ]\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Appointments
import Foundation

let headers = [
  "x-jwt-token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "query": "query Councils(
    $companyId: Int
	$state: [Int]
    $externalId: String
	$options: OptionsInput
	$fromDate: String,
    $toDate: String
) {
    councils (
            companyId: $companyId
            companyExternalId: $companyExternalId
            state: $state
            externalId: $externalId
            options: $options
            fromDate: $fromDate,
            toDate: $toDate
    ){
        list {
            id
            name
            observations
            state
            councilType
            creationDate
            dateStart
            dateRealEnd
            dateRealStart
            participants {
                name
                surname
            }
            statute {
                    id
                    title
            }
        }
        total
    }
}",
  "variables": [
    "companyId": 12345,
    "fromDate": "2026-05-17T00:00Z",
    "toDate": "2026-05-19T00:00Z",
    "state": [60],
    "externalId": "",
    "councilTypes": [5, 6, 7]
  ]
] as [String : Any]

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

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