Pular para o conteúdo principal

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) + nonce X-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_callback nã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 de ajax.php).