API SYSPSI

Documentação completa da API REST do Sistema de Avaliação Psicológica

Versão 1.0.0

Informações Gerais

Base URL: https://ferramentasdaweb.com.br/db/syspsi/api/

Formato: JSON

Charset: UTF-8

CORS: Habilitado para todos os domínios

Autenticação: Por sessão (session_start)

Dica: Todas as requisições devem incluir cookies de sessão para usuários autenticados.

Autenticação POST

/login.php

Realiza login ou cadastro de usuário.

📤 Parâmetros

actionstring"login" ou "register" *
emailstringEmail do usuário *
passwordstringSenha (mínimo 6 caracteres) *
namestringNome completo (obrigatório para cadastro)
sexstringMasculino/Feminino/Outro
ageintIdade

📥 Exemplo de Requisição

fetch('api/login.php', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
        action: 'login',
        email: 'usuario@email.com',
        password: '123456'
    })
})

✅ Resposta de Sucesso

{
    "success": true,
    "message": "Login realizado com sucesso!",
    "user": {
        "id": 1,
        "name": "João Silva",
        "email": "joao@email.com",
        "role": "user"
    }
}

Salvar Resultado POST

/save_result.php

Salva o resultado de um teste realizado.

📤 Parâmetros

test_idintID do teste *
scorefloatPontuação obtida *
classificationstringClassificação do resultado
answersobject/arrayRespostas do usuário (JSON)
detailsobject/arrayDetalhes adicionais (JSON)

📥 Exemplo de Requisição

fetch('api/save_result.php', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
        test_id: 1,
        score: 15,
        classification: "Ansiedade Moderada",
        answers: {
            q1: 2,
            q2: 3,
            q3: 1
        }
    })
})

✅ Resposta de Sucesso

{
    "success": true,
    "message": "Resultado salvo com sucesso!",
    "result_id": 123,
    "redirect": "../reports/result.php?id=123"
}

Estatísticas GET

/get_stats.php

Busca estatísticas do usuário.

📤 Parâmetros (Query String)

test_idintOpcional. ID do teste específico

📥 Exemplo de Requisição

// Estatísticas gerais
fetch('api/get_stats.php')

// Estatísticas de um teste específico
fetch('api/get_stats.php?test_id=1')

✅ Resposta de Sucesso

{
    "success": true,
    "general_stats": {
        "unique_tests": 5,
        "total_tests": 12,
        "avg_score": 42.5,
        "last_activity": "2024-01-15 14:30:00"
    },
    "progress_by_type": [
        {
            "type": "screening",
            "tests_completed": 8,
            "avg_score": 35.2
        }
    ]
}

Códigos de Erro

400 Bad Request Dados incompletos ou inválidos
401 Unauthorized Usuário não autenticado
500 Internal Server Error Erro no servidor

❌ Exemplo de Resposta de Erro

{
    "success": false,
    "message": "Email ou senha incorretos"
}

Exemplos por Linguagem

// Login
async function login(email, password) {
    const response = await fetch('api/login.php', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ action: 'login', email, password })
    });
    return await response.json();
}

// Salvar resultado
async function saveResult(testId, score, classification, answers) {
    const response = await fetch('api/save_result.php', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ test_id: testId, score, classification, answers })
    });
    return await response.json();
}

// Buscar estatísticas
async function getStats(testId = null) {
    const url = testId ? `api/get_stats.php?test_id=${testId}` : 'api/get_stats.php';
    const response = await fetch(url);
    return await response.json();
}
<?php
// Login
$ch = curl_init('api/login.php');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'action' => 'login',
    'email' => 'usuario@email.com',
    'password' => '123456'
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

// Salvar resultado
$data = [
    'test_id' => 1,
    'score' => 15,
    'classification' => 'Ansiedade Moderada'
];
$ch = curl_init('api/save_result.php');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
?>
import requests

# Login
response = requests.post('api/login.php', json={
    'action': 'login',
    'email': 'usuario@email.com',
    'password': '123456'
})
data = response.json()

# Salvar resultado
response = requests.post('api/save_result.php', json={
    'test_id': 1,
    'score': 15,
    'classification': 'Ansiedade Moderada'
})

# Buscar estatísticas
response = requests.get('api/get_stats.php?test_id=1')
stats = response.json()
# Login
curl -X POST https://ferramentasdaweb.com.br/db/syspsi/api/login.php \
  -H "Content-Type: application/json" \
  -d '{"action":"login","email":"usuario@email.com","password":"123456"}'

# Salvar resultado
curl -X POST https://ferramentasdaweb.com.br/db/syspsi/api/save_result.php \
  -H "Content-Type: application/json" \
  -d '{"test_id":1,"score":15,"classification":"Ansiedade Moderada"}'

# Buscar estatísticas
curl https://ferramentasdaweb.com.br/db/syspsi/api/get_stats.php?test_id=1

Limites e Boas Práticas

  • Rate Limit: 100 requisições por minuto por IP
  • Timeout: 30 segundos
  • Sessão: Mantenha os cookies de sessão para requisições autenticadas
  • HTTPS: Sempre use HTTPS em produção