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

Ler thread e contexto

Lê uma conversa com suas mensagens, com ou sem paginação, e o resumo do pedido, produto, seller ou usuário ligado a ela.

Abra a thread para mostrar a conversa. A leitura traz os dados da thread e as mensagens. O contexto é um cartão com o resumo do objeto da conversa (por exemplo, número, status e total do pedido), útil para exibir ao lado do chat.

Pontos principais
  • Sem page nem per_page, a resposta traz todas as mensagens, da mais antiga para a mais nova.
  • Com page ou per_page, a resposta é paginada e as mensagens vêm da mais nova para a mais antiga, com page, per_page, total e total_pages.
  • Só quem participa da thread lê: o cliente dono dela. Outro cliente recebe 403.
  • O contexto responde 200 {"context": null} quando a thread não tem objeto ou o objeto não é achado.
GET/api/v1/storefront/messages/threads/{id}Cliente

Ler uma thread com as mensagens

Parâmetros de caminho

iduuidobrigatório
Id da thread.

Parâmetros de consulta

pageintegerpadrão: 1
Liga a paginação. A partir de 1.
per_pageintegerpadrão: 50
Mensagens por página, de 1 a 100 (acima de 100 vale 100). Também liga a paginação.

Exemplo de requisição

bash
curl "$BASE_URL/api/v1/storefront/messages/threads/$THREAD_ID?page=1&per_page=50" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Thread paginada
json
{
  "id": "3f0d6c0e-2a8b-4a40-9f69-4a0f7d1e6a77",
  "subject": "Dúvida sobre o pedido PEDIDO-20261010-0004",
  "status": "A",
  "object_type": "order",
  "object_id": "a8a3c7a3-5f15-45a8-a385-4f20fbf8b722",
  "object_name": "PEDIDO-20261010-0004",
  "customer_user_id": "f12f30a9-cbec-40ba-98f1-b7fa8f2e8e10",
  "vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
  "vendor_name": "Casa do Café",
  "customer_name": "Maria Souza",
  "last_message_preview": "Seu pedido sai amanhã.",
  "last_message_at": "2026-10-11T18:30:00Z",
  "created_at": "2026-10-11T17:00:00Z",
  "updated_at": "2026-10-11T18:30:00Z",
  "messages": [
    {
      "id": "8a7b6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
      "thread_id": "3f0d6c0e-2a8b-4a40-9f69-4a0f7d1e6a77",
      "sender_id": "c2c9a7d4-3b1e-4f55-9a66-0f2d6b1a9e42",
      "sender_type": "vendor",
      "body": "Seu pedido sai amanhã.",
      "attachments": [],
      "is_read": false,
      "delivered_at": "2026-10-11T18:31:00Z",
      "created_at": "2026-10-11T18:30:00Z"
    }
  ],
  "page": 1,
  "per_page": 50,
  "total": 2,
  "total_pages": 1
}

Campos da resposta

iduuid
Id da thread.
subjectstring
Assunto.
statusstring
ARC
A aberta, R resolvida, C arquivada.
object_typestring
Tipo do objeto ligado. Pode ser null.
object_iduuid
Id do objeto ligado. Pode ser null.
object_namestring
Rótulo do objeto. Pode ser null.
customer_user_iduuid
Cliente dono da thread.
vendor_iduuid
Seller da conversa. null em thread da loja.
vendor_namestring
Nome do seller. null em thread da loja.
customer_namestring
Nome do cliente.
last_message_previewstring
Início da última mensagem.
last_message_atstring
Data da última mensagem (RFC 3339).
messagesarray
Mensagens da página (ou todas, sem paginação).
messages[].iduuid
Id da mensagem.
messages[].thread_iduuid
Thread da mensagem.
messages[].sender_iduuid
Usuário que escreveu.
messages[].sender_typestring
customervendoradmin
Papel de quem escreveu.
messages[].bodystring
Texto da mensagem.
messages[].attachmentsarray
Anexos: objetos com url, filename, content_type e size (bytes). [] quando não há.
messages[].is_readboolean
A outra parte já leu.
messages[].delivered_atstring
Quando a mensagem foi marcada como entregue. Ausente se ainda não foi.
messages[].read_atstring
Quando foi marcada como lida. Ausente se ainda não foi.
messages[].created_atstring
Quando foi enviada (RFC 3339).
pageinteger
Página devolvida. Só na leitura paginada.
per_pageinteger
Mensagens por página aplicadas. Só na leitura paginada.
totalinteger
Total de mensagens da thread. Só na leitura paginada.
total_pagesinteger
Total de páginas. Só na leitura paginada.

Campos sem valor (object_type, object_id, object_name, vendor_id, vendor_name) saem null na leitura paginada e ficam ausentes na leitura sem paginação. A leitura sem paginação ainda inclui unread_count (sempre 0) e não traz page, per_page, total nem total_pages.

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.{"error":"you are not a participant of this thread"}
404A thread sumiu entre a checagem e a leitura.{"error":"thread not found"}
Thread inexistente é 403, não 404

A checagem de participante vem antes da leitura. Um UUID válido que não existe também responde 403 you are not a participant of this thread. O 404 só aparece em corrida rara.

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

Ler o contexto do objeto ligado

Parâmetros de caminho

iduuidobrigatório
Id da thread.
bash
curl "$BASE_URL/api/v1/storefront/messages/threads/$THREAD_ID/context" \
  -H "Authorization: Bearer $TOKEN"
200Contexto de um pedido
json
{
  "object_type": "order",
  "object_id": "a8a3c7a3-5f15-45a8-a385-4f20fbf8b722",
  "data": {
    "order_number": "PEDIDO-20261010-0004",
    "status": "P",
    "total": 22500,
    "customer_name": "Maria Souza"
  }
}

Campos da resposta

object_typestring
orderproductvendoruser
Tipo do objeto.
object_iduuid
Id do objeto.
dataobject
Resumo que depende do tipo, listado abaixo.
data (order)object
order_number (string), status (letra do status do pedido), total (inteiro em centavos) e customer_name.
data (product)object
name, sku, price (inteiro em centavos) e image_url.
data (vendor)object
company_name, status e email.
data (user)object
name, email e role.

Quando a thread não tem objeto, o tipo não é um dos quatro acima ou o objeto não foi achado, a resposta é {"context": null}.

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.{"error":"you are not a participant of this thread"}
Dinheiro e status no contexto

total e price do contexto são inteiros em centavos (22500 = R$ 225,00). O status do pedido é a letra guardada no pedido; veja os significados em Status de pedido.

Veja também

  • Listar e buscar threads
  • Responder na thread
  • Ids, dinheiro e datas
Anterior
Abrir thread
Próxima
Responder na thread
Nesta página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Erros
  • Veja também