VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Mensagens

Digitando e presença

Avisa o outro lado que o cliente está digitando e consulta quem está online na conversa.

Estas duas rotas dão vida à tela de chat. typing dispara o aviso "fulano está digitando..." para a outra parte. presence diz quem, entre os outros participantes, tem uma conexão aberta com a plataforma agora, para pintar a bolinha verde ou cinza no topo da conversa.

Pontos principais
  • typing não grava nada: só repassa um evento thread.typing por WebSocket aos outros participantes e responde 204.
  • presence lista só os outros participantes; o próprio cliente é omitido, pois está online por definição.
  • Os ids de presence são ids de usuário (o seller aparece pelo usuário dono da conta de seller, não pelo vendor_id).
  • Para presença contínua, escute os eventos do WebSocket; o GET serve para a primeira pintura da tela.
POST/api/v1/storefront/messages/threads/{id}/typingCliente

Avisar que está digitando

Parâmetros de caminho

iduuidobrigatório
Id da thread.

Corpo da requisição

is_typingbooleanpadrão: true
true quando começou a digitar, false quando parou. O corpo é opcional: se faltar ou estiver ilegível, vale true.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/storefront/messages/threads/$THREAD_ID/typing" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"is_typing":true}'

Resposta

204Aviso enviado
json

Sem corpo de resposta. O evento entregue aos outros participantes é thread.typing, com thread_id, sender_id, sender_type e is_typing.

Erros

StatusQuandoCorpo
400id não é UUID.{"error":"invalid id","detail":"id must be a valid UUID"}
401Sem token, ou token inválido.{"error":"missing authorization header"}
403A thread não é do cliente (ou não existe).{"error":"you are not a participant of this thread"}
Limite o ritmo do aviso

Envie typing no máximo uma vez a cada poucos segundos enquanto a pessoa digita, e is_typing:false ao parar ou enviar. Cada chamada conta no limite de requisições da família /api/v1/storefront/ (veja Limites de requisições).

GET/api/v1/storefront/messages/threads/{id}/presenceCliente

Ver quem está online na thread

Parâmetros de caminho

iduuidobrigatório
Id da thread.
bash
curl "$BASE_URL/api/v1/storefront/messages/threads/$THREAD_ID/presence" \
  -H "Authorization: Bearer $TOKEN"
200Presença
json
{
  "participants": [
    { "user_id": "c2c9a7d4-3b1e-4f55-9a66-0f2d6b1a9e42", "online": true }
  ]
}

Campos da resposta

participantsarray
Os outros participantes da thread. [] quando não há outro.
participants[].user_iduuid
Id do usuário.
participants[].onlineboolean
true se o usuário tem uma conexão WebSocket aberta agora.

Erros

StatusQuandoCorpo
400id não é UUID.{"error":"invalid id","detail":"id must be a valid UUID"}
401Sem token, ou token inválido.{"error":"missing authorization header"}
403A thread não é do cliente (ou não existe).{"error":"you are not a participant of this thread"}
Offline pode ser só desconhecido

online:false significa "sem conexão aberta no momento", e não que a pessoa esteja ausente: ela pode ler a resposta depois pelo e-mail ou pelo app. Não bloqueie o envio de mensagens por causa da presença.

Veja também

  • Entregue e lida
  • Responder na thread
  • Mensagens do cliente
Anterior
Status da thread
Próxima
Notificações e newsletter
Nesta página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Erros
  • Veja também