A API do ARBOSOCIAL fornece endpoints RESTful para acesso aos dados epidemiológicos, indicadores sociais, predições de machine learning e sistema de alertas.
Base URL: https://arbosocial.data-lab.org/api
A API utiliza autenticação JWT (JSON Web Tokens). Inclua o token no header Authorization:
Authorization: Bearer <seu_token_jwt>
POST /auth/login
Content-Type: application/json
{
"email": "usuario@exemplo.com",
"password": "senha123"
}Resposta:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"user": {
"id": 1,
"email": "usuario@exemplo.com",
"name": "Nome do Usuário",
"role": "user"
}
}GET /data/municipalitiesParâmetros de Query:
state(string): Filtrar por estado (ex: SP, RJ)region(string): Filtrar por região (Norte, Nordeste, etc.)search(string): Buscar por nome
Resposta:
[
{
"id": 1,
"ibge_code": "3550308",
"name": "São Paulo",
"state": "SP",
"region": "Sudeste",
"population": 12325232,
"area_km2": 1521.11
}
]GET /data/municipalities/{id}GET /data/casesParâmetros de Query:
municipality_id(int): ID do municípiodisease(string): dengue, zika, chikungunyayear(int): Anostart_week(int): Semana epidemiológica inicialend_week(int): Semana epidemiológica final
Resposta:
[
{
"id": 1,
"municipality_id": 1,
"disease": "dengue",
"epidemiological_week": 10,
"year": 2024,
"confirmed_cases": 150,
"probable_cases": 200,
"deaths": 2,
"incidence_rate": 12.5,
"notification_date": "2024-03-10"
}
]GET /data/cases/summaryParâmetros de Query:
disease(string): Doença específicayear(int): Anostate(string): Estadoregion(string): Região
GET /data/social-indicatorsParâmetros de Query:
municipality_id(int): ID do municípioyear(int): Ano
Resposta:
[
{
"id": 1,
"municipality_id": 1,
"year": 2023,
"population_density": 7398.26,
"urban_population_pct": 99.1,
"gdp_per_capita": 65629.0,
"gini_index": 0.62,
"poverty_rate": 8.5,
"water_supply_pct": 99.8,
"sewage_treatment_pct": 87.3
}
]GET /data/correlationsParâmetros de Query:
disease(string): Doença para análiseyear(int): Anoindicators(array): Lista de indicadores
GET /predictionsParâmetros de Query:
municipality_id(int): ID do municípiodisease(string): Doençamodel_name(string): arima, lstm, prophet, ensembleweeks_ahead(int): Semanas à frente
Resposta:
[
{
"id": 1,
"municipality_id": 1,
"disease": "dengue",
"model_name": "ensemble",
"prediction_date": "2024-03-15",
"target_week": 15,
"target_year": 2024,
"predicted_cases": 180.5,
"confidence_interval_lower": 150.2,
"confidence_interval_upper": 210.8,
"model_accuracy": 0.87
}
]POST /predictions/generate
Content-Type: application/json
{
"municipality_ids": [1, 2, 3],
"disease": "dengue",
"weeks_ahead": 4,
"models": ["arima", "lstm", "prophet"]
}GET /predictions/performanceGET /alertsParâmetros de Query:
municipality_id(int): ID do municípiodisease(string): Doençaalert_level(string): low, medium, high, criticalis_active(boolean): Alertas ativos
Resposta:
[
{
"id": 1,
"municipality_id": 1,
"disease": "dengue",
"alert_level": "high",
"alert_type": "outbreak_prediction",
"message": "Predição de surto de dengue nas próximas 3 semanas",
"predicted_cases": 250.0,
"confidence_score": 0.89,
"is_active": true,
"created_at": "2024-03-15T10:30:00Z"
}
]POST /alerts
Content-Type: application/json
{
"municipality_id": 1,
"disease": "dengue",
"alert_level": "high",
"alert_type": "threshold_exceeded",
"message": "Número de casos excedeu o limiar esperado",
"predicted_cases": 200.0,
"confidence_score": 0.92
}PATCH /alerts/{id}/resolvePOST /reports/generate
Content-Type: application/json
{
"type": "cases",
"format": "pdf",
"filters": {
"disease": "dengue",
"year": 2024,
"state": "SP"
}
}Tipos de Relatório:
cases: Relatório de casospredictions: Relatório de prediçõesalerts: Relatório de alertascorrelations: Relatório de correlações
Formatos:
pdf: Arquivo PDFexcel: Planilha Excelcsv: Arquivo CSV
GET /data/geoParâmetros de Query:
type(string): municipalities, states, regionslevel(string): Nível de detalhe
200 OK: Requisição bem-sucedida201 Created: Recurso criado com sucesso400 Bad Request: Dados inválidos na requisição401 Unauthorized: Token de autenticação inválido ou ausente403 Forbidden: Acesso negado404 Not Found: Recurso não encontrado422 Unprocessable Entity: Dados válidos mas não processáveis500 Internal Server Error: Erro interno do servidor
- Usuários autenticados: 1000 requisições por hora
- Usuários não autenticados: 100 requisições por hora
import requests
# Login
response = requests.post('https://arbosocial.data-lab.org/api/auth/login',
json={'email': 'user@example.com', 'password': 'password'})
token = response.json()['access_token']
# Obter casos de dengue em São Paulo
headers = {'Authorization': f'Bearer {token}'}
response = requests.get('https://arbosocial.data-lab.org/api/data/cases',
params={'municipality_id': 1, 'disease': 'dengue'},
headers=headers)
cases = response.json()// Login
const loginResponse = await fetch('https://arbosocial.data-lab.org/api/auth/login', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({email: 'user@example.com', password: 'password'})
});
const {access_token} = await loginResponse.json();
// Obter predições
const predictionsResponse = await fetch('https://arbosocial.data-lab.org/api/predictions', {
headers: {'Authorization': `Bearer ${access_token}`}
});
const predictions = await predictionsResponse.json();Para dúvidas sobre a API, entre em contato:
- Email: api@data-lab.org
- Documentação: https://docs.arbosocial.data-lab.org (em desenvolvimento)
- GitHub: https://github.com/data-lab-org/ARBOSOCIAL