APIs e Endpoints¶
Endpoints Disponíveis¶
Web Interface¶
Endpoint | Método | Descrição |
---|---|---|
/ |
GET/POST | Página inicial com formulário |
/emails/ |
GET | Lista de emails classificados |
/emails/<id>/ |
GET | Detalhes de um email |
/about/ |
GET | Sobre o projeto |
REST API¶
Endpoint | Método | Descrição |
---|---|---|
/api/status/ |
GET | Status da API |
/api/submit-email/ |
POST | Submeter email para classificação |
/api/emails/ |
GET | Lista emails em JSON |
/api/emails/<id>/ |
GET | Detalhes de email em JSON |
/api/usage/ |
GET | Estatísticas de uso |
/api/jobs/<job_id>/ |
GET | Status de job específico |
Detalhes dos Endpoints¶
POST /api/submit-email/¶
Submete um email para classificação assíncrona.
Request¶
{
"input_method": "text|file",
"subject": "Assunto do email",
"content": "Conteúdo do email",
"sender": "user@example.com",
"file": "<arquivo em base64>",
"use_file_subject": true,
"use_file_sender": true
}
Response (Sucesso)¶
{
"status": "queued",
"message": "Email submetido para processamento",
"id": 123,
"job_id": "uuid-do-job",
"queue_position": 2,
"estimated_wait": 6,
"queue_status": {
"queue_length": 2,
"estimated_wait": 6,
"processing_count": 1
}
}
Response (Erro)¶
GET /api/jobs/{job_id}/¶
Verifica o status de processamento de um job.
Response (Processando)¶
{
"id": "uuid-do-job",
"job_type": "process_email_complete",
"status": "processing",
"created_at": "2023-12-01T10:00:00Z",
"started_at": "2023-12-01T10:00:05Z",
"position_in_queue": 0,
"estimated_wait_time": 0
}
Response (Concluído)¶
{
"id": "uuid-do-job",
"job_type": "process_email_complete",
"status": "completed",
"created_at": "2023-12-01T10:00:00Z",
"started_at": "2023-12-01T10:00:05Z",
"completed_at": "2023-12-01T10:00:08Z",
"processing_time": 3.2,
"email": {
"id": 123,
"subject": "Assunto do email",
"category": "productive",
"confidence_score": 85.5,
"is_processed": true
}
}
GET /api/usage/¶
Obtém estatísticas de uso das APIs.
Response¶
{
"gemini_api": {
"minute_usage": 5,
"minute_limit": 20,
"minute_percent": 25.0,
"day_usage": 150,
"day_limit": 15000,
"day_percent": 1.0,
"total_today": 150
},
"job_queue": {
"queue_length": 2,
"estimated_wait": 6,
"processing_count": 1,
"queued_jobs": [...]
},
"timestamp": "2023-12-01T10:30:00Z"
}
GET /api/emails/{id}/¶
Obtém detalhes de um email específico.
Response¶
{
"id": 123,
"subject": "Reunião de alinhamento do projeto",
"content": "Gostaria de agendar uma reunião...",
"sender": "manager@empresa.com",
"category": "productive",
"suggested_response": "Prezado(a),\n\nAgradeço pelo convite...",
"created_at": "2023-12-01T10:00:00.000Z",
"confidence_score": 85.5
}
CORS Configuration¶
O sistema está configurado para aceitar requisições cross-origin:
- Access-Control-Allow-Origin:
*
(desenvolvimento) - Access-Control-Allow-Methods: GET, POST, OPTIONS
- Access-Control-Allow-Headers: Content-Type, X-Requested-With
Rate Limiting¶
As APIs respeitam os seguintes limites:
- Gemini API: 20 req/min, 15000 req/dia
- Rate limiting: Implementado via middleware personalizado
- Fallback: Sistema heurístico quando limites são atingidos