Skip to content

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:

Content-Type: application/json

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):

{
  "status": "ok",
  "message": "Mensagem enviada com sucesso."
}

Response (200 — falha no envio):

{
  "status": "error",
  "message": "Falha ao enviar mensagem. Tente novamente mais tarde."
}

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.