Skip to content

Cria um e-mail na biblioteca (sem disparar nada)

POST/api/emails

Auth
Requires a token
Who can call it:
owner
admin
moderator
finance
API key:
reports:write
X-CommunityId
X-CommunityId Send the X-CommunityId of the community the operation happens in.
Endpoint descriptions come straight from the API specification and are in Portuguese for now. The interface around them is translated.

Owner, admin, moderador e financeiro (o de e-mail padrão, `usage: DEFAULT_OVERRIDE`, só owner e admin). `versions` traz uma versão por idioma; sem ela, `subject`, `preheader`, `blocks` e `intro` são a versão do idioma principal (`mainLanguage`, padrão: o da comunidade). As regras dos blocos e das variáveis são as das campanhas (422, um erro por campo); num e-mail padrão, as do e-mail substituído (blocos travados, só variáveis baratas, sem blocos dinâmicos).

Headers

NameTypeDescription
X-CommunityIdoptionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Request body application/json

NameTypeDescription
namerequiredstringmax 200
usageoptionalFREE | DEFAULT_OVERRIDE
emailKeyoptionalstringSó com DEFAULT_OVERRIDE (ver `GET /api/email-overrides`)
mainLanguageoptionalstring
subjectoptionalstringmax 300
preheaderoptionalstringmax 300
blocksoptionalobject[]
blocks[].typerequiredtext | button | image | latestPosts | upcomingEvents | course | event | product | newCourses | newClassifieds
blocks[].htmloptionalstringSó em `text`. HTML rico, sanitizado como nos posts. `{{nome}}` vira o primeiro nome de cada pessoa.
blocks[].textoptionalstringSó em `button`. · max 80
blocks[].urloptionalstringEm `button` (destino) e `image` (endereço; use o de `POST /api/upload/campaigns/image` ou outro https). Só http ou https.
blocks[].altoptionalstringSó em `image`. · max 200
blocks[].countoptionalintegerEm `latestPosts`, `upcomingEvents`, `newCourses` e `newClassifieds`: quantos itens. · ≥ 1, ≤ 10
blocks[].spaceIdoptionalstring (uuid)Em `latestPosts`: o espaço de conteúdo (nulo = todos os abertos).
blocks[].withinDaysoptionalintegerEm `upcomingEvents`: janela a partir do dia do envio. · ≥ 1, ≤ 90
blocks[].headingoptionalstringEm `latestPosts` e `upcomingEvents`: título da seção (padrão traduzido). · max 80
blocks[].courseIdsoptionalstring (uuid)[]Em `course`: de 1 a 6 cursos, na ordem em que aparecem. Ver `productIds`.
blocks[].eventIdsoptionalstring (uuid)[]Em `event`: de 1 a 6 eventos, na ordem em que aparecem. Ver `productIds`.
blocks[].productIdsoptionalstring (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[].courseIdoptionalstring (uuid)Em `course`: forma antiga, de um curso só (equivale a `courseIds` com um item). Na resposta, espelha o primeiro de `courseIds`.
blocks[].eventIdoptionalstring (uuid)Em `event`: forma antiga, de um evento só (equivale a `eventIds` com um item). Na resposta, espelha o primeiro de `eventIds`.
blocks[].productIdoptionalstring (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`.
versionsoptionalobject[]
versions[].languageoptionalstring
versions[].subjectoptionalstringmax 300
versions[].preheaderoptionalstringmax 300
versions[].introoptionalstring
versions[].blocksoptionalobject[]
versions[].blocks[].typerequiredtext | button | image | latestPosts | upcomingEvents | course | event | product | newCourses | newClassifieds
versions[].blocks[].htmloptionalstringSó em `text`. HTML rico, sanitizado como nos posts. `{{nome}}` vira o primeiro nome de cada pessoa.
versions[].blocks[].textoptionalstringSó em `button`. · max 80
versions[].blocks[].urloptionalstringEm `button` (destino) e `image` (endereço; use o de `POST /api/upload/campaigns/image` ou outro https). Só http ou https.
versions[].blocks[].altoptionalstringSó em `image`. · max 200
versions[].blocks[].countoptionalintegerEm `latestPosts`, `upcomingEvents`, `newCourses` e `newClassifieds`: quantos itens. · ≥ 1, ≤ 10
versions[].blocks[].spaceIdoptionalstring (uuid)Em `latestPosts`: o espaço de conteúdo (nulo = todos os abertos).
versions[].blocks[].withinDaysoptionalintegerEm `upcomingEvents`: janela a partir do dia do envio. · ≥ 1, ≤ 90
versions[].blocks[].headingoptionalstringEm `latestPosts` e `upcomingEvents`: título da seção (padrão traduzido). · max 80
versions[].blocks[].courseIdsoptionalstring (uuid)[]Em `course`: de 1 a 6 cursos, na ordem em que aparecem. Ver `productIds`.
versions[].blocks[].eventIdsoptionalstring (uuid)[]Em `event`: de 1 a 6 eventos, na ordem em que aparecem. Ver `productIds`.
versions[].blocks[].productIdsoptionalstring (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`.
versions[].blocks[].courseIdoptionalstring (uuid)Em `course`: forma antiga, de um curso só (equivale a `courseIds` com um item). Na resposta, espelha o primeiro de `courseIds`.
versions[].blocks[].eventIdoptionalstring (uuid)Em `event`: forma antiga, de um evento só (equivale a `eventIds` com um item). Na resposta, espelha o primeiro de `eventIds`.
versions[].blocks[].productIdoptionalstring (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`.
versions[].updatedAtoptionalstring (date-time)

Responses

StatusDescription
201O e-mail criado.
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.
422Campo inválido (um erro por campo).
500Erro interno do servidor.

curl example

curl -X POST "https://api.memberfy.net/api/emails" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{"name":"string"}'