# Versões de templates

> As versões compartilham um alias para que você crie, teste e publique um novo design sem alterar o código. Como a publicação funciona no painel e na API.

As versões permitem alterar um template sem mexer no código que o envia. Todas as versões de um template compartilham um alias, e no máximo uma delas fica publicada. Os envios pelo alias sempre usam a versão publicada, então você pode criar um redesign em rascunho, testá-lo e passar a usá-lo com um clique.

## Como as versões funcionam

Todo template é uma versão com o seu próprio ID `tem_`, nome, assunto, endereço From, editor e conteúdo. As versões com o mesmo alias formam um grupo:

```text
welcome-email
├── Welcome email v3   tem_33W1rXk9Pd2LmQ7vB4nC8sTyFgh   Draft
├── Welcome email v2   tem_33Vd8Hq3Ws5NzK1xR7cM2pLbYte   Published   ← sends by alias use this one
└── Welcome email      tem_33TfB6yN4qJ8kV2mX9wR1cHsDua   Draft
```

| Como você se refere ao template | Qual versão é usada |
| --- | --- |
| Alias, como `"template": "welcome-email"` | A versão publicada. Se nenhuma estiver publicada, o envio falha com `404 Template not found`. |
| ID `tem_`, como `"template": "tem_33W1rXk9Pd2LmQ7vB4nC8sTyFgh"` | Exatamente essa versão, publicada ou não |

As mesmas regras valem para a etapa **Send email** das [automações](/pt/docs/automations/steps/). No painel, a lista de templates mostra apenas a versão publicada de cada alias. Os rascunhos aparecem no painel **Versions** da página do template.

## Criar uma nova versão

1. **Abra o template.** Acesse **Email Marketing → Templates** e selecione o template.

2. **Comece uma versão.** No painel **Versions**, selecione **New Version**.

3. **Escolha a origem.** Na caixa de diálogo **Create New Version**, escolha em **Copy from** a versão de partida e selecione **Create Version**. O Emailit copia o assunto, o From, o Reply-To, o editor e o conteúdo dela para um novo rascunho com o nome da origem, como `Welcome email v3`.

4. **Edite o rascunho.** Selecione **Open Editor** e faça as suas alterações. A versão publicada continua sendo enviada até você publicar o rascunho.

Uma nova versão também é criada sempre que você adiciona um template com um alias que já existe, seja com **Add template**, **Duplicate Template**, **Import** ou **Save as template** em uma campanha. O novo template é salvo como rascunho. As caixas de diálogo **Add template**, **Duplicate Template** e **Save as template** avisam com **Alias already exists**; **Import** não avisa.

## Testar um rascunho

Envie o rascunho para você mesmo pelo ID `tem_` dele antes de publicá-lo. Copie o ID na página do template.

```bash
curl https://api.emailit.com/v2/emails \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Acme <hello@acme.com>",
    "to": "you@acme.com",
    "template": "tem_33W1rXk9Pd2LmQ7vB4nC8sTyFgh",
    "variables": { "first_name": "Ada", "plan": "Pro" }
  }'
```

## Publicar uma versão

Publicar torna uma versão a versão ativa do alias dela. A versão que estava publicada antes vira rascunho, então apenas uma versão fica publicada por vez.

**Painel**

  Abra o rascunho e selecione **Publish**, ou selecione o ícone de publicar ao lado dele no painel **Versions**. A caixa de diálogo **Publish template** avisa que a publicação vai substituir a versão ativa atual. Selecione **Publish** para confirmar.

**API**

  Chame [Publicar um template](/pt/docs/api-reference/templates/publish/) (`POST /templates/{id}/publish`) com o ID `tem_` da versão e uma chave **Full Access**.

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/templates/tem_33W1rXk9Pd2LmQ7vB4nC8sTyFgh/publish \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**Node.js**

```javascript
const res = await fetch(
  'https://api.emailit.com/v2/templates/tem_33W1rXk9Pd2LmQ7vB4nC8sTyFgh/publish',
  { method: 'POST', headers: { Authorization: `Bearer ${process.env.EMAILIT_API_KEY}` } },
);
const { data } = await res.json();
```

**Python**

```python
import os
import requests

res = requests.post(
    "https://api.emailit.com/v2/templates/tem_33W1rXk9Pd2LmQ7vB4nC8sTyFgh/publish",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
)
template = res.json()["data"]
```

**PHP**

```php
$ch = curl_init('https://api.emailit.com/v2/templates/tem_33W1rXk9Pd2LmQ7vB4nC8sTyFgh/publish');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('EMAILIT_API_KEY')],
]);
$template = json_decode(curl_exec($ch), true)['data'];
```

A publicação emite `template.updated` para a versão recém-publicada e para a versão que foi despublicada. Para reverter, publique de novo a versão anterior.

## Editar ou excluir uma versão publicada

- **As edições valem imediatamente.** Salvar alterações na versão publicada muda, a partir desse momento, o que os envios pelo alias usam. O editor Dragit salva automaticamente enquanto você trabalha, então as alterações dele entram no ar à medida que você as faz. Para preparar alterações, crie uma nova versão.
- **Excluir não promove outra versão.** Se você excluir a versão publicada, o alias fica sem versão publicada, e os envios e as automações que usam o alias falham até você publicar outra. A exclusão remove apenas essa versão; as outras continuam.

## Versões na API

| Ação | Comportamento |
| --- | --- |
| [Criar um template](/pt/docs/api-reference/templates/create/) com um alias novo | O template é publicado automaticamente. |
| [Criar um template](/pt/docs/api-reference/templates/create/) com um alias existente | O template é criado como uma versão não publicada, com `published_at` definido como `null`. |
| [Listar templates](/pt/docs/api-reference/templates/list/) | Retorna apenas as versões publicadas, uma por alias, cada uma com `total_versions`. |
| [Obter um template](/pt/docs/api-reference/templates/get/) | Retorna a versão, mais `versions`: as outras versões do alias, com `id`, `name`, `published_at`, `created_at` e `updated_at`, das mais recentes para as mais antigas. |
| [Atualizar um template](/pt/docs/api-reference/templates/update/) | Altera os campos da versão sem mudar se ela está publicada. Alterar o alias para um que já está em uso falha com `Alias already exists`. |
| [Publicar um template](/pt/docs/api-reference/templates/publish/) | Publica esta versão e despublica todas as outras versões do alias. |
| [Excluir um template](/pt/docs/api-reference/templates/delete/) | Exclui apenas esta versão. |

## Veja também

- [Criar e editar templates](/pt/docs/templates/editors/)
- [Enviar com um template](/pt/docs/email-api/send-email/#send-with-a-template)
- [Referência da API de templates](/pt/docs/api-reference/templates/)

---
Fonte: https://emailit.com/pt/docs/templates/versions/
