Appearance
Instâncias & Setup
Uma instância Tours é o estabelecimento do seu negócio dentro da plataforma: a pousada, o beach club, a operadora de passeios. Recursos reserváveis, tarifas, reservas, POS, estoque e financeiro vivem dentro dela. Antes de usar qualquer endpoint do Tours (/v1/tours/...), você precisa provisionar uma instância — e é isso que estes endpoints fazem.
A criação é mais do que um simples INSERT: em uma única transação, a plataforma cria a instância com sua configuração operacional (fuso, moeda, virada do dia, horários de check-in/check-out), semeia as 29 permissões do módulo, cria o papel owner com todas elas e o primeiro usuário staff, devolvendo as credenciais de acesso e o tokenHeader que identifica a instância em todas as chamadas seguintes.
Headers obrigatórios
Estes endpoints pertencem à área do dono da conta na plataforma. Todas as requisições exigem Authorization: Bearer {token} (autenticação da plataforma, guard user) e o parâmetro de query workspaceId com o ID do projeto. O header X-Tour-Id não é usado aqui — ele é o tokenHeader gerado na criação da instância. Limite de 100 requisições por minuto (429 ao exceder).
Estrutura de Dados Principal
Uma instância Tours contém as seguintes informações principais:
| Campo | Tipo | Descrição |
|---|---|---|
name | String | Nome do estabelecimento (máx. 150 caracteres). |
slug | String | Slug gerado automaticamente a partir do nome, único por workspace. Imutável após a criação. |
tokenHeader | String | UUID que identifica a instância — usado como X-Tour-Id nas APIs /v1/tours/**. |
legalName | String | Razão social (máx. 200 caracteres, opcional). |
timezone | String | Fuso horário do estabelecimento (padrão: UTC) — rege a apresentação de datas e horários. |
currency | String | Moeda da instância, código ISO de 3 letras (padrão: BRL). |
locale | String | Localidade padrão (máx. 10 caracteres, padrão: pt-BR). |
businessDayStart | String | Hora de virada do dia operacional, no formato HH:mm (padrão: 00:00). |
defaultCheckIn / defaultCheckOut | String | Horários padrão de check-in e check-out, no formato HH:mm (opcionais). |
addressStreet … addressCountry | String | Endereço completo do estabelecimento (todos opcionais; país com 2 letras, ex.: BR). |
geoLat / geoLng | Number | Coordenadas geográficas (latitude -90 a 90, longitude -180 a 180). |
isActive | Boolean | Indica se a instância está ativa. |
workspaceStorageId | Number | Provedor de armazenamento do projeto (nulo se não vinculado). |
workspaceMailId | Number | Provedor de e-mail do projeto (nulo se não vinculado). |
Dia operacional
O businessDayStart define quando o dia operacional vira — útil para beach clubs e baladas que fecham depois da meia-noite: com 02:00, a venda de 01:30 ainda pertence ao dia anterior. Os defaultCheckIn/defaultCheckOut servem de padrão para as reservas de hospedagem.
Setup Inicial
O POST /user/tours executa todo o provisionamento em uma única transação — se qualquer etapa falhar, nada é persistido:
- Instância: criada com nome, slug único no workspace (com sufixo incremental
-2,-3… em caso de colisão),tokenHeader(UUID) e configuração operacional. - Domínios: os
workspaceDomainsinformados são vinculados à instância — sem eles, as APIs/v1/tours/**recusam requisições (401 por origem não autorizada). - Permissões: as 29 permissões do módulo são semeadas no catálogo global (ver Papéis & Permissões).
- Papel owner: criado com
code: owner, nomeProprietário,isSystem: truee todas as permissões. - Primeiro usuário staff: criado com o nome e o e-mail do usuário autenticado na plataforma, PIN aleatório de 6 dígitos e o papel
owner. - Resposta
201: incluiemail,pin(exibido uma única vez) etokenHeader.
Guarde o PIN e o tokenHeader imediatamente — eles não podem ser recuperados depois (o token pode ser regerado, o PIN não; o usuário pode trocá-lo em Trocar PIN).
Endpoints
Listar Instâncias
Lista as instâncias Tours do projeto, com paginação e busca por nome.
http
GET /user/toursParâmetros de Query
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
workspaceId | number | Sim | ID do projeto (workspace) ao qual a instância pertence. |
page | number | Não | O número da página (mínimo: 1). |
perPage | number | Não | Itens por página (entre 1 e 100, padrão: 25). |
search | string | Não | Busca por termo no nome da instância (máx. 150 caracteres). |
Exemplo de Requisição
bash
curl -X GET "https://api.us.basis.tavares.in/user/tours?workspaceId=1&page=1&perPage=25" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"Respostas
200 OK
Retorna um objeto de paginação contendo a lista de instâncias, ordenadas da mais recente para a mais antiga.
json
{
"meta": {
"currentPage": 1,
"perPage": 25
},
"data": [
{
"id": "2",
"name": "Pousada Mar Azul - Anexo",
"slug": "pousada-mar-azul-2",
"tokenHeader": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"isActive": true,
"createdAt": "2026-09-10T14:22:10.000+00:00",
"updatedAt": "2026-09-10T14:22:10.000+00:00"
}
]
}403 Forbidden
Ocorre quando o workspaceId não é informado ou o projeto pertence a outro usuário.
json
{
"notice": "O projeto precisa ser informado",
"field": "workspaceId"
}Criar Instância
Provisiona uma nova instância Tours, executando o setup inicial completo em transação.
http
POST /user/toursPayload (Body)
| Atributo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
tour.name | string | Sim | Nome do estabelecimento (máx. 150 caracteres). |
tour.legalName | string | Não | Razão social (máx. 200 caracteres). |
tour.timezone | string | Não | Fuso horário (máx. 64 caracteres, padrão: UTC). |
tour.currency | string | Não | Moeda, código ISO de 3 letras maiúsculas (padrão: BRL). |
tour.locale | string | Não | Localidade (máx. 10 caracteres, padrão: pt-BR). |
tour.businessDayStart | string | Não | Virada do dia operacional, HH:mm (padrão: 00:00). |
tour.defaultCheckIn | string | Não | Horário padrão de check-in, HH:mm. |
tour.defaultCheckOut | string | Não | Horário padrão de check-out, HH:mm. |
tour.addressStreet | string | Não | Logradouro (máx. 200 caracteres). |
tour.addressNumber | string | Não | Número (máx. 20 caracteres). |
tour.addressComplement | string | Não | Complemento (máx. 100 caracteres). |
tour.addressDistrict | string | Não | Bairro (máx. 100 caracteres). |
tour.addressCity | string | Não | Cidade (máx. 100 caracteres). |
tour.addressState | string | Não | Estado (máx. 100 caracteres). |
tour.addressZipCode | string | Não | CEP (máx. 20 caracteres). |
tour.addressCountry | string | Não | País, código de 2 letras maiúsculas (ex.: BR). |
tour.geoLat | number | Não | Latitude (-90 a 90). |
tour.geoLng | number | Não | Longitude (-180 a 180). |
tour.workspaceStorageId | number | Não | ID do provedor de armazenamento do projeto (deve existir e estar ativo). |
tour.workspaceMailId | number | Não | ID do provedor de e-mail do projeto (deve existir e estar ativo). |
tour.isActive | boolean | Não | Indica se a instância já nasce ativa (padrão: true). |
workspaceDomains | number[] | Sim | IDs dos domínios do projeto vinculados à instância (pode ser um array vazio). |
Exemplo de Requisição
bash
curl -X POST "https://api.us.basis.tavares.in/user/tours?workspaceId=1" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"tour": {
"name": "Pousada Mar Azul",
"timezone": "America/Sao_Paulo",
"currency": "BRL",
"locale": "pt-BR",
"businessDayStart": "03:00",
"defaultCheckIn": "14:00",
"defaultCheckOut": "12:00",
"workspaceStorageId": null,
"workspaceMailId": null
},
"workspaceDomains": [3]
}'Respostas
201 Created
Retorna as credenciais do primeiro usuário staff e o token da instância. O PIN é exibido uma única vez.
json
{
"email": "maria@pousadamarazul.com",
"pin": "483920",
"tokenHeader": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}422 Unprocessable Entity
Erro de validação nos campos enviados.
json
{
"errors": [
{
"message": "Nome é obrigatório",
"rule": "required",
"field": "tour.name"
}
]
}Obter Instância por ID
Recupera os detalhes de uma instância, incluindo os domínios, o provedor de armazenamento e o provedor de e-mail vinculados.
http
GET /user/tours/:idParâmetros de Rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | number | Sim | O ID da instância. |
Exemplo de Requisição
bash
curl -X GET "https://api.us.basis.tavares.in/user/tours/1?workspaceId=1" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"Respostas
200 OK
Retorna a instância com workspaceDomains, workspaceStorage e workspaceMail.
json
{
"id": "1",
"workspaceId": "1",
"workspaceMailId": null,
"workspaceStorageId": null,
"name": "Pousada Mar Azul",
"slug": "pousada-mar-azul",
"legalName": "Pousada Mar Azul LTDA",
"timezone": "America/Sao_Paulo",
"currency": "BRL",
"locale": "pt-BR",
"businessDayStart": "03:00",
"defaultCheckIn": "14:00",
"defaultCheckOut": "12:00",
"addressStreet": "Av. Beira Mar",
"addressNumber": "1200",
"addressComplement": null,
"addressDistrict": "Centro",
"addressCity": "Florianópolis",
"addressState": "Santa Catarina",
"addressZipCode": "88010000",
"addressCountry": "BR",
"geoLat": "-27.5954",
"geoLng": "-48.5480",
"settings": {},
"isActive": true,
"tokenHeader": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"createdAt": "2026-09-01T10:05:33.000+00:00",
"updatedAt": "2026-09-01T10:05:33.000+00:00",
"deletedAt": null,
"workspaceDomains": [
{
"id": "3",
"uri": "pousada.local"
}
],
"workspaceStorage": null,
"workspaceMail": null
}404 Not Found
Ocorre quando a instância não existe no projeto informado.
Atualizar Instância
Atualiza as configurações de uma instância e sincroniza os domínios vinculados. O slug e o tokenHeader não mudam, e o usuário owner não é recriado.
http
PUT /user/tours/:idPayload (Body)
Aceita os mesmos campos da criação: o objeto tour (todos opcionais aqui) e o array workspaceDomains (que, quando enviado, substitui os vínculos atuais).
Exemplo de Requisição
bash
curl -X PUT "https://api.us.basis.tavares.in/user/tours/1?workspaceId=1" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"tour": {
"name": "Pousada Mar Azul",
"defaultCheckOut": "11:00",
"businessDayStart": "04:00",
"workspaceStorageId": null,
"workspaceMailId": null
},
"workspaceDomains": [3]
}'Respostas
204 No Content
Atualização concluída com sucesso.
404 Not Found
Ocorre quando a instância não existe no projeto informado.
Remover Instância
Remove uma instância via soft delete — o registro deixa de aparecer em qualquer consulta, mas não é apagado fisicamente.
http
DELETE /user/tours/:idExemplo de Requisição
bash
curl -X DELETE "https://api.us.basis.tavares.in/user/tours/1?workspaceId=1" \
-H "Authorization: Bearer {token}"Respostas
204 No Content
Remoção concluída com sucesso.
404 Not Found
Ocorre quando a instância não existe no projeto informado.
Listar para Dropdown
Retorna as instâncias em formato simplificado (value/label), ideal para selects no frontend.
http
GET /user/tours/listParâmetros de Query
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
workspaceId | number | Sim | ID do projeto (workspace). |
search | string | Não | Busca por termo no nome da instância (máx. 150 caracteres). |
Exemplo de Requisição
bash
curl -X GET "https://api.us.basis.tavares.in/user/tours/list?workspaceId=1" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"Respostas
200 OK
Retorna um array com as instâncias ordenadas por nome.
json
[
{
"value": 1,
"label": "Pousada Mar Azul"
},
{
"value": 2,
"label": "Pousada Mar Azul - Anexo"
}
]Regerar Token da Instância
Gera um novo tokenHeader (UUID) para a instância. O token anterior deixa de ser válido imediatamente — todas as integrações que usam o header X-Tour-Id precisam ser atualizadas.
http
PATCH /user/tours/:id/change-tokenExemplo de Requisição
bash
curl -X PATCH "https://api.us.basis.tavares.in/user/tours/1/change-token?workspaceId=1" \
-H "Authorization: Bearer {token}" \
-H "Accept: application/json"Respostas
200 OK
Retorna o novo token da instância.
json
{
"tokenHeader": "9b2f7c1e-4d3a-4e5f-8a6b-1c2d3e4f5a6b"
}404 Not Found
Ocorre quando a instância não existe no projeto informado.