Cria um e-mail na biblioteca (sem disparar nada)
POST/api/emails
- Auth
- Requiere token
- Quién puede:
- owner
- admin
- moderator
- finance
- Clave de API:
- reports:write
- X-CommunityId
X-CommunityIdEnvía el X-CommunityId de la comunidad en la que ocurre la operación.
Las descripciones de los endpoints vienen de la especificación de la API y, por ahora, están en portugués. La interfaz alrededor está traducida.
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
| Nombre | Tipo | Descripción |
|---|---|---|
X-CommunityIdopcional | string (uuid) | ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade. |
Cuerpo de la solicitud application/json
| Nombre | Tipo | Descripción |
|---|---|---|
nameobligatorio | string | max 200 |
usageopcional | FREE | DEFAULT_OVERRIDE | |
emailKeyopcional | string | Só com DEFAULT_OVERRIDE (ver `GET /api/email-overrides`) |
mainLanguageopcional | string | |
subjectopcional | string | max 300 |
preheaderopcional | string | max 300 |
blocksopcional | object[] | |
blocks[].typeobligatorio | text | button | image | latestPosts | upcomingEvents | course | event | product | newCourses | newClassifieds | |
blocks[].htmlopcional | string | Só em `text`. HTML rico, sanitizado como nos posts. `{{nome}}` vira o primeiro nome de cada pessoa. |
blocks[].textopcional | string | Só em `button`. · max 80 |
blocks[].urlopcional | string | Em `button` (destino) e `image` (endereço; use o de `POST /api/upload/campaigns/image` ou outro https). Só http ou https. |
blocks[].altopcional | string | Só em `image`. · max 200 |
blocks[].countopcional | integer | Em `latestPosts`, `upcomingEvents`, `newCourses` e `newClassifieds`: quantos itens. · ≥ 1, ≤ 10 |
blocks[].spaceIdopcional | string (uuid) | Em `latestPosts`: o espaço de conteúdo (nulo = todos os abertos). |
blocks[].withinDaysopcional | integer | Em `upcomingEvents`: janela a partir do dia do envio. · ≥ 1, ≤ 90 |
blocks[].headingopcional | string | Em `latestPosts` e `upcomingEvents`: título da seção (padrão traduzido). · max 80 |
blocks[].courseIdsopcional | string (uuid)[] | Em `course`: de 1 a 6 cursos, na ordem em que aparecem. Ver `productIds`. |
blocks[].eventIdsopcional | string (uuid)[] | Em `event`: de 1 a 6 eventos, na ordem em que aparecem. Ver `productIds`. |
blocks[].productIdsopcional | string (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[].courseIdopcional | string (uuid) | Em `course`: forma antiga, de um curso só (equivale a `courseIds` com um item). Na resposta, espelha o primeiro de `courseIds`. |
blocks[].eventIdopcional | string (uuid) | Em `event`: forma antiga, de um evento só (equivale a `eventIds` com um item). Na resposta, espelha o primeiro de `eventIds`. |
blocks[].productIdopcional | string (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`. |
versionsopcional | object[] | |
versions[].languageopcional | string | |
versions[].subjectopcional | string | max 300 |
versions[].preheaderopcional | string | max 300 |
versions[].introopcional | string | |
versions[].blocksopcional | object[] | |
versions[].blocks[].typeobligatorio | text | button | image | latestPosts | upcomingEvents | course | event | product | newCourses | newClassifieds | |
versions[].blocks[].htmlopcional | string | Só em `text`. HTML rico, sanitizado como nos posts. `{{nome}}` vira o primeiro nome de cada pessoa. |
versions[].blocks[].textopcional | string | Só em `button`. · max 80 |
versions[].blocks[].urlopcional | string | Em `button` (destino) e `image` (endereço; use o de `POST /api/upload/campaigns/image` ou outro https). Só http ou https. |
versions[].blocks[].altopcional | string | Só em `image`. · max 200 |
versions[].blocks[].countopcional | integer | Em `latestPosts`, `upcomingEvents`, `newCourses` e `newClassifieds`: quantos itens. · ≥ 1, ≤ 10 |
versions[].blocks[].spaceIdopcional | string (uuid) | Em `latestPosts`: o espaço de conteúdo (nulo = todos os abertos). |
versions[].blocks[].withinDaysopcional | integer | Em `upcomingEvents`: janela a partir do dia do envio. · ≥ 1, ≤ 90 |
versions[].blocks[].headingopcional | string | Em `latestPosts` e `upcomingEvents`: título da seção (padrão traduzido). · max 80 |
versions[].blocks[].courseIdsopcional | string (uuid)[] | Em `course`: de 1 a 6 cursos, na ordem em que aparecem. Ver `productIds`. |
versions[].blocks[].eventIdsopcional | string (uuid)[] | Em `event`: de 1 a 6 eventos, na ordem em que aparecem. Ver `productIds`. |
versions[].blocks[].productIdsopcional | string (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[].courseIdopcional | string (uuid) | Em `course`: forma antiga, de um curso só (equivale a `courseIds` com um item). Na resposta, espelha o primeiro de `courseIds`. |
versions[].blocks[].eventIdopcional | string (uuid) | Em `event`: forma antiga, de um evento só (equivale a `eventIds` com um item). Na resposta, espelha o primeiro de `eventIds`. |
versions[].blocks[].productIdopcional | string (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[].updatedAtopcional | string (date-time) |
Respuestas
| Código | Descripción |
|---|---|
201 | O e-mail criado. |
401 | Token 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`). |
403 | Autenticado, mas sem permissão para esta operação. |
422 | Campo inválido (um erro por campo). |
500 | Erro interno do servidor. |
Ejemplo con curl
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"}'