> 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 evidence summary

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

# Council Evidence Summary (`query`)

Este método permite recuperar de forma centralizada toda la pista de auditoría, metadatos de control, encuestas, grabaciones multimedia y el acta/informe digital oficial asociados a una cita completada o programada dentro de la plataforma OVAC.

### 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 | dentificador numérico único de la cita en OVAC. | SI | Integer |

### Campos de Respuesta (Payload)

La consulta agrupa la información del encuentro en cuatro grandes bloques funcionales (`act`, `evidences`, `recordings`, `surveys`):

| `Parámetro` | `Descripción` | `Tipo` |
| --- | --- | --- |
| data | Objeto de Data | Object |
| data.councilEvidenceSummary | Objeto de la evidencia | Object |
| data.councilEvidenceSummary.councilId | Identificador de la cita | Integer |
| data.councilEvidenceSummary.act | Objeto del acta (informe), si no hay informe los valores estarán a `_null_` | Object |
| data.councilEvidenceSummary.act.id | Identificador único del informe | Integer |
| data.councilEvidenceSummary.act.downloadLink | Enlace de descarga, para descargarlo es necesario añadir autenticación, es decir API Key con el token adquirido en el login | String |
| data.councilEvidenceSummary.evidences | Conjunto de evidencias de la cita. en formato JSON | Array |
| data.councilEvidenceSummary.evidences\[\].date | Fecha de creación | String |
| data.councilEvidenceSummary.evidences\[\].userId | Identificador único del usuario que crea la cita | Integer |
| data.councilEvidenceSummary.evidences\[\].content | Contenido en JSON sobre la cita. | String |
| data.councilEvidenceSummary.evidences\[\].type | Tipo de cita | String |
| data.councilEvidenceSummary.evidences\[\].hash | Hash atribuido a la evidencia | String |
| data.councilEvidenceSummary.recordings | Conjunto de información para la evidencia de grabación | Array |
| data.councilEvidenceSummary.recordings\[\].size | Tamaño en bytes | String |
| data.councilEvidenceSummary.recordings\[\].url | Enlace de descarga del vídeo de la cita, se mostrarán tantos enlaces como vídeos exista, para descargar es necesario usar autenticación API Key con el token generado en el login | String |
| data.councilEvidenceSummary.recordings\[\].createdAt | Fecha de creación de la grabación | String |
| data.councilEvidenceSummary.recordings\[\].signatureDocumentUrl | Indica si el vídeo está firmado, si es así, muestra la firma | String |
| data.councilEvidenceSummary.recordings\[\].signatureUrl | Enlace para descarga del vídeo firmado. | String |
| data.councilEvidenceSummary.recordings\[\].sessionId | Identificador del vídeo | String |
| data.councilEvidenceSummary.recordings\[\].id | identificador único de cita y vídeo, usado para la descarga de los vídeos | String |
| data.councilEvidenceSummary.recordings\[\].duration | Duración de la grabación en segundos | String |

## Ejemplos de Código y Peticiones

### 1\. Consulta GraphQL

``` graphql
query CouncilEvidenceSummary($councilId: Int, $externalId: String) {
    councilEvidenceSummary(councilId: $councilId, externalId: $externalId) {
        councilId
        act {
            id
            downloadLink
        }
        evidences {
            date
            userId
            content
            type
            hash
        }
        recordings {
            size
            url
            createdAt
            signatureDocumentUrl
            signatureUrl
            sessionId
            id
            duration
        }
        surveys {
            id
            councilId
            creationDate
            participantId
            data
            participant {
                id
                email
                surname
                dni
                name
                councilId
                externalId
            }
        }
    } 
}

 ```

### 2\. Variables de la Petición (JSON Payload)

``` json
{
    "councilId": 64687
}

 ```

### 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 CouncilEvidenceSummary($councilId: Int, $externalId: String){ councilEvidenceSummary(councilId: $councilId, externalId: $externalId){ councilId act { id downloadLink } evidences { date userId content type hash } recordings { size url createdAt signatureDocumentUrl signatureUrl sessionId id duration } surveys { id councilId creationDate participantId data participant { id email surname dni name councilId externalId } } } }","variables":{"councilId":64687}}'

 ```

### 4\. Respuesta Esperada (200 OK)

``` json
{
  "data": {
    "councilEvidenceSummary": {
      "councilId": 64687,
      "act": {
        "id": 7571,
        "downloadLink": "https://api.ovac.pre.councilbox.com/council/64687/act"
      },
      "evidences": [
        {
          "date": "2026-04-17T07:53:05.685Z",
          "userId": 3477,
          "content": "{\"data\":{\"council\":{\"company\":{\"address\":\"TEST API\",\"businessName\":\"TEST API\",\"id\":2191},\"dateStart\":\"2026-04-17T08:00:40.436Z\",\"id\":64687,\"name\":\"TEST\"}}}",
          "type": "CONVENE_COUNCIL_WITH_NOTICE",
          "hash": "4557033a-0318-441c-9615-d2c24e1c020c"
        },
        {
          "date": "2026-04-17T08:33:37.442Z",
          "userId": 3477,
          "content": "{\"data\":{\"council\":{\"id\":64687,\"name\":\"TEST\",\"dateStartRecording\":\"2026-04-17T08:33:37.441Z\"}}}",
          "type": "START_RECORDING",
          "hash": "80bb946e-0f3f-4c07-b66e-8eca096f79aa"
        }
      ],
      "recordings": [
        {
          "size": "20905",
          "url": "https://api.ovac.pre.councilbox.com/api/recording/64687-69e1f050c246e6ee55055021",
          "createdAt": "1776414811764",
          "signatureDocumentUrl": null,
          "signatureUrl": null,
          "sessionId": "69e1f050c246e6ee55055021",
          "id": "64687-69e1f050c246e6ee55055021",
          "duration": "2.036"
        }
      ],
      "surveys": []
    }
  }
}

 ```

> **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como `/graphql/councilevidencesummary` 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-evidence-summary

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: ovac
  version: 1.0.0
paths:
  /graphql/councilevidencesummary:
    post:
      operationId: council-evidence-summary
      summary: Council evidence summary
      description: >
        # Council Evidence Summary (`query`)


        Este método permite recuperar de forma centralizada toda la pista de
        auditoría, metadatos de control, encuestas, grabaciones multimedia y el
        acta/informe digital oficial asociados a una cita completada o
        programada dentro de la plataforma OVAC.


        ### 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 | dentificador numérico único de la cita en OVAC. | SI |
        Integer |


        ### Campos de Respuesta (Payload)


        La consulta agrupa la información del encuentro en cuatro grandes
        bloques funcionales (`act`, `evidences`, `recordings`, `surveys`):


        | `Parámetro` | `Descripción` | `Tipo` |

        | --- | --- | --- |

        | data | Objeto de Data | Object |

        | data.councilEvidenceSummary | Objeto de la evidencia | Object |

        | data.councilEvidenceSummary.councilId | Identificador de la cita |
        Integer |

        | data.councilEvidenceSummary.act | Objeto del acta (informe), si no hay
        informe los valores estarán a `_null_` | Object |

        | data.councilEvidenceSummary.act.id | Identificador único del informe |
        Integer |

        | data.councilEvidenceSummary.act.downloadLink | Enlace de descarga,
        para descargarlo es necesario añadir autenticación, es decir API Key con
        el token adquirido en el login | String |

        | data.councilEvidenceSummary.evidences | Conjunto de evidencias de la
        cita. en formato JSON | Array |

        | data.councilEvidenceSummary.evidences\[\].date | Fecha de creación |
        String |

        | data.councilEvidenceSummary.evidences\[\].userId | Identificador único
        del usuario que crea la cita | Integer |

        | data.councilEvidenceSummary.evidences\[\].content | Contenido en JSON
        sobre la cita. | String |

        | data.councilEvidenceSummary.evidences\[\].type | Tipo de cita | String
        |

        | data.councilEvidenceSummary.evidences\[\].hash | Hash atribuido a la
        evidencia | String |

        | data.councilEvidenceSummary.recordings | Conjunto de información para
        la evidencia de grabación | Array |

        | data.councilEvidenceSummary.recordings\[\].size | Tamaño en bytes |
        String |

        | data.councilEvidenceSummary.recordings\[\].url | Enlace de descarga
        del vídeo de la cita, se mostrarán tantos enlaces como vídeos exista,
        para descargar es necesario usar autenticación API Key con el token
        generado en el login | String |

        | data.councilEvidenceSummary.recordings\[\].createdAt | Fecha de
        creación de la grabación | String |

        | data.councilEvidenceSummary.recordings\[\].signatureDocumentUrl |
        Indica si el vídeo está firmado, si es así, muestra la firma | String |

        | data.councilEvidenceSummary.recordings\[\].signatureUrl | Enlace para
        descarga del vídeo firmado. | String |

        | data.councilEvidenceSummary.recordings\[\].sessionId | Identificador
        del vídeo | String |

        | data.councilEvidenceSummary.recordings\[\].id | identificador único de
        cita y vídeo, usado para la descarga de los vídeos | String |

        | data.councilEvidenceSummary.recordings\[\].duration | Duración de la
        grabación en segundos | String |


        ## Ejemplos de Código y Peticiones


        ### 1\. Consulta GraphQL


        ``` graphql

        query CouncilEvidenceSummary($councilId: Int, $externalId: String) {
            councilEvidenceSummary(councilId: $councilId, externalId: $externalId) {
                councilId
                act {
                    id
                    downloadLink
                }
                evidences {
                    date
                    userId
                    content
                    type
                    hash
                }
                recordings {
                    size
                    url
                    createdAt
                    signatureDocumentUrl
                    signatureUrl
                    sessionId
                    id
                    duration
                }
                surveys {
                    id
                    councilId
                    creationDate
                    participantId
                    data
                    participant {
                        id
                        email
                        surname
                        dni
                        name
                        councilId
                        externalId
                    }
                }
            } 
        }

         ```

        ### 2\. Variables de la Petición (JSON Payload)


        ``` json

        {
            "councilId": 64687
        }

         ```

        ### 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 CouncilEvidenceSummary($councilId: Int,
        $externalId: String){ councilEvidenceSummary(councilId: $councilId,
        externalId: $externalId){ councilId act { id downloadLink } evidences {
        date userId content type hash } recordings { size url createdAt
        signatureDocumentUrl signatureUrl sessionId id duration } surveys { id
        councilId creationDate participantId data participant { id email surname
        dni name councilId externalId } } } }","variables":{"councilId":64687}}'

         ```

        ### 4\. Respuesta Esperada (200 OK)


        ``` json

        {
          "data": {
            "councilEvidenceSummary": {
              "councilId": 64687,
              "act": {
                "id": 7571,
                "downloadLink": "https://api.ovac.pre.councilbox.com/council/64687/act"
              },
              "evidences": [
                {
                  "date": "2026-04-17T07:53:05.685Z",
                  "userId": 3477,
                  "content": "{\"data\":{\"council\":{\"company\":{\"address\":\"TEST API\",\"businessName\":\"TEST API\",\"id\":2191},\"dateStart\":\"2026-04-17T08:00:40.436Z\",\"id\":64687,\"name\":\"TEST\"}}}",
                  "type": "CONVENE_COUNCIL_WITH_NOTICE",
                  "hash": "4557033a-0318-441c-9615-d2c24e1c020c"
                },
                {
                  "date": "2026-04-17T08:33:37.442Z",
                  "userId": 3477,
                  "content": "{\"data\":{\"council\":{\"id\":64687,\"name\":\"TEST\",\"dateStartRecording\":\"2026-04-17T08:33:37.441Z\"}}}",
                  "type": "START_RECORDING",
                  "hash": "80bb946e-0f3f-4c07-b66e-8eca096f79aa"
                }
              ],
              "recordings": [
                {
                  "size": "20905",
                  "url": "https://api.ovac.pre.councilbox.com/api/recording/64687-69e1f050c246e6ee55055021",
                  "createdAt": "1776414811764",
                  "signatureDocumentUrl": null,
                  "signatureUrl": null,
                  "sessionId": "69e1f050c246e6ee55055021",
                  "id": "64687-69e1f050c246e6ee55055021",
                  "duration": "2.036"
                }
              ],
              "surveys": []
            }
          }
        }

         ```

        > **Nota OpenAPI/Fern:** esta operación GraphQL se documenta como
        `/graphql/councilevidencesummary` 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_councilEvidenceSummary_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                query:
                  type: string
                  description: GraphQL operation
                variables:
                  $ref: >-
                    #/components/schemas/GraphqlCouncilevidencesummaryPostRequestBodyContentApplicationJsonSchemaVariables
                  description: GraphQL variables
              required:
                - query
servers:
  - url: https://api.ovac.pre.councilbox.com
  - url: https://api.ovac.councilbox.com
components:
  schemas:
    GraphqlCouncilevidencesummaryPostRequestBodyContentApplicationJsonSchemaVariables:
      type: object
      properties: {}
      description: GraphQL variables
      title: >-
        GraphqlCouncilevidencesummaryPostRequestBodyContentApplicationJsonSchemaVariables
    OVAC_councilEvidenceSummary_Response_200:
      type: object
      properties: {}
      title: OVAC_councilEvidenceSummary_Response_200
  securitySchemes:
    JwtToken:
      type: apiKey
      in: header
      name: x-jwt-token
      description: JWT token obtained from Login.

```

## SDK Code Examples

```python Council evidence summary
import requests

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

payload = {
    "query": "query CouncilEvidenceSummary(
    $councilId: Int!,
    ){
    councilEvidenceSummary(
        councilId: $councilId,
    ){
    councilId
    act {
      id
      downloadLink
    }
    evidences {
        date
        userId
        content
        type
        hash
    }
    recordings {
      size
      url
      createdAt
      signatureDocumentUrl
      signatureUrl
      sessionId
      id
      duration
    }
  }       
}",
    "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 evidence summary
const url = 'https://api.ovac.pre.councilbox.com/graphql/councilevidencesummary';
const options = {
  method: 'POST',
  headers: {'x-jwt-token': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"query":"query CouncilEvidenceSummary(\r\n    $councilId: Int!,\r\n    ){\r\n    councilEvidenceSummary(\r\n        councilId: $councilId,\r\n    ){\r\n    councilId\r\n    act {\r\n      id\r\n      downloadLink\r\n    }\r\n    evidences {\r\n        date\r\n        userId\r\n        content\r\n        type\r\n        hash\r\n    }\r\n    recordings {\r\n      size\r\n      url\r\n      createdAt\r\n      signatureDocumentUrl\r\n      signatureUrl\r\n      sessionId\r\n      id\r\n      duration\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 evidence summary
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"query\": \"query CouncilEvidenceSummary(\\r\\n    $councilId: Int!,\\r\\n    ){\\r\\n    councilEvidenceSummary(\\r\\n        councilId: $councilId,\\r\\n    ){\\r\\n    councilId\\r\\n    act {\\r\\n      id\\r\\n      downloadLink\\r\\n    }\\r\\n    evidences {\\r\\n        date\\r\\n        userId\\r\\n        content\\r\\n        type\\r\\n        hash\\r\\n    }\\r\\n    recordings {\\r\\n      size\\r\\n      url\\r\\n      createdAt\\r\\n      signatureDocumentUrl\\r\\n      signatureUrl\\r\\n      sessionId\\r\\n      id\\r\\n      duration\\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 evidence summary
require 'uri'
require 'net/http'

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

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 CouncilEvidenceSummary(\\r\\n    $councilId: Int!,\\r\\n    ){\\r\\n    councilEvidenceSummary(\\r\\n        councilId: $councilId,\\r\\n    ){\\r\\n    councilId\\r\\n    act {\\r\\n      id\\r\\n      downloadLink\\r\\n    }\\r\\n    evidences {\\r\\n        date\\r\\n        userId\\r\\n        content\\r\\n        type\\r\\n        hash\\r\\n    }\\r\\n    recordings {\\r\\n      size\\r\\n      url\\r\\n      createdAt\\r\\n      signatureDocumentUrl\\r\\n      signatureUrl\\r\\n      sessionId\\r\\n      id\\r\\n      duration\\r\\n    }\\r\\n  }       \\r\\n}\",\n  \"variables\": {\n    \"councilId\": 12345\n  }\n}"

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

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

HttpResponse<String> response = Unirest.post("https://api.ovac.pre.councilbox.com/graphql/councilevidencesummary")
  .header("x-jwt-token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"query\": \"query CouncilEvidenceSummary(\\r\\n    $councilId: Int!,\\r\\n    ){\\r\\n    councilEvidenceSummary(\\r\\n        councilId: $councilId,\\r\\n    ){\\r\\n    councilId\\r\\n    act {\\r\\n      id\\r\\n      downloadLink\\r\\n    }\\r\\n    evidences {\\r\\n        date\\r\\n        userId\\r\\n        content\\r\\n        type\\r\\n        hash\\r\\n    }\\r\\n    recordings {\\r\\n      size\\r\\n      url\\r\\n      createdAt\\r\\n      signatureDocumentUrl\\r\\n      signatureUrl\\r\\n      sessionId\\r\\n      id\\r\\n      duration\\r\\n    }\\r\\n  }       \\r\\n}\",\n  \"variables\": {\n    \"councilId\": 12345\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.ovac.pre.councilbox.com/graphql/councilevidencesummary', [
  'body' => '{
  "query": "query CouncilEvidenceSummary(\\r\\n    $councilId: Int!,\\r\\n    ){\\r\\n    councilEvidenceSummary(\\r\\n        councilId: $councilId,\\r\\n    ){\\r\\n    councilId\\r\\n    act {\\r\\n      id\\r\\n      downloadLink\\r\\n    }\\r\\n    evidences {\\r\\n        date\\r\\n        userId\\r\\n        content\\r\\n        type\\r\\n        hash\\r\\n    }\\r\\n    recordings {\\r\\n      size\\r\\n      url\\r\\n      createdAt\\r\\n      signatureDocumentUrl\\r\\n      signatureUrl\\r\\n      sessionId\\r\\n      id\\r\\n      duration\\r\\n    }\\r\\n  }       \\r\\n}",
  "variables": {
    "councilId": 12345
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-jwt-token' => '<apiKey>',
  ],
]);

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

```csharp Council evidence summary
using RestSharp;

var client = new RestClient("https://api.ovac.pre.councilbox.com/graphql/councilevidencesummary");
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 CouncilEvidenceSummary(\\r\\n    $councilId: Int!,\\r\\n    ){\\r\\n    councilEvidenceSummary(\\r\\n        councilId: $councilId,\\r\\n    ){\\r\\n    councilId\\r\\n    act {\\r\\n      id\\r\\n      downloadLink\\r\\n    }\\r\\n    evidences {\\r\\n        date\\r\\n        userId\\r\\n        content\\r\\n        type\\r\\n        hash\\r\\n    }\\r\\n    recordings {\\r\\n      size\\r\\n      url\\r\\n      createdAt\\r\\n      signatureDocumentUrl\\r\\n      signatureUrl\\r\\n      sessionId\\r\\n      id\\r\\n      duration\\r\\n    }\\r\\n  }       \\r\\n}\",\n  \"variables\": {\n    \"councilId\": 12345\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Council evidence summary
import Foundation

let headers = [
  "x-jwt-token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "query": "query CouncilEvidenceSummary(
    $councilId: Int!,
    ){
    councilEvidenceSummary(
        councilId: $councilId,
    ){
    councilId
    act {
      id
      downloadLink
    }
    evidences {
        date
        userId
        content
        type
        hash
    }
    recordings {
      size
      url
      createdAt
      signatureDocumentUrl
      signatureUrl
      sessionId
      id
      duration
    }
  }       
}",
  "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/councilevidencesummary")! 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()
```