Skip to main content

API de Templates

Além de gerenciar templates pelo Positus Studio, é possível administrá-los diretamente pela API. Os endpoints de templates são escopados por workspace e permitem listar, consultar, validar o nome, criar e excluir templates.

Autenticação e escopo

Todas as rotas exigem autenticação via Bearer Token de usuário e são acessadas sob o workspace desejado:
A criação e a exclusão de templates exigem que o usuário autenticado seja proprietário (owner) do workspace. Caso contrário, a API responde 403. As demais rotas exigem apenas que o usuário tenha acesso ativo ao workspace.
Não existe rota para editar um template nem para buscar por nome. Para alterar um template, crie um novo.

Listar templates

Retorna os templates do workspace.
  • Não há paginação nem outros filtros (nome, categoria ou idioma).
  • Templates com status DELETED não são retornados na listagem.
  • O status PAUSED possui dois ids (10 e 11); para filtrá-lo, consulte um id por vez.
Resposta
Veja a descrição de cada campo em Atributos.

Exibir template

Retorna um template específico do workspace.
Resposta — { "data": { ...objeto de template } }, no mesmo formato de cada item da listagem. Se o template não pertencer ao workspace, a API responde 404.
Diferente da listagem, a exibição também retorna templates com status DELETED.

Validar nome

Antes de criar um template, verifique se o nome já está em uso no workspace. Tentar criar um template com um nome já existente resulta em erro.
Resposta
  • 204 No Content: não há template com esse nome.
  • 422 Unprocessable Entity: o nome já existe.
O nome é normalizado da mesma forma que na criação (veja Criar template) e comparado somente com os templates registrados na Positus para o workspace, incluindo os já excluídos. A verificação não consulta a Meta.

Criar template

Cria um template no workspace. O template é enviado à Meta e, em caso de sucesso, registrado na Positus.
Envie os dados como FormData (multipart/form-data). Templates com header de documento, imagem ou vídeo (e cards de carrossel com imagem ou vídeo) exigem o envio do arquivo, que deve ser informado em components[i][example][header_handle][0].
O name é normalizado antes de ser salvo: fica em minúsculas e espaços e símbolos viram _. Por exemplo, Meu primeiro template é salvo como meu_primeiro_template. O nome retornado na resposta é o normalizado.

Componentes

A propriedade components é repassada à Meta sem alterações: a Positus não define nem valida tipos de componentes, parâmetros ou botões, e a Meta é quem aceita ou rejeita o conteúdo. Consulte todas as possibilidades na documentação da Meta sobre componentes. Os únicos casos em que a Positus inspeciona o conteúdo de components são os arquivos de header:

Template simples

Resposta — 200 OK
status, category e wa_id vêm da resposta da Meta. Por isso, a categoria pode ser diferente da enviada (a Meta pode recategorizar o template) e o status geralmente é PENDING. A criação responde 200, e não 201.

Template com arquivo no header

O arquivo deve ser enviado no mesmo campo FormData components[1][example][header_handle][0] (índice do componente HEADER dentro de components). O exemplo abaixo mostra o corpo lógico, em que (binary) representa o arquivo.
Resposta — 200 OK (trecho). O arquivo enviado fica disponível em header_file, e header_handle[0] passa a conter o identificador gerado pela Meta.

Template de carrossel

Cada card com header de imagem ou vídeo exige o arquivo correspondente em components[i][cards][j][components][k][example][header_handle][0] (FormData). O exemplo abaixo mostra o corpo lógico.
Resposta — 200 OK. Os arquivos dos cards são retornados em carousel_files, na ordem dos cards:

Template de autenticação

Resposta — 200 OK (trecho):
As opções de componentes de autenticação (como o corpo e o botão OTP) são validadas pela Meta. Para ver o texto padrão de templates de autenticação, use a rota de pré-visualização.

Limites e erros

Ao criar um template pela API, o evento message_template_created é enviado ao webhook do workspace.

Excluir template

Exclui um template do workspace. Exige usuário proprietário do workspace.
Resposta
  • 204 No Content: o template foi excluído na Meta e marcado como DELETED na Positus.
  • 400: a Meta não excluiu o template. A resposta traz { "message": "..." } com a mensagem retornada pela Meta.
  • 403: o usuário não é proprietário do workspace.
A exclusão é feita pelo nome do template na Meta. Se o mesmo nome existir em mais de um idioma, considere que a exclusão pode alcançar todos eles, conforme o comportamento da Meta.

Pré-visualizações

Retorna as pré-visualizações de templates de autenticação fornecidas pela Meta para o WABA do workspace.
A resposta é o JSON retornado pela Meta, sem transformação, e fica em cache por 1 hora para a mesma combinação de workspace, categoria, idiomas e opções. Se o workspace não possuir WABA, a API responde 400.

Restrições

Retorna as restrições de templates do workspace.
Resposta
Esta rota é apenas informativa: o endpoint de criação valida somente se display_format e sub_category pertencem aos valores aceitos, e não bloqueia o envio quando order_details é false.

Listar templates de um número

Retorna os templates do workspace ao qual um número pertence.
Resposta — { "data": [ ...objetos de template ] }, com todos os templates não excluídos do workspace do número, sem filtro de status.

Saiba mais