Pular para o conteúdo

Templates API Routes

Documentação de todas as rotas em /api/templates/**.


Descrição: Lista templates de mensagem WhatsApp com paginação offset/cursor, busca e filtros. Auth: Required

Request:

  • Query params: page, limit, cursor, search, category, meta_status, folder_id, sort, order

Response (offset mode):

  • 200: { data: { data: Template[], total, page, limit, totalPages } }

Response (cursor mode):

  • 200: { data: { data: Template[], nextCursor, hasMore } }

Descrição: Cria um novo template de mensagem WhatsApp.

Request:

  • Body (templateSchema): { name, category, language, template_type, header_type?, body_text?, footer_text?, buttons?, example_values?, carousel_cards?, ... }

Response:

  • 201: { data: Template }

Notas: example_values do input e mapeado para variables no banco.


Response:

  • 200: { data: Template }
  • 404: Não encontrado

Descrição: Atualiza um template (parcial).

Response:

  • 200: { data: Template }
  • 404: Não encontrado

Descrição: Soft-deleta um template. Audit: delete message_template

Response:

  • 204: No Content

Descrição: Submete um template para aprovação na Meta WhatsApp API.

Request:

  • Body (opcional): { profile_id?: string }

Response:

  • 200: { data: { meta_template_id, status, category } }
  • 502: WhatsAppError (Meta API falhou)

Notas:

  • Converte formato x17 para Meta via convertToMetaFormat()
  • Submete via MetaWhatsAppApi.submitTemplate()
  • Atualiza meta_template_id e meta_status: "pending" no banco
  • Cria notificação in-app

Descrição: Upload de mídia para templates (header image/video/document). Auth: Required Rate Limit: 5 uploads / 60s

Request:

  • Content-Type: multipart/form-data
  • Body: file (File)

Response:

  • 200: { data: { url, type, size, name } }

Notas:

  • Tipos: image/jpeg, image/png, image/webp (max 5MB), video/mp4 (max 16MB), application/pdf (max 100MB)
  • Upload para bucket template-media do Supabase Storage
  • Path: {accountId}/{uuid}.{ext}