Aller au contenu

Atualiza parcialmente settings

PATCH/api/communities/{id}/settings

Auth
Jeton requis
Qui peut l’appeler:
owner
admin
SuperAdmin
Clé d’API:
community: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.

Sujeito a verificação de papel (RBAC) na comunidade do X-CommunityId (owner e admin). O `{id}` do caminho precisa ser essa mesma comunidade; um id diferente responde 403. `mcpMembers`, `mcpStaff` e `mcpAdmins` (boolean) ligam o assistente de IA (MCP) por grupo de papéis. **Só o owner e o SuperAdmin gravam**: admin que os envia recebe 403 e nada muda. Valor que não é boolean responde 400. A mudança entra no log de atividade da comunidade (quem, valor antigo e novo). Desligar corta na hora quem já tinha conectado e religar devolve o acesso, sem reconectar. A resposta devolve as configurações gravadas, com os três campos. `memberApiKeysEnabled` (boolean, padrão `false`) libera as chaves de API pessoais para membros. **Só o owner e o SuperAdmin gravam** (admin recebe 403, `param = memberApiKeysEnabled`). Desligado, membro recebe 403 ao listar ou criar as próprias chaves, e as chaves que ele já tem respondem 403 (`apiKeys.auth.membersDisabled`) sem ser apagadas; religar as devolve como estavam. A equipe não muda. `signupRequiresApproval` (boolean, padrão `false`): o modo de entrada **Com aprovação**. Só vale com `signupEnabled: true`; aí o cadastro (`POST /api/auth/register` e `POST /api/auth/signup-request`) e o "Salvar como membro" de um formulário viram pedidos na fila (`GET /api/signup-requests`). Owner e admin gravam. Trocar para Aberto ou Fechado não aprova nem apaga os pendentes. `dropsInComments` (boolean, padrão `false`, comunidades antigas inclusive): "Permitir envio de Drops nos comentários". Owner e admin gravam. Desligado, criar ou editar comentário (de post, de post curto e pelo feed) com um `videoMediaId` novo responde 403 (`media.dropsInCommentsDisabled`, `param = videoMediaId`), e `POST /api/ai/drop-description` com `kind: comment` também (403); remover o Drop (`null`) continua valendo e os comentários que já têm Drop continuam visíveis. Página do membro, owner e admin (moderador, financeiro e member: 403 pela regra da rota): `publicMemberPages` (boolean, padrão `false`) liga as páginas de membro sem login (`GET /api/public/members/{id}`), que mostram só as seções que cada pessoa pôs em `PUBLIC`. `memberPageCeilings` é o nível mais aberto permitido por seção: `header` e `about` (`PUBLIC` ou `MEMBERS`), `location`, `experience` e `activity` (`PUBLIC`, `MEMBERS` ou `PRIVATE`) e `fields` (`MEMBERS` ou `PRIVATE`); um objeto parcial muda só as seções enviadas, `null` volta ao padrão (o mais aberto de cada seção). A escolha de uma pessoa acima do teto fica gravada e vale como o teto; volta se o teto subir. Valor inválido: 400 `community.memberPageCeilingsInvalid` com `param` `memberPageCeilings.<seção>`. Idade mínima, **só o owner e o SuperAdmin gravam** (admin recebe 403, `param` = o campo): `minimumAge` (inteiro de 16 a 99, ou `null`) é a idade para ter conta nesta comunidade, acima dos 16 da plataforma; `null` ou 16 voltam aos 16 (grava `null`); fora da faixa responde 400 `ageGate.minimumAgeInvalid`. O cadastro pede a confirmação dessa idade (`ageConfirmed` em `POST /api/auth/register`). `servesMinors` (boolean, padrão `false`): "Esta comunidade atende menores de idade"; ligado, o owner declara que colhe o consentimento dos responsáveis (o app mostra o aviso). Os dois aparecem também em `POST /api/communities/domain`, para a tela de cadastro. Google Analytics: `gaApiSecret` (opcional) é o segredo da API do Measurement Protocol do GA4 (Admin do GA › Fluxos de dados › Segredos da API do Measurement Protocol), de 8 a 100 caracteres (letras, dígitos, `_` e `-`); outro formato responde 400 com `param = gaApiSecret`. `null` ou vazio apaga. Fica cifrado e nunca volta: a resposta traz só `gaApiSecretConfigured` e `gaApiSecretLast4`. Com ele e um `googleAnalyticsId` GA4 (`G-…`), a API envia ao GA da comunidade, pelo servidor, o `purchase` de cada pedido pago (inclusive PIX e boleto pagos com a página fechada e as renovações de assinatura) e o `refund` de cada reembolso concluído, com o mesmo `transaction_id` que o app usa no navegador (o `purchaseId` do checkout, ou o id da cobrança da renovação): o GA4 não conta duas vezes. Envio assíncrono, com novas tentativas, sem dado pessoal; nunca atrasa nem impede um pagamento.

Paramètres

NomEmplacementTypeDescription
idobligatoirepathstring (uuid)

En-têtes

NomTypeDescription
If-Unmodified-SincefacultatifstringOpcional: a versão lida (`settingsUpdatedAt` de `GET /api/communities/settings`), como data HTTP, se não vier `settingsUpdatedAt` 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
settingsUpdatedAtfacultatifstring (date-time)Opcional: a versão lida (`settingsUpdatedAt` de `GET /api/communities/settings`). Diferente da atual responde 409; sem ela grava sem conferir.
gaApiSecretfacultatifstringSegredo da API do Measurement Protocol do GA4 (8 a 100 caracteres: letras, dígitos, _ e -). null ou vazio apaga. Nunca volta na resposta.
signupEnabledfacultatifboolean
signupModelfacultatifFREE | PAID
signupRequiresApprovalfacultatifbooleanCom `signupEnabled`, o cadastro vira pedido na fila (`GET /api/signup-requests`) que owner ou admin aprovam. Padrão false; sem `signupEnabled` não tem efeito. Desligar não aprova os pendentes: eles continuam na fila.
guestAccessfacultatifboolean
contentModerationfacultatifboolean
payoutEnabledfacultatifboolean
globalRankingfacultatifboolean
mcpMembersfacultatifbooleanAssistente de IA para Membros. Só owner/SuperAdmin; padrão false.
mcpStafffacultatifbooleanAssistente de IA para a Equipe (moderador, financeiro e admin). Só owner/SuperAdmin; padrão false.
mcpAdminsfacultatifbooleanAssistente de IA só para Admins (use com a Equipe desligada para restringir). Só owner/SuperAdmin; padrão false.
memberApiKeysEnabledfacultatifbooleanChaves de API pessoais para membros. Só owner/SuperAdmin; padrão false.
dropsInCommentsfacultatifbooleanPermitir envio de Drops nos comentários. Owner e admin; padrão false.
publicMemberPagesfacultatifbooleanPáginas de membro públicas (sem login). Owner e admin; padrão false.
minimumAgefacultatifintegerIdade mínima para ter conta, acima dos 16 da plataforma; null ou 16 = 16. Só owner/SuperAdmin. · ≥ 16, ≤ 99
servesMinorsfacultatifbooleanEsta comunidade atende menores de idade (o owner colhe o consentimento dos responsáveis). Só owner/SuperAdmin; padrão false.
memberPageCeilingsfacultatifobjectO nível mais aberto por seção da página do membro. Owner e admin; parcial mescla, null volta ao padrão.
memberPageCeilings.headerfacultatifPUBLIC | MEMBERS
memberPageCeilings.aboutfacultatifPUBLIC | MEMBERS
memberPageCeilings.locationfacultatifPUBLIC | MEMBERS | PRIVATE
memberPageCeilings.experiencefacultatifPUBLIC | MEMBERS | PRIVATE
memberPageCeilings.activityfacultatifPUBLIC | MEMBERS | PRIVATE
memberPageCeilings.fieldsfacultatifMEMBERS | PRIVATE
linkedinOrganizationIdfacultatifstringID da página da comunidade no LinkedIn, só dígitos (até 32). Com ele, o Adicionar ao perfil dos certificados mostra o logo da página; vazio ou null limpa.

Réponses

StatutDescription
200Configurações atualizadas. `data`: as configurações gravadas (inclui `mcpMembers`, `mcpStaff` e `mcpAdmins`).
400Requisição inválida — falha de validação.
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 (`settingsUpdatedAt` no corpo ou `If-Unmodified-Since`); `data.settingsUpdatedAt` é a versão atual: recarregue e repita. Cada gravação avisa os editores abertos (`item.saved`, ver `POST /api/realtime/ticket`).
500Erro interno do servidor.

Exemple curl

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