Aller au contenu

Registra um novo membro

POST/api/auth/register

Auth
Public
Clé d’API:
Clé d’API non acceptée
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.

Cria um membro e, quando o header `X-CommunityId` é enviado, já o vincula à comunidade com o papel `MEMBER`. Não exige autenticação. Registra o aceite dos Termos de uso na conta: `data.member.termsAcceptedAt` (agora) e `data.member.termsVersion` (a versão vigente).

Campos customizados da comunidade: `fields` é `{ key: valor }` com as chaves de `GET /api/member-fields/signup` (os obrigatórios e os opcionais com `askOnSignup`), validados como em `PUT /api/members/{id}/fields`. Obrigatório faltando, chave fora dessa lista ou valor inválido devolvem 422, um erro por campo (`param` = `fields.<key>`), e nada é criado.

A conta nasce na comunidade do `X-CommunityId` (o perfil) e o `data.token` só vale nela. E-mail que já tem conta nesta comunidade: 400. Ter conta em outra comunidade não impede: o cadastro cria aqui uma conta nova, com senha própria.

Exige `altcha`, um desafio de `GET /api/auth/challenge` resolvido, em toda chamada (ausente, inválido, vencido ou já usado: 422 com `param = altcha`), conferido depois da validação dos campos. Limite de 30 cadastros por IP em 15 minutos (429 com `Retry-After`).

Numa comunidade com **cadastro com aprovação** (`signupEnabled` e `signupRequiresApproval`), nenhuma conta nasce aqui: o cadastro vira um pedido na fila da equipe, a senha enviada é descartada e a resposta é a mesma de `POST /api/auth/signup-request` (202, `data.status = pending`, sem `token`).

En-têtes

NomTypeDescription
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
altchaobligatoirestringO payload do widget ALTCHA (base64 de `{ challenge, solution }`) sobre um desafio de `GET /api/auth/challenge`. Uso único. · max 8192
fullNameobligatoirestring
emailobligatoirestring (email)
passwordobligatoirestring (password)Regra única: mínimo de 8 caracteres, com letra maiúscula, letra minúscula e número. Fora dela, 400 com param = password e a regra que faltou. · min 8
fieldsfacultatifobjectValores dos campos do cadastro da comunidade, `{ key: valor }` (ver `GET /api/member-fields/signup`). `MULTI_SELECT` recebe a lista de `value` das opções marcadas; opção que não existe ou fora de `minSelections`/`maxSelections` dá 422 com o erro no campo (`fields.<key>`).
phonefacultatifstringTelefone opcional. Fica na conta sem confirmação; só recebe SMS depois do código (`POST /api/members/me/phone-verification`). Inválido: 400 com param = phone.
phoneCountryfacultatifstringPaís do telefone quando ele vem sem `+`. Padrão BR.
referralCodefacultatifstringO código do link de indicação (`?ref=`) por onde a pessoa chegou, se a comunidade tem "Indicação" ligada. Nunca recusa o cadastro nem abre a comunidade: o modo de entrada vale como sempre (com aprovação, o código fica no pedido e a indicação é decidida na aprovação). Só conta quando a pessoa vira membro, uma vez, se o código é de um membro ativo desta comunidade, não é ela mesma (mesmo perfil ou e-mail) e ela nunca teve perfil aqui. Código inválido, de outra comunidade ou de membro removido é ignorado em silêncio. · max 32
referralSeenAtfacultatifstring (date-time)Quando a pessoa abriu o link. Mais de 30 dias antes do cadastro: o código é ignorado.
smsConsentfacultatifobjectO texto de serviço ao lado do botão (clicar consente) e a caixa de marketing, desmarcada por padrão (`GET /api/contact-consent/texts`). Grava a versão atual do texto, a origem `signup`, a data e o IP.
smsConsent.servicefacultatifboolean
smsConsent.marketingfacultatifboolean
smsConsent.whatsappfacultatifobjectO consentimento do WhatsApp, com texto próprio (`GET /api/contact-consent/texts` → `whatsapp`), gravado no canal `whatsapp`.
smsConsent.whatsapp.servicefacultatifboolean
smsConsent.whatsapp.marketingfacultatifboolean
smsConsent.textVersionfacultatifstringOpcional. A tela mostrou o texto único de SMS e WhatsApp (`GET /api/contact-consent/texts` → `combined.service`): mande a versão dele, e o serviço de cada canal marcado (`service`, `whatsapp.service`) é gravado com essa versão. Um botão só, serviço e marketing juntos: mande a versão de `signup` (`combined-all:AAAA-MM-DD` com os dois canais, `sms-all:` ou `whatsapp-all:` com um só), e cada canal que a comunidade oferece (e que o texto cobre) grava serviço e marketing com essa versão; os booleanos (`service`, `marketing`, `whatsapp`) não são lidos. Só a versão atual é aceita; outra devolve 400 com param = smsConsent.
acceptedTermsfacultatifbooleanAceite dos Termos de uso (docs.memberfy.net/{idioma}/conceitos/termos-de-uso). Opcional: cadastrar-se já é aceitar, e o aceite é registrado (`termsAcceptedAt`, `termsVersion`) mesmo sem o campo. Enviado, precisa ser `true`; `false` devolve 400 com param = acceptedTerms.
ageConfirmedfacultatifbooleanA pessoa confirma ter a idade mínima para ter conta (16, ou a `minimumAge` da comunidade, que vem em `POST /api/communities/domain`). `true` registra o aceite (`ageConfirmedAt`); Obrigatório: sem o campo ou com `false`, a resposta é 400 `param = ageConfirmed` com `data.minimumAge`.

Réponses

StatutDescription
201Membro criado com sucesso.
202A comunidade aprova cadastros; o pedido foi recebido (resposta genérica, igual à de `POST /api/auth/signup-request`).
400Requisição inválida — falha de validação.
422Campo customizado do cadastro obrigatório faltando, fora da lista do cadastro ou inválido; ou `altcha` ausente, inválido, vencido ou já usado (`param = altcha`, ver `HumanCheckFailed`).
429Tentativas demais. O header `Retry-After` diz em quantos segundos tentar de novo.
500Erro interno do servidor.
503A API não consegue verificar o ALTCHA agora (chave não configurada em produção). `param = altcha`.

Exemple curl

curl -X POST "https://api.memberfy.net/api/auth/register" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{"altcha":"eyJjaGFsbGVuZ2UiOnsicGFyYW1ldGVycyI6ey4uLn19LCJzb2x1dGlvbiI6ey4uLn19","fullName":"Maria Silva","email":"[email protected]","password":"Senha@123"}'