Get Appointment Information

View as Markdown
# Get Appointment Information (`query`) Este método permite obtener información detallada y estructurada de una cita a partir de su identificador único (`councilId`). Devuelve el estado de la convocatoria, el canal de atención, las marcas de tiempo de control, los datos del agente asignado, los datos de los ciudadanos participantes, el trámite asociado y el desglose de los puntos de la agenda (pasos, firmas y documentación recolectada). ### Autenticación > **Tipo:** API Key** Header:** `x-jwt-token` **Ubicación:** Header HTTP_ Ejemplo:_ `x-jwt-token: eyJhbGciOiJIUzI1NiIsInR5cCI6...` ## Referencia de la API ### Parámetros de Entrada (Variables) | Parámetro | Descripción | Requerido | Tipo | | --- | --- | --- | --- | | councilId | Identificador numérico único de la cita en la plataforma. | SI | Integer | ### Campos de Respuesta (Payload) #### 1\. Datos Generales de la Cita (`council`) | Parámetro | Descripción | Tipo | | --- | --- | --- | | data | Objeto del conjunto de datos | Object | | data.council | Objeto del la cita | Object | | data.council.state | Estado de la cita: <br>\- '`-1`': Cancelada <br>\- 10: Confirmada <br>\- 20: Sala abierta <br>\- 25: Pausada <br>\- 40: Finalizada <br>\- 45: Procesando informe <br>\- 60: Completa <br>\- 65: Incompleta (no se ha realizado un paso requerido dentro del trámite propuesto) | Integer | | data.council.councilType | Tipo de cita, puede tomar los siguientes valores: <br>\- `5` -> Videoatención <br>\- `6` -> Gestión <br>\- `7` -> Presencial | Integer | | data.council.dateStart | Fecha de la cita en UTC | String | | data.council.dateRealStart | Fecha en la que se ha iniciado la cita en UTC | String | | data.council.dateEnd | Fecha de fin de la cita en UTC | String | | data.council.adminUrl | Enlace de acceso del administrador | String | | data.council.noCelebrateComment | Puede tomar estos valores: <br>'**unavailable**' -> No disponible <br>'**not_interested**' -> No interesado <br>'**procedure_already_completed**' -> Proceso ya realizado <br>'**incorrect_data**' -> Datos incorrectos <br>'**difficult_access**' -> Problemas en el acceso <br>'**incompatible_browser**' -> Navegador incompatible <br>'**others**' -> Otro motivo | String | | data.council.observations | Se almacena el detalle que introduce el agente para información previa de la cita, se muestra un pop-up y también son visibles desde el panel de la cita | String | | data.council.internalNotes | Notas internas añadidas por el usuarios, no visibles por el participante | String | | data.council.comment | Comentario, usado en citas anteriores a OVAC 7.0 <br>\-obsoleto- | String | | data.council.assignedUser | Objeto de usuario asignado | Object | | data.council.assignedUser.id | Identificador del usuario asignado | Integer | | data.council.assignedUser.name | Nombre del usuario asignado | String | | data.council.assignedUser.surname | Apellidos del usuario asignado | String | | data.council.assignedUser.email | Email del usuario asignado para la recepción de notificaciones | String | | data.council.assignedUser.externalId | Identificador externo del usuario asignado a la cita | String | | data.council.participants | Conjunto de participantes | Array | | data.council.participants\[\].name | Nombre del participante | String | | data.council.participants\[\].surname | Apellidos del participante | String | | data.council.participants\[\].email | Email para envío de notificación, en base al método de notificación solicitado. | String | | data.council.participants\[\].dni | Número de identificación del participante | String | | data.council.participants\[\].idCardType | Tipo de documento: <br>**cif**: Documento para empresas de España. <br>**codiceFiscale**: Documento de Italia. <br>**dni**: Documento de España. <br>**europeanDocument**: Documentos identificativos de europa. <br>**nie**: Documento extrajeros España <br>**passport**: Pasaporte | String | | data.council.participants\[\].idCardCountry | Código de país bajo ISO 3166-1 alfa-2 | String | | data.council.participants\[\].zipcode | Código postal | String | | data.council.statute | Objeto del trámite realizado | Object | | data.council.statute.id | Identificador del trámite | Integer | | data.council.statute.title | Nombre del trámite | String | | data.council.statute.statuteId | Identificador único del trámite | Integer | | data.council.agendas | Conjunto de datos correspondientes a los puntos de la cita | Array | | data.council.agendas\[\].id | Identificador único | Integer | | data.council.agendas\[\].name | Nombre el punto | String | | data.council.agendas\[\].attachments | Conjunto de adjuntos | Array | | data.council.agendas\[\].attachments\[\].user | Objeto correspondiente al usuario que adjunta documentación, siempre que haya sido el profesional, en el caso de haber sido subido por el participante el objeto estará vacío. | Object | | data.council.agendas\[\].attachments\[\].user.id | Identificador único del usuario | Integer | | data.council.agendas\[\].attachments\[\].user.name | Nombre del usuario | String | | data.council.agendas\[\].attachments\[\].user.surname | Apellidos del usuario | String | | data.council.agendas\[\].attachments\[\].filename | Nombre del documento adjunto y extenión | String | | data.council.agendas\[\].attachments\[\].downloadUrl | Enlace de acceso al documento | String | | data.council.agendas\[\].attachments\[\].filesize | Tamaño del documento en bytes | String | | data.council.agendas\[\].participants | Conjunto de participantes que realizan el punto abierto | Array | | data.council.agendas\[\].participants\[\].type | Identifica el tipo de paso iniciado, puede tomar los siguietnes valores: <br>**SIGNATURE** -> Punto de firma. <br>**BIOMETRIC** -> Punto de biometría. <br>**INTERACTIVE_DOCS** -> PDFs interactivos. <br>**SCREEN_CAPTURE** -> Escáner de documentación. | String | | data.council.agendas\[\].participants\[\].agendaSignatoriesParticipantsAttachments | Información sobre el punto | Array | | data.council.agendas\[\].participants\[\].agendaSignatoriesParticipantsAttachments\[\].id | Identificador único | Integer | | data.council.agendas\[\].participants\[\].agendaSignatoriesParticipantsAttachments\[\].filename | Nombre del documento | String | | data.council.agendas\[\].participants\[\].agendaSignatoriesParticipantsAttachments\[\].url | Enlace de acceso al binario | String | #### 2\. Bloques de Objetos Anidados ##### Objeto `assignedUser` (Agente Asignado) Contiene la información del profesional que gestiona o atenderá la cita. - **`id`** (`Int`): ID interno del usuario. - **`name`** / **`surname`** (`String`): Nombre y apellidos del agente. - **`email`** (`String`): Correo corporativo del agente. - **`externalId`** (`String`): Identificador del agente en los sistemas del cliente. ##### Array `participants` (Ciudadanos Convocados) Listado con los datos identificativos del ciudadano o ciudadanos que asisten. - **`name`** / **`surname`** (`String`): Nombre y apellidos del participante. - **`email`** (`String`): Destino de las notificaciones. - **`dni`** (`String`): Documento de identidad. - **`idCardType`** (`String`): Tipo de documento (`"dni"`, `"nie"`, `"nif"`, `"passport"`, `"codiceFiscale"`, `"europeanDocument"`). - **`idCardCountry`** (`String`): Código del país emisor (ISO 3166-1 alfa-2). ##### Objeto `statute` (Trámite / Procedimiento) Taxonomía del trámite asociado a la cita. - **`id`** (`Int`): ID de la instancia del trámite. - **`title`** (`String`): Nombre comercial o técnico del trámite (ej. "TEST"). - **`statuteId`** (`Int`): Identificador maestro del procedimiento dentro de la organización. ##### Array `agendas` (Puntos de Control y Flujo de Trabajo) Desglose secuencial de los puntos y acciones que componen la atención. - **`id`** (`Int`): ID único del punto del orden del día/trámite. - **`name`** (`String`): Título identificativo del paso (ej. "Escaneo de documentación"). - **`attachments`** (`Array`): Documentos aportados al punto _por el profesional_. Si fue subido por el ciudadano, este objeto se devuelve vacío. Contiene: - `user` (`Object`): Datos del profesional que lo adjuntó (`id`, `name`, `surname`). - `filename` (`String`): Nombre y extensión del archivo. - `downloadUrl` (`String`): Enlace directo de descarga. - `filesize` (`String`): Tamaño del archivo en bytes. - **`participants`** (`Array`): Tareas e interacciones ejecutadas por los participantes en este punto: - `type` (`String`): Tipo de acción realizada (`SIGNATURE` \[Firma\], `BIOMETRIC` \[Biometría\], `INTERACTIVE_DOCS` \[Formulario PDF\], `SCREEN_CAPTURE` \[Captura/Escáner de documento\]). - `agendaSignatoriesParticipantsAttachments` (`Array`): Listado de evidencias binarias generadas por el ciudadano en este paso (ej. su DNI escaneado o el PDF interactivo ya firmado), incluyendo su `id`, `filename` y la `url` de acceso al archivo. ## Ejemplos de Código y Peticiones ### 1\. Consulta GraphQL ``` graphql query CouncilInfo($councilId: Int!) { council(id: $councilId) { state councilType dateStart dateRealStart dateEnd adminUrl noCelebrateComment observations internalNotes comment assignedUser { id name surname email externalId } participants { name surname email dni idCardType idCardCountry } statute { id title statuteId } agendas { id name attachments { user { id name surname } filename downloadUrl filesize } participants { type agendaSignatoriesParticipantsAttachments { id filename url } } } } } ``` ### 2\. Variables de la Petición (JSON Payload) ``` json { "councilId": 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 CouncilInfo($councilId: Int!){ council(id: $councilId){ state councilType dateStart dateRealStart dateEnd adminUrl noCelebrateComment observations internalNotes comment assignedUser { id name surname email externalId } participants { name surname email dni idCardType idCardCountry } statute { id title statuteId } agendas { id name attachments { user { id name surname } filename downloadUrl filesize } participants { type agendaSignatoriesParticipantsAttachments { id filename url } } } } }","variables":{"councilId":64706}}' ``` ### 4\. Respuesta Esperada (200 OK) ``` json { "data": { "council": { "state": 60, "councilType": 5, "dateStart": "2026-04-21T08:00:47.339Z", "dateRealStart": "2026-04-21T07:31:23.016Z", "dateEnd": "2026-04-21T07:58:12.113Z", "adminUrl": "https://apitest.ovac.pre.councilbox.com/company/2191/council/64706/", "noCelebrateComment": "", "observations": "Observaciones de la cita", "internalNotes": "Notas internas del trámite", "comment": null, "assignedUser": { "id": 3477, "name": "API", "surname": "PROFESIONAL", "email": "alejandro.maneiro+apiprof@councilbox.com", "externalId": null }, "participants": [ { "name": "SOY EL PARTICIPANTE", "surname": "TEST", "email": "alejandro.maneiro+participante@councilbox.com", "dni": "77777777B", "idCardType": "dni", "idCardCountry": "ES" } ], "statute": { "id": 64888, "title": "TEST", "statuteId": 4685 }, "agendas": [ { "id": 88520, "name": "Escaneo de documentación", "attachments": [], "participants": [ { "type": "SCREEN_CAPTURE", "agendaSignatoriesParticipantsAttachments": [ { "id": 2664, "filename": "Documento_identificativo.png", "url": "https://api.ovac.pre.councilbox.com/file/eyJhbGciOiJIUzI1NiIsInR5cCI6... " } ] } ] }, { "id": 88519, "name": "PDF Interactivo", "attachments": [ { "user": { "id": 3477, "name": "API", "surname": "PROFESIONAL" }, "filename": "formulario_interactivo.pdf", "downloadUrl": "https://api.ovac.pre.councilbox.com/agendaAttachment/42106", "filesize": "3885" } ], "participants": [ { "type": "INTERACTIVE_DOCS", "agendaSignatoriesParticipantsAttachments": [ { "id": 2667, "filename": "formulario_interactivo.pdf", "url": "https://api.ovac.pre.councilbox.com/file/eyJhbGciOiJIUzI1... " } ] } ] } ] } } } ``` > **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como `/graphql/councilinfo` 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.