Aller au contenu

Cria ou substitui a versão de um idioma

PUT/api/emails/{id}/versions/{language}

Auth
Jeton requis
Clé d’API:
reports:write
X-CommunityId
X-CommunityId Envoyez le X-CommunityId de la communauté où l’opération a lieu.
Les descriptions des endpoints viennent directement de la spécification de l’API et sont en portugais pour l’instant. L’interface autour est traduite.

Vale para os próximos envios de todos os disparos que usam o e-mail ("vivo até o envio"); o que já saiu fica no relatório. Antes de salvar, o app mostra onde o e-mail é usado (`GET /api/emails/{id}/usages`).

Paramètres

NomEmplacementTypeDescription
idobligatoirepathstring (uuid)
languageobligatoirepathstring

En-têtes

NomTypeDescription
If-Unmodified-SincefacultatifstringOpcional: a versão lida (`updatedAt` do `GET`), como data HTTP, se não vier `updatedAt` no corpo. Outra gravação depois dela responde 409.
X-CommunityIdfacultatifstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Corps de la requête application/json

NomTypeDescription
languagefacultatifstring
subjectfacultatifstringmax 300
preheaderfacultatifstringmax 300
introfacultatifstring
blocksfacultatifobject[]
blocks[].typeobligatoiretext | button | image | latestPosts | upcomingEvents | course | event | product | newCourses | newClassifieds
blocks[].htmlfacultatifstringSó em `text`. HTML rico, sanitizado como nos posts. `{{nome}}` vira o primeiro nome de cada pessoa.
blocks[].textfacultatifstringSó em `button`. · max 80
blocks[].urlfacultatifstringEm `button` (destino) e `image` (endereço; use o de `POST /api/upload/campaigns/image` ou outro https). Só http ou https.
blocks[].altfacultatifstringSó em `image`. · max 200
blocks[].countfacultatifintegerEm `latestPosts`, `upcomingEvents`, `newCourses` e `newClassifieds`: quantos itens. · ≥ 1, ≤ 10
blocks[].spaceIdfacultatifstring (uuid)Em `latestPosts`: o espaço de conteúdo (nulo = todos os abertos).
blocks[].withinDaysfacultatifintegerEm `upcomingEvents`: janela a partir do dia do envio. · ≥ 1, ≤ 90
blocks[].headingfacultatifstringEm `latestPosts` e `upcomingEvents`: título da seção (padrão traduzido). · max 80
blocks[].courseIdsfacultatifstring (uuid)[]Em `course`: de 1 a 6 cursos, na ordem em que aparecem. Ver `productIds`.
blocks[].eventIdsfacultatifstring (uuid)[]Em `event`: de 1 a 6 eventos, na ordem em que aparecem. Ver `productIds`.
blocks[].productIdsfacultatifstring (uuid)[]Em `product`: de 1 a 6 produtos, sem repetidos, na ordem em que aparecem. Um item mostra o cartão de largura inteira; dois ou mais viram uma grade de 2 por linha no computador e 1 por linha no celular. Ao salvar, todos precisam ser visíveis a todos (senão 422 em `blocks[i]`); no envio, o que deixou de ser visível some e o bloco sem nenhum item some inteiro. Lista inválida (vazia, mais de 6, repetida, id malformado) devolve 422 em `blocks[i].productIds`. Vale igual para `eventIds` e `courseIds`.
blocks[].courseIdfacultatifstring (uuid)Em `course`: forma antiga, de um curso só (equivale a `courseIds` com um item). Na resposta, espelha o primeiro de `courseIds`.
blocks[].eventIdfacultatifstring (uuid)Em `event`: forma antiga, de um evento só (equivale a `eventIds` com um item). Na resposta, espelha o primeiro de `eventIds`.
blocks[].productIdfacultatifstring (uuid)Em `product`: forma antiga, de um produto só (equivale a `productIds` com um item). Se `productIds` vier junto, vale a lista. Na resposta, espelha o primeiro de `productIds`.
updatedAtfacultatifstring (date-time)

Réponses

StatutDescription
200O e-mail.
401Token ausente, inválido ou expirado; token de outra comunidade (o `X-CommunityId` ou o `communityId` do corpo não é o do token); token antigo ou de uma sessão encerrada (troca de senha, convite aceito). Nesses casos a mensagem pede para entrar de novo (`auth.signInAgain`).
403Autenticado, mas sem permissão para esta operação.
404Recurso não encontrado.
409Outra gravação veio antes da versão enviada (`updatedAt` no corpo ou `If-Unmodified-Since`); `data.updatedAt` é a versão atual: recarregue e repita. Cada gravação avisa os editores abertos (`item.saved`, ver `POST /api/realtime/ticket`).
422Campo inválido (um erro por campo).
500Erro interno do servidor.

Exemple curl

curl -X PUT "https://api.memberfy.net/api/emails/<id>/versions/<language>" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{}'