Exemplos de API (Requisição/Resposta)
Introdução ao documento
Este documento apresenta exemplos práticos de requests/responses da API para facilitar consumo e troubleshooting.
Versionamento
- Versão do documento: 1.0.0
- Última atualização: 2026-03-10
- Responsável: Equipe HSL / Weef Interativa
Referencial teórico
URL base: http://localhost:8080
Autenticação
- REST API KPI: Autenticação via cookie WordPress (
wordpress_logged_in) + nonceX-WP-Nonce. - AJAX endpoints: Autenticação via cookie + nonce específico por action.
- Evidência:
theme/functions/wp/ajax.php:823(register_routes sem permission_callback explícito)
REST API — KPIs
Exemplo 1 — GET /wp-json/lean/v1/nedocs
Retorna dados do indicador NEDOCS para um hospital específico.
Fonte: theme/functions/wp/ajax.php:827, callback get_nedocs() em linha 995.
Request:
curl --request GET \
--url 'http://localhost:8080/wp-json/lean/v1/nedocs?group_id=42' \
--header 'X-WP-Nonce: <nonce>' \
--cookie 'wordpress_logged_in_<hash>=<value>'
Response 200:
{
"status": "SUCCESS",
"results": {
"labels": ["2025-01-01", "2025-01-02", "2025-01-03"],
"datasets": [
{
"label": "NEDOCS",
"data": [85, 92, 78]
}
]
}
}
Exemplo 2 — GET /wp-json/lean/v1/giro_tmp_fator
Dados consolidados de giro, tempo médio e fator de utilização.
Fonte: theme/functions/wp/ajax.php:893, callback get_giro_tmp_fator() em linha 987.
Request:
curl --request GET \
--url 'http://localhost:8080/wp-json/lean/v1/giro_tmp_fator?group_id=42&year=2025' \
--header 'X-WP-Nonce: <nonce>' \
--cookie 'wordpress_logged_in_<hash>=<value>'
Response 200:
{
"status": "SUCCESS",
"results": {
"giro": [...],
"tempo_medio": [...],
"fator_utilizacao": [...]
}
}
Exemplo 3 — GET /wp-json/lean/v1/semestral
Relatório semestral de KPIs consolidados.
Fonte: theme/functions/wp/ajax.php:849, callback get_semestral() em linha 986.
Request:
curl --request GET \
--url 'http://localhost:8080/wp-json/lean/v1/semestral?group_id=42' \
--header 'X-WP-Nonce: <nonce>' \
--cookie 'wordpress_logged_in_<hash>=<value>'
Response 200:
{
"status": "SUCCESS",
"results": {
"labels": ["1º Semestre 2025", "2º Semestre 2025"],
"datasets": [...]
}
}
Exemplo 4 — GET /wp-json/lean/v1/eficiencia_centro_cirurgico
Indicador de eficiência do Centro Cirúrgico.
Fonte: theme/functions/wp/ajax.php:869, callback get_eficiencia_centro_cirurgico() em linha 806.
Request:
curl --request GET \
--url 'http://localhost:8080/wp-json/lean/v1/eficiencia_centro_cirurgico' \
--header 'X-WP-Nonce: <nonce>' \
--cookie 'wordpress_logged_in_<hash>=<value>'
Response 200:
{
"status": "SUCCESS",
"results": {
"labels": ["Jan", "Feb", "Mar"],
"datasets": [
{
"label": "Eficiência CC",
"data": [0.78, 0.82, 0.85]
}
]
}
}
AJAX Endpoints
Exemplo 5 — POST front_login (Login frontend)
Autenticação via AJAX com wp_signon.
Fonte: theme/functions/wp/ajax.php:7-8, handler front_login().
Request:
curl --request POST \
--url 'http://localhost:8080/wp-admin/admin-ajax.php' \
--data 'action=front_login&email=usuario@email.com&password=minhasenha&security=<ajax-login-nonce>'
Response 200 (sucesso):
{
"loggedin": true,
"message": "Login efetuado com sucesso"
}
Response 200 (erro):
{
"loggedin": false,
"message": "Email ou senha inválidos"
}
Exemplo 6 — POST handle_item_interaction_counter (registrar like)
Registra interação de like em um post.
Fonte: theme/functions/wp/ajax.php:18-20, handler em linha 81.
Request:
curl --request POST \
--url 'http://localhost:8080/wp-admin/admin-ajax.php' \
--cookie 'wordpress_logged_in_<hash>=<value>' \
--data 'action=handle_item_interaction_counter&post_id=123&operation=add_like'
Response 200 (sucesso):
{
"status": "SUCCESS",
"message": "A curtida foi registrada com sucesso na postagem 123",
"data": []
}
Response 200 (já favoritou):
{
"status": "ERROR",
"message": "Usuário já favoritou",
"data": []
}
Exemplo 7 — GET state_cities (cidades por estado)
Retorna lista de cidades para um estado.
Fonte: theme/functions/wp/ajax.php:9-10, handler get_cities_from_state_id().
Request:
curl --request GET \
--url 'http://localhost:8080/wp-admin/admin-ajax.php?action=state_cities&state_id=35'
Response 200:
{
"status": "OK",
"message": "12 cidades encontradas",
"data": [
[101, "São Paulo"],
[102, "Campinas"],
[103, "Santos"]
]
}
Exemplo 8 — POST hsl_registration_submit (cadastro de usuário)
Cadastro customizado com validação completa.
Fonte: theme/functions/registration/ajax.php:10-11.
Request:
curl --request POST \
--url 'http://localhost:8080/wp-admin/admin-ajax.php' \
--data 'action=hsl_registration_submit&hsl_registration_nonce=<nonce>&display_name=Maria Silva&username=maria_silva&email=maria@hospital.com&password=senhaSegura1&password_confirm=senhaSegura1&institution_state_id=35&institution_city_id=101&institution_hospital_id=42&position=Enfermeiro(a)&terms_accepted=1&recaptcha_response=<token>'
Response 200 (sucesso):
{
"success": true,
"data": {
"message": "Cadastro realizado com sucesso! Você receberá um e-mail para ativar sua conta.",
"user_id": 456,
"requires_activation": true
}
}
Response 200 (erro de validação):
{
"success": false,
"data": {
"code": "validation_failed",
"message": "Por favor, corrija os erros no formulário.",
"errors": {
"email": "Este e-mail já está cadastrado.",
"password": "A senha deve ter pelo menos 8 caracteres."
}
}
}
Exemplo 9 — POST course_enroll_ajax (matrícula EAD)
Matrícula em curso integrado com Canvas LMS.
Fonte: theme/functions/ead/ajax.php:2, handler course_enroll_ajax().
Request:
curl --request POST \
--url 'http://localhost:8080/wp-admin/admin-ajax.php' \
--cookie 'wordpress_logged_in_<hash>=<value>' \
--data 'action=course_enroll_ajax&course=789&security=<ajax-course-nonce>'
Response 200 (sucesso):
{
"status": "success",
"message": "Matrícula realizada com sucesso"
}
Exemplo 10 — POST hsl_indication_submit (indicação a grupo)
Envio de convites para usuários se juntarem a um grupo hospitalar.
Fonte: theme/functions/indication/ajax.php:12.
Request:
curl --request POST \
--url 'http://localhost:8080/wp-admin/admin-ajax.php' \
--cookie 'wordpress_logged_in_<hash>=<value>' \
--data 'action=hsl_indication_submit&_wpnonce=<hsl_indication_nonce>&emails=user1@email.com,user2@email.com&group_id=42'
Response 200 (sucesso):
{
"success": true,
"data": {
"message": "Convites enviados com sucesso.",
"sent": 2,
"failed": 0
}
}
Endpoints sem cobertura de exemplos
- Todos os 25+ endpoints REST de KPI individual (padrão de resposta idêntico ao Exemplo 1).
hsl_change_password— schema de request não documentado explicitamente no código.hsl_upload_avatar/hsl_upload_cover— upload multipart, sem schema de request documentado.get_more_posts— args como JSON serializado, estrutura dinâmica.
Pendências
- Schemas de response dos KPIs podem variar por tipo de indicador (line chart, bar chart, gauge) — necessita mapeamento completo.
- Validação de
permission_callbacknão explícita nos REST routes (potencial issue de segurança). - Endpoints AJAX de interação (
handle_item_interaction_counter) têm nonce check comentado (linha 85-88 deajax.php).