Abre um chamado
POST/api/support/tickets
- Auth
- Jeton requis
- Clé d’API:
- support:write
- X-CommunityId
X-CommunityIdEnvoyez le X-CommunityId de la communauté où l’opération a lieu.
Qualquer membro com acesso ao space. Cria o chamado `OPEN` com número sequencial por space (alocado sob trava: aberturas simultâneas recebem números diferentes). `resourceId` precisa ser um recurso de **Reservas** da comunidade, ativo (e `listed` para o residente); senão 400. As fotos (`mediaIds`, até 5; 20 por chamado) vêm do upload de mídia com `purpose: supportPhoto`. A equipe que responde pode abrir em nome de um residente (`requesterId`): ele recebe o e-mail "abrimos um chamado para você". Acima de `maxOpenPerMember` chamados abertos do mesmo residente no space (padrão 10; 0 = sem teto): 409. **Idempotente** por `clientRequestId`: o segundo toque devolve o mesmo chamado (200, `alreadyCreated: true`). Os e-mails saem pela fila, nunca na requisição; "novo chamado" sai no máximo 1 vez a cada 10 minutos por destinatário, qualquer que seja o chamado. **Limites (429 com `Retry-After` e `errors`):** 10 chamados **criados** por hora por residente e 20 por 24 horas, contando os cancelados e apagados; requisição recusada por validação (400) não gasta cota; a equipe que responde não tem esses tetos. Cria: `201`.
En-têtes
| Nom | Type | Description |
|---|---|---|
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 |
|---|---|---|
spaceIdobligatoire | string (uuid) | O space de Suporte. |
kindobligatoire | MAINTENANCE | REQUEST | |
categoryobligatoire | FACILITIES | CLEANING | EQUIPMENT | INTERNET | ACCESS | BILLING | OTHER | |
titleobligatoire | string | max 140 |
descriptionobligatoire | string | max 10000 |
resourceIdfacultatif | string (uuid) | Recurso das Reservas (`module: bookings`, ativo; o residente só enxerga os `listed`). |
locationTextfacultatif | string | max 120 |
urgentfacultatif | boolean | Marca como `HIGH` se o space permite (`allowUrgentFlag`). |
priorityfacultatif | LOW | NORMAL | HIGH | URGENT | Só a equipe que responde. |
requesterIdfacultatif | string (uuid) | Abre em nome de um residente (só quem responde). |
mediaIdsfacultatif | string (uuid)[] | Fotos já enviadas pelo `POST /api/media/uploads` com `purpose: supportPhoto`. |
clientRequestIdfacultatif | string | Idempotência: o segundo toque devolve o mesmo chamado. · max 64 |
Réponses
| Statut | Description |
|---|---|
200 | Já aberto com o mesmo `clientRequestId`. |
201 | Chamado aberto. |
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 | Conflito com o estado atual do recurso. |
429 | Limite de chamados criados (10 por hora ou 20 por 24 h). Cabeçalho `Retry-After` em segundos; `errors` traduzido. |
500 | Erro interno do servidor. |
Exemple curl
curl -X POST "https://api.memberfy.net/api/support/tickets" \
-H "Authorization: Bearer $TOKEN" \
-H "X-CommunityId: $COMMUNITY_ID" \
-H "Content-Type: application/json" \
-d '{"spaceId":"00000000-0000-0000-0000-000000000000","kind":"MAINTENANCE","category":"FACILITIES","title":"string","description":"string"}'