Saltar al contenido

Fale com a equipe sobre um espaço ou uma seção com cadeado

POST/api/chat/contact-team

Auth
Requiere token
Quién puede:
owner
admin
moderator
Clave de API:
No acepta clave de API
X-CommunityId
X-CommunityId Enví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.

Abre (ou reusa) uma conversa direta com alguém da equipe para pedir acesso. Não envia mensagem: o rascunho "Quero acesso a {espaço}" é só do app.

**Quem pode:** o membro (não visitante, não cadastro pendente) a quem aquele espaço ou seção é **mostrado com cadeado** e cujo 403 traz `askTeam` (fechado por grupo, ou nada à venda), o mesmo predicado do `canContactTeam` do 403 do espaço e do `denial` da seção. Fora disso, 403 `contactTeamNotAllowed` (inclusive para id de outra comunidade ou inexistente). Chat desligado: 403 `disabled`.

**Quem atende:** o primeiro admin online, depois o primeiro moderador online (por nome dentro do papel; presença do chat, últimos 90 s); com ninguém online, o owner. A pessoa precisa estar "Disponível para conversar" e sem bloqueio nos dois sentidos; o financeiro nunca atende. Ninguém elegível: 403 `teamUnavailable`.

**Regras:** passa por cima do `whoCanStart`; quem pede não precisa estar disponível; se já existe conversa direta com alguém elegível agora, devolve essa (200, `created: false`, não conta no limite); conversa nova conta no limite de 10 por hora e 30 por dia (429, ver `ChatRateLimited`).

Headers

NombreTipoDescripción
X-CommunityIdopcionalstring (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

NombreTipoDescripción
spaceIdopcionalstring (uuid)O espaço com cadeado.
sectionIdopcionalstring (uuid)A seção com cadeado (página da seção).

Respuestas

CódigoDescripción
200A conversa que já existia com alguém elegível da equipe.
201Conversa criada com quem atende.
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.
429Limite anti-spam do chat (por pessoa, por comunidade, valendo para o app e o MCP). `errors[0].code` diz qual: `limitConnectionsDaily` (20 pedidos de conexão/dia), `limitConnectionsWeekly` (100/semana), `limitPendingRequests` (200 pedidos esperando resposta ao mesmo tempo; libera cancelando, sem `retryAt`), `limitNewConversationsHourly` (10 conversas novas/hora), `limitNewConversationsDaily` (30/dia), `limitMessagesPerMinute` (30 mensagens/minuto) e `limitDuplicateMessage` (o mesmo texto para no máximo 5 pessoas diferentes por hora). Quem entrou na comunidade há menos de 24 h tem metade dos limites de pedidos de conexão e de conversas novas; a equipe (owner, admin, moderador, financeiro) tem o dobro de todos. Conversa que já existe nunca conta como nova. As janelas são móveis: `errors[0].retryAt` (e o header `Retry-After`, em segundos) dizem quando a próxima vaga abre, e a mensagem diz a hora no fuso da comunidade. `errors[0].limit` é o limite que vale para quem pediu.
500Erro interno do servidor.

Ejemplo con curl

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