Zum Inhalt springen

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

POST/api/chat/contact-team

Auth
Token erforderlich
Wer darf:
owner
admin
moderator
API-Schlüssel:
Kein API-Schlüssel möglich
X-CommunityId
X-CommunityId Sende die X-CommunityId der Community, in der die Operation stattfindet.
Die Beschreibungen der Endpoints stammen aus der API-Spezifikation und sind vorerst auf Portugiesisch. Die Oberfläche drumherum ist übersetzt.

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`).

Header

NameTypBeschreibung
X-CommunityIdoptionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Request-Body application/json

NameTypBeschreibung
spaceIdoptionalstring (uuid)O espaço com cadeado.
sectionIdoptionalstring (uuid)A seção com cadeado (página da seção).

Antworten

StatusBeschreibung
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.

curl-Beispiel

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 '{}'