API e Integrações

Documentação da API

API e Integrações

Documentação completa da API REST do sistema CBAV

"Tudo posso naquele que me fortalece"

Filipenses 4:13

Visão Geral da API

A API REST do sistema CBAV fornece acesso programático a todas as funcionalidades do sistema. Desenvolvida com Laravel, oferece endpoints seguros e bem documentados para integração com aplicações externas.

Autenticação Segura

JWT e OAuth2

CRUD Completo

Todas as entidades

Relatórios

Dados analíticos

Autenticação

Métodos de Autenticação

JWT Token

Autenticação baseada em tokens JWT

POST /api/auth/login
{
    "email": "user@example.com",
    "password": "password"
}

Response:
{
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "user": {
        "id": 1,
        "name": "User Name",
        "email": "user@example.com"
    }
}

OAuth2

Autenticação OAuth2 para aplicações externas

POST /oauth/token
{
    "grant_type": "password",
    "client_id": "client_id",
    "client_secret": "client_secret",
    "username": "user@example.com",
    "password": "password"
}

Endpoints Principais

Módulos da API

Gestão de Membros

# Listar membros
GET /api/members
Authorization: Bearer {token}

# Criar membro
POST /api/members
{
    "nome": "João Silva",
    "email": "joao@email.com",
    "telefone": "(75) 99999-9999",
    "data_nascimento": "1990-01-01",
    "cargo_id": 1
}

# Atualizar membro
PUT /api/members/{id}
{
    "nome": "João Silva Santos",
    "email": "joao.silva@email.com"
}

# Deletar membro
DELETE /api/members/{id}

Sistema Financeiro

# Listar transações
GET /api/transactions
Authorization: Bearer {token}

# Criar doação
POST /api/donations
{
    "valor": 100.00,
    "gateway": "stripe",
    "campanha_id": 1,
    "doador_nome": "Anônimo",
    "doador_email": "doador@email.com"
}

# Relatórios financeiros
GET /api/finance/reports
GET /api/finance/reports/monthly
GET /api/finance/reports/campaigns

EBD Digital

# Listar aulas
GET /api/ebd/classes
Authorization: Bearer {token}

# Criar aula
POST /api/ebd/classes
{
    "titulo": "Lição 1 - Introdução",
    "descricao": "Introdução ao estudo bíblico",
    "data_aula": "2025-01-15",
    "professor_id": 1
}

# Quiz bíblico
GET /api/ebd/quiz/questions
POST /api/ebd/quiz/answers
{
    "pergunta_id": 1,
    "resposta": "A"
}

Eventos

# Listar eventos
GET /api/events
Authorization: Bearer {token}

# Criar evento
POST /api/events
{
    "titulo": "Culto de Domingo",
    "descricao": "Culto de domingo às 18h",
    "data_inicio": "2025-01-19 18:00:00",
    "local": "Templo Principal",
    "capacidade_maxima": 200
}

# Inscrições
POST /api/events/{id}/register
{
    "nome": "Maria Silva",
    "email": "maria@email.com",
    "telefone": "(75) 88888-8888"
}

Formato de Resposta

Padrão de Resposta

Sucesso

{
    "success": true,
    "message": "Operação realizada com sucesso",
    "data": {
        "id": 1,
        "nome": "João Silva",
        "email": "joao@email.com",
        "created_at": "2025-01-15T10:30:00Z"
    },
    "meta": {
        "total": 1,
        "page": 1,
        "per_page": 15
    }
}

Erro

{
    "success": false,
    "message": "Erro na operação",
    "errors": {
        "email": ["O email já está em uso"],
        "telefone": ["Telefone inválido"]
    },
    "code": "VALIDATION_ERROR"
}

Webhooks

Integração com Webhooks

Webhooks de Pagamento

# Stripe Webhook
POST /api/webhooks/stripe
{
    "type": "payment_intent.succeeded",
    "data": {
        "object": {
            "id": "pi_1234567890",
            "amount": 10000,
            "currency": "brl",
            "status": "succeeded"
        }
    }
}

# Mercado Pago Webhook
POST /api/webhooks/mercadopago
{
    "type": "payment",
    "data": {
        "id": 123456789,
        "status": "approved",
        "amount": 100.00
    }
}

Webhooks de Sistema

# Novo membro
POST /webhook-url
{
    "event": "member.created",
    "data": {
        "id": 1,
        "nome": "João Silva",
        "email": "joao@email.com"
    }
}

# Nova doação
POST /webhook-url
{
    "event": "donation.received",
    "data": {
        "id": 1,
        "valor": 100.00,
        "doador": "Anônimo"
    }
}

SDKs e Bibliotecas

Bibliotecas Disponíveis

JavaScript/Node.js

npm install cbav-api-client

import { CBAVClient } from 'cbav-api-client';

const client = new CBAVClient({
    baseURL: 'https://api.cbav.com',
    token: 'your-api-token'
});

// Usar a API
const members = await client.members.list();
const newMember = await client.members.create({
    nome: 'João Silva',
    email: 'joao@email.com'
});

PHP

composer require cbav/api-client

use CBAV\ApiClient;

$client = new ApiClient([
    'base_url' => 'https://api.cbav.com',
    'token' => 'your-api-token'
]);

// Usar a API
$members = $client->members()->list();
$newMember = $client->members()->create([
    'nome' => 'João Silva',
    'email' => 'joao@email.com'
]);

Rate Limiting

Limites de Requisições

Plano Básico

  • 1.000 req/min
  • Endpoints básicos
  • Suporte por email

Plano Profissional

  • 10.000 req/min
  • Todos os endpoints
  • Suporte prioritário

Plano Enterprise

  • Ilimitado
  • Endpoints customizados
  • Suporte 24/7

Códigos de Erro

Códigos de Status HTTP

Erros de Cliente (4xx)

  • 400: Bad Request - Dados inválidos
  • 401: Unauthorized - Token inválido
  • 403: Forbidden - Sem permissão
  • 404: Not Found - Recurso não encontrado
  • 422: Unprocessable Entity - Validação falhou
  • 429: Too Many Requests - Rate limit excedido

Erros de Servidor (5xx)

  • 500: Internal Server Error - Erro interno
  • 502: Bad Gateway - Serviço indisponível
  • 503: Service Unavailable - Manutenção
  • 504: Gateway Timeout - Timeout