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

# Council Info_External

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

# Council Info (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`.


Reference: https://docs.ovac.councilbox.com/metodos-api/ovac/council-info-2

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: ovac
  version: 1.0.0
paths:
  /graphql/councilinfo-2:
    post:
      operationId: council-info-2
      summary: Council Info_External
      description: >
        # Council Info (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`.
      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_councilInfo_2_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: GraphQL operation
                variables:
                  $ref: >-
                    #/components/schemas/GraphqlCouncilinfo2PostRequestBodyContentApplicationJsonSchemaVariables
                  description: GraphQL variables
              required:
                - query
servers:
  - url: https://api.ovac.pre.councilbox.com
  - url: https://api.ovac.councilbox.com
components:
  schemas:
    GraphqlCouncilinfo2PostRequestBodyContentApplicationJsonSchemaVariables:
      type: object
      properties: {}
      description: GraphQL variables
      title: GraphqlCouncilinfo2PostRequestBodyContentApplicationJsonSchemaVariables
    OVAC_councilInfo_2_Response_200:
      type: object
      properties: {}
      title: OVAC_councilInfo_2_Response_200
  securitySchemes:
    JwtToken:
      type: apiKey
      in: header
      name: x-jwt-token
      description: JWT token obtained from Login.

```

## SDK Code Examples

```python Council Info_External
import requests

url = "https://api.ovac.pre.councilbox.com/graphql/councilinfo-2"

payload = {
    "query": "query CouncilInfo($councilExternalId: String!, 
$companyExternalId: String!)
    {
    council(externalId: $councilExternalId, 
    companyExternalId: $companyExternalId)
        {
        state
        councilType
        dateStart
        dateRealStart
        dateEnd
        adminUrl
        councilType
        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": "IdentificadorExternoCita",
        "companyExternalId": "IdentificadorExternoOrg"
    }
}
headers = {
    "x-jwt-token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Council Info_External
const url = 'https://api.ovac.pre.councilbox.com/graphql/councilinfo-2';
const options = {
  method: 'POST',
  headers: {'x-jwt-token': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"query":"query CouncilInfo($councilExternalId: String!, \r\n$companyExternalId: String!)\r\n    {\r\n    council(externalId: $councilExternalId, \r\n    companyExternalId: $companyExternalId)\r\n        {\r\n        state\r\n        councilType\r\n        dateStart\r\n        dateRealStart\r\n        dateEnd\r\n        adminUrl\r\n        councilType\r\n        noCelebrateComment\r\n        observations\r\n        internalNotes\r\n        comment\r\n        assignedUser {\r\n            id\r\n            name\r\n            surname\r\n            email\r\n            externalId\r\n        }\r\n        participants {\r\n            name\r\n            surname\r\n            email\r\n            dni\r\n            idCardType\r\n            idCardCountry\r\n            zipcode\r\n        }\r\n        statute {\r\n                id\r\n                title\r\n                statuteId\r\n        }\r\n        agendas {\r\n            id\r\n            name\r\n            attachments {\r\n                user {\r\n                    id\r\n                    name\r\n                    surname\r\n                }\r\n                filename\r\n                downloadUrl\r\n                filesize\r\n            }\r\n            participants {\r\n                type\r\n                agendaSignatoriesParticipantsAttachments {\r\n                    id\r\n                    filename\r\n                    url\r\n                }\r\n            }\r\n        }\r\n    }\r\n}","variables":{"councilExternalId":"IdentificadorExternoCita","companyExternalId":"IdentificadorExternoOrg"}}'
};

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

```go Council Info_External
package main

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

func main() {

	url := "https://api.ovac.pre.councilbox.com/graphql/councilinfo-2"

	payload := strings.NewReader("{\n  \"query\": \"query CouncilInfo($councilExternalId: String!, \\r\\n$companyExternalId: String!)\\r\\n    {\\r\\n    council(externalId: $councilExternalId, \\r\\n    companyExternalId: $companyExternalId)\\r\\n        {\\r\\n        state\\r\\n        councilType\\r\\n        dateStart\\r\\n        dateRealStart\\r\\n        dateEnd\\r\\n        adminUrl\\r\\n        councilType\\r\\n        noCelebrateComment\\r\\n        observations\\r\\n        internalNotes\\r\\n        comment\\r\\n        assignedUser {\\r\\n            id\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            externalId\\r\\n        }\\r\\n        participants {\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            dni\\r\\n            idCardType\\r\\n            idCardCountry\\r\\n            zipcode\\r\\n        }\\r\\n        statute {\\r\\n                id\\r\\n                title\\r\\n                statuteId\\r\\n        }\\r\\n        agendas {\\r\\n            id\\r\\n            name\\r\\n            attachments {\\r\\n                user {\\r\\n                    id\\r\\n                    name\\r\\n                    surname\\r\\n                }\\r\\n                filename\\r\\n                downloadUrl\\r\\n                filesize\\r\\n            }\\r\\n            participants {\\r\\n                type\\r\\n                agendaSignatoriesParticipantsAttachments {\\r\\n                    id\\r\\n                    filename\\r\\n                    url\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"councilExternalId\": \"IdentificadorExternoCita\",\n    \"companyExternalId\": \"IdentificadorExternoOrg\"\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 Council Info_External
require 'uri'
require 'net/http'

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

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 CouncilInfo($councilExternalId: String!, \\r\\n$companyExternalId: String!)\\r\\n    {\\r\\n    council(externalId: $councilExternalId, \\r\\n    companyExternalId: $companyExternalId)\\r\\n        {\\r\\n        state\\r\\n        councilType\\r\\n        dateStart\\r\\n        dateRealStart\\r\\n        dateEnd\\r\\n        adminUrl\\r\\n        councilType\\r\\n        noCelebrateComment\\r\\n        observations\\r\\n        internalNotes\\r\\n        comment\\r\\n        assignedUser {\\r\\n            id\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            externalId\\r\\n        }\\r\\n        participants {\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            dni\\r\\n            idCardType\\r\\n            idCardCountry\\r\\n            zipcode\\r\\n        }\\r\\n        statute {\\r\\n                id\\r\\n                title\\r\\n                statuteId\\r\\n        }\\r\\n        agendas {\\r\\n            id\\r\\n            name\\r\\n            attachments {\\r\\n                user {\\r\\n                    id\\r\\n                    name\\r\\n                    surname\\r\\n                }\\r\\n                filename\\r\\n                downloadUrl\\r\\n                filesize\\r\\n            }\\r\\n            participants {\\r\\n                type\\r\\n                agendaSignatoriesParticipantsAttachments {\\r\\n                    id\\r\\n                    filename\\r\\n                    url\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"councilExternalId\": \"IdentificadorExternoCita\",\n    \"companyExternalId\": \"IdentificadorExternoOrg\"\n  }\n}"

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

```java Council Info_External
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.ovac.pre.councilbox.com/graphql/councilinfo-2")
  .header("x-jwt-token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"query CouncilInfo($councilExternalId: String!, \\r\\n$companyExternalId: String!)\\r\\n    {\\r\\n    council(externalId: $councilExternalId, \\r\\n    companyExternalId: $companyExternalId)\\r\\n        {\\r\\n        state\\r\\n        councilType\\r\\n        dateStart\\r\\n        dateRealStart\\r\\n        dateEnd\\r\\n        adminUrl\\r\\n        councilType\\r\\n        noCelebrateComment\\r\\n        observations\\r\\n        internalNotes\\r\\n        comment\\r\\n        assignedUser {\\r\\n            id\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            externalId\\r\\n        }\\r\\n        participants {\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            dni\\r\\n            idCardType\\r\\n            idCardCountry\\r\\n            zipcode\\r\\n        }\\r\\n        statute {\\r\\n                id\\r\\n                title\\r\\n                statuteId\\r\\n        }\\r\\n        agendas {\\r\\n            id\\r\\n            name\\r\\n            attachments {\\r\\n                user {\\r\\n                    id\\r\\n                    name\\r\\n                    surname\\r\\n                }\\r\\n                filename\\r\\n                downloadUrl\\r\\n                filesize\\r\\n            }\\r\\n            participants {\\r\\n                type\\r\\n                agendaSignatoriesParticipantsAttachments {\\r\\n                    id\\r\\n                    filename\\r\\n                    url\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"councilExternalId\": \"IdentificadorExternoCita\",\n    \"companyExternalId\": \"IdentificadorExternoOrg\"\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ovac.pre.councilbox.com/graphql/councilinfo-2', [
  'body' => '{
  "query": "query CouncilInfo($councilExternalId: String!, \\r\\n$companyExternalId: String!)\\r\\n    {\\r\\n    council(externalId: $councilExternalId, \\r\\n    companyExternalId: $companyExternalId)\\r\\n        {\\r\\n        state\\r\\n        councilType\\r\\n        dateStart\\r\\n        dateRealStart\\r\\n        dateEnd\\r\\n        adminUrl\\r\\n        councilType\\r\\n        noCelebrateComment\\r\\n        observations\\r\\n        internalNotes\\r\\n        comment\\r\\n        assignedUser {\\r\\n            id\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            externalId\\r\\n        }\\r\\n        participants {\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            dni\\r\\n            idCardType\\r\\n            idCardCountry\\r\\n            zipcode\\r\\n        }\\r\\n        statute {\\r\\n                id\\r\\n                title\\r\\n                statuteId\\r\\n        }\\r\\n        agendas {\\r\\n            id\\r\\n            name\\r\\n            attachments {\\r\\n                user {\\r\\n                    id\\r\\n                    name\\r\\n                    surname\\r\\n                }\\r\\n                filename\\r\\n                downloadUrl\\r\\n                filesize\\r\\n            }\\r\\n            participants {\\r\\n                type\\r\\n                agendaSignatoriesParticipantsAttachments {\\r\\n                    id\\r\\n                    filename\\r\\n                    url\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}",
  "variables": {
    "councilExternalId": "IdentificadorExternoCita",
    "companyExternalId": "IdentificadorExternoOrg"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-jwt-token' => '<apiKey>',
  ],
]);

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

```csharp Council Info_External
using RestSharp;

var client = new RestClient("https://api.ovac.pre.councilbox.com/graphql/councilinfo-2");
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 CouncilInfo($councilExternalId: String!, \\r\\n$companyExternalId: String!)\\r\\n    {\\r\\n    council(externalId: $councilExternalId, \\r\\n    companyExternalId: $companyExternalId)\\r\\n        {\\r\\n        state\\r\\n        councilType\\r\\n        dateStart\\r\\n        dateRealStart\\r\\n        dateEnd\\r\\n        adminUrl\\r\\n        councilType\\r\\n        noCelebrateComment\\r\\n        observations\\r\\n        internalNotes\\r\\n        comment\\r\\n        assignedUser {\\r\\n            id\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            externalId\\r\\n        }\\r\\n        participants {\\r\\n            name\\r\\n            surname\\r\\n            email\\r\\n            dni\\r\\n            idCardType\\r\\n            idCardCountry\\r\\n            zipcode\\r\\n        }\\r\\n        statute {\\r\\n                id\\r\\n                title\\r\\n                statuteId\\r\\n        }\\r\\n        agendas {\\r\\n            id\\r\\n            name\\r\\n            attachments {\\r\\n                user {\\r\\n                    id\\r\\n                    name\\r\\n                    surname\\r\\n                }\\r\\n                filename\\r\\n                downloadUrl\\r\\n                filesize\\r\\n            }\\r\\n            participants {\\r\\n                type\\r\\n                agendaSignatoriesParticipantsAttachments {\\r\\n                    id\\r\\n                    filename\\r\\n                    url\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n}\",\n  \"variables\": {\n    \"councilExternalId\": \"IdentificadorExternoCita\",\n    \"companyExternalId\": \"IdentificadorExternoOrg\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Council Info_External
import Foundation

let headers = [
  "x-jwt-token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "query": "query CouncilInfo($councilExternalId: String!, 
$companyExternalId: String!)
    {
    council(externalId: $councilExternalId, 
    companyExternalId: $companyExternalId)
        {
        state
        councilType
        dateStart
        dateRealStart
        dateEnd
        adminUrl
        councilType
        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": "IdentificadorExternoCita",
    "companyExternalId": "IdentificadorExternoOrg"
  ]
] as [String : Any]

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

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