> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polymorfa.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Modelos de mensagem

> Crie, visualize e envie para aprovação modelos de mensagem do projeto com o MessagingClient.

Um modelo de projeto é uma mensagem reutilizável com variáveis. Crie-o uma vez,
visualize-o e envie-o de qualquer Número. Números da Cloud API também precisam
da aprovação da Meta antes de enviá-lo. Os modelos são identificados pelo slug
do projeto.

| Tarefa | Permissão |
| - | - |
| Listar, ler e visualizar modelos | `templates:read` |
| Criar, atualizar, excluir e enviar modelos para aprovação | `templates:manage` |

## Crie um modelo

```typescript theme={null}
const created = await messaging.templates.create("<project-slug>", {
  name: "order_ready",
  definition: {
    version: 1,
    kind: "standard",
    category: "UTILITY",
    language: "en_US",
    body: "Hello {{name}}, your order is ready.",
    variables: [{ name: "name", type: "text", example: "Ada" }],
  },
});

const templateId = created.data.data.id;
```

O tipo `TemplateDefinition` lista todos os campos que uma definição aceita.

## Visualize um modelo

```typescript theme={null}
const preview = await messaging.templates.preview("<project-slug>", templateId, {
  values: { name: "Grace" },
});
console.log(preview.data.data);
```

A Polymorfa gera a visualização. Ela não pede à Meta que valide o modelo.

## Envie um modelo para aprovação

```typescript theme={null}
await messaging.templates.submit("<project-slug>", templateId, {
  session: "<number-id>",
});
```

A mesma chamada de envio para aprovação aceita qualquer Número. Números com
dispositivos vinculados retornam `submission.status` `APPROVED` e
`submission.autoApproved` `true` sem revisão da Meta. Números da Cloud API
retornam `submission.status` `PENDING`: a Meta recebeu o envio e ainda não o
aprovou. A Polymorfa valida a definição salva nos dois tipos de conexão. A Meta
informa a decisão da Cloud API no webhook `template.status`. Se a solicitação
expirar, leia o modelo antes de enviá-lo para aprovação de novo.

## Liste, atualize e exclua modelos

```typescript theme={null}
const templates = await messaging.templates.list("<project-slug>");
for (const template of templates.data.data) console.log(template.name, template.status);

await messaging.templates.update("<project-slug>", templateId, {
  sampleValues: { name: "Ada" },
});

await messaging.templates.delete("<project-slug>", templateId);
```

Para enviar um modelo aprovado, veja
[Envie um modelo](/pt-br/sdks/typescript/messages#envie-um-modelo).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.