Get Appointment Information_External

View as Markdown
# Get Appointment Information (External ID Variant) (`council`) Este método permite obtener información detallada y estructurada de una cita a partir de sus identificadores externos corporativos (`councilExternalId` y `companyExternalId`). Devuelve el estado actual 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 las fases de la agenda junto con las evidencias digitales recolectadas. ### 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 | | --- | --- | --- | --- | | councilExternalId | Id de la cita externo | SI | String | | companyExternalId | Identificador externo de la organización o entidad | SI | String | ### Campos de Respuesta (Payload) La consulta agrupa la información del encuentro bajo el nodo raíz `council` con la siguiente taxonomía: #### 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\. Desglose de Objetos y Arrays Anidados ##### Objeto `assignedUser` (Agente Asignado) Perfil del profesional responsable de atender o gestionar la cita. - **`id`** (`Int`): Identificador único interno del agente en OVAC. - **`name`** / **`surname`** (`String`): Nombre y apellidos del profesional. - **`email`** (`String`): Correo electrónico corporativo del operario. - **`externalId`** (`String`): ID único del agente en el sistema externo del cliente. ##### Array `participants` (Ciudadanos Convocados) Listado de los ciudadanos registrados en la cita (asistentes principales, representantes o invitados). - **`name`** / **`surname`** (`String`): Nombre y apellidos del participante. _(Nota: Corregido de Integer a String)_. - **`email`** (`String`): Dirección de correo donde el ciudadano recibe las alertas y enlaces. - **`dni`** (`String`): Documento identificativo o código fiscal. - **`idCardType`** (`String`): Tipo de identificación (`"dni"`, `"nif"`, `"nie"`, `"passport"`, `"codiceFiscale"`, `"europeanDocument"`). - **`idCardCountry`** (`String`): Código del país emisor de la documentación (ISO 3166-1 alfa-2). - **`zipcode`** (`String`): Código postal registrado. ##### Objeto `statute` (Trámite Asociado) Información sobre el tipo de trámite o procedimiento administrativo que se ejecuta en la cita. - **`id`** (`Int`): ID de la instancia de asignación del trámite. - **`title`** (`String`): Nombre oficial del trámite (ej. `"TEST"`). - **`statuteId`** (`Int`): Identificador maestro del procedimiento dentro de la plataforma. ##### Array `agendas` (Puntos de Control y Flujo de Trabajo) Listado secuencial con las tareas, hitos y recolección de evidencias configuradas para el trámite. - **`id`** (`Int`): Identificador único del punto o paso de la agenda. - **`name`** (`String`): Nombre descriptivo de la acción (ej. `"Escaneo de documentación"`, `"Firma de documentación"`). - **`attachments`** (`Array`): Documentos aportados al punto _por el profesional de la entidad_. Contiene el objeto `user` (operador que lo subió), `filename`, `downloadUrl` y el `filesize` en bytes. Si fue subido de manera autónoma por el ciudadano, este objeto se devuelve vacío. - **`participants`** (`Array`): Colección con las interacciones multimedia y firmas ejecutadas por el ciudadano en este paso: - `type` (`String`): Tipo de acción interactiva ejecutada (`SIGNATURE` \[Firma electrónica\], `BIOMETRIC` \[Validación biométrica\], `INTERACTIVE_DOCS` \[Formularios PDF interactivos\], `SCREEN_CAPTURE` \[Escáner o captura de documentación\]). - `agendaSignatoriesParticipantsAttachments` (`Array`): Listado que aloja las evidencias binarias finales resultantes de la acción del ciudadano (ej. el DNI digitalizado o el contrato firmado), detallando su `id`, `filename` y la `url` segura de acceso al archivo. ## Ejemplos de Código y Peticiones ### 1\. Consulta GraphQL ``` graphql query CouncilInfo($councilExternalId: String!, $companyExternalId: String!) { council(externalId: $councilExternalId, companyExternalId: $companyExternalId) { state councilType dateStart dateRealStart dateEnd adminUrl noCelebrateComment observations internalNotes comment assignedUser { id name surname email externalId } participants { name surname email dni idCardType idCardCountry zipcode } 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 { "councilExternalId": "Council_ID_EXT_9982", "companyExternalId": "API_TEST" } ``` ### 3\. Ejemplo de comando cURL ``` bash curl --location --globoff 'https://api.ovac.pre.councilbox.com/graphql' \ --header 'Content-Type: application/json' \ --header 'x-jwt-token: {{token}}' \ --data '{"query":"query CouncilInfo($councilExternalId: String!, $companyExternalId: String!){ council(externalId: $councilExternalId, companyExternalId: $companyExternalId){ state councilType dateStart dateRealStart dateEnd adminUrl noCelebrateComment observations internalNotes comment assignedUser { id name surname email externalId } participants { name surname email dni idCardType idCardCountry zipcode } statute { id title statuteId } agendas { id name attachments { user { id name surname } filename downloadUrl filesize } participants { type agendaSignatoriesParticipantsAttachments { id filename url } } } } }","variables":{"councilExternalId":"Council_ID_EXT_9982","companyExternalId":"API_TEST"}}' ``` ### 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/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTA0ODksImlhdCI6MTc3Njc1ODM0N30.NpfjhF50QayagYCgE59xbnIau5sOxTKsXtL_HRYOJOs" } ] } ] }, { "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/eyJhbGciOiJIUzI1NiIsInR5cCI6... " } ] } ] } ] } } } ``` > **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como `/graphql/councilinfo-2` 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.