Appointment Documentation

View as Markdown
# 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`.

Authentication

x-jwt-tokenstring
JWT token obtained from Login.

Request

This endpoint expects an object.
querystringRequired
GraphQL operation
variablesobjectOptional
GraphQL variables

Response

Successful response. GraphQL business errors may be returned inside the JSON errors field while transport status remains HTTP 200.