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-CommunityIdEnvoyez le X-CommunityId de la communauté où l’opération a lieu.
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
| Nom | Emplacement | Type | Description |
|---|---|---|---|
idobligatoire | path | string (uuid) |
En-têtes
| Nom | Type | Description |
|---|---|---|
If-Unmodified-Sincefacultatif | string | Opcional: 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-CommunityIdfacultatif | string (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
| Nom | Type | Description |
|---|---|---|
settingsUpdatedAtfacultatif | string (date-time) | Opcional: a versão lida (`settingsUpdatedAt` de `GET /api/communities/settings`). Diferente da atual responde 409; sem ela grava sem conferir. |
gaApiSecretfacultatif | string | Segredo da API do Measurement Protocol do GA4 (8 a 100 caracteres: letras, dígitos, _ e -). null ou vazio apaga. Nunca volta na resposta. |
signupEnabledfacultatif | boolean | |
signupModelfacultatif | FREE | PAID | |
signupRequiresApprovalfacultatif | boolean | Com `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. |
guestAccessfacultatif | boolean | |
contentModerationfacultatif | boolean | |
payoutEnabledfacultatif | boolean | |
globalRankingfacultatif | boolean | |
mcpMembersfacultatif | boolean | Assistente de IA para Membros. Só owner/SuperAdmin; padrão false. |
mcpStafffacultatif | boolean | Assistente de IA para a Equipe (moderador, financeiro e admin). Só owner/SuperAdmin; padrão false. |
mcpAdminsfacultatif | boolean | Assistente de IA só para Admins (use com a Equipe desligada para restringir). Só owner/SuperAdmin; padrão false. |
memberApiKeysEnabledfacultatif | boolean | Chaves de API pessoais para membros. Só owner/SuperAdmin; padrão false. |
dropsInCommentsfacultatif | boolean | Permitir envio de Drops nos comentários. Owner e admin; padrão false. |
publicMemberPagesfacultatif | boolean | Páginas de membro públicas (sem login). Owner e admin; padrão false. |
minimumAgefacultatif | integer | Idade mínima para ter conta, acima dos 16 da plataforma; null ou 16 = 16. Só owner/SuperAdmin. · ≥ 16, ≤ 99 |
servesMinorsfacultatif | boolean | Esta comunidade atende menores de idade (o owner colhe o consentimento dos responsáveis). Só owner/SuperAdmin; padrão false. |
memberPageCeilingsfacultatif | object | O nível mais aberto por seção da página do membro. Owner e admin; parcial mescla, null volta ao padrão. |
memberPageCeilings.headerfacultatif | PUBLIC | MEMBERS | |
memberPageCeilings.aboutfacultatif | PUBLIC | MEMBERS | |
memberPageCeilings.locationfacultatif | PUBLIC | MEMBERS | PRIVATE | |
memberPageCeilings.experiencefacultatif | PUBLIC | MEMBERS | PRIVATE | |
memberPageCeilings.activityfacultatif | PUBLIC | MEMBERS | PRIVATE | |
memberPageCeilings.fieldsfacultatif | MEMBERS | PRIVATE | |
linkedinOrganizationIdfacultatif | string | ID 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
| Statut | Description |
|---|---|
200 | Configurações atualizadas. `data`: as configurações gravadas (inclui `mcpMembers`, `mcpStaff` e `mcpAdmins`). |
400 | Requisição inválida — falha de validação. |
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. |
404 | Recurso não encontrado. |
409 | Outra 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`). |
500 | Erro 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 '{}'