API de Contato¶
Formulário de contato público para envio de mensagens ao time FDPlay.
📋 Endpoints¶
| Método | Endpoint | Descrição | Auth |
|---|---|---|---|
| POST | /contact |
Enviar mensagem de contato | ❌ Não |
1. POST /api/v1/contact - Enviar Mensagem¶
Endpoint público para envio de mensagens via formulário de contato do site. A mensagem é enviada por email para a caixa de entrada do time FDPlay.
Headers:
Request Body:
{
"name": "João Silva",
"email": "joao@email.com",
"phone": "+55 (11) 99999-0000",
"subject": "Dúvida sobre a plataforma",
"message": "Gostaria de saber mais sobre os planos disponíveis.",
"newsletter": true
}
Campos:
| Campo | Tipo | Obrigatório | Validação | Descrição |
|---|---|---|---|---|
name |
string | ✅ | 2–200 chars | Nome completo |
email |
string | ✅ | Email válido | E-mail de contato |
phone |
string | ✅ | 8–30 chars | Telefone |
subject |
string | ✅ | 2–200 chars | Assunto da mensagem |
message |
string | ✅ | 10–5000 chars | Corpo da mensagem |
newsletter |
boolean | ❌ | — | Aceita receber novidades (default: false) |
Exemplo cURL:
curl -X POST "http://localhost:8000/api/v1/contact" \
-H "Content-Type: application/json" \
-d '{
"name": "João Silva",
"email": "joao@email.com",
"phone": "+55 (11) 99999-0000",
"subject": "Dúvida sobre a plataforma",
"message": "Gostaria de saber mais sobre os planos disponíveis.",
"newsletter": true
}'
Exemplo Flutter/Dart:
import 'dart:convert';
import 'package:http/http.dart' as http;
final response = await http.post(
Uri.parse('https://api.fdplay.com.br/api/v1/contact'),
headers: {'Content-Type': 'application/json'},
body: jsonEncode({
'name': 'João Silva',
'email': 'joao@email.com',
'phone': '+55 (11) 99999-0000',
'subject': 'Dúvida sobre a plataforma',
'message': 'Gostaria de saber mais sobre os planos.',
'newsletter': true,
}),
);
final data = jsonDecode(response.body);
if (data['status'] == 'ok') {
// Mensagem enviada com sucesso
}
Response (200 OK):
Response (200 — falha no envio):
Response (422 — validação):
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Erro de validação nos dados enviados",
"details": [
{
"loc": ["body", "name"],
"msg": "String should have at least 2 characters",
"type": "string_too_short"
}
],
"field": "name",
"timestamp": "2026-03-29T23:02:12.491859Z"
}
}
⚙️ Detalhes de Implementação¶
- Sem autenticação: Endpoint público, qualquer visitante pode enviar
- Email: Enviado via SMTP (Gmail) com fallback para Resend API
- Destino: Caixa de entrada do time FDPlay
- Newsletter: O campo
newsletteré registrado no email mas não gera inscrição automática em lista
Rate Limiting
Este endpoint ainda não possui rate limiting. Considere implementar proteção contra abuso (Cloudflare Turnstile) antes de expor em produção.