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

Estado, leitura e presença

Marca mensagens como lidas e entregues, muda o estado da conversa, avisa que está digitando e vê quem está online.

Marcar mensagens como lidas

Marca como lidas todas as mensagens da conversa que não foram enviadas por você. Quem as enviou recebe o aviso de leitura em tempo real. Chame quando o administrador abrir a conversa. Não precisa de corpo.

PATCH/api/v1/admin/messages/threads/{id}/readAdmin

Marca como lidas as mensagens recebidas

Exige o privilégio manage_settings. O administrador enxerga e responde qualquer conversa da loja.

Parâmetros de caminho

iduuidobrigatório
Identificador da conversa.

Exemplo de requisição (Marcar como lidas)

bash
curl -X PATCH "$BASE_URL/api/v1/admin/messages/threads/02b7a358-6061-4d51-84c0-8044dbb6db6e/read" \
  -H "Authorization: Bearer $TOKEN"

Resposta (Marcar como lidas)

200Mensagens marcadas
json
{
  "message": "marked as read",
  "count": 2
}

Campos da resposta

messagestring
Texto fixo marked as read.
countinteger
Quantas mensagens mudaram de estado agora.

Erros (Marcar como lidas)

StatusQuandoExemplo de corpo
401Token ausente, inválido ou expirado.{"error":"invalid or expired token"}
403O administrador não tem o privilégio manage_settings.{"error":"insufficient privileges","required":"manage_settings"}
400O id não é um UUID válido.{"error":"invalid id","detail":"id must be a valid UUID"}

Marcar mensagens como entregues

Marca como entregues as mensagens recebidas que ainda não tinham delivered_at, para quem enviou ver o "duplo visto". Chame quando a conversa for carregada na tela. Não precisa de corpo.

PATCH/api/v1/admin/messages/threads/{id}/deliveredAdmin

Registra que as mensagens chegaram à tela do administrador

Exige o privilégio manage_settings. O administrador enxerga e responde qualquer conversa da loja.

Parâmetros de caminho

iduuidobrigatório
Identificador da conversa.

Exemplo de requisição (Marcar como entregues)

bash
curl -X PATCH "$BASE_URL/api/v1/admin/messages/threads/02b7a358-6061-4d51-84c0-8044dbb6db6e/delivered" \
  -H "Authorization: Bearer $TOKEN"

Resposta (Marcar como entregues)

200Mensagens marcadas
json
{
  "message": "marked as delivered",
  "count": 2
}

Campos da resposta

messagestring
Texto fixo marked as delivered.
countinteger
Quantas mensagens mudaram de estado agora.

Erros (Marcar como entregues)

StatusQuandoExemplo de corpo
401Token ausente, inválido ou expirado.{"error":"invalid or expired token"}
403O administrador não tem o privilégio manage_settings.{"error":"insufficient privileges","required":"manage_settings"}
400O id não é um UUID válido.{"error":"invalid id","detail":"id must be a valid UUID"}

Mudar o estado da conversa

Muda o estado da conversa. O valor entra como palavra e é devolvido como letra no campo status (A, R, C).

PATCH/api/v1/admin/messages/threads/{id}/statusAdmin

Marca a conversa como aberta, resolvida ou arquivada

Exige o privilégio manage_settings. O administrador enxerga e responde qualquer conversa da loja.

Parâmetros de caminho

iduuidobrigatório
Identificador da conversa.

Corpo da requisição

statusstringobrigatório
openresolvedarchived
Novo estado.

Exemplo de requisição (Mudar estado)

bash
curl -X PATCH "$BASE_URL/api/v1/admin/messages/threads/02b7a358-6061-4d51-84c0-8044dbb6db6e/status" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "status": "resolved"
}'

Resposta (Mudar estado)

200Conversa atualizada
json
{
  "id": "02b7a358-6061-4d51-84c0-8044dbb6db6e",
  "subject": "Dúvida sobre produto",
  "status": "R",
  "object_type": "order",
  "object_id": "3f73310d-bfdd-4713-a664-305c08eda58b",
  "object_name": "Pedido PEDIDO-20261011-0002",
  "customer_user_id": "3093f506-d6af-4c27-9ef6-c245e8e602f9",
  "vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
  "vendor_name": "Loja Seller Teste",
  "customer_name": "Maria Souza",
  "last_message_preview": "Olá! Seu pedido já saiu para entrega.",
  "last_message_at": "2026-10-11T19:25:56.593566Z",
  "unread_count": 1,
  "created_at": "2026-10-11T18:11:59.835461Z",
  "updated_at": "2026-10-11T19:25:56.593566Z",
  "messages": [
    {
      "id": "ddfeb0e4-5c98-4bc3-ab4f-fad15ca6b364",
      "thread_id": "02b7a358-6061-4d51-84c0-8044dbb6db6e",
      "sender_id": "ec5e10b3-8cb1-43e9-9aa8-964b64eda8de",
      "sender_type": "admin",
      "body": "Olá! Seu pedido já saiu para entrega.",
      "attachments": [],
      "is_read": false,
      "created_at": "2026-10-11T19:25:56.593566Z"
    }
  ]
}

Campos da resposta

iduuid
Identificador da conversa.
subjectstring
Assunto.
statusstring
Letra do estado: A aberta, R resolvida, C arquivada. Conversas antigas podem ter outras letras (por exemplo D).
object_typestring
Tipo do registro ligado à conversa (order, product, vendor, user). Ausente se não há.
object_idstring
Id do registro ligado. Ausente se não há.
object_namestring
Nome do registro ligado, para exibir.
customer_user_iduuid
Cliente da conversa.
vendor_iduuid
Seller da conversa. Ausente numa conversa direta com a loja.
vendor_namestring
Nome do seller.
customer_namestring
Nome do cliente.
last_message_previewstring
Prévia da última mensagem.
last_message_atstring
Hora da última mensagem, RFC 3339.
messagesarray

Mensagens (só ao consultar uma conversa).

iduuid
Identificador da mensagem.
thread_iduuid
Conversa.
sender_iduuid
Usuário que enviou.
sender_typestring
customervendoradmin
Quem enviou.
bodystring
Texto, sem HTML.
attachmentsarray
Anexos. Cada um tem url, filename, content_type e size (bytes).
is_readboolean
true quando o outro lado leu.
delivered_atstring
Quando chegou ao outro lado, RFC 3339. Ausente se ainda não.
read_atstring
Quando foi lida, RFC 3339. Ausente se ainda não.
created_atstring
Envio, RFC 3339.
unread_countinteger
Mensagens ainda não lidas pelo administrador.
created_atstring
Criação, RFC 3339.
updated_atstring
Última alteração, RFC 3339.

Erros (Mudar estado)

StatusQuandoExemplo de corpo
401Token ausente, inválido ou expirado.{"error":"invalid or expired token"}
403O administrador não tem o privilégio manage_settings.{"error":"insufficient privileges","required":"manage_settings"}
400O id não é um UUID válido.{"error":"invalid id","detail":"id must be a valid UUID"}
400status fora da lista.{"error":"status must be one of: open, resolved, archived"}
404Conversa inexistente.{"error":"thread not found"}

Avisar que está digitando

Sinal efêmero: nada é gravado. Os outros participantes conectados recebem o aviso "digitando" em tempo real. Mande is_typing true enquanto digita e false ao parar.

POST/api/v1/admin/messages/threads/{id}/typingAdmin

Avisa os outros participantes que o administrador está digitando

Exige o privilégio manage_settings. O administrador enxerga e responde qualquer conversa da loja.

Parâmetros de caminho

iduuidobrigatório
Identificador da conversa.

Corpo da requisição

is_typingbooleanpadrão: true
true digitando, false parou. Se o corpo for inválido ou vazio, vale true.

Exemplo de requisição (Digitando)

bash
curl -X POST "$BASE_URL/api/v1/admin/messages/threads/02b7a358-6061-4d51-84c0-8044dbb6db6e/typing" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "is_typing": true
}'

Resposta (Digitando)

204Sinal enviado

Corpo vazio.

Erros (Digitando)

StatusQuandoExemplo de corpo
401Token ausente, inválido ou expirado.{"error":"invalid or expired token"}
403O administrador não tem o privilégio manage_settings.{"error":"insufficient privileges","required":"manage_settings"}
400O id não é um UUID válido.{"error":"invalid id","detail":"id must be a valid UUID"}

Ver quem está online na conversa

Devolve os outros participantes da conversa (você não aparece) e se cada um está conectado agora. Serve para o indicador verde/cinza do cabeçalho do chat.

GET/api/v1/admin/messages/threads/{id}/presenceAdmin

Informa se os outros participantes estão conectados

Exige o privilégio manage_settings. O administrador enxerga e responde qualquer conversa da loja.

Parâmetros de caminho

iduuidobrigatório
Identificador da conversa.

Exemplo de requisição (Presença)

bash
curl "$BASE_URL/api/v1/admin/messages/threads/02b7a358-6061-4d51-84c0-8044dbb6db6e/presence" \
  -H "Authorization: Bearer $TOKEN"

Resposta (Presença)

200Presença
json
{
  "participants": [
    {
      "user_id": "3093f506-d6af-4c27-9ef6-c245e8e602f9",
      "online": false
    },
    {
      "user_id": "0fd409fb-9869-4c50-a18c-a810a19abeed",
      "online": true
    }
  ]
}

Campos da resposta

participantsarray

Outros participantes.

user_iduuid
Usuário.
onlineboolean
true se está conectado agora.

Erros (Presença)

StatusQuandoExemplo de corpo
401Token ausente, inválido ou expirado.{"error":"invalid or expired token"}
403O administrador não tem o privilégio manage_settings.{"error":"insufficient privileges","required":"manage_settings"}
400O id não é um UUID válido.{"error":"invalid id","detail":"id must be a valid UUID"}

Veja também

  • Listar e abrir conversas
  • Ligar à conversa
Anterior
Responder uma conversa
Próxima
Ligar à conversa
Nesta página
  • Marcar mensagens como lidas
  • Exemplo de requisição (Marcar como lidas)
  • Resposta (Marcar como lidas)
  • Erros (Marcar como lidas)
  • Marcar mensagens como entregues
  • Exemplo de requisição (Marcar como entregues)
  • Resposta (Marcar como entregues)
  • Erros (Marcar como entregues)
  • Mudar o estado da conversa
  • Exemplo de requisição (Mudar estado)
  • Resposta (Mudar estado)
  • Erros (Mudar estado)
  • Avisar que está digitando
  • Exemplo de requisição (Digitando)
  • Resposta (Digitando)
  • Erros (Digitando)
  • Ver quem está online na conversa
  • Exemplo de requisição (Presença)
  • Resposta (Presença)
  • Erros (Presença)
  • Veja também