Este documento descreve os endpoints da API REST disponíveis na plataforma pdf2xls e como interagir com os mesmos.
Todos os pedidos à API devem ser feitos de forma relativa ao URL base do seu servidor (ex: https://api.pdf2xls.neoscopio.com ou http://localhost:8000).
Endpoint para verificar se a API está a correr corretamente e confirmar as versões do ambiente do servidor.
Endpoint: GET /api/health
Autenticação: Não requerida
{
"status": "ok",
"timestamp": 1697034512,
"php_version": "8.x.x",
"symfony_version": "8.0"
}
Regista uma nova conta de utilizador na plataforma.
Endpoint: POST /api/register
Autenticação: Não requerida
Content-Type: application/json
{
"name": "João Silva",
"email": "joao.silva@example.com",
"password": "passwordSegura123"
}
cURL:
curl -X POST https://api.pdf2xls.neoscopio.com/api/register \
-H "Content-Type: application/json" \
-d '{"name": "João Silva", "email": "joao.silva@example.com", "password": "passwordSegura123"}'
Python:
import requests
url = "https://api.pdf2xls.neoscopio.com/api/register"
data = {
"name": "João Silva",
"email": "joao.silva@example.com",
"password": "passwordSegura123"
}
response = requests.post(url, json=data)
print(response.json())
Autentica um utilizador existente e devolve um token de acesso para ser usado em pedidos futuros.
Endpoint: POST /api/login
Autenticação: Não requerida
Content-Type: application/json
{
"email": "joao.silva@example.com",
"password": "passwordSegura123"
}
cURL:
curl -X POST https://api.pdf2xls.neoscopio.com/api/login \
-H "Content-Type: application/json" \
-d '{"email": "joao.silva@example.com", "password": "passwordSegura123"}'
PHP:
<?php
$url = "https://api.pdf2xls.neoscopio.com/api/login";
$data = json_encode([
"email" => "joao.silva@example.com",
"password" => "passwordSegura123"
]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
token base64).Faz o upload de uma imagem de fatura ou recibo (PDF/PNG/JPEG) para extração automatizada de dados. O servidor processa o ficheiro e devolve o resultado estruturado.
Endpoint: POST /api/extract
Autenticação: Requerida (Enviar token no cabeçalho Authorization: Bearer <TOKEN>)
Content-Type: multipart/form-data
pdf: O ficheiro a ser enviado.
application/pdf, image/png, image/jpeg, image/jpg2 MBcURL:
curl -X POST https://api.pdf2xls.neoscopio.com/api/extract \
-H "Authorization: Bearer SEU_TOKEN_AQUI" \
-F "pdf=@/caminho/para/a/sua/fatura.pdf"
Python (requests):
import requests
url = "https://api.pdf2xls.neoscopio.com/api/extract"
headers = {
"Authorization": "Bearer SEU_TOKEN_AQUI"
}
# Abrir o ficheiro em modo binário de leitura
with open("/caminho/para/a/sua/fatura.pdf", "rb") as file:
files = {"pdf": file}
response = requests.post(url, headers=headers, files=files)
if response.status_code == 200:
print("Extração concluída!")
print(response.json())
else:
print(f"Erro {response.status_code}: {response.text}")
PHP (cURL):
<?php
$url = "https://api.pdf2xls.neoscopio.com/api/extract";
$token = "SEU_TOKEN_AQUI";
$filePath = "/caminho/para/a/sua/fatura.pdf";
// Preparar o ficheiro para upload
$cfile = new CURLFile($filePath, 'application/pdf', 'fatura.pdf');
$data = array('pdf' => $cfile);
// Inicializar a sessão cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Adicionar o cabeçalho de autenticação
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Authorization: Bearer " . $token
));
// Executar o pedido
$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Validar a resposta
if ($httpcode == 200) {
echo "Extração concluída!\n";
print_r(json_decode($response, true));
} else {
echo "Erro $httpcode: $response\n";
}
?>
invoice_number, total, items).