# Gateway Agregador

> Endpoints do API Gateway que agregam múltiplas APIs de localização em uma única chamada. Permite consultar informações de favelas, renda, fronteiras, presídios, setores censitários e aglomerações comerciais simultaneamente.

**Base**: `https://api.prismadata.io/v1`

**Autenticação**: header `X-Apikey` (ou query `api_key`). Detalhes em [Autenticação](autenticacao.md).

**Formato de resposta**: JSON plano com campos `prismadata__<serviço>__<campo>`; em lote, dicionário indexado pelas chaves enviadas. Detalhes em [Formato de Resposta](guias/formato-de-resposta.md).

## Endpoints

### `GET /location/aggregator`

Endpoint que agrega múltiplas APIs de localização em uma única chamada. Habilite os dados desejados através dos parâmetros booleanos: - `slum=true`: retorna informações de favelas - `infosc=true`: retorna informações do setor censitário - `prison=true`: retorna informações de presídios - `border=true`: retorna informações de fronteiras - `personal_income_static=true`: retorna renda estática - `personal_income_pdf=true`: retorna renda dinâmica (PDF) - `commercial_cluster=true`: retorna informações de aglomerações comerciais A resposta contém apenas os campos dos serviços habilitados.

**Exemplo curl**:

```bash
curl -X GET "https://api.prismadata.io/v1/location/aggregator?lat=-19.932378368680315&lng=-43.9351245162891" \
  -H "X-Apikey: SEU_TOKEN"
# Params opcionais: slum=False, infosc=False, prison=False, border=False, personal_income_static=False, personal_income_pdf=False, commercial_cluster=False, date_income=2025-01-25, gender=M, age=50, is_responsible=False, income_compared=10000
```

**Parâmetros**:

| Nome | Local | Tipo | Obrigatório | Descrição |
|------|-------|------|-------------|-----------|
| `lat` | query | number | sim | Latitude do ponto de consulta. |
| `lng` | query | number | sim | Longitude do ponto de consulta. |
| `slum` | query | boolean | não | Habilita retorno de informações de favelas (prismadata__slum__*). |
| `infosc` | query | boolean | não | Habilita retorno de informações do setor censitário (prismadata__infosc__*). |
| `prison` | query | boolean | não | Habilita retorno de informações de presídios (prismadata__prison__*). |
| `border` | query | boolean | não | Habilita retorno de informações de fronteiras (prismadata__border__*). |
| `personal_income_static` | query | boolean | não | Habilita retorno de renda estática (prismadata__personal_income_static__*). |
| `personal_income_pdf` | query | boolean | não | Habilita retorno de renda dinâmica (prismadata__personal_income_pdf__*). |
| `commercial_cluster` | query | boolean | não | Habilita retorno de informações de aglomerações comerciais (prismadata__commercial_cluster__*). |
| `date_income` | query | string(date) \| null | não | Data para consulta de renda PDF (YYYY-MM-DD). Requer personal_income_pdf=true. |
| `gender` | query | string \| null | não | Gênero para filtro de renda PDF (M ou F). Requer personal_income_pdf=true. |
| `age` | query | number \| null | não | Idade para filtro de renda PDF (15-90). Requer personal_income_pdf=true. |
| `is_responsible` | query | string \| null | não | Indica se é responsável pelo domicílio. Requer personal_income_pdf=true. |
| `income_compared` | query | number \| null | não | Renda a ser comparada com a renda da região. Requer personal_income_pdf=true. |

**Response 200** (`application/json`):

> Successful Response

Tipo: `object`.

**Outros códigos**: 401, 403, 422, 429

---

### `POST /location/batch/aggregator`

Endpoint batch que agrega múltiplas APIs de localização para vários pontos em uma única chamada. Envie um JSON com pontos no formato `{"id": [lat, lng]}` e habilite os dados desejados via query parameters: - `slum=true`: retorna informações de favelas - `infosc=true`: retorna informações do setor censitário - `prison=true`: retorna informações de presídios - `border=true`: retorna informações de fronteiras - `personal_income_static=true`: retorna renda estática - `personal_income_pdf=true`: retorna renda dinâmica (PDF) - `commercial_cluster=true`: retorna informações de aglomerações comerciais Quando `personal_income_pdf=true`, os pontos podem opcionalmente usar o formato de dicionário com parâmetros demográficos individuais: `{"id": {"lat": -23.55, "lng": -46.63, "gender": "M", "age": 35}}`. Pontos no formato `[lat, lng]` também são aceitos (sem filtros demográficos). Os demais serviços normalizam automaticamente ambos os formatos para coordenadas. A resposta contém um objeto com os mesmos IDs do request, cada um com os campos prefixados por `prismadata__<categoria>__`.

**Exemplo curl**:

```bash
curl -X POST "https://api.prismadata.io/v1/location/batch/aggregator" \
  -H "X-Apikey: SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
         "ponto_1": [
           -19.932378,
           -43.935124
         ],
         "ponto_2": [
           -22.906847,
           -43.172897
         ]
       }'
# Params opcionais: slum=False, infosc=False, prison=False, border=False, personal_income_static=False, personal_income_pdf=False, commercial_cluster=False
```

**Parâmetros**:

| Nome | Local | Tipo | Obrigatório | Descrição |
|------|-------|------|-------------|-----------|
| `slum` | query | boolean | não | Habilita retorno de informações de favelas (prismadata__slum__*). |
| `infosc` | query | boolean | não | Habilita retorno de informações do setor censitário (prismadata__infosc__*). |
| `prison` | query | boolean | não | Habilita retorno de informações de presídios (prismadata__prison__*). |
| `border` | query | boolean | não | Habilita retorno de informações de fronteiras (prismadata__border__*). |
| `personal_income_static` | query | boolean | não | Habilita retorno de renda estática (prismadata__personal_income_static__*). |
| `personal_income_pdf` | query | boolean | não | Habilita retorno de renda dinâmica PDF (prismadata__personal_income_pdf__*). Quando habilitado, os pontos podem usar formato de dicionário com parâmetros demográficos individuais (lat, lng, date_income, gender, age, is_responsible, income_compared). |
| `commercial_cluster` | query | boolean | não | Habilita retorno de informações de aglomerações comerciais (prismadata__commercial_cluster__*). |

**Request body** (`application/json`):

Tipo: `object`.

<details><summary>Exemplo</summary>

```json
{
  "ponto_1": [
    -19.932378,
    -43.935124
  ],
  "ponto_2": [
    -22.906847,
    -43.172897
  ]
}
```

</details>

**Response 200** (`application/json`):

> Successful Response

Dicionário `{string: object}`.
Resposta do batch aggregator. Cada chave corresponde ao ID do ponto enviado no request, com os campos das APIs habilitadas prefixados por `prismadata__<categoria>__`. - **slum**: campos `prismadata__slum__*` (favelas) - **infosc**: campos `prismadata__infosc__*` (setor censitário) - **prison**: campos `prismadata__prison__*` (presídios) - **border**: campos `prismadata__border__*` (fronteiras) - **personal_income_static**: campos `prismadata__personal_income_static__*` (renda estática) - **personal_income_pdf**: campos `prismadata__personal_income_pdf__*` (renda dinâmica) - **commercial_cluster**: campos `prismadata__commercial_cluster__*` (aglomerações comerciais)

**Outros códigos**: 401, 403, 422, 429

---

### `GET /location/geocoder/aggregator`

Endpoint que primeiro geocodifica um endereço e depois agrega múltiplas APIs de localização usando as coordenadas obtidas — equivalente a `/aggregator` precedido de uma etapa de geocodificação. Útil quando você tem um endereço (não coordenadas) e precisa de múltiplas informações sobre essa localização. Aceita o **mesmo conjunto de flags de habilitação** que `/aggregator`: - `slum=true`: retorna informações de favelas - `infosc=true`: retorna informações do setor censitário - `prison=true`: retorna informações de presídios - `border=true`: retorna informações de fronteiras - `personal_income_static=true`: retorna renda estática - `personal_income_pdf=true`: retorna renda dinâmica (PDF) - `commercial_cluster=true`: retorna informações de aglomerações comerciais A resposta inclui também os campos `prismadata__geocoder__*` com o resultado da geocodificação.

**Exemplo curl**:

```bash
curl -X GET "https://api.prismadata.io/v1/location/geocoder/aggregator" \
  -H "X-Apikey: SEU_TOKEN"
# Params opcionais: endereco_completo=string, cep=30130-165, numero=string, tipo_logradouro=string, titulo_logradouro=string, logradouro=string, localidade=string, municipio=string, estado=string, slum=False, infosc=False, prison=False, border=False, personal_income_static=False, personal_income_pdf=False, commercial_cluster=False, date_income=2025-01-25, gender=M, age=50, is_responsible=False, income_compared=10000
```

**Parâmetros**:

| Nome | Local | Tipo | Obrigatório | Descrição |
|------|-------|------|-------------|-----------|
| `endereco_completo` | query | string \| null | não | Endereço completo a ser geocodificado. |
| `cep` | query | string \| integer \| null | não | CEP do endereço. |
| `numero` | query | string \| integer \| null | não | Número do endereço. |
| `tipo_logradouro` | query | string \| null | não | Tipo do logradouro (ex: Rua, Avenida). |
| `titulo_logradouro` | query | string \| null | não | Título do logradouro (ex: Coronel, Professor). |
| `logradouro` | query | string \| null | não | Nome do logradouro. |
| `localidade` | query | string \| null | não | Localidade (bairro) do endereço. |
| `municipio` | query | string \| null | não | Município do endereço. |
| `estado` | query | string \| null | não | Estado do endereço. |
| `slum` | query | boolean | não | Habilita retorno de informações de favelas (prismadata__slum__*). |
| `infosc` | query | boolean | não | Habilita retorno de informações do setor censitário (prismadata__infosc__*). |
| `prison` | query | boolean | não | Habilita retorno de informações de presídios (prismadata__prison__*). |
| `border` | query | boolean | não | Habilita retorno de informações de fronteiras (prismadata__border__*). |
| `personal_income_static` | query | boolean | não | Habilita retorno de renda estática (prismadata__personal_income_static__*). |
| `personal_income_pdf` | query | boolean | não | Habilita retorno de renda dinâmica (prismadata__personal_income_pdf__*). |
| `commercial_cluster` | query | boolean | não | Habilita retorno de informações de aglomerações comerciais (prismadata__commercial_cluster__*). |
| `date_income` | query | string(date) \| null | não | Data para consulta de renda PDF (YYYY-MM-DD). Requer personal_income_pdf=true. |
| `gender` | query | string \| null | não | Gênero para filtro de renda PDF (M ou F). Requer personal_income_pdf=true. |
| `age` | query | number \| null | não | Idade para filtro de renda PDF (15-90). Requer personal_income_pdf=true. |
| `is_responsible` | query | string \| null | não | Indica se é responsável pelo domicílio. Requer personal_income_pdf=true. |
| `income_compared` | query | number \| null | não | Renda a ser comparada com a renda da região. Requer personal_income_pdf=true. |

**Response 200** (`application/json`):

> Successful Response

Tipo: `object`.

**Outros códigos**: 401, 403, 422, 429

---

### `POST /location/batch/geocoder/aggregator`

Endpoint batch que primeiro geocodifica endereços e depois agrega múltiplas APIs de localização usando as coordenadas obtidas — equivalente a `/batch/aggregator` precedido de uma etapa de geocodificação por endereço. Combina o `/geocoder/aggregator` com processamento em lote, permitindo enviar até 1024 endereços de uma vez. Envie um JSON com endereços no formato `{"id": {"endereco_completo": "..."}}` e habilite os dados desejados via query parameters — **mesmo conjunto de flags de `/batch/aggregator`**: - `slum=true`: retorna informações de favelas - `infosc=true`: retorna informações do setor censitário - `prison=true`: retorna informações de presídios - `border=true`: retorna informações de fronteiras - `personal_income_static=true`: retorna renda estática - `personal_income_pdf=true`: retorna renda dinâmica (PDF) - `commercial_cluster=true`: retorna informações de aglomerações comerciais Quando `personal_income_pdf=true`, os endereços podem opcionalmente incluir parâmetros demográficos individuais no objeto (`date_income`, `gender`, `age`, `is_responsible`, `income_compared`). A resposta contém um objeto com os mesmos IDs do request, cada um com campos `prismadata__geocoder__*` (resultado da geocodificação) + campos das APIs habilitadas prefixados por `prismadata__<categoria>__`.

**Exemplo curl**:

```bash
curl -X POST "https://api.prismadata.io/v1/location/batch/geocoder/aggregator" \
  -H "X-Apikey: SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
         "ponto_1": {
           "endereco_completo": "Av Paulista 1000, Sao Paulo, SP"
         },
         "ponto_2": {
           "cep": "30130-165",
           "numero": "100",
           "logradouro": "Rua da Bahia"
         }
       }'
# Params opcionais: slum=False, infosc=False, prison=False, border=False, personal_income_static=False, personal_income_pdf=False, commercial_cluster=False
```

**Parâmetros**:

| Nome | Local | Tipo | Obrigatório | Descrição |
|------|-------|------|-------------|-----------|
| `slum` | query | boolean | não | Habilita retorno de informações de favelas (prismadata__slum__*). |
| `infosc` | query | boolean | não | Habilita retorno de informações do setor censitário (prismadata__infosc__*). |
| `prison` | query | boolean | não | Habilita retorno de informações de presídios (prismadata__prison__*). |
| `border` | query | boolean | não | Habilita retorno de informações de fronteiras (prismadata__border__*). |
| `personal_income_static` | query | boolean | não | Habilita retorno de renda estática (prismadata__personal_income_static__*). |
| `personal_income_pdf` | query | boolean | não | Habilita retorno de renda dinâmica PDF (prismadata__personal_income_pdf__*). Quando habilitado, os endereços podem usar formato de dicionário com parâmetros demográficos individuais (date_income, gender, age, is_responsible, income_compared). |
| `commercial_cluster` | query | boolean | não | Habilita retorno de informações de aglomerações comerciais (prismadata__commercial_cluster__*). |

**Request body** (`application/json`):

Dicionário `{string: object}`.
Dicionário de endereços para geocodificação e agregação em lote. Cada chave é um identificador único e o valor é um objeto com campos de endereço. Campos possíveis: `endereco_completo`, `cep`, `numero`, `tipo_logradouro`, `titulo_logradouro`, `logradouro`, `localidade`, `municipio`, `estado`. Quando `personal_income_pdf=true`, também aceita `date_income`, `gender`, `age`, `is_responsible`, `income_compared` no mesmo objeto.

<details><summary>Exemplo</summary>

```json
{
  "ponto_1": {
    "endereco_completo": "Av Paulista 1000, Sao Paulo, SP"
  },
  "ponto_2": {
    "cep": "30130-165",
    "numero": "100",
    "logradouro": "Rua da Bahia"
  }
}
```

</details>

**Response 200** (`application/json`):

> Successful Response

Dicionário `{string: object}`.
Resposta do batch geocoder aggregator. Cada chave corresponde ao ID do endereço enviado no request, com campos `prismadata__geocoder__*` (resultado da geocodificação) + campos das APIs habilitadas prefixados por `prismadata__<categoria>__` — mesmo conjunto de `BatchAggregatorResponse`. - **geocoder**: campos `prismadata__geocoder__*` (coordenadas, município) - **slum**: campos `prismadata__slum__*` (favelas) - **infosc**: campos `prismadata__infosc__*` (setor censitário) - **prison**: campos `prismadata__prison__*` (presídios) - **border**: campos `prismadata__border__*` (fronteiras) - **personal_income_static**: campos `prismadata__personal_income_static__*` (renda estática) - **personal_income_pdf**: campos `prismadata__personal_income_pdf__*` (renda dinâmica) - **commercial_cluster**: campos `prismadata__commercial_cluster__*` (aglomerações comerciais)

**Outros códigos**: 401, 403, 422, 429

---

## Recursos relacionados

- Documentação Redoc interativa: https://prismadata.io/redoc.html#tag/Gateway-Agregador
- OpenAPI só deste produto (JSON): https://prismadata.io/llm/openapi/gateway-agregador.json
- OpenAPI completo: https://prismadata.io/openapi.yaml
- Índice geral: https://prismadata.io/llms.txt
