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

# Appointment Documentation

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

# Appointment Documentation (`query`)

Este método permite recuperar de forma centralizada todos los recursos binarios y archivos digitales asociados a una cita a partir de su identificador único (`id`). La respuesta consolida en una sola llamada las grabaciones de videoatención, los documentos intercambiados entre las partes, las capturas de pantalla tomadas durante la sesión y los archivos adjuntos vinculados a cada punto de la agenda.

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

|  | Descripción | Requerido | Tipo |
| --- | --- | --- | --- |
| id | Identificador numérico único de la cita en la plataforma OVAC. | SI | Integer |

### Campos de Respuesta (Payload)

La consulta agrupa los elementos multimedia y documentales en cuatro nodos principales bajo el objeto raíz `council`:

| Parámetro | Descripción | Tipo |
| --- | --- | --- |
| data | Información del objeto data | Object |
| data.council | Información de la cita | Object |
| data.council.id | Identificador único de la cita | Integer |
| data.council.recordings | Datos acerca de la grabación o grabaciones | Array |
| data.council.recordings\[\].duration | Duración, en segundos | String |
| data.council.recordings\[\].id | Identificador de la grabación | String |
| data.council.recordings\[\].createdAt | Fecha de inicio de la grabación | String |
| data.council.recordings\[\].size | Tamaño del binario en bytes | String |
| data.council.recordings\[\].hash | Identificación hash del archivo | String |
| data.council.recordings\[\].finishDate | Fecha de finalización | String |
| data.council.recordings\[\].downloadUrl | Enlace de descarga del vídeo, es necesario emplear cabecera x-jwt-token: {{token}} para descargar vídeo | String |
| data.council.documents | Conjunto de datos de los documentos | Array |
| data.council.documents\[\].id | identificador único del documento | Integer |
| data.council.documents\[\].title | Título de la carpeta contenedora de la documentación | String |
| data.council.documents\[\].attachments | Conjunto de binarios adjuntos |  |
| data.council.documents\[\].attachments\[\].id | Identificador del binario | Integer |
| data.council.documents\[\].attachments\[\].hash | Hash del binario en MD5 | String |
| data.council.documents\[\].attachments\[\].uploadedBy | Indica el participante que ha subido el documento | Object |
| data.council.documents\[\].attachments\[\].uploadedBy.id | Identificador el paticipante | Integer |
| data.council.documents\[\].attachments\[\].uploadedBy.name | Nombre del participante | String |
| data.council.documents\[\].attachments\[\].uploadedBy.surname | Apellido del participante | String |
| data.council.documents\[\].attachments\[\].uploadedBy.email | Email del participante | String |
| data.council.documents\[\].attachments\[\].uploadedByAdmin | Objeto del usuario que ha subido el adjunto | Object |
| data.council.documents\[\].attachments\[\].uploadedByAdmin.id | Identificador del usuario | Integer |
| data.council.documents\[\].attachments\[\].uploadedByAdmin.name | Nombre del usuario | String |
| data.council.documents\[\].attachments\[\].uploadedByAdmin.surname | Apellido del usuario | String |
| data.council.documents\[\].attachments\[\].uploadedByAdmin.email | email del usuario | String |
| data.council.documents\[\].attachments\[\].filename | Nombre del documento y formato | String |
| data.council.documents\[\].attachments\[\].filetype | Tipo de archivo | String |
| data.council.documents\[\].attachments\[\].filesize | Tamaño del archivo en bytes | String |
| data.council.documents\[\].attachments\[\].downloadUrl | Url de descarga del binario | String |
| data.council.videoCaptures | Array de capturas de frame realizadas durante la videoatención | Array |
| data.council.videoCaptures\[\].participant | Array de participantes | Object |
| data.council.videoCaptures\[\].participant.name | Nombre | String |
| data.council.videoCaptures\[\].participant.surname | Apellido | String |
| data.council.videoCaptures\[\].participant.id | Identificador del participante | Integer |
| data.council.videoCaptures\[\].participant.email | email del participante | String |
| data.council.videoCaptures\[\].id | Identificador de la videocaptura | Integer |
| data.council.videoCaptures\[\].name | Nombre de la captura | String |
| data.council.videoCaptures\[\].date | fecha en la que se ha realizado la captura con formato UTC | String |
| data.council.videoCaptures\[\].downloadUrl | Url de descarga de la captura | String |
| data.council.agendas | Puntos a realizar durante la cita | Array |
| data.council.agendas\[\].id | Identificador único del punto | Integer |
| data.council.agendas\[\].orderIndex | Orden en la que están generados para su lanzamiento | Integer |
| data.council.agendas\[\].name | Nombre del punto | String |
| data.council.agendas\[\].attachments | Array de los pasos dentro de la videocita | Array |
| data.council.agendas\[\].attachments\[\].user | Usuario que sube el documento | Object |
| data.council.agendas\[\].attachments\[\].user.id | identificador del usuario que abre el punto | Integer |
| data.council.agendas\[\].attachments\[\].user.name | Nombre del usuario que abre el punto | String |
| data.council.agendas\[\].attachments\[\].user.surname | Apellido del usuario que abre el punto | String |
| data.council.agendas\[\].attachments\[\].user.email | email del usuario que abre el punto | String |
| data.council.agendas\[\].attachments\[\].id | Identificador del binario adjunto | Integer |
| data.council.agendas\[\].attachments\[\].hash | Hash MD5 del binario | String |
| data.council.agendas\[\].attachments\[\].filename | Nombre y formato del binario | String |
| data.council.agendas\[\].attachments\[\].filetype | Tipo de archivo | String |
| data.council.agendas\[\].attachments\[\].filesize | Tamaño del archivo en bytes | String |
| data.council.agendas\[\].attachments\[\].downloadUrl | Url de descarga del binario | String |

#### 1\. Grabaciones de la Sesión (`recordings`)

Colección de los archivos de vídeo y audio generados durante el encuentro.

- **`id`** (`String`): Identificador único de la grabación.
    
- **`duration`** (`String`): Duración total de la grabación expresada en segundos.
    
- **`size`** (`String`): Tamaño del archivo binario en bytes.
    
- **`hash`** (`String`): Identificación hash criptográfica del archivo para verificación de integridad.
    
- **`createdAt`** / **`finishDate`** (`String`): Marcas de tiempo de inicio y fin de la grabación (formato Unix Timestamp / UTC).
    
- **`downloadUrl`** (`String`): Enlace de descarga directa del vídeo. _Requiere incluir la cabecera_ `_x-jwt-token_` _autorizada._
    

#### 2\. Gestión Documental General (`documents`)

Repositorio de documentos compartidos o aportados de forma global en la cita.

- **`id`** (`Int`): Identificador único del contenedor de documentos.
    
- **`title`** (`String`): Título o nombre de la carpeta/categoría contenedora (ej. "Documentación intercambiada").
    
- **`attachments`** (`Array`): Colección de archivos binarios específicos. Cada elemento incluye:
    
    - `id` (`Int`), `filename` (`String`), `filetype` (`String`), `filesize` (`String`), `hash` (`String`): Metadatos completos del archivo.
        
    - `downloadUrl` (`String`): URL segura para la descarga del archivo binario.
        
    - `uploadedBy` (`Object`): Datos del ciudadano/participante si este subió el archivo (`id`, `name`, `surname`, `email`). De lo contrario, devuelve `null`.
        
    - `uploadedByAdmin` (`Object`): Datos del profesional o gestor de la entidad si fue quien aportó el documento.
        

#### 3\. Capturas de Vídeo (`videoCaptures`)

Fotogramas congelados (historias o capturas de pantalla) tomados por el agente durante la sesión de videoatención como prueba visual.

- **`id`** (`Int`): Identificador único de la videocaptura.
    
- **`name`** (`String`): Nombre asignado al archivo de la captura.
    
- **`date`** (`String`): Fecha y hora en formato UTC en la que se realizó la captura.
    
- **`downloadUrl`** (`String`): Enlace directo de descarga de la imagen.
    
- **`participant`** (`Object`): Datos del participante del cual se extrajo o vinculó el frame visual (`id`, `name`, `surname`, `email`).
    

#### 4\. Adjuntos de los Puntos de la Agenda (`agendas`)

Documentos de trabajo vinculados estrictamente a flujos del trámite (como PDFs dinámicos o plantillas de firma).

- **`id`** (`Int`): Identificador único del punto de la agenda.
    
- **`orderIndex`** (`Int`): Índice que dictamina el orden cronológico del paso dentro de la cita.
    
- **`name`** (`String`): Nombre del hito o paso (ej. "PDF Interactivo").
    
- **`attachments`** (`Array`): Colección de archivos requeridos o resultantes de ese paso en particular. Incluye metadatos idénticos a los del nodo `documents` y un objeto `user` que detalla el operador que inició o cargó dicho punto.
    

## Ejemplos de Código y Peticiones

### 1\. Consulta GraphQL

``` graphql
query AppointmentDocuments($id: Int!) {
    council(id: $id) {
        id
        recordings {
            duration
            id
            createdAt
            size
            hash
            finishDate
            downloadUrl
        }
        documents {
            id
            title
            attachments {
                id
                hash
                uploadedBy {
                    id
                    name
                    surname
                    email
                }
                uploadedByAdmin {
                    id
                    name
                    surname
                    email
                }
                filename
                filetype
                filesize
                downloadUrl
            }
        }
        videoCaptures {
            participant {
                name
                surname
                id
                email
            }
            id
            name
            date
            downloadUrl
        }
        agendas {
            id
            orderIndex
            name
            attachments {
                user {
                    id
                    name
                    surname
                    email
                }
                id
                hash
                filename
                filetype
                filesize
                downloadUrl
            }
        }
    }
}

 ```

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

``` json
{
    "id": 64706
}

 ```

### 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 AppointmentDocuments($id: Int!){ council(id: $id){ id recordings { duration id createdAt size hash finishDate downloadUrl } documents { id title attachments { id hash uploadedBy { id name surname email } uploadedByAdmin { id name surname email } filename filetype filesize downloadUrl } } videoCaptures { participant { name surname id email } id name date downloadUrl } agendas { id orderIndex name attachments { user { id name surname email } id hash filename filetype filesize downloadUrl } } } }","variables":{"id":64706}}'

 ```

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

``` json
{
    "data": {
        "council": {
            "id": 64706,
            "recordings": [
                {
                    "duration": "0",
                    "id": "64706-69e7279ca146c77d133a40e5",
                    "createdAt": "1776756677334",
                    "size": "0",
                    "hash": null,
                    "finishDate": "0",
                    "downloadUrl": "https://api.ovac.pre.councilbox.com/api/recording/64706-69e7279ca146c77d133a40e5"
                }
            ],
            "documents": [
                {
                    "id": 62463,
                    "title": "Documentación intercambiada",
                    "attachments": []
                }
            ],
            "videoCaptures": [],
            "agendas": [
                {
                    "id": 88520,
                    "orderIndex": 2,
                    "name": "Escaneo de documentación",
                    "attachments": []
                },
                {
                    "id": 88519,
                    "orderIndex": 3,
                    "name": "PDF Interactivo",
                    "attachments": [
                        {
                            "user": {
                                "id": 3477,
                                "name": "API",
                                "surname": "PROFESIONAL",
                                "email": "alejandro.maneiro+apiprof@councilbox.com"
                            },
                            "id": 42106,
                            "hash": "f8784be80a0058f269317ca10daa24a3",
                            "filename": "formulario_interactivo.pdf",
                            "filetype": "application/pdf",
                            "filesize": "3885",
                            "downloadUrl": "https://api.ovac.pre.councilbox.com/agendaAttachment/42106"
                        }
                    ]
                }
            ]
        }
    }
}

 ```

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

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: ovac
  version: 1.0.0
paths:
  /graphql/appointmentdocuments:
    post:
      operationId: appointment-documents
      summary: Appointment Documentation
      description: >
        # Appointment Documentation (`query`)


        Este método permite recuperar de forma centralizada todos los recursos
        binarios y archivos digitales asociados a una cita a partir de su
        identificador único (`id`). La respuesta consolida en una sola llamada
        las grabaciones de videoatención, los documentos intercambiados entre
        las partes, las capturas de pantalla tomadas durante la sesión y los
        archivos adjuntos vinculados a cada punto de la agenda.


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


        |  | Descripción | Requerido | Tipo |

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

        | id | Identificador numérico único de la cita en la plataforma OVAC. |
        SI | Integer |


        ### Campos de Respuesta (Payload)


        La consulta agrupa los elementos multimedia y documentales en cuatro
        nodos principales bajo el objeto raíz `council`:


        | Parámetro | Descripción | Tipo |

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

        | data | Información del objeto data | Object |

        | data.council | Información de la cita | Object |

        | data.council.id | Identificador único de la cita | Integer |

        | data.council.recordings | Datos acerca de la grabación o grabaciones |
        Array |

        | data.council.recordings\[\].duration | Duración, en segundos | String
        |

        | data.council.recordings\[\].id | Identificador de la grabación |
        String |

        | data.council.recordings\[\].createdAt | Fecha de inicio de la
        grabación | String |

        | data.council.recordings\[\].size | Tamaño del binario en bytes |
        String |

        | data.council.recordings\[\].hash | Identificación hash del archivo |
        String |

        | data.council.recordings\[\].finishDate | Fecha de finalización |
        String |

        | data.council.recordings\[\].downloadUrl | Enlace de descarga del
        vídeo, es necesario emplear cabecera x-jwt-token: {{token}} para
        descargar vídeo | String |

        | data.council.documents | Conjunto de datos de los documentos | Array |

        | data.council.documents\[\].id | identificador único del documento |
        Integer |

        | data.council.documents\[\].title | Título de la carpeta contenedora de
        la documentación | String |

        | data.council.documents\[\].attachments | Conjunto de binarios adjuntos
        |  |

        | data.council.documents\[\].attachments\[\].id | Identificador del
        binario | Integer |

        | data.council.documents\[\].attachments\[\].hash | Hash del binario en
        MD5 | String |

        | data.council.documents\[\].attachments\[\].uploadedBy | Indica el
        participante que ha subido el documento | Object |

        | data.council.documents\[\].attachments\[\].uploadedBy.id |
        Identificador el paticipante | Integer |

        | data.council.documents\[\].attachments\[\].uploadedBy.name | Nombre
        del participante | String |

        | data.council.documents\[\].attachments\[\].uploadedBy.surname |
        Apellido del participante | String |

        | data.council.documents\[\].attachments\[\].uploadedBy.email | Email
        del participante | String |

        | data.council.documents\[\].attachments\[\].uploadedByAdmin | Objeto
        del usuario que ha subido el adjunto | Object |

        | data.council.documents\[\].attachments\[\].uploadedByAdmin.id |
        Identificador del usuario | Integer |

        | data.council.documents\[\].attachments\[\].uploadedByAdmin.name |
        Nombre del usuario | String |

        | data.council.documents\[\].attachments\[\].uploadedByAdmin.surname |
        Apellido del usuario | String |

        | data.council.documents\[\].attachments\[\].uploadedByAdmin.email |
        email del usuario | String |

        | data.council.documents\[\].attachments\[\].filename | Nombre del
        documento y formato | String |

        | data.council.documents\[\].attachments\[\].filetype | Tipo de archivo
        | String |

        | data.council.documents\[\].attachments\[\].filesize | Tamaño del
        archivo en bytes | String |

        | data.council.documents\[\].attachments\[\].downloadUrl | Url de
        descarga del binario | String |

        | data.council.videoCaptures | Array de capturas de frame realizadas
        durante la videoatención | Array |

        | data.council.videoCaptures\[\].participant | Array de participantes |
        Object |

        | data.council.videoCaptures\[\].participant.name | Nombre | String |

        | data.council.videoCaptures\[\].participant.surname | Apellido | String
        |

        | data.council.videoCaptures\[\].participant.id | Identificador del
        participante | Integer |

        | data.council.videoCaptures\[\].participant.email | email del
        participante | String |

        | data.council.videoCaptures\[\].id | Identificador de la videocaptura |
        Integer |

        | data.council.videoCaptures\[\].name | Nombre de la captura | String |

        | data.council.videoCaptures\[\].date | fecha en la que se ha realizado
        la captura con formato UTC | String |

        | data.council.videoCaptures\[\].downloadUrl | Url de descarga de la
        captura | String |

        | data.council.agendas | Puntos a realizar durante la cita | Array |

        | data.council.agendas\[\].id | Identificador único del punto | Integer
        |

        | data.council.agendas\[\].orderIndex | Orden en la que están generados
        para su lanzamiento | Integer |

        | data.council.agendas\[\].name | Nombre del punto | String |

        | data.council.agendas\[\].attachments | Array de los pasos dentro de la
        videocita | Array |

        | data.council.agendas\[\].attachments\[\].user | Usuario que sube el
        documento | Object |

        | data.council.agendas\[\].attachments\[\].user.id | identificador del
        usuario que abre el punto | Integer |

        | data.council.agendas\[\].attachments\[\].user.name | Nombre del
        usuario que abre el punto | String |

        | data.council.agendas\[\].attachments\[\].user.surname | Apellido del
        usuario que abre el punto | String |

        | data.council.agendas\[\].attachments\[\].user.email | email del
        usuario que abre el punto | String |

        | data.council.agendas\[\].attachments\[\].id | Identificador del
        binario adjunto | Integer |

        | data.council.agendas\[\].attachments\[\].hash | Hash MD5 del binario |
        String |

        | data.council.agendas\[\].attachments\[\].filename | Nombre y formato
        del binario | String |

        | data.council.agendas\[\].attachments\[\].filetype | Tipo de archivo |
        String |

        | data.council.agendas\[\].attachments\[\].filesize | Tamaño del archivo
        en bytes | String |

        | data.council.agendas\[\].attachments\[\].downloadUrl | Url de descarga
        del binario | String |


        #### 1\. Grabaciones de la Sesión (`recordings`)


        Colección de los archivos de vídeo y audio generados durante el
        encuentro.


        - **`id`** (`String`): Identificador único de la grabación.
            
        - **`duration`** (`String`): Duración total de la grabación expresada en
        segundos.
            
        - **`size`** (`String`): Tamaño del archivo binario en bytes.
            
        - **`hash`** (`String`): Identificación hash criptográfica del archivo
        para verificación de integridad.
            
        - **`createdAt`** / **`finishDate`** (`String`): Marcas de tiempo de
        inicio y fin de la grabación (formato Unix Timestamp / UTC).
            
        - **`downloadUrl`** (`String`): Enlace de descarga directa del vídeo.
        _Requiere incluir la cabecera_ `_x-jwt-token_` _autorizada._
            

        #### 2\. Gestión Documental General (`documents`)


        Repositorio de documentos compartidos o aportados de forma global en la
        cita.


        - **`id`** (`Int`): Identificador único del contenedor de documentos.
            
        - **`title`** (`String`): Título o nombre de la carpeta/categoría
        contenedora (ej. "Documentación intercambiada").
            
        - **`attachments`** (`Array`): Colección de archivos binarios
        específicos. Cada elemento incluye:
            
            - `id` (`Int`), `filename` (`String`), `filetype` (`String`), `filesize` (`String`), `hash` (`String`): Metadatos completos del archivo.
                
            - `downloadUrl` (`String`): URL segura para la descarga del archivo binario.
                
            - `uploadedBy` (`Object`): Datos del ciudadano/participante si este subió el archivo (`id`, `name`, `surname`, `email`). De lo contrario, devuelve `null`.
                
            - `uploadedByAdmin` (`Object`): Datos del profesional o gestor de la entidad si fue quien aportó el documento.
                

        #### 3\. Capturas de Vídeo (`videoCaptures`)


        Fotogramas congelados (historias o capturas de pantalla) tomados por el
        agente durante la sesión de videoatención como prueba visual.


        - **`id`** (`Int`): Identificador único de la videocaptura.
            
        - **`name`** (`String`): Nombre asignado al archivo de la captura.
            
        - **`date`** (`String`): Fecha y hora en formato UTC en la que se
        realizó la captura.
            
        - **`downloadUrl`** (`String`): Enlace directo de descarga de la imagen.
            
        - **`participant`** (`Object`): Datos del participante del cual se
        extrajo o vinculó el frame visual (`id`, `name`, `surname`, `email`).
            

        #### 4\. Adjuntos de los Puntos de la Agenda (`agendas`)


        Documentos de trabajo vinculados estrictamente a flujos del trámite
        (como PDFs dinámicos o plantillas de firma).


        - **`id`** (`Int`): Identificador único del punto de la agenda.
            
        - **`orderIndex`** (`Int`): Índice que dictamina el orden cronológico
        del paso dentro de la cita.
            
        - **`name`** (`String`): Nombre del hito o paso (ej. "PDF Interactivo").
            
        - **`attachments`** (`Array`): Colección de archivos requeridos o
        resultantes de ese paso en particular. Incluye metadatos idénticos a los
        del nodo `documents` y un objeto `user` que detalla el operador que
        inició o cargó dicho punto.
            

        ## Ejemplos de Código y Peticiones


        ### 1\. Consulta GraphQL


        ``` graphql

        query AppointmentDocuments($id: Int!) {
            council(id: $id) {
                id
                recordings {
                    duration
                    id
                    createdAt
                    size
                    hash
                    finishDate
                    downloadUrl
                }
                documents {
                    id
                    title
                    attachments {
                        id
                        hash
                        uploadedBy {
                            id
                            name
                            surname
                            email
                        }
                        uploadedByAdmin {
                            id
                            name
                            surname
                            email
                        }
                        filename
                        filetype
                        filesize
                        downloadUrl
                    }
                }
                videoCaptures {
                    participant {
                        name
                        surname
                        id
                        email
                    }
                    id
                    name
                    date
                    downloadUrl
                }
                agendas {
                    id
                    orderIndex
                    name
                    attachments {
                        user {
                            id
                            name
                            surname
                            email
                        }
                        id
                        hash
                        filename
                        filetype
                        filesize
                        downloadUrl
                    }
                }
            }
        }

         ```

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


        ``` json

        {
            "id": 64706
        }

         ```

        ### 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 AppointmentDocuments($id: Int!){ council(id:
        $id){ id recordings { duration id createdAt size hash finishDate
        downloadUrl } documents { id title attachments { id hash uploadedBy { id
        name surname email } uploadedByAdmin { id name surname email } filename
        filetype filesize downloadUrl } } videoCaptures { participant { name
        surname id email } id name date downloadUrl } agendas { id orderIndex
        name attachments { user { id name surname email } id hash filename
        filetype filesize downloadUrl } } } }","variables":{"id":64706}}'

         ```

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


        ``` json

        {
            "data": {
                "council": {
                    "id": 64706,
                    "recordings": [
                        {
                            "duration": "0",
                            "id": "64706-69e7279ca146c77d133a40e5",
                            "createdAt": "1776756677334",
                            "size": "0",
                            "hash": null,
                            "finishDate": "0",
                            "downloadUrl": "https://api.ovac.pre.councilbox.com/api/recording/64706-69e7279ca146c77d133a40e5"
                        }
                    ],
                    "documents": [
                        {
                            "id": 62463,
                            "title": "Documentación intercambiada",
                            "attachments": []
                        }
                    ],
                    "videoCaptures": [],
                    "agendas": [
                        {
                            "id": 88520,
                            "orderIndex": 2,
                            "name": "Escaneo de documentación",
                            "attachments": []
                        },
                        {
                            "id": 88519,
                            "orderIndex": 3,
                            "name": "PDF Interactivo",
                            "attachments": [
                                {
                                    "user": {
                                        "id": 3477,
                                        "name": "API",
                                        "surname": "PROFESIONAL",
                                        "email": "alejandro.maneiro+apiprof@councilbox.com"
                                    },
                                    "id": 42106,
                                    "hash": "f8784be80a0058f269317ca10daa24a3",
                                    "filename": "formulario_interactivo.pdf",
                                    "filetype": "application/pdf",
                                    "filesize": "3885",
                                    "downloadUrl": "https://api.ovac.pre.councilbox.com/agendaAttachment/42106"
                                }
                            ]
                        }
                    ]
                }
            }
        }

         ```

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

```

## SDK Code Examples

```python Appointment Documentation
import requests

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

payload = {
    "query": "    query AppointmentDocuments($id: Int!){
        council(id: $id){
            id
            recordings {
                duration
                id
                createdAt
                size
                hash
                finishDate
                downloadUrl
                hash
            }
            documents {
                id
                title
                attachments {
                    id
                    hash
                    uploadedBy {
                        id
                        name
                        surname
                        email
                    }
                    uploadedByAdmin {
                        id
                        name
                        surname
                        email
                    }
                    filename
                    filetype
                    filesize
                    downloadUrl
                }
            }
            videoCaptures {
                participant {
                    name
                    surname
                    id
                    email
                }
                id
                name
                date
                downloadUrl
            }
            agendas {
                id
                orderIndex
                name
                attachments {
                    user {
                        id
                        name
                        surname
                        email
                    }
                    id
                    hash
                    filename
                    filetype
                    filesize
                    downloadUrl
                }
            }
        }
    }",
    "variables": { "id": 12345 }
}
headers = {
    "x-jwt-token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Appointment Documentation
const url = 'https://api.ovac.pre.councilbox.com/graphql/appointmentdocuments';
const options = {
  method: 'POST',
  headers: {'x-jwt-token': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"query":"    query AppointmentDocuments($id: Int!){\r\n        council(id: $id){\r\n            id\r\n            recordings {\r\n                duration\r\n                id\r\n                createdAt\r\n                size\r\n                hash\r\n                finishDate\r\n                downloadUrl\r\n                hash\r\n            }\r\n            documents {\r\n                id\r\n                title\r\n                attachments {\r\n                    id\r\n                    hash\r\n                    uploadedBy {\r\n                        id\r\n                        name\r\n                        surname\r\n                        email\r\n                    }\r\n                    uploadedByAdmin {\r\n                        id\r\n                        name\r\n                        surname\r\n                        email\r\n                    }\r\n                    filename\r\n                    filetype\r\n                    filesize\r\n                    downloadUrl\r\n                }\r\n            }\r\n            videoCaptures {\r\n                participant {\r\n                    name\r\n                    surname\r\n                    id\r\n                    email\r\n                }\r\n                id\r\n                name\r\n                date\r\n                downloadUrl\r\n            }\r\n            agendas {\r\n                id\r\n                orderIndex\r\n                name\r\n                attachments {\r\n                    user {\r\n                        id\r\n                        name\r\n                        surname\r\n                        email\r\n                    }\r\n                    id\r\n                    hash\r\n                    filename\r\n                    filetype\r\n                    filesize\r\n                    downloadUrl\r\n                }\r\n            }\r\n        }\r\n    }","variables":{"id":12345}}'
};

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

```go Appointment Documentation
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"query\": \"    query AppointmentDocuments($id: Int!){\\r\\n        council(id: $id){\\r\\n            id\\r\\n            recordings {\\r\\n                duration\\r\\n                id\\r\\n                createdAt\\r\\n                size\\r\\n                hash\\r\\n                finishDate\\r\\n                downloadUrl\\r\\n                hash\\r\\n            }\\r\\n            documents {\\r\\n                id\\r\\n                title\\r\\n                attachments {\\r\\n                    id\\r\\n                    hash\\r\\n                    uploadedBy {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    uploadedByAdmin {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    filename\\r\\n                    filetype\\r\\n                    filesize\\r\\n                    downloadUrl\\r\\n                }\\r\\n            }\\r\\n            videoCaptures {\\r\\n                participant {\\r\\n                    name\\r\\n                    surname\\r\\n                    id\\r\\n                    email\\r\\n                }\\r\\n                id\\r\\n                name\\r\\n                date\\r\\n                downloadUrl\\r\\n            }\\r\\n            agendas {\\r\\n                id\\r\\n                orderIndex\\r\\n                name\\r\\n                attachments {\\r\\n                    user {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    id\\r\\n                    hash\\r\\n                    filename\\r\\n                    filetype\\r\\n                    filesize\\r\\n                    downloadUrl\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\",\n  \"variables\": {\n    \"id\": 12345\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 Appointment Documentation
require 'uri'
require 'net/http'

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

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 AppointmentDocuments($id: Int!){\\r\\n        council(id: $id){\\r\\n            id\\r\\n            recordings {\\r\\n                duration\\r\\n                id\\r\\n                createdAt\\r\\n                size\\r\\n                hash\\r\\n                finishDate\\r\\n                downloadUrl\\r\\n                hash\\r\\n            }\\r\\n            documents {\\r\\n                id\\r\\n                title\\r\\n                attachments {\\r\\n                    id\\r\\n                    hash\\r\\n                    uploadedBy {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    uploadedByAdmin {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    filename\\r\\n                    filetype\\r\\n                    filesize\\r\\n                    downloadUrl\\r\\n                }\\r\\n            }\\r\\n            videoCaptures {\\r\\n                participant {\\r\\n                    name\\r\\n                    surname\\r\\n                    id\\r\\n                    email\\r\\n                }\\r\\n                id\\r\\n                name\\r\\n                date\\r\\n                downloadUrl\\r\\n            }\\r\\n            agendas {\\r\\n                id\\r\\n                orderIndex\\r\\n                name\\r\\n                attachments {\\r\\n                    user {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    id\\r\\n                    hash\\r\\n                    filename\\r\\n                    filetype\\r\\n                    filesize\\r\\n                    downloadUrl\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\",\n  \"variables\": {\n    \"id\": 12345\n  }\n}"

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

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

HttpResponse<String> response = Unirest.post("https://api.ovac.pre.councilbox.com/graphql/appointmentdocuments")
  .header("x-jwt-token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"    query AppointmentDocuments($id: Int!){\\r\\n        council(id: $id){\\r\\n            id\\r\\n            recordings {\\r\\n                duration\\r\\n                id\\r\\n                createdAt\\r\\n                size\\r\\n                hash\\r\\n                finishDate\\r\\n                downloadUrl\\r\\n                hash\\r\\n            }\\r\\n            documents {\\r\\n                id\\r\\n                title\\r\\n                attachments {\\r\\n                    id\\r\\n                    hash\\r\\n                    uploadedBy {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    uploadedByAdmin {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    filename\\r\\n                    filetype\\r\\n                    filesize\\r\\n                    downloadUrl\\r\\n                }\\r\\n            }\\r\\n            videoCaptures {\\r\\n                participant {\\r\\n                    name\\r\\n                    surname\\r\\n                    id\\r\\n                    email\\r\\n                }\\r\\n                id\\r\\n                name\\r\\n                date\\r\\n                downloadUrl\\r\\n            }\\r\\n            agendas {\\r\\n                id\\r\\n                orderIndex\\r\\n                name\\r\\n                attachments {\\r\\n                    user {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    id\\r\\n                    hash\\r\\n                    filename\\r\\n                    filetype\\r\\n                    filesize\\r\\n                    downloadUrl\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\",\n  \"variables\": {\n    \"id\": 12345\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ovac.pre.councilbox.com/graphql/appointmentdocuments', [
  'body' => '{
  "query": "    query AppointmentDocuments($id: Int!){\\r\\n        council(id: $id){\\r\\n            id\\r\\n            recordings {\\r\\n                duration\\r\\n                id\\r\\n                createdAt\\r\\n                size\\r\\n                hash\\r\\n                finishDate\\r\\n                downloadUrl\\r\\n                hash\\r\\n            }\\r\\n            documents {\\r\\n                id\\r\\n                title\\r\\n                attachments {\\r\\n                    id\\r\\n                    hash\\r\\n                    uploadedBy {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    uploadedByAdmin {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    filename\\r\\n                    filetype\\r\\n                    filesize\\r\\n                    downloadUrl\\r\\n                }\\r\\n            }\\r\\n            videoCaptures {\\r\\n                participant {\\r\\n                    name\\r\\n                    surname\\r\\n                    id\\r\\n                    email\\r\\n                }\\r\\n                id\\r\\n                name\\r\\n                date\\r\\n                downloadUrl\\r\\n            }\\r\\n            agendas {\\r\\n                id\\r\\n                orderIndex\\r\\n                name\\r\\n                attachments {\\r\\n                    user {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    id\\r\\n                    hash\\r\\n                    filename\\r\\n                    filetype\\r\\n                    filesize\\r\\n                    downloadUrl\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }",
  "variables": {
    "id": 12345
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-jwt-token' => '<apiKey>',
  ],
]);

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

```csharp Appointment Documentation
using RestSharp;

var client = new RestClient("https://api.ovac.pre.councilbox.com/graphql/appointmentdocuments");
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 AppointmentDocuments($id: Int!){\\r\\n        council(id: $id){\\r\\n            id\\r\\n            recordings {\\r\\n                duration\\r\\n                id\\r\\n                createdAt\\r\\n                size\\r\\n                hash\\r\\n                finishDate\\r\\n                downloadUrl\\r\\n                hash\\r\\n            }\\r\\n            documents {\\r\\n                id\\r\\n                title\\r\\n                attachments {\\r\\n                    id\\r\\n                    hash\\r\\n                    uploadedBy {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    uploadedByAdmin {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    filename\\r\\n                    filetype\\r\\n                    filesize\\r\\n                    downloadUrl\\r\\n                }\\r\\n            }\\r\\n            videoCaptures {\\r\\n                participant {\\r\\n                    name\\r\\n                    surname\\r\\n                    id\\r\\n                    email\\r\\n                }\\r\\n                id\\r\\n                name\\r\\n                date\\r\\n                downloadUrl\\r\\n            }\\r\\n            agendas {\\r\\n                id\\r\\n                orderIndex\\r\\n                name\\r\\n                attachments {\\r\\n                    user {\\r\\n                        id\\r\\n                        name\\r\\n                        surname\\r\\n                        email\\r\\n                    }\\r\\n                    id\\r\\n                    hash\\r\\n                    filename\\r\\n                    filetype\\r\\n                    filesize\\r\\n                    downloadUrl\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\",\n  \"variables\": {\n    \"id\": 12345\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Appointment Documentation
import Foundation

let headers = [
  "x-jwt-token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "query": "    query AppointmentDocuments($id: Int!){
        council(id: $id){
            id
            recordings {
                duration
                id
                createdAt
                size
                hash
                finishDate
                downloadUrl
                hash
            }
            documents {
                id
                title
                attachments {
                    id
                    hash
                    uploadedBy {
                        id
                        name
                        surname
                        email
                    }
                    uploadedByAdmin {
                        id
                        name
                        surname
                        email
                    }
                    filename
                    filetype
                    filesize
                    downloadUrl
                }
            }
            videoCaptures {
                participant {
                    name
                    surname
                    id
                    email
                }
                id
                name
                date
                downloadUrl
            }
            agendas {
                id
                orderIndex
                name
                attachments {
                    user {
                        id
                        name
                        surname
                        email
                    }
                    id
                    hash
                    filename
                    filetype
                    filesize
                    downloadUrl
                }
            }
        }
    }",
  "variables": ["id": 12345]
] as [String : Any]

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

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