Skip to content

Ponto de Venda (POS) ​

O POS do módulo de Tours gira em torno de três entidades encadeadas: a comanda (tab) é a conta aberta do cliente no salão, na praia ou no quarto; o pedido (order) é uma rodada lançada nessa comanda; e os itens (order items) são os produtos de cada rodada, já com nome e preço congelados no momento da venda. Completam o fluxo os modificadores do item (adicionais e opcionais) e a trilha de eventos de status que alimenta o KDS da cozinha e do bar.

Todo o fluxo é offline-first: comandas, pedidos e itens aceitam clientRef (UUID gerado no dispositivo) como chave de idempotência — reenviar o mesmo lançamento após uma queda de conexão não duplica a venda (ver Chaves de Idempotência).

Headers obrigatórios

Todas as requisições devem incluir o header X-Tour-Id (UUID) com o tokenHeader da instância e Authorization: Bearer {token} com o token de um usuário staff (guard toursUser). Mutações exigem a permissão pos.order — a API responde 403 com code: FORBIDDEN quando ela falta.


Comandas ​

A comanda ancora o consumo: o kind indica a quem ela pertence — resource (uma mesa, cama ou equipamento), reservation (uma reserva), customer (um cliente do CRM) ou walk_in (consumidor avulso, sem cadastro). O vínculo correspondente (tourResourceId, tourReservationId ou tourCustomerId) aponta para a entidade, e a comanda pode ainda referenciar o tourFolioId onde o consumo será consolidado e a tourCashSessionId do caixa em aberto.

Quem abriu a comanda é registrado automaticamente em openedByTourUserId (o usuário autenticado — não é enviado no payload); ao fechar ou cancelar, closedByTourUserId é injetado da mesma forma. O campo covers registra o número de lugares/pessoas atendidas.

Listar Comandas ​

Lista as comandas da instância, com paginação e filtros por tipo, status e vínculos.

http
GET /v1/tours/user/tabs

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoO número da página (mínimo: 1).
perPagenumberNãoItens por página (entre 1 e 100).
searchstringNãoBusca por termo no número da comanda (máx. 150 caracteres).
kindenumNãoresource, reservation, customer ou walk_in.
statusenumNãoopen, locked, closed ou cancelled.
tourResourceIdnumberNãoFiltra por recurso vinculado.
tourReservationIdnumberNãoFiltra por reserva vinculada.
tourCustomerIdnumberNãoFiltra por cliente vinculado.
tourCashSessionIdnumberNãoFiltra por sessão de caixa.
orderByenumNãoid, number, openedAt, closedAt ou createdAt.
orderDirectionenumNãoasc ou desc.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/tours/user/tabs?status=open&kind=customer" \
  -H "X-Tour-Id: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna a página de comandas no formato meta/data.

json
{
  "meta": {
    "currentPage": 1,
    "perPage": 10
  },
  "data": [
    {
      "id": 1,
      "tourId": 1,
      "tourResourceId": null,
      "tourReservationId": null,
      "tourCustomerId": 1,
      "tourFolioId": 1,
      "tourCashSessionId": null,
      "openedByTourUserId": 1,
      "closedByTourUserId": null,
      "clientRef": null,
      "number": "3219",
      "kind": "customer",
      "status": "open",
      "covers": null,
      "openedAt": "2026-10-07T11:56:15.243-03:00",
      "closedAt": null,
      "notes": null,
      "createdAt": "2026-10-07T11:56:15.244-03:00",
      "updatedAt": "2026-10-07T11:56:15.244-03:00"
    }
  ]
}

Abrir Comanda ​

Abre uma nova comanda (exige a permissão pos.order). O openedByTourUserId é preenchido com o usuário autenticado; se a comanda já nascer closed ou cancelled, closedByTourUserId também é injetado.

http
POST /v1/tours/user/tabs

Payload (Body) ​

AtributoTipoObrigatórioDescrição
numberstringSimNúmero/identificador da comanda (máx. 30 caracteres).
kindenumSimresource, reservation, customer ou walk_in.
clientRefstringNãoUUID gerado no dispositivo — chave de idempotência offline.
tourResourceIdnumberNãoRecurso vinculado (quando kind é resource).
tourReservationIdnumberNãoReserva vinculada (quando kind é reservation).
tourCustomerIdnumberNãoCliente vinculado (quando kind é customer).
tourFolioIdnumberNãoFolio onde o consumo será consolidado.
tourCashSessionIdnumberNãoSessão de caixa em aberto.
statusenumNãoopen, locked, closed ou cancelled (padrão: open).
coversnumberNãoNúmero de lugares/pessoas (mínimo: 0).
openedAtstringNãoData/hora de abertura em ISO 8601 (padrão: agora).
closedAtstringNãoData/hora de fechamento em ISO 8601.
notesstringNãoObservações da comanda.

Exemplo de Requisição ​

bash
curl -X POST "https://api.us.basis.tavares.in/v1/tours/user/tabs" \
  -H "X-Tour-Id: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "number": "DOC-101",
    "kind": "customer",
    "tourCustomerId": 1,
    "tourFolioId": 1,
    "status": "open",
    "covers": 2,
    "openedAt": "2026-10-20T14:00:00.000-03:00",
    "notes": "Comanda doc"
  }'

Respostas ​

201 Created

Retorna o ID da comanda aberta.

json
{
  "id": 4
}

422 Unprocessable Entity

Ocorre quando o payload é inválido ou um vínculo informado não existe na instância.

json
{
  "errors": [
    {
      "message": "The number field is required",
      "rule": "required",
      "field": "number"
    }
  ]
}

403 Forbidden

Ocorre quando o usuário autenticado não possui a permissão pos.order (code: FORBIDDEN).

Listar Comandas para Dropdown ​

Retorna as comandas em formato simplificado (value/label com o número), ideal para selects — como o vínculo de comanda ao criar um pedido.

http
GET /v1/tours/user/tabs/list

Aceita search, status e limit (1 a 1000) como parâmetros opcionais de query.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/tours/user/tabs/list?status=open" \
  -H "X-Tour-Id: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna um array com as comandas.

json
[
  {
    "value": 1,
    "label": "3219"
  },
  {
    "value": 4,
    "label": "DOC-101"
  }
]

Obter Comanda por ID ​

Recupera os detalhes de uma comanda, incluindo cliente, folio, usuários de abertura/fechamento e os pedidos lançados.

http
GET /v1/tours/user/tabs/:id

Parâmetros de Rota ​

NomeTipoObrigatórioDescrição
idnumberSimO ID da comanda.

Respostas ​

200 OK

Retorna a comanda com os relacionamentos.

json
{
  "id": 4,
  "tourId": 1,
  "tourResourceId": null,
  "tourReservationId": null,
  "tourCustomerId": 1,
  "tourFolioId": 1,
  "tourCashSessionId": null,
  "openedByTourUserId": 1,
  "closedByTourUserId": null,
  "clientRef": null,
  "number": "DOC-101",
  "kind": "customer",
  "status": "open",
  "covers": 2,
  "openedAt": "2026-10-20T14:00:00.000-03:00",
  "closedAt": null,
  "notes": "Comanda doc",
  "createdAt": "2026-10-07T15:11:14.675-03:00",
  "updatedAt": "2026-10-07T15:11:14.675-03:00",
  "toursResource": null,
  "toursCustomer": {
    "id": 1,
    "fullName": "Mr. Rogelio Cummerata III"
  },
  "openedByTourUser": {
    "id": 1,
    "displayName": "Bruno Demo"
  },
  "toursFolio": {
    "id": 1,
    "code": "IZTYL5BY"
  },
  "closedByTourUser": null,
  "toursReservation": null,
  "toursOrders": []
}

404 Not Found

Ocorre quando a comanda não existe na instância.

Atualizar Comanda ​

Atualiza dados, vínculos e status de uma comanda (exige a permissão pos.order). Ao mudar o status para closed ou cancelled, o closedByTourUserId é injetado com o usuário autenticado.

http
PUT /v1/tours/user/tabs/:id

Payload (Body) ​

Aceita os mesmos campos da abertura, todos opcionais.

Exemplo de Requisição ​

bash
curl -X PUT "https://api.us.basis.tavares.in/v1/tours/user/tabs/4" \
  -H "X-Tour-Id: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "number": "DOC-101",
    "kind": "customer",
    "tourCustomerId": 1,
    "tourFolioId": 1,
    "status": "open",
    "covers": 3,
    "openedAt": "2026-10-20T14:00:00.000-03:00",
    "notes": "Comanda doc editada"
  }'

Respostas ​

204 No Content

Atualização concluída com sucesso.

404 Not Found

Ocorre quando a comanda não existe na instância.

Remover Comanda ​

Remove uma comanda via soft delete (exige a permissão pos.order).

http
DELETE /v1/tours/user/tabs/:id

Respostas ​

204 No Content

Remoção concluída com sucesso.


Pedidos ​

Cada pedido é uma rodada dentro da comanda: o sequence ordena as rodadas (1, 2, 3…), e o orderedAt registra o horário do dispositivo que lançou o pedido — essencial no modo offline, quando o pedido chega ao servidor minutos depois de ter sido feito. O syncedAt marca quando o lote offline foi sincronizado, e o deviceId identifica o terminal de origem. O orderedByTourUserId é injetado com o usuário autenticado.

Listar Pedidos ​

Lista os pedidos da instância, com filtro por comanda.

http
GET /v1/tours/user/orders

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoO número da página (mínimo: 1).
perPagenumberNãoItens por página (entre 1 e 100).
tourTabIdnumberNãoFiltra por comanda.
orderByenumNãoid, sequence, orderedAt ou createdAt.
orderDirectionenumNãoasc ou desc.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/tours/user/orders?tourTabId=1" \
  -H "X-Tour-Id: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna a página de pedidos no formato meta/data.

json
{
  "meta": {
    "currentPage": 1,
    "perPage": 10
  },
  "data": [
    {
      "id": 1,
      "tourId": 1,
      "tourTabId": 1,
      "orderedByTourUserId": 1,
      "clientRef": null,
      "sequence": 1,
      "orderedAt": "2026-10-07T11:56:15.278-03:00",
      "syncedAt": null,
      "deviceId": null,
      "notes": null,
      "createdAt": "2026-10-07T11:56:15.278-03:00",
      "updatedAt": "2026-10-07T11:56:15.278-03:00"
    }
  ]
}

Criar Pedido ​

Lança uma nova rodada em uma comanda (exige a permissão pos.order). O orderedByTourUserId é preenchido com o usuário autenticado.

http
POST /v1/tours/user/orders

Payload (Body) ​

AtributoTipoObrigatórioDescrição
tourTabIdnumberSimComanda à qual o pedido pertence.
clientRefstringNãoUUID gerado no dispositivo — chave de idempotência offline.
sequencenumberNãoNúmero da rodada na comanda (mínimo: 1).
orderedAtstringNãoHorário do pedido no dispositivo, em ISO 8601 (padrão: agora).
syncedAtstringNãoHorário em que o lote offline foi sincronizado (ISO 8601).
deviceIdstringNãoIdentificador do terminal/dispositivo (máx. 100 caracteres).
notesstringNãoObservações do pedido.

Exemplo de Requisição ​

bash
curl -X POST "https://api.us.basis.tavares.in/v1/tours/user/orders" \
  -H "X-Tour-Id: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "tourTabId": 1,
    "sequence": 1,
    "orderedAt": "2026-10-20T14:00:00.000-03:00",
    "notes": "Pedido doc"
  }'

Respostas ​

201 Created

Retorna o ID do pedido criado.

json
{
  "id": 4
}

422 Unprocessable Entity

Ocorre quando a comanda não existe na instância ou o payload é inválido.

403 Forbidden

Ocorre quando o usuário autenticado não possui a permissão pos.order (code: FORBIDDEN).

Obter Pedido por ID ​

Recupera os detalhes de um pedido, incluindo quem lançou e os itens da rodada.

http
GET /v1/tours/user/orders/:id

Respostas ​

200 OK

Retorna o pedido com orderedByTourUser e toursOrderItems.

json
{
  "id": 4,
  "tourId": 1,
  "tourTabId": 1,
  "orderedByTourUserId": 1,
  "clientRef": null,
  "sequence": 1,
  "orderedAt": "2026-10-20T14:00:00.000-03:00",
  "syncedAt": null,
  "deviceId": null,
  "notes": "Pedido doc",
  "createdAt": "2026-10-07T15:10:54.430-03:00",
  "updatedAt": "2026-10-07T15:10:54.430-03:00",
  "orderedByTourUser": {
    "id": 1,
    "displayName": "Bruno Demo"
  },
  "toursOrderItems": []
}

404 Not Found

Ocorre quando o pedido não existe na instância.

Atualizar Pedido ​

Atualiza uma rodada (exige a permissão pos.order). Aceita os mesmos campos da criação, todos opcionais.

http
PUT /v1/tours/user/orders/:id

Respostas ​

204 No Content

Atualização concluída com sucesso.

404 Not Found

Ocorre quando o pedido não existe na instância.

Remover Pedido ​

Remove um pedido via soft delete (exige a permissão pos.order).

http
DELETE /v1/tours/user/orders/:id

Respostas ​

204 No Content

Remoção concluída com sucesso.


Itens do Pedido ​

O item é a linha de venda: nome e preço são congelados no lançamento (productNameSnapshot, unitPriceAmount) — a tabela de preços pode mudar amanhã, a conta de ontem não. O seatNumber (a partir de 0) identifica a pessoa na mesa e é a base do split por assento no fechamento da conta (ver Financeiro).

O status segue o fluxo do KDS: received → in_preparation → ready → delivered (ou cancelled), com os marcos firedAt, readyAt e deliveredAt. Cada transição gera um evento de status. Valores monetários são retornados como strings decimais.

Desconto: discountAmount com discountReason e discountApprovedByTourUserId (usuário staff que aprovou). Cancelamento (void): envie voidedAt + voidReason — o voidedByTourUserId é injetado com o usuário autenticado.

Listar Itens ​

Lista os itens de pedido da instância, com filtros por pedido, estação KDS, assento e status.

http
GET /v1/tours/user/order-items

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoO número da página (mínimo: 1).
perPagenumberNãoItens por página (entre 1 e 100).
tourOrderIdnumberNãoFiltra por pedido (rodada).
statusenumNãoreceived, in_preparation, ready, delivered ou cancelled.
tourKdsStationIdnumberNãoFiltra por estação KDS (cozinha, bar…).
seatNumbernumberNãoFiltra por assento (mínimo: 0).
tourProductIdnumberNãoFiltra por produto.
orderByenumNãoid, createdAt ou updatedAt.
orderDirectionenumNãoasc ou desc.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/tours/user/order-items?tourOrderId=1&status=received" \
  -H "X-Tour-Id: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna a página de itens no formato meta/data.

json
{
  "meta": {
    "currentPage": 1,
    "perPage": 10
  },
  "data": [
    {
      "id": 1,
      "tourId": 1,
      "tourOrderId": 1,
      "tourProductId": 1,
      "tourKdsStationId": 1,
      "discountApprovedByTourUserId": null,
      "voidedByTourUserId": null,
      "clientRef": null,
      "seatNumber": null,
      "quantity": "1.0000",
      "productNameSnapshot": "Luxurious Wooden Computer",
      "unitPriceAmount": "10.00",
      "modifiersAmount": "0.00",
      "discountAmount": "0.00",
      "discountReason": null,
      "subtotalAmount": "10.00",
      "taxAmount": "0.00",
      "totalAmount": "10.00",
      "status": "received",
      "firedAt": null,
      "readyAt": null,
      "deliveredAt": null,
      "voidedAt": null,
      "voidReason": null,
      "notes": null,
      "createdAt": "2026-10-07T11:56:15.300-03:00",
      "updatedAt": "2026-10-07T11:56:15.300-03:00"
    }
  ]
}

Adicionar Item ​

Lança um item em um pedido (exige a permissão pos.order).

http
POST /v1/tours/user/order-items

Payload (Body) ​

AtributoTipoObrigatórioDescrição
tourOrderIdnumberSimPedido (rodada) ao qual o item pertence.
tourProductIdnumberSimProduto vendido.
quantitynumberSimQuantidade.
productNameSnapshotstringSimNome do produto congelado no lançamento (máx. 200 caracteres).
unitPriceAmountnumberSimPreço unitário congelado no lançamento.
tourKdsStationIdnumberNãoEstação KDS que prepara o item.
clientRefstringNãoUUID gerado no dispositivo — chave de idempotência offline.
seatNumbernumberNãoAssento/pessoa na mesa (mínimo: 0) — base do split por assento.
modifiersAmountnumberNãoSoma dos adicionais (modificadores).
discountAmountnumberNãoValor do desconto.
discountReasonstringNãoMotivo do desconto.
discountApprovedByTourUserIdnumberNãoUsuário staff que aprovou o desconto.
subtotalAmountnumberNãoSubtotal (quantidade × unitário + modificadores − desconto).
taxAmountnumberNãoTotal de impostos do item.
totalAmountnumberNãoTotal do item.
statusenumNãoStatus inicial no KDS (padrão: received).
firedAtstringNãoHorário de envio para a produção (ISO 8601).
readyAtstringNãoHorário em que ficou pronto (ISO 8601).
deliveredAtstringNãoHorário da entrega (ISO 8601).
voidedAtstringNãoMarca o cancelamento — voidedByTourUserId é injetado.
voidReasonstringNãoMotivo do cancelamento (void).
notesstringNãoObservações do item ("sem gelo", "ponto da carne"…).

Exemplo de Requisição ​

bash
curl -X POST "https://api.us.basis.tavares.in/v1/tours/user/order-items" \
  -H "X-Tour-Id: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "tourOrderId": 1,
    "tourProductId": 1,
    "quantity": 2,
    "productNameSnapshot": "Caipirinha",
    "unitPriceAmount": 28,
    "subtotalAmount": 56,
    "totalAmount": 56,
    "status": "received",
    "notes": "Item doc"
  }'

Respostas ​

201 Created

Retorna o ID do item lançado.

json
{
  "id": 4
}

422 Unprocessable Entity

Ocorre quando o pedido ou o produto não existem na instância, ou o payload é inválido.

403 Forbidden

Ocorre quando o usuário autenticado não possui a permissão pos.order (code: FORBIDDEN).

Obter Item por ID ​

Recupera os detalhes de um item, incluindo produto, estação KDS, aprovadores, modificadores e eventos de status.

http
GET /v1/tours/user/order-items/:id

Respostas ​

200 OK

Retorna o item com os relacionamentos.

json
{
  "id": 4,
  "tourId": 1,
  "tourOrderId": 1,
  "tourProductId": 1,
  "tourKdsStationId": null,
  "discountApprovedByTourUserId": null,
  "voidedByTourUserId": null,
  "clientRef": null,
  "seatNumber": null,
  "quantity": "2.0000",
  "productNameSnapshot": "Caipirinha",
  "unitPriceAmount": "28.00",
  "modifiersAmount": "0.00",
  "discountAmount": "0.00",
  "discountReason": null,
  "subtotalAmount": "56.00",
  "taxAmount": "0.00",
  "totalAmount": "56.00",
  "status": "received",
  "firedAt": null,
  "readyAt": null,
  "deliveredAt": null,
  "voidedAt": null,
  "voidReason": null,
  "notes": "Item doc",
  "createdAt": "2026-10-07T15:10:53.640-03:00",
  "updatedAt": "2026-10-07T15:10:53.640-03:00",
  "discountApprovedByTourUser": null,
  "voidedByTourUser": null,
  "toursKdsStation": null,
  "toursOrderItemModifiers": [],
  "toursProduct": {
    "id": 1,
    "name": "Bespoke Concrete Fish",
    "sku": "3XSHCPSMWH"
  },
  "toursOrderItemStatusEvents": []
}

404 Not Found

Ocorre quando o item não existe na instância.

Atualizar Item ​

Atualiza quantidade, valores, status KDS, desconto ou void de um item (exige a permissão pos.order). Aceita os mesmos campos da criação, todos opcionais. Ao enviar voidedAt, o voidedByTourUserId é injetado com o usuário autenticado.

http
PUT /v1/tours/user/order-items/:id

Respostas ​

204 No Content

Atualização concluída com sucesso.

404 Not Found

Ocorre quando o item não existe na instância.

Remover Item ​

Remove um item via soft delete (exige a permissão pos.order).

http
DELETE /v1/tours/user/order-items/:id

Respostas ​

204 No Content

Remoção concluída com sucesso.


Modificadores do Item (somente leitura) ​

Os modificadores são os adicionais e opcionais aplicados a um item (extra de queijo, ponto da carne, troca de acompanhamento), com nome e delta de preço congelados (nameSnapshot, priceDelta). São criados junto com o item e expostos aqui apenas para consulta.

Listar Modificadores ​

http
GET /v1/tours/user/order-item-modifiers

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoO número da página (mínimo: 1).
perPagenumberNãoItens por página (entre 1 e 100).
tourOrderItemIdnumberNãoFiltra pelo item do pedido.
orderByenumNãoid ou nameSnapshot.
orderDirectionenumNãoasc ou desc.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/tours/user/order-item-modifiers?tourOrderItemId=1" \
  -H "X-Tour-Id: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna a página de modificadores no formato meta/data.

json
{
  "meta": {
    "currentPage": 1,
    "perPage": 10
  },
  "data": [
    {
      "id": 1,
      "tourId": 1,
      "tourOrderItemId": 1,
      "tourModifierOptionId": 1,
      "nameSnapshot": "Generic",
      "priceDelta": "2.00",
      "quantity": "1.0000"
    }
  ]
}

Obter Modificador por ID ​

http
GET /v1/tours/user/order-item-modifiers/:id

Respostas ​

200 OK

Retorna o modificador com a opção de origem (toursModifierOption).

json
{
  "id": 1,
  "tourId": 1,
  "tourOrderItemId": 1,
  "tourModifierOptionId": 1,
  "nameSnapshot": "Generic",
  "priceDelta": "2.00",
  "quantity": "1.0000",
  "toursModifierOption": {
    "id": 1,
    "code": "SMMOMOXX",
    "name": "Small"
  }
}

404 Not Found

Ocorre quando o modificador não existe na instância.


Eventos de Status do Item (somente leitura) ​

Cada transição de status do item no KDS (received → in_preparation → ready → delivered/cancelled) grava um evento imutável com status de origem, status de destino, quem mudou e quando. É a trilha que alimenta os painéis da cozinha e as métricas de tempo de preparo.

Listar Eventos ​

http
GET /v1/tours/user/order-item-status-events

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoO número da página (mínimo: 1).
perPagenumberNãoItens por página (entre 1 e 100).
tourOrderItemIdnumberSimItem do pedido dono dos eventos.
orderByenumNãoid ou occurredAt.
orderDirectionenumNãoasc ou desc.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/tours/user/order-item-status-events?tourOrderItemId=1" \
  -H "X-Tour-Id: 123e4567-e89b-12d3-a456-426614174000" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna a página de eventos no formato meta/data.

json
{
  "meta": {
    "currentPage": 1,
    "perPage": 10
  },
  "data": [
    {
      "id": 1,
      "tourId": 1,
      "tourOrderItemId": 1,
      "changedByTourUserId": 1,
      "fromStatus": "received",
      "toStatus": "in_preparation",
      "occurredAt": "2026-10-07T11:56:15.358-03:00",
      "changedByTourUser": {
        "id": 1,
        "displayName": "Bruno Demo"
      }
    }
  ]
}

422 Unprocessable Entity

Ocorre quando tourOrderItemId não é informado ou o item não existe na instância.

Obter Evento por ID ​

http
GET /v1/tours/user/order-item-status-events/:id

Respostas ​

200 OK

Retorna o evento com o usuário que realizou a mudança.

json
{
  "id": 1,
  "tourId": 1,
  "tourOrderItemId": 1,
  "changedByTourUserId": 1,
  "fromStatus": "received",
  "toStatus": "in_preparation",
  "occurredAt": "2026-10-07T11:56:15.358-03:00",
  "changedByTourUser": {
    "id": 1,
    "displayName": "Bruno Demo"
  }
}

404 Not Found

Ocorre quando o evento não existe na instância.