> 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

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

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


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

## OpenAPI Specification

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

```

## SDK Code Examples

```python Council Info
import requests

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

payload = {
    "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
            zipcode
        }
        statute {
                id
                title
                statuteId
        }
        agendas {
            id
            name
            attachments {
                user {
                    id
                    name
                    surname
                }
                filename
                downloadUrl
                filesize
            }
            participants {
                type
                agendaSignatoriesParticipantsAttachments {
                    id
                    filename
                    url
                }
            }
        }
    }
}",
    "variables": { "councilId": 12345 }
}
headers = {
    "x-jwt-token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Council Info
const url = 'https://api.ovac.pre.councilbox.com/graphql/councilinfo';
const options = {
  method: 'POST',
  headers: {'x-jwt-token': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"query":"query CouncilInfo($councilId: Int!){\r\n    council(id: $councilId){\r\n        state\r\n        councilType\r\n        dateStart\r\n        dateRealStart\r\n        dateEnd\r\n        adminUrl\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":{"councilId":12345}}'
};

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

```go Council Info
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"query\": \"query CouncilInfo($councilId: Int!){\\r\\n    council(id: $councilId){\\r\\n        state\\r\\n        councilType\\r\\n        dateStart\\r\\n        dateRealStart\\r\\n        dateEnd\\r\\n        adminUrl\\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    \"councilId\": 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 Council Info
require 'uri'
require 'net/http'

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

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($councilId: Int!){\\r\\n    council(id: $councilId){\\r\\n        state\\r\\n        councilType\\r\\n        dateStart\\r\\n        dateRealStart\\r\\n        dateEnd\\r\\n        adminUrl\\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    \"councilId\": 12345\n  }\n}"

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

```java Council Info
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")
  .header("x-jwt-token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"query CouncilInfo($councilId: Int!){\\r\\n    council(id: $councilId){\\r\\n        state\\r\\n        councilType\\r\\n        dateStart\\r\\n        dateRealStart\\r\\n        dateEnd\\r\\n        adminUrl\\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    \"councilId\": 12345\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ovac.pre.councilbox.com/graphql/councilinfo', [
  'body' => '{
  "query": "query CouncilInfo($councilId: Int!){\\r\\n    council(id: $councilId){\\r\\n        state\\r\\n        councilType\\r\\n        dateStart\\r\\n        dateRealStart\\r\\n        dateEnd\\r\\n        adminUrl\\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": {
    "councilId": 12345
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-jwt-token' => '<apiKey>',
  ],
]);

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

```csharp Council Info
using RestSharp;

var client = new RestClient("https://api.ovac.pre.councilbox.com/graphql/councilinfo");
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($councilId: Int!){\\r\\n    council(id: $councilId){\\r\\n        state\\r\\n        councilType\\r\\n        dateStart\\r\\n        dateRealStart\\r\\n        dateEnd\\r\\n        adminUrl\\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    \"councilId\": 12345\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Council Info
import Foundation

let headers = [
  "x-jwt-token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "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
            zipcode
        }
        statute {
                id
                title
                statuteId
        }
        agendas {
            id
            name
            attachments {
                user {
                    id
                    name
                    surname
                }
                filename
                downloadUrl
                filesize
            }
            participants {
                type
                agendaSignatoriesParticipantsAttachments {
                    id
                    filename
                    url
                }
            }
        }
    }
}",
  "variables": ["councilId": 12345]
] as [String : Any]

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

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