Paytour API V2
Overview ¶
Paytour
O Paytour é uma plataforma de vendas de passeios e serviços turisticos. Nessa seção serão descritas as principais entidades que compõem o sistema e como elas se relacionam.
Passeio
Toda loja possui passeios que, por usa vez, contém diversas informações como título, descrição, duração, termos de uso dentre outras. Estes passeios podem ser comprados para uma pessoa ou para várias, sendo necessário respeitar a disponibilidade do passeio, por exemplo, é possível que hajam apenas 3 vagas do dia 01, mas 5 vagas no dia 02. Não devem ser feitas vendas acima da disponibilidade do dia escolhido.
Disponibilidade
Como dito anteriormente, a disponibilidade é uma entidade própria dentro do sistema e deve ser respeitada durante uma venda.
Ao cadastrar a disponibilidade para um passeio no sistema, o gerente pode escolher fazer o passeio todos os dias, apenas nos finais de semana, apenas durante um mês, etc. O gerente também cadastra quais horários existem disponíveis para se realizar o passeio, sendo alguns passeios realizados em diversos horários (com vagas exclusivas de cada horário), ou ele pode optar por cadastrar uma disponibilidade única para o dia todo caso o passeio só seja realizado uma vez ao dia, nesse caso, a quantidade de vagas será referente ao dia e não a um horário específico.
Faixa Etária
O Paytour fornece ao gerente uma forma de categorizar a pessoa que fará o passeio através de faixas etárias.
Faixas etárias estão associadas ao momento da compra de um passeio. Além de informar dia e horário o cliente fornecerá qual sua faixa etária. O gerente, por sua vez, pode configurar preços diferentes de acordo com cada faixa, por exemplo, é possível cadastrar uma faixa gratuita para crianças, uma faixa com preço normal para adultos e uma faixa com preço um pouco abaixo no normal para idosos.
Também é possível cadastrar faixas etárias dependentes, por exemplo, se for configurada a faixa etária “crianças” como dependente, não deverá ser possível realizar a venda do passeio até que uma outra pessoa em uma faixa não dependente seja adicionada.
Observação
Muitos clientes do Paytour usam o recurso de Faixas Etárias de uma forma diferente da que foi concebida inicialmente.
Por exemplo: Existem cliente que usam a faixa etária para diferenciar o tipo de carro que será usado no passeio. Ou seja, ao invés de Criança, Adulto e Idoso, as faixas etárias são Carro 4 lugares, Carro 6 lugares e Quadriculo 2 lugares.
Cupom de Desconto
Uma vez que o pedido já está preenchido de passeios agora é possível adicionar um cupom de desconto que será aplicado ao valor final (Soma do valor de todos os passeios apliváveis mais opcionais se aplicável no pedido).
Considere como passeios aplicáveis: Passeios que não desobedecem as regras do cupom.
Existem dois tipos de cupom, os de valor absoluto e os de porcentagem.
Se o cupom é de porcentagem o desconto deve ser aplicado da forma:
Tome "valor" a soma do valor dos passeios aplicáveis do pedido mais o valor dos opcionais quando houver.
Tome "desconto" a porcentagem do desconto a ser aplicado.
O valor com desconto deve ser calculado da forma: valor * (desconto/100)
Se o cupom é de valor absoluto o desconto deve ser aplicado da forma:
Tome "valor" a soma do valor dos passeios aplicáveis do pedido mais o valor dos opcionais quando houver.
Tome "desconto" o valor absoluto do desconto a ser aplicado.
O valor com desconto deve ser calculado da forma: valor – desconto
Existem seis regras que podem impedir a aplicação de um cupom:
-
Se todos passeios adicionados ao pedido são proibidos pela regra de
produtos_excecaodo cupom -
Se todos passeios adicionados tem datas que desobedecem a regra de
faixas_datas_invalidasdo cupom -
Se o valor da soma de todos os passeios aplicáveis mais os opcionais quando apicáveis não for maior ou igual a
valor_minimo_compra -
Se, após aplicado o desconto, o valor com desconto ficou negativo.
-
Se a data da venda estiver fora da validade do cupom (
valido_de,valido_ate). -
Se a quantidade de pedidos feitos pelo cliente for maior que o limite em
quantidade_por_cliente
Devido a quantidade de regras é recomendado o uso do endpoint /cupons/validate que existe com o propósito de realizar os testes e aplicar o valor correto de desconto.
Fluxo de Venda
Abaixo será apresentado um fluxo típico(recomendado) de uma venda através do Paytour.
-
Solicite ao cliente qual passeio ele deseja realizar.
-
Solicite ao cliente o dia, da lista de dias disponíveis, que ele deseja realizar o passeio.
-
Solicite o horário do passeio da lista de horários disponível.
-
Solicite qual a faixa etária das pessoas que vão ao passeio bem como quantas pessoas por faixa.
-
Adicione esse passeio agora preenchido a lista de passeios do pedido.
-
Pergunte ao cliente se ele deseja voltar ao passo 1 ou prosseguir ao passo 7.
-
Solicite cupom de desconto, forma de pagamento e número de parcelas (se aplicável).
-
Solicite Nome, E-mail, telefone e documento ao cliente.
-
Finalize a venda registrando o pedido no Paytour.
Login ¶
O primeiro passo para utilizar os endpoints da API é o login. Ele pode ser feito de duas formas:
-
Utilizando login e senha de usuário
-
Utilizando credenciais de aplicativo
Ambos os métodos utilizam o cabeçalho de autorização para realizarem a autenticação.
Login via e-mail e senha ¶
Para logar utilizando e-mail e senha, é necessário transformar o valor para o padrão utilizando no cabeçalho HTTP com o valor basic:
-
Concatene
emailesenhaseparados por dois pontos (email:senha) -
Codifique o resultado do passo anterior em
base64
Login via e-mail e senhaPOST/lojas/login{?grant_type,loja_id}
Example URI
- loja_id
number(optional) Example: 42Id da loja onde se deseja fazer login
- grant_type
string(required) Example: passwordTipo de login
Headers
Authorization: Basic <credenciais-codificadas>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"access_token": "xxxxxxxxxx",
"expires_in": 1585937173,
"token_type": "bearer",
"refresh_token": "xxxxxx",
"usuario": {
"id": "42",
"loja_id": "42",
"nome": "Nome do Usuário Logado",
"email": "[email protected]",
"data_hora_cadastro": 1495162800
},
"loja": {
"id": "42",
"nome_loja": "Nome da Empresa",
"title_loja": "Nome da Empresa extendido",
"url": "nome_empresa",
"telefone": "(84) 9999-9999",
"whatsapp": "(84) 98888-8888",
"email_contato": "[email protected]",
"nome_razao": "Nome Razão Social da empresa",
"tipo_pessoa": "juridica",
"cpf_cnpj": "00.000.000\\/0000-00",
"moeda": "BRL",
"cep": "00000-000",
"endereco": "Rua xxxx",
"numero": "42",
"complemento": "",
"bairro": "xxx",
"cidade": "Natal",
"uf": "RN"
}
}Login via credenciais de aplicativo ¶
O login via credenciais de aplicativo funciona de forma semelhante ao login via
e-mail e senha. Deve-se usar o app_key no lugar do e-mail e o app_secret no lugar
da senha:
-
Concatene
app_keyeapp_secretseparados por dois pontos (app_key:app_secret) -
Codifique o resultado do passo anterior em
base64
Login via credenciais de aplicativoPOST/lojas/login?grant_type=application
Example URI
Headers
Authorization: Basic <credenciais-codificadas>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"access_token": "xxxxxxxxxx",
"expires_in": 1585937173,
"token_type": "bearer",
"refresh_token": "xxxxxx",
"aplicativo": {
"id": "42",
"loja_id": "42",
"nome": "Nome do Aplicativo",
},
"loja": {
"id": "42",
"nome_loja": "Nome da Empresa",
"title_loja": "Nome da Empresa extendido",
"url": "nome_empresa",
"telefone": "(84) 9999-9999",
"whatsapp": "(84) 98888-8888",
"email_contato": "[email protected]",
"nome_razao": "Nome Razão Social da empresa",
"tipo_pessoa": "juridica",
"cpf_cnpj": "00.000.000\\/0000-00",
"moeda": "BRL",
"cep": "00000-000",
"endereco": "Rua xxxx",
"numero": "42",
"complemento": "",
"bairro": "xxx",
"cidade": "Natal",
"uf": "RN"
}
}Atualizando o Token ¶
O refresh_token é utilizado para conseguir um novo token de autenticação do
servidor, sem a necessidade do usuário ter que informar login e senha
novamente. Após o access_token expirar (o timestamp da expiração está no
campo expires_in), é necessário fazer outra requisição de login ao servidor
passado o refresh_token no cabeçalho Authorization.
Diferente do access_token, o refresh_token tem validade de 15 dias. Este é o
tempo que um usuário pode ficar logado no aplicativo sem acessá-lo, por
exemplo.
Atualizar tokenPOST/lojas/login?grant_type=refresh_token
Example URI
Body
refresh_token: xxxxxx401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"access_token": "xxxxxxxxxx",
"expires_in": 1585937173,
"token_type": "bearer",
"refresh_token": "xxxxxx",
"usuario": {
"id": "42",
"loja_id": "42",
"nome": "Nome do Usuário Logado",
"email": "[email protected]",
"data_hora_cadastro": 1495162800
},
"loja": {
"id": "42",
"nome_loja": "Nome da Empresa",
"title_loja": "Nome da Empresa extendido",
"url": "nome_empresa",
"telefone": "(84) 9999-9999",
"whatsapp": "(84) 98888-8888",
"email_contato": "[email protected]",
"nome_razao": "Nome Razão Social da empresa",
"tipo_pessoa": "juridica",
"cpf_cnpj": "00.000.000\\/0000-00",
"moeda": "BRL",
"cep": "00000-000",
"endereco": "Rua xxxx",
"numero": "42",
"complemento": "",
"bairro": "xxx",
"cidade": "Natal",
"uf": "RN"
}
}Passeios ¶
Obtendo Passeios ¶
Listar PasseiosGET/passeios{?pagina,quantidade,busca,destino_id,data_de,data_ate,minimalResponse}
Atenção
O campo preco_exibicao não necessariamente condiz com o preço final do passeio.
Para saber o preço do passeio ainda é necessário determinar a data do passeio e a faixa etária do cliente.
Disponibilidades
Apenas quando os campos data_de e data_ate forem passados juntos: Os passeios retornados serão filtrados,
apenas aqueles com disponibilidade dentro do intervalo selecionado serão retornados.
Estes passeios também vão incluir o campo _disponibilidade em seu payload permitindo saber datas, horários, faixas etárias e preços.
Example URI
- pagina
number(optional) Example: 1Número da página
- quantidade
number(optional) Example: 50Quantidade de itens
- busca
string(optional) Example: tremFiltro da consulta
- destino_id
number(optional) Example: 42Id do destino do passeio para filtrar o resultado
- data_de
string(optional) Example: 2023-01-01Data mínima de disponibilidade do passeio
- data_ate
string(optional) Example: 2023-01-01Data máxima de disponibilidade do passeio
- minimalResponse
int(required) Example: 1Passe apenas se deseja um resposta com poucos campos e mais rápida
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"itens": [
{
"id": 1,
"preco_exibicao": 60,
"url": "http://loja-testes.paytour-dev.com.br/passeio/mergulho-batismo",
"categoria_id": 1,
"venda_sem_estoque": 0,
"foto": {
"original": "https://paytour.com.br/url-da-foto.jpg",
"listagem": "https://paytour.com.br/url-da-foto.jpg",
"listagem_grande": "https://paytour.com.br/url-da-foto.jpg",
"lateral": "https://paytour.com.br/url-da-foto.jpg",
"lateral_grande": "https://paytour.com.br/url-da-foto.jpg",
"miniatura": "https://paytour.com.br/url-da-foto.jpg",
"miniatura_mobile": "https://paytour.com.br/url-da-foto.jpg"
},
"outras_fotos": [
{
"original": "https://paytour.com.br/url-da-foto.jpg",
"listagem": "https://paytour.com.br/url-da-foto.jpg",
"listagem_grande": "https://paytour.com.br/url-da-foto.jpg",
"lateral": "https://paytour.com.br/url-da-foto.jpg",
"lateral_grande": "https://paytour.com.br/url-da-foto.jpg",
"miniatura": "https://paytour.com.br/url-da-foto.jpg",
"miniatura_mobile": "https://paytour.com.br/url-da-foto.jpg"
}
],
"loja_id": 12,
"tipo": "passeio",
"nome": "Passeio",
"codigo": "BCUNH",
"duracao_passeio": "Aproximadamente 7 Horas.",
"descricao": "Lorem Ipsum",
"tipo_passeio: dia_inteiro": "Hello, world!",
"url_video": "https://url-do-video.com.br",
"nao_vendavel": false,
"ativo": true,
"prioridade": "0",
"n_views": 0,
"n_vendas": 0,
"quantidade_min_venda": 1,
"quantidade_max_venda": 2,
"prazo_minimo_para_compra": 8,
"tipo_prazo_para_compra": "horas",
"termos_uso": "Termos de Uso",
"termos_uso_obrigatorio": false,
"visivel_site": 1,
"destino_id": 1,
"singular": "Passeio",
"plural": "Passeios",
"promocional": 1,
"promocao": {
"de": 10,
"por": 9.99
},
"opcionais": [
{
"id": "141",
"nome": "Máscara Top"
}
]
}
],
"info": {
"total": 1,
"pagina": 1,
"total_paginas": 1
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "Identificador único do pedido"
},
"preco_exibicao": {
"type": "number",
"enum": [
60
],
"description": "Preço de exibição do passeio"
},
"url": {
"type": "string",
"enum": [
"http://loja-testes.paytour-dev.com.br/passeio/mergulho-batismo"
],
"description": "A url para acessar o passeio no navegador"
},
"categoria_id": {
"type": "number",
"enum": [
1
],
"description": "Identificador da categoria do passeio"
},
"venda_sem_estoque": {
"type": "number",
"enum": [
0
],
"description": "1: pode ser vendido sem estoque, 0: não pode ser vendido sem estoque"
},
"foto": {
"type": "object",
"properties": {
"original": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto original"
},
"listagem": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto redimensionada para listagem"
},
"listagem_grande": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto redimensionada para listagem, porém grande"
},
"lateral": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto em resolução menor, ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"lateral_grande": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"miniatura": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto original redimensionada para uma resolução menor"
},
"miniatura_mobile": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto com a menor resolução dentre as opções"
}
},
"required": [
"original",
"listagem",
"listagem_grande",
"lateral",
"lateral_grande",
"miniatura",
"miniatura_mobile"
],
"additionalProperties": false,
"description": "URL da foto principal do passeio"
},
"outras_fotos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"original": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto original"
},
"listagem": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto redimensionada para listagem"
},
"listagem_grande": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto redimensionada para listagem, porém grande"
},
"lateral": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto em resolução menor, ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"lateral_grande": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"miniatura": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto original redimensionada para uma resolução menor"
},
"miniatura_mobile": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto com a menor resolução dentre as opções"
}
},
"required": [
"original",
"listagem",
"listagem_grande",
"lateral",
"lateral_grande",
"miniatura",
"miniatura_mobile"
],
"additionalProperties": false
}
},
"loja_id": {
"type": "number",
"enum": [
12
],
"description": "Identificador da loja"
},
"tipo": {
"type": "string",
"enum": [
"passeio"
]
},
"nome": {
"type": "string",
"enum": [
"Passeio"
],
"description": "Nome do Passeio"
},
"codigo": {
"type": "string",
"enum": [
"BCUNH"
],
"description": "Código curto do passeo"
},
"duracao_passeio": {
"type": "string",
"enum": [
"Aproximadamente 7 Horas."
],
"description": "Duração do passeio em texto livre,"
},
"descricao": {
"type": "string",
"enum": [
"Lorem Ipsum"
],
"description": "Descrição do Passeio,"
},
"tipo_passeio: dia_inteiro": {
"type": "string",
"enum": [
""
],
"description": "Tipo do passeio: 'fixo', 'faixa', 'dia_inteiro' ou 'turno',"
},
"url_video": {
"type": "string",
"enum": [
"https://url-do-video.com.br"
],
"description": "URL do vídeo associado ao passeio"
},
"nao_vendavel": {
"type": "boolean",
"enum": [
false
],
"description": "Se o passeio pode ser vendido ou não"
},
"ativo": {
"type": "boolean",
"enum": [
true
],
"description": "Se o passeio está ativo"
},
"prioridade": {
"type": "string",
"enum": [
"0"
],
"description": "Prioridade de listagem do passeio"
},
"n_views": {
"type": "number",
"enum": [
0
],
"description": "Número de visualizações do passeio"
},
"n_vendas": {
"type": "number",
"enum": [
0
],
"description": "Número de vendas do passeio"
},
"quantidade_min_venda": {
"type": "number",
"enum": [
1
],
"description": "Numero mínimo de vagas que devem ser ocupadas para que o passeio seja realizado"
},
"quantidade_max_venda": {
"type": "number",
"enum": [
2
],
"description": "Numero máximo de vagas que podem ser ocupadas para que o passeio seja realizado, ou null caso não tenha limite"
},
"prazo_minimo_para_compra": {
"type": "number",
"enum": [
8
],
"description": "Valor do prazo mínimo antes de um passeio onde ele ainda pode ser comprado"
},
"tipo_prazo_para_compra": {
"type": "string",
"enum": [
"horas"
],
"description": "Pode ser horas ou dias, especifíca o campo prazo_minimo_para_compra"
},
"termos_uso": {
"type": "string",
"enum": [
"Termos de Uso"
],
"description": "Termos de Uso do pedido"
},
"termos_uso_obrigatorio": {
"type": "boolean",
"enum": [
false
],
"description": "Se o usuário é obrigado a aceitar os termos de uso para comprar o passeio"
},
"visivel_site": {
"type": "number",
"enum": [
1
],
"description": "Se esse passeio está visível na listagem do site"
},
"destino_id": {
"type": "number",
"enum": [
1
],
"description": "Identificador do destino do passeio"
},
"singular": {
"type": "string",
"enum": [
"Passeio"
],
"description": "Nome do passeio no plural"
},
"plural": {
"type": "string",
"enum": [
"Passeios"
],
"description": "Nome do passeio no plural"
},
"promocional": {
"type": "number",
"enum": [
1
],
"description": "1: passeio com preço promocional, 0: passeio com preço normal"
},
"promocao": {
"type": "object",
"properties": {
"de": {
"type": "number",
"enum": [
10
],
"description": "Valor original do passeio"
},
"por": {
"type": "number",
"enum": [
9.99
],
"description": "Valor promocional do passeio"
}
},
"required": [
"de",
"por"
],
"additionalProperties": false
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"141"
],
"description": "Identificador único desse opcional"
},
"nome": {
"type": "string",
"enum": [
"Máscara Top"
],
"description": "Título do opcional"
}
},
"required": [
"id",
"nome"
],
"additionalProperties": false
},
"description": "A lista de opcionais disponíveis para esse passeio"
}
},
"required": [
"id",
"preco_exibicao",
"url",
"categoria_id",
"venda_sem_estoque",
"foto",
"outras_fotos",
"loja_id",
"tipo",
"nome",
"codigo",
"duracao_passeio",
"descricao",
"tipo_passeio: dia_inteiro",
"url_video",
"nao_vendavel",
"ativo",
"prioridade",
"n_views",
"n_vendas",
"quantidade_min_venda",
"quantidade_max_venda",
"prazo_minimo_para_compra",
"tipo_prazo_para_compra",
"termos_uso",
"termos_uso_obrigatorio",
"visivel_site",
"destino_id",
"singular",
"plural",
"promocional",
"promocao",
"opcionais"
],
"additionalProperties": false
}
},
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
}
}
}
},
"required": [
"itens"
]
}Detalhando um Passeio ¶
Este endpoint retorna os detalhes de um passeio da loja, incluindo informações de disponibilidade e faixas de preço. Por padrão, são considerados até 3 meses a partir da data da consulta. Caso seja informado o parâmetro disponibilidadeAte, o sistema buscará a disponibilidade para até 12 meses, no máximo.
Detalhar PasseioGET/passeios/{id}{?disponibilidadeAte}
Example URI
- id
number(optional) Example: 42O id do passeio
- disponibilidadeAte
number(optional) Example: 12mes
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}404Headers
Content-Type: application/jsonBody
{
"message": "Resource not found.",
"code": 64
}200Headers
Content-Type: application/jsonBody
{
"id": 1,
"preco_exibicao": 60,
"url": "http://loja-testes.paytour-dev.com.br/passeio/mergulho-batismo",
"categoria_id": 1,
"venda_sem_estoque": 0,
"foto": {
"original": "https://paytour.com.br/url-da-foto.jpg",
"listagem": "https://paytour.com.br/url-da-foto.jpg",
"listagem_grande": "https://paytour.com.br/url-da-foto.jpg",
"lateral": "https://paytour.com.br/url-da-foto.jpg",
"lateral_grande": "https://paytour.com.br/url-da-foto.jpg",
"miniatura": "https://paytour.com.br/url-da-foto.jpg",
"miniatura_mobile": "https://paytour.com.br/url-da-foto.jpg"
},
"outras_fotos": [
{
"original": "https://paytour.com.br/url-da-foto.jpg",
"listagem": "https://paytour.com.br/url-da-foto.jpg",
"listagem_grande": "https://paytour.com.br/url-da-foto.jpg",
"lateral": "https://paytour.com.br/url-da-foto.jpg",
"lateral_grande": "https://paytour.com.br/url-da-foto.jpg",
"miniatura": "https://paytour.com.br/url-da-foto.jpg",
"miniatura_mobile": "https://paytour.com.br/url-da-foto.jpg"
}
],
"loja_id": 12,
"tipo": "passeio",
"nome": "Passeio",
"codigo": "BCUNH",
"duracao_passeio": "Aproximadamente 7 Horas.",
"descricao": "Lorem Ipsum",
"tipo_passeio: dia_inteiro": "Hello, world!",
"url_video": "https://url-do-video.com.br",
"nao_vendavel": false,
"ativo": true,
"prioridade": "0",
"n_views": 0,
"n_vendas": 0,
"quantidade_min_venda": 1,
"quantidade_max_venda": 2,
"prazo_minimo_para_compra": 8,
"tipo_prazo_para_compra": "horas",
"termos_uso": "Termos de Uso",
"termos_uso_obrigatorio": false,
"visivel_site": 1,
"destino_id": 1,
"singular": "Passeio",
"plural": "Passeios",
"promocional": 1,
"promocao": {
"de": 10,
"por": 9.99
},
"opcionais": [
{
"id": "141",
"nome": "Máscara Top"
}
],
"_disponibilidade": [
{
"id": 626,
"quantidade": 20,
"date": "2020-09-01",
"label": "12:00",
"non_dependent_count": 0,
"count": 0,
"_faixas_etarias": [
{
"id": 49,
"label": "Criança",
"dependente": "1",
"descricao": "Criança",
"preco": "50.00",
"preco_net": "50.00",
"preco_desconto": "40.00",
"faixa_etaria_id": 209,
"precos_sazonais": [
{
"id": 42,
"data_inicio": "2020-05-01",
"data_fim": "2020-08-31",
"preco_promocao_de": "50.00",
"preco": "40.00",
"preco_net": "40.00",
"preco_desconto": "40.00",
"promocao": "1"
}
]
}
]
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identificador único do pedido"
},
"preco_exibicao": {
"type": "number",
"description": "Preço de exibição do passeio"
},
"url": {
"type": "string",
"description": "A url para acessar o passeio no navegador"
},
"categoria_id": {
"type": "number",
"description": "Identificador da categoria do passeio"
},
"venda_sem_estoque": {
"type": "number",
"description": "1: pode ser vendido sem estoque, 0: não pode ser vendido sem estoque"
},
"foto": {
"type": "object",
"properties": {
"original": {
"type": "string",
"description": "URL da foto original"
},
"listagem": {
"type": "string",
"description": "URL da foto redimensionada para listagem"
},
"listagem_grande": {
"type": "string",
"description": "URL da foto redimensionada para listagem, porém grande"
},
"lateral": {
"type": "string",
"description": "URL da foto em resolução menor, ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"lateral_grande": {
"type": "string",
"description": "URL da foto ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"miniatura": {
"type": "string",
"description": "URL da foto original redimensionada para uma resolução menor"
},
"miniatura_mobile": {
"type": "string",
"description": "URL da foto com a menor resolução dentre as opções"
}
},
"description": "URL da foto principal do passeio"
},
"outras_fotos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"original": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto original"
},
"listagem": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto redimensionada para listagem"
},
"listagem_grande": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto redimensionada para listagem, porém grande"
},
"lateral": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto em resolução menor, ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"lateral_grande": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"miniatura": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto original redimensionada para uma resolução menor"
},
"miniatura_mobile": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto com a menor resolução dentre as opções"
}
},
"required": [
"original",
"listagem",
"listagem_grande",
"lateral",
"lateral_grande",
"miniatura",
"miniatura_mobile"
],
"additionalProperties": false
}
},
"loja_id": {
"type": "number",
"description": "Identificador da loja"
},
"tipo": {
"type": "string"
},
"nome": {
"type": "string",
"description": "Nome do Passeio"
},
"codigo": {
"type": "string",
"description": "Código curto do passeo"
},
"duracao_passeio": {
"type": "string",
"description": "Duração do passeio em texto livre,"
},
"descricao": {
"type": "string",
"description": "Descrição do Passeio,"
},
"tipo_passeio: dia_inteiro": {
"type": "string",
"description": "Tipo do passeio: 'fixo', 'faixa', 'dia_inteiro' ou 'turno',"
},
"url_video": {
"type": "string",
"description": "URL do vídeo associado ao passeio"
},
"nao_vendavel": {
"type": "boolean",
"description": "Se o passeio pode ser vendido ou não"
},
"ativo": {
"type": "boolean",
"description": "Se o passeio está ativo"
},
"prioridade": {
"type": "string",
"description": "Prioridade de listagem do passeio"
},
"n_views": {
"type": "number",
"description": "Número de visualizações do passeio"
},
"n_vendas": {
"type": "number",
"description": "Número de vendas do passeio"
},
"quantidade_min_venda": {
"type": "number",
"description": "Numero mínimo de vagas que devem ser ocupadas para que o passeio seja realizado"
},
"quantidade_max_venda": {
"type": "number",
"description": "Numero máximo de vagas que podem ser ocupadas para que o passeio seja realizado, ou null caso não tenha limite"
},
"prazo_minimo_para_compra": {
"type": "number",
"description": "Valor do prazo mínimo antes de um passeio onde ele ainda pode ser comprado"
},
"tipo_prazo_para_compra": {
"type": "string",
"description": "Pode ser horas ou dias, especifíca o campo prazo_minimo_para_compra"
},
"termos_uso": {
"type": "string",
"description": "Termos de Uso do pedido"
},
"termos_uso_obrigatorio": {
"type": "boolean",
"description": "Se o usuário é obrigado a aceitar os termos de uso para comprar o passeio"
},
"visivel_site": {
"type": "number",
"description": "Se esse passeio está visível na listagem do site"
},
"destino_id": {
"type": "number",
"description": "Identificador do destino do passeio"
},
"singular": {
"type": "string",
"description": "Nome do passeio no plural"
},
"plural": {
"type": "string",
"description": "Nome do passeio no plural"
},
"promocional": {
"type": "number",
"description": "1: passeio com preço promocional, 0: passeio com preço normal"
},
"promocao": {
"type": "object",
"properties": {
"de": {
"type": "number",
"description": "Valor original do passeio"
},
"por": {
"type": "number",
"description": "Valor promocional do passeio"
}
}
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"141"
],
"description": "Identificador único desse opcional"
},
"nome": {
"type": "string",
"enum": [
"Máscara Top"
],
"description": "Título do opcional"
}
},
"required": [
"id",
"nome"
],
"additionalProperties": false
},
"description": "A lista de opcionais disponíveis para esse passeio"
},
"_disponibilidade": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
626
],
"description": "Identificador único do horário"
},
"quantidade": {
"type": "number",
"enum": [
20
],
"description": "Número de vagas disponíveis nesse horário para esse passeio"
},
"date": {
"type": "string",
"enum": [
"2020-09-01"
],
"description": "Data selecionada no formato YYYY-MM-DD"
},
"label": {
"type": "string",
"enum": [
"12:00"
],
"description": "A string que descreve o horário"
},
"non_dependent_count": {
"type": "number",
"enum": [
0
],
"description": "Número de clientes não dependentes adicionados"
},
"count": {
"type": "number",
"enum": [
0
],
"description": "Número de clientes adicionados"
},
"_faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
49
],
"description": "Identificador único da faixa etária para esse passeio"
},
"label": {
"type": "string",
"enum": [
"Criança"
],
"description": "O nome da faixa etária"
},
"dependente": {
"type": "string",
"enum": [
"1"
],
"description": "\"1\" se essa faixa etária é dependente de um responsável para fazer o passeio"
},
"descricao": {
"type": "string",
"enum": [
"Criança"
],
"description": "A string que descreve o a faixa"
},
"preco": {
"type": "string",
"enum": [
"50.00"
],
"description": "O preço da faixa etária (Preço que deve ser cobrado por pessoa nesse passeio)"
},
"preco_net": {
"type": "string",
"enum": [
"50.00"
],
"description": "O preço de venda para afiliados da loja"
},
"preco_desconto": {
"type": "string",
"enum": [
"40.00"
],
"description": "Preço de venda caso seja selecionado pagamento em depósito"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
209
],
"description": "Identificador único da faixa etária"
},
"precos_sazonais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
42
],
"description": "Identificador único"
},
"data_inicio": {
"type": "string",
"enum": [
"2020-05-01"
],
"description": "Data de início do preço sazonal"
},
"data_fim": {
"type": "string",
"enum": [
"2020-08-31"
],
"description": "Data de final do preço sazonal"
},
"preco_promocao_de": {
"type": "string",
"enum": [
"50.00"
],
"description": "Quanto custava antes do período começar"
},
"preco": {
"type": "string",
"enum": [
"40.00"
],
"description": "Quanto custa durante o período"
},
"preco_net": {
"type": "string",
"enum": [
"40.00"
],
"description": "Quanto custa durante o período para afiliados"
},
"preco_desconto": {
"type": "string",
"enum": [
"40.00"
],
"description": "Preço de venda caso seja selecionado pagamento em depósito"
},
"promocao": {
"type": "string",
"enum": [
"1"
],
"description": "\"1\" se o período é promocional"
}
},
"required": [
"id",
"data_inicio",
"data_fim",
"preco_promocao_de",
"preco",
"preco_net",
"preco_desconto",
"promocao"
],
"additionalProperties": false
},
"description": "A lista de preços sazonais"
}
},
"required": [
"id",
"label",
"dependente",
"descricao",
"preco",
"preco_net",
"preco_desconto",
"faixa_etaria_id",
"precos_sazonais"
],
"additionalProperties": false
},
"description": "A lista faixas etárias"
}
},
"required": [
"id",
"quantidade",
"date",
"label",
"non_dependent_count",
"count",
"_faixas_etarias"
],
"additionalProperties": false
},
"description": "A lista datas horarios e faixas etarias"
}
},
"required": [
"outras_fotos",
"opcionais",
"_disponibilidade"
]
}Combos ¶
Obtendo Combos ¶
Listar CombosGET/combos{?pagina,quantidade,busca,data_de,data_ate}
Nota
Esse endpoint retorna todos os dados que você precisa para realizar um pedido de um combo
Disponibilidades
Apenas quando os campos data_de e data_ate forem passados juntos: Os passeios retornados serão filtrados,
apenas aqueles com disponibilidade dentro do intervalo selecionado serão retornados.
Estes passeios também vão incluir o campo _disponibilidade em seu payload permitindo saber datas, horários, faixas etárias e preços.
Example URI
- pagina
number(optional) Example: 1Número da página
- quantidade
number(optional) Example: 50Quantidade de itens
- busca
string(optional) Example: tremFiltro da consulta pode ser o nome ou id ou uma descrição.
- data_de
string(optional) Example: 2023-01-01Data mínima de disponibilidade do passeio que faz parte do combo
- data_ate
string(optional) Example: 2023-01-01Data máxima de disponibilidade do passeio que faz parte do combo
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"itens": [
{
"id": 1,
"seletor": "calendario",
"preenchimento_formulario: anterior_todos,": "Hello, world!",
"url": "http://loja-testes.paytour-dev.com.br/combo/mergulho-batismo",
"categoria_id": 1,
"venda_sem_estoque": 0,
"foto": {
"original": "https://paytour.com.br/url-da-foto.jpg",
"listagem": "https://paytour.com.br/url-da-foto.jpg",
"listagem_grande": "https://paytour.com.br/url-da-foto.jpg",
"lateral": "https://paytour.com.br/url-da-foto.jpg",
"lateral_grande": "https://paytour.com.br/url-da-foto.jpg",
"miniatura": "https://paytour.com.br/url-da-foto.jpg",
"miniatura_mobile": "https://paytour.com.br/url-da-foto.jpg"
},
"photos": [
{
"original": "https://paytour.com.br/url-da-foto.jpg",
"listagem": "https://paytour.com.br/url-da-foto.jpg",
"listagem_grande": "https://paytour.com.br/url-da-foto.jpg",
"lateral": "https://paytour.com.br/url-da-foto.jpg",
"lateral_grande": "https://paytour.com.br/url-da-foto.jpg",
"miniatura": "https://paytour.com.br/url-da-foto.jpg",
"miniatura_mobile": "https://paytour.com.br/url-da-foto.jpg"
}
],
"loja_id": 12,
"tipo": "Combo",
"nome": "Combo",
"codigo": "BCUNH",
"descricao": "Lorem Ipsum",
"url_video": "https://url-do-video.com.br",
"nao_vendavel": false,
"ativo": true,
"prioridade": "0",
"n_views": 0,
"n_vendas": 0,
"prazo_minimo_para_compra": 8,
"tipo_prazo_para_compra": "horas",
"termos_uso": "Termos de Uso",
"termos_uso_obrigatorio": false,
"visivel_site": 1,
"singular": "combos",
"plural": "comboss",
"promocional": 1,
"faixas_etarias": [
{
"id": 49,
"label": "Criança",
"dependente": "1",
"descricao": "Criança",
"preco": "50.00",
"preco_net": "50.00",
"preco_desconto": "40.00",
"faixa_etaria_id": 209,
"precos_sazonais": [
{
"id": 42,
"data_inicio": "2020-05-01",
"data_fim": "2020-08-31",
"preco_promocao_de": "50.00",
"preco": "40.00",
"preco_net": "40.00",
"preco_desconto": "40.00",
"promocao": "1"
}
]
}
],
"Atividades": [
{
"id": 11,
"produto_original_id": 1,
"produto_referenciado_id": 15,
"valor valor_proporcional": "50",
"disponibilidade": [
{
"id": "807363",
"quantidade": 11,
"date": "2025-03-30",
"hora_de": "06:00:00",
"label": "Manhã",
"_faixas_etarias": [
{
"id": 49,
"label": "Criança",
"dependente": "1",
"descricao": "Criança",
"preco": "50.00",
"preco_net": "50.00",
"preco_desconto": "40.00",
"faixa_etaria_id": 209,
"precos_sazonais": [
{
"id": 42,
"data_inicio": "2020-05-01",
"data_fim": "2020-08-31",
"preco_promocao_de": "50.00",
"preco": "40.00",
"preco_net": "40.00",
"preco_desconto": "40.00",
"promocao": "1"
}
]
}
]
}
],
"opcionais": [
{
"id": 50,
"produto_id": 11,
"preco": "500.00",
"excluido": 0
}
]
}
]
}
],
"info": {
"total": 1,
"pagina": 1,
"total_paginas": 1
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "Identificador único do pedido"
},
"seletor": {
"type": "string",
"enum": [
"calendario"
]
},
"preenchimento_formulario: anterior_todos,": {
"type": "string",
"enum": [
""
]
},
"url": {
"type": "string",
"enum": [
"http://loja-testes.paytour-dev.com.br/combo/mergulho-batismo"
],
"description": "A url para acessar o Combo no navegador"
},
"categoria_id": {
"type": "number",
"enum": [
1
],
"description": "Identificador da categoria do Combo"
},
"venda_sem_estoque": {
"type": "number",
"enum": [
0
],
"description": "1: pode ser vendido sem estoque, 0: não pode ser vendido sem estoque"
},
"foto": {
"type": "object",
"properties": {
"original": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto original"
},
"listagem": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto redimensionada para listagem"
},
"listagem_grande": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto redimensionada para listagem, porém grande"
},
"lateral": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto em resolução menor, ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"lateral_grande": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"miniatura": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto original redimensionada para uma resolução menor"
},
"miniatura_mobile": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto com a menor resolução dentre as opções"
}
},
"required": [
"original",
"listagem",
"listagem_grande",
"lateral",
"lateral_grande",
"miniatura",
"miniatura_mobile"
],
"additionalProperties": false,
"description": "URL da foto principal do Combo"
},
"photos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"original": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto original"
},
"listagem": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto redimensionada para listagem"
},
"listagem_grande": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto redimensionada para listagem, porém grande"
},
"lateral": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto em resolução menor, ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"lateral_grande": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto ideal para mostrar em uma seção lateral (Ex: veja também)"
},
"miniatura": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto original redimensionada para uma resolução menor"
},
"miniatura_mobile": {
"type": "string",
"enum": [
"https://paytour.com.br/url-da-foto.jpg"
],
"description": "URL da foto com a menor resolução dentre as opções"
}
},
"required": [
"original",
"listagem",
"listagem_grande",
"lateral",
"lateral_grande",
"miniatura",
"miniatura_mobile"
],
"additionalProperties": false
}
},
"loja_id": {
"type": "number",
"enum": [
12
],
"description": "Identificador da loja"
},
"tipo": {
"type": "string",
"enum": [
"Combo"
]
},
"nome": {
"type": "string",
"enum": [
"Combo"
],
"description": "Nome do Combo"
},
"codigo": {
"type": "string",
"enum": [
"BCUNH"
],
"description": "Código curto do Combo"
},
"descricao": {
"type": "string",
"enum": [
"Lorem Ipsum"
],
"description": "Descrição do Combo,"
},
"url_video": {
"type": "string",
"enum": [
"https://url-do-video.com.br"
],
"description": "URL do vídeo associado ao combos"
},
"nao_vendavel": {
"type": "boolean",
"enum": [
false
],
"description": "Se o combos pode ser vendido ou não"
},
"ativo": {
"type": "boolean",
"enum": [
true
],
"description": "Se o combos está ativo"
},
"prioridade": {
"type": "string",
"enum": [
"0"
],
"description": "Prioridade de listagem do combos"
},
"n_views": {
"type": "number",
"enum": [
0
],
"description": "Número de visualizações do combos"
},
"n_vendas": {
"type": "number",
"enum": [
0
],
"description": "Número de vendas do combos"
},
"prazo_minimo_para_compra": {
"type": "number",
"enum": [
8
],
"description": "Valor do prazo mínimo antes de um combos onde ele ainda pode ser comprado"
},
"tipo_prazo_para_compra": {
"type": "string",
"enum": [
"horas"
],
"description": "Pode ser horas ou dias, especifíca o campo prazo_minimo_para_compra"
},
"termos_uso": {
"type": "string",
"enum": [
"Termos de Uso"
],
"description": "Termos de Uso do pedido"
},
"termos_uso_obrigatorio": {
"type": "boolean",
"enum": [
false
],
"description": "Se o usuário é obrigado a aceitar os termos de uso para comprar o combos"
},
"visivel_site": {
"type": "number",
"enum": [
1
],
"description": "Se esse combos está visível na listagem do site"
},
"singular": {
"type": "string",
"enum": [
"combos"
],
"description": "Nome do combos no plural"
},
"plural": {
"type": "string",
"enum": [
"comboss"
],
"description": "Nome do combos no plural"
},
"promocional": {
"type": "number",
"enum": [
1
],
"description": "1: combos com preço promocional, 0: combos com preço normal"
},
"faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
49
],
"description": "Identificador único da faixa etária para esse passeio"
},
"label": {
"type": "string",
"enum": [
"Criança"
],
"description": "O nome da faixa etária"
},
"dependente": {
"type": "string",
"enum": [
"1"
],
"description": "\"1\" se essa faixa etária é dependente de um responsável para fazer o passeio"
},
"descricao": {
"type": "string",
"enum": [
"Criança"
],
"description": "A string que descreve o a faixa"
},
"preco": {
"type": "string",
"enum": [
"50.00"
],
"description": "O preço da faixa etária (Preço que deve ser cobrado por pessoa nesse passeio)"
},
"preco_net": {
"type": "string",
"enum": [
"50.00"
],
"description": "O preço de venda para afiliados da loja"
},
"preco_desconto": {
"type": "string",
"enum": [
"40.00"
],
"description": "Preço de venda caso seja selecionado pagamento em depósito"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
209
],
"description": "Identificador único da faixa etária"
},
"precos_sazonais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
42
],
"description": "Identificador único"
},
"data_inicio": {
"type": "string",
"enum": [
"2020-05-01"
],
"description": "Data de início do preço sazonal"
},
"data_fim": {
"type": "string",
"enum": [
"2020-08-31"
],
"description": "Data de final do preço sazonal"
},
"preco_promocao_de": {
"type": "string",
"enum": [
"50.00"
],
"description": "Quanto custava antes do período começar"
},
"preco": {
"type": "string",
"enum": [
"40.00"
],
"description": "Quanto custa durante o período"
},
"preco_net": {
"type": "string",
"enum": [
"40.00"
],
"description": "Quanto custa durante o período para afiliados"
},
"preco_desconto": {
"type": "string",
"enum": [
"40.00"
],
"description": "Preço de venda caso seja selecionado pagamento em depósito"
},
"promocao": {
"type": "string",
"enum": [
"1"
],
"description": "\"1\" se o período é promocional"
}
},
"required": [
"id",
"data_inicio",
"data_fim",
"preco_promocao_de",
"preco",
"preco_net",
"preco_desconto",
"promocao"
],
"additionalProperties": false
},
"description": "A lista de preços sazonais"
}
},
"required": [
"id",
"label",
"dependente",
"descricao",
"preco",
"preco_net",
"preco_desconto",
"faixa_etaria_id",
"precos_sazonais"
],
"additionalProperties": false
},
"description": "A lista de faixas etarias para o combo"
},
"Atividades": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
11
]
},
"produto_original_id": {
"type": "number",
"enum": [
1
],
"description": "id do combo"
},
"produto_referenciado_id": {
"type": "number",
"enum": [
15
],
"description": "id do passeio"
},
"valor valor_proporcional": {
"type": "string",
"enum": [
"50"
],
"description": "em porcentagem"
},
"disponibilidade": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"807363"
],
"description": "O Id da disponibilidade a ser usada"
},
"quantidade": {
"type": "number",
"enum": [
11
],
"description": "a quantidade de vagas disponível para o passeio"
},
"date": {
"type": "string",
"enum": [
"2025-03-30"
]
},
"hora_de": {
"type": "string",
"enum": [
"06:00:00"
]
},
"label": {
"type": "string",
"enum": [
"Manhã"
]
},
"_faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
49
],
"description": "Identificador único da faixa etária para esse passeio"
},
"label": {
"type": "string",
"enum": [
"Criança"
],
"description": "O nome da faixa etária"
},
"dependente": {
"type": "string",
"enum": [
"1"
],
"description": "\"1\" se essa faixa etária é dependente de um responsável para fazer o passeio"
},
"descricao": {
"type": "string",
"enum": [
"Criança"
],
"description": "A string que descreve o a faixa"
},
"preco": {
"type": "string",
"enum": [
"50.00"
],
"description": "O preço da faixa etária (Preço que deve ser cobrado por pessoa nesse passeio)"
},
"preco_net": {
"type": "string",
"enum": [
"50.00"
],
"description": "O preço de venda para afiliados da loja"
},
"preco_desconto": {
"type": "string",
"enum": [
"40.00"
],
"description": "Preço de venda caso seja selecionado pagamento em depósito"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
209
],
"description": "Identificador único da faixa etária"
},
"precos_sazonais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
42
],
"description": "Identificador único"
},
"data_inicio": {
"type": "string",
"enum": [
"2020-05-01"
],
"description": "Data de início do preço sazonal"
},
"data_fim": {
"type": "string",
"enum": [
"2020-08-31"
],
"description": "Data de final do preço sazonal"
},
"preco_promocao_de": {
"type": "string",
"enum": [
"50.00"
],
"description": "Quanto custava antes do período começar"
},
"preco": {
"type": "string",
"enum": [
"40.00"
],
"description": "Quanto custa durante o período"
},
"preco_net": {
"type": "string",
"enum": [
"40.00"
],
"description": "Quanto custa durante o período para afiliados"
},
"preco_desconto": {
"type": "string",
"enum": [
"40.00"
],
"description": "Preço de venda caso seja selecionado pagamento em depósito"
},
"promocao": {
"type": "string",
"enum": [
"1"
],
"description": "\"1\" se o período é promocional"
}
},
"required": [
"id",
"data_inicio",
"data_fim",
"preco_promocao_de",
"preco",
"preco_net",
"preco_desconto",
"promocao"
],
"additionalProperties": false
},
"description": "A lista de preços sazonais"
}
},
"required": [
"id",
"label",
"dependente",
"descricao",
"preco",
"preco_net",
"preco_desconto",
"faixa_etaria_id",
"precos_sazonais"
],
"additionalProperties": false
},
"description": "As faixas etárias dos passeios que fazem parte do combo"
}
},
"required": [
"id",
"quantidade",
"date",
"hora_de",
"label",
"_faixas_etarias"
],
"additionalProperties": false
},
"description": "A lista de faixas etarias para o combo"
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
50
],
"description": "O Id do opcional a ser usado"
},
"produto_id": {
"type": "number",
"enum": [
11
],
"description": "id do passeio"
},
"preco": {
"type": "string",
"enum": [
"500.00"
]
},
"excluido": {
"type": "number",
"enum": [
0
],
"description": "mostra se opcional foi excluido ou não do produto;"
}
},
"required": [
"id",
"produto_id",
"preco",
"excluido"
],
"additionalProperties": false
},
"description": "A lista de opcionais dos passeios que fazem que fazem parte do combo"
}
},
"required": [
"id",
"produto_original_id",
"produto_referenciado_id",
"valor valor_proporcional",
"disponibilidade",
"opcionais"
],
"additionalProperties": false
},
"description": "A lista de passeios que fazem parte do combo"
}
},
"required": [
"id",
"seletor",
"preenchimento_formulario: anterior_todos,",
"url",
"categoria_id",
"venda_sem_estoque",
"foto",
"photos",
"loja_id",
"tipo",
"nome",
"codigo",
"descricao",
"url_video",
"nao_vendavel",
"ativo",
"prioridade",
"n_views",
"n_vendas",
"prazo_minimo_para_compra",
"tipo_prazo_para_compra",
"termos_uso",
"termos_uso_obrigatorio",
"visivel_site",
"singular",
"plural",
"promocional",
"faixas_etarias",
"Atividades"
],
"additionalProperties": false
}
},
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
}
}
}
},
"required": [
"itens"
]
}Atividades ¶
Obtendo Atividades ¶
Este endpoint lista as atividades que o lojista tem para realizar em uma determinada faixa de datas. As atividades incluem o título, nome do cliente que a comprou, o código do voucher dentre várias outras informações. Apenas atividades de Pedidos aprovados serão listadas.
Observação
Caso o filtro usado seja o data_de e data_ate este endpoint não retorna os produtos comprados, apenas os passeios.
Isso se deve ao fato de que os produtos, diferente dos passeios, não tem data.
Caso o filtro usado seja o de pedido_id todos os produtos e passeios serão retonados.
Listar AtividadesGET/atividades{?data_de,data_ate,pedido_id}
Quando data_de e data_ate são deixados em branco o dia da requisição é usado como valor default.
Quando pedido_id é passado, data_de e data_ate são ignorados.
Example URI
- data_de
string(optional) Example: 2020-11-29Data inicial a partir da qual a atividade vai ser realizada
- data_ate
string(optional) Example: 2020-11-29Data final na qual a atividade vai ser realizada
- pedido_id
number(optional) Example: 10005846Id do pedido onde a atividade foi comprada
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
[
{
"id": "01",
"pedido_id": "01",
"produto_disponibilidade_id": 1234,
"valor": "110.00",
"produto_id": "01",
"produto_codigo": "01",
"utilizado": "0",
"data_utilizacao": "2020-11-2020",
"quantidade": "1",
"dados_status": "preenchido",
"pedido_cliente_nome": "Matheus Alves de Andrade",
"atividade_nome": "Quadriciclo em Maracajaú",
"atividade_data": "2020-11-29",
"ativiade_hora_de": "12:00:00",
"ativiade_hora_ate": "null",
"ativiade_tipo": "turno",
"faixa_etaria_id": "206",
"faixa_etaria_nome": "Para 1 ou 2* pessoas",
"faixa_etaria_descricao": "*Quad compartilhado",
"opcionais": [
{
"id": "141",
"nome": "Máscara Top"
}
],
"atividade_cliente_nome": "null",
"voucher": "481584618265841658",
"time_label": "Tarde",
"operador_nome": "Matheus Alves"
}
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"01"
],
"description": "Identificador único do Item de Pedido"
},
"pedido_id": {
"type": "string",
"enum": [
"01"
],
"description": "Identificador único do Pedido"
},
"produto_disponibilidade_id": {
"type": "number",
"enum": [
1234
],
"description": "O id da disponibilidade"
},
"valor": {
"type": "string",
"enum": [
"110.00"
],
"description": "Valor desse item do pedido"
},
"produto_id": {
"type": "string",
"enum": [
"01"
],
"description": "Identificador único do produto ou passeio"
},
"produto_codigo": {
"type": "string",
"enum": [
"01"
],
"description": "Código único do produto ou passeio"
},
"utilizado": {
"type": "string",
"enum": [
"0"
],
"description": "1 quando esse voucher já foi utilizado"
},
"data_utilizacao": {
"type": "string",
"enum": [
"2020-11-2020"
],
"description": "Data na qual o voucher foi utilizado"
},
"quantidade": {
"type": "string",
"enum": [
"1"
],
"description": "Quantas unidades desse item foram adquiridas"
},
"dados_status": {
"type": "string",
"enum": [
"preenchido"
],
"description": "Estado do formulário desse passeio"
},
"pedido_cliente_nome": {
"type": "string",
"enum": [
"Matheus Alves de Andrade"
],
"description": "Nome do cliente que realizou o pedido"
},
"atividade_nome": {
"type": "string",
"enum": [
"Quadriciclo em Maracajaú"
],
"description": "Título da Atividade"
},
"atividade_data": {
"type": "string",
"enum": [
"2020-11-29"
],
"description": "Data da atividade"
},
"ativiade_hora_de": {
"type": "string",
"enum": [
"12:00:00"
],
"description": "Hora de início da atividade"
},
"ativiade_hora_ate": {
"type": "string",
"enum": [
"null"
],
"description": "Hora de término da atividade"
},
"ativiade_tipo": {
"type": "string",
"enum": [
"turno"
],
"description": "Tipo de atividade"
},
"faixa_etaria_id": {
"type": "string",
"enum": [
"206"
],
"description": "Identificador único da faixa etária"
},
"faixa_etaria_nome": {
"type": "string",
"enum": [
"Para 1 ou 2* pessoas"
],
"description": "Título da faixa etária"
},
"faixa_etaria_descricao": {
"type": "string",
"enum": [
"*Quad compartilhado"
],
"description": "Descrição da faixa etária"
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"141"
],
"description": "Identificador único desse opcional"
},
"nome": {
"type": "string",
"enum": [
"Máscara Top"
],
"description": "Título do opcional"
}
},
"required": [
"id",
"nome"
],
"additionalProperties": false
}
},
"atividade_cliente_nome": {
"type": "string",
"enum": [
"null"
],
"description": "Nome da pessoa que fará a Atividade caso preenchido"
},
"voucher": {
"type": "string",
"enum": [
"481584618265841658"
],
"description": "Código do voucher"
},
"time_label": {
"type": "string",
"enum": [
"Tarde"
],
"description": "Label do momento de realização da Atividade"
},
"operador_nome": {
"type": "string",
"enum": [
"Matheus Alves"
],
"description": "Nome do responsável pelo check-in ou null caso o check-in não tenha sido feito"
}
},
"required": [
"id",
"pedido_id",
"produto_disponibilidade_id",
"valor",
"produto_id",
"produto_codigo",
"utilizado",
"data_utilizacao",
"quantidade",
"dados_status",
"pedido_cliente_nome",
"atividade_nome",
"atividade_data",
"ativiade_hora_de",
"ativiade_hora_ate",
"ativiade_tipo",
"faixa_etaria_id",
"faixa_etaria_nome",
"faixa_etaria_descricao",
"opcionais",
"atividade_cliente_nome",
"voucher",
"time_label",
"operador_nome"
],
"additionalProperties": false
}
}Detalhando Atividade ¶
Este endpoint detalha uma atividade específica a partir de seu código único, o vouhcerCode.
Visualizar AtividadeGET/atividades/{vouhcerCode}
Example URI
- vouhcerCode
string(required) Example: 545351815152154Código de identificação do voucher
Headers
Authorization: Bearer <authorization-token>404Headers
Content-Type: application/jsonBody
{
"message": "Voucher não encontrado",
"code": 1
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": "01",
"pedido_id": "01",
"produto_disponibilidade_id": 1234,
"valor": "110.00",
"produto_id": "01",
"produto_codigo": "01",
"utilizado": "0",
"data_utilizacao": "2020-11-2020",
"quantidade": "1",
"dados_status": "preenchido",
"pedido_cliente_nome": "Matheus Alves de Andrade",
"atividade_nome": "Quadriciclo em Maracajaú",
"atividade_data": "2020-11-29",
"ativiade_hora_de": "12:00:00",
"ativiade_hora_ate": "null",
"ativiade_tipo": "turno",
"faixa_etaria_id": "206",
"faixa_etaria_nome": "Para 1 ou 2* pessoas",
"faixa_etaria_descricao": "*Quad compartilhado",
"opcionais": [
{
"id": "141",
"nome": "Máscara Top"
}
],
"atividade_cliente_nome": "null",
"voucher": "481584618265841658",
"time_label": "Tarde",
"operador_nome": "Matheus Alves"
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identificador único do Item de Pedido"
},
"pedido_id": {
"type": "string",
"description": "Identificador único do Pedido"
},
"produto_disponibilidade_id": {
"type": "number",
"description": "O id da disponibilidade"
},
"valor": {
"type": "string",
"description": "Valor desse item do pedido"
},
"produto_id": {
"type": "string",
"description": "Identificador único do produto ou passeio"
},
"produto_codigo": {
"type": "string",
"description": "Código único do produto ou passeio"
},
"utilizado": {
"type": "string",
"description": "1 quando esse voucher já foi utilizado"
},
"data_utilizacao": {
"type": "string",
"description": "Data na qual o voucher foi utilizado"
},
"quantidade": {
"type": "string",
"description": "Quantas unidades desse item foram adquiridas"
},
"dados_status": {
"type": "string",
"description": "Estado do formulário desse passeio"
},
"pedido_cliente_nome": {
"type": "string",
"description": "Nome do cliente que realizou o pedido"
},
"atividade_nome": {
"type": "string",
"description": "Título da Atividade"
},
"atividade_data": {
"type": "string",
"description": "Data da atividade"
},
"ativiade_hora_de": {
"type": "string",
"description": "Hora de início da atividade"
},
"ativiade_hora_ate": {
"type": "string",
"description": "Hora de término da atividade"
},
"ativiade_tipo": {
"type": "string",
"description": "Tipo de atividade"
},
"faixa_etaria_id": {
"type": "string",
"description": "Identificador único da faixa etária"
},
"faixa_etaria_nome": {
"type": "string",
"description": "Título da faixa etária"
},
"faixa_etaria_descricao": {
"type": "string",
"description": "Descrição da faixa etária"
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"141"
],
"description": "Identificador único desse opcional"
},
"nome": {
"type": "string",
"enum": [
"Máscara Top"
],
"description": "Título do opcional"
}
},
"required": [
"id",
"nome"
],
"additionalProperties": false
}
},
"atividade_cliente_nome": {
"type": "string",
"description": "Nome da pessoa que fará a Atividade caso preenchido"
},
"voucher": {
"type": "string",
"description": "Código do voucher"
},
"time_label": {
"type": "string",
"description": "Label do momento de realização da Atividade"
},
"operador_nome": {
"type": "string",
"description": "Nome do responsável pelo check-in ou null caso o check-in não tenha sido feito"
}
},
"required": [
"opcionais"
]
}Registrando Check-In do cliente na atividade ¶
Este endpoint registra no sistema que o cliente chegou para fazer a atividade e seu Check-in foi realizado
Check-In AtividadePOST/atividades/{vouhcerCode}/checkIn{?nome_app}
O parâmetro nome_app será usado para registrar quem é o responsável pelo check-in, entretanto, o log só será feito caso o login tenha sido realizado via email e senha.
Se o parâmetro for deixado em branco, “Via API” será salvo no lugar.
Example URI
- vouhcerCode
string(required) Example: 545351815152154Código de identificação do voucher
- nome_app
string(optional) Example: App TurMobileO nome do seu app que está consumindo a API
Headers
Authorization: Bearer <authorization-token>400Headers
Content-Type: application/jsonBody
{
"success" => false,
"message' => "Pedido de loja diferente"
}404Headers
Content-Type: application/jsonBody
{
"success" => false,
"message' => "Voucher não encontrado"
}500Headers
Content-Type: application/jsonBody
{
"success" => false,
"message' => "Falha ao salvar o Check-In"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": "01",
"pedido_id": "01",
"produto_disponibilidade_id": 1234,
"valor": "110.00",
"produto_id": "01",
"produto_codigo": "01",
"utilizado": "0",
"data_utilizacao": "2020-11-2020",
"quantidade": "1",
"dados_status": "preenchido",
"pedido_cliente_nome": "Matheus Alves de Andrade",
"atividade_nome": "Quadriciclo em Maracajaú",
"atividade_data": "2020-11-29",
"ativiade_hora_de": "12:00:00",
"ativiade_hora_ate": "null",
"ativiade_tipo": "turno",
"faixa_etaria_id": "206",
"faixa_etaria_nome": "Para 1 ou 2* pessoas",
"faixa_etaria_descricao": "*Quad compartilhado",
"opcionais": [
{
"id": "141",
"nome": "Máscara Top"
}
],
"atividade_cliente_nome": "null",
"voucher": "481584618265841658",
"time_label": "Tarde",
"operador_nome": "Matheus Alves"
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identificador único do Item de Pedido"
},
"pedido_id": {
"type": "string",
"description": "Identificador único do Pedido"
},
"produto_disponibilidade_id": {
"type": "number",
"description": "O id da disponibilidade"
},
"valor": {
"type": "string",
"description": "Valor desse item do pedido"
},
"produto_id": {
"type": "string",
"description": "Identificador único do produto ou passeio"
},
"produto_codigo": {
"type": "string",
"description": "Código único do produto ou passeio"
},
"utilizado": {
"type": "string",
"description": "1 quando esse voucher já foi utilizado"
},
"data_utilizacao": {
"type": "string",
"description": "Data na qual o voucher foi utilizado"
},
"quantidade": {
"type": "string",
"description": "Quantas unidades desse item foram adquiridas"
},
"dados_status": {
"type": "string",
"description": "Estado do formulário desse passeio"
},
"pedido_cliente_nome": {
"type": "string",
"description": "Nome do cliente que realizou o pedido"
},
"atividade_nome": {
"type": "string",
"description": "Título da Atividade"
},
"atividade_data": {
"type": "string",
"description": "Data da atividade"
},
"ativiade_hora_de": {
"type": "string",
"description": "Hora de início da atividade"
},
"ativiade_hora_ate": {
"type": "string",
"description": "Hora de término da atividade"
},
"ativiade_tipo": {
"type": "string",
"description": "Tipo de atividade"
},
"faixa_etaria_id": {
"type": "string",
"description": "Identificador único da faixa etária"
},
"faixa_etaria_nome": {
"type": "string",
"description": "Título da faixa etária"
},
"faixa_etaria_descricao": {
"type": "string",
"description": "Descrição da faixa etária"
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"141"
],
"description": "Identificador único desse opcional"
},
"nome": {
"type": "string",
"enum": [
"Máscara Top"
],
"description": "Título do opcional"
}
},
"required": [
"id",
"nome"
],
"additionalProperties": false
}
},
"atividade_cliente_nome": {
"type": "string",
"description": "Nome da pessoa que fará a Atividade caso preenchido"
},
"voucher": {
"type": "string",
"description": "Código do voucher"
},
"time_label": {
"type": "string",
"description": "Label do momento de realização da Atividade"
},
"operador_nome": {
"type": "string",
"description": "Nome do responsável pelo check-in ou null caso o check-in não tenha sido feito"
}
},
"required": [
"opcionais"
]
}Dias Disponíveis ¶
Obtendo Dias Disponíveis ¶
Para obter quais dias um determinado passeio é realizado será nescessário fornecer
previamente o mês e o ano como parâmetros da url, além do id do passeio.
Será retornado um array de strings. Cada string representa um dia que está disponível para que o passeio seja realizado. O formato da string de data é YYYY-MM-DD.
Dica
Uma forma de otimizar a interação do usuário é carregar inicialmente os dias disponíveis para o mês atual, caso o usuário mude o calendário para um outro mês, mostre um ícone de loading e carregue o novo mês.
É recomendado guardar em cache os meses já obtidos para otimizar o funcionamento.
Listar Dias DisponíveisGET/passeios/{id}/dias{?mes,ano}
Example URI
- id
int(required) Example: 42O Id do passeio
- mes
int(required) Example: 9O Mês que se deseja realizar a busca
- ano
int(required) Example: 2020O Ano que se deseja realizar a busca
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
[
"2020-09-05",
"2020-09-06",
"2020-09-12",
"2020-09-13",
"2020-09-19",
"2020-09-20",
"2020-09-26",
"2020-09-27",
]Horários Disponíveis ¶
Obtendo Horários Disponíveis ¶
Para obter quais horários estão diponíveis para um determindado passeio em um determinado dia será necessário fornecer o id do passeio e o dia desejado como parâmetros da URL.
Listar Horários DisponíveisGET/passeios/{id}/horarios{?dia}
Example URI
- id
int(required) Example: 42O Id do passeio
- dia
string(required) Example: 2020-09-05O dia escolhido no formato YYYY-MM-DD
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": 626,
"quantidade": 20,
"date": "2020-09-01",
"label": "12:00",
"non_dependent_count": 0,
"count": 0
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identificador único do horário"
},
"quantidade": {
"type": "number",
"description": "Número de vagas disponíveis nesse horário para esse passeio"
},
"date": {
"type": "string",
"description": "Data selecionada no formato YYYY-MM-DD"
},
"label": {
"type": "string",
"description": "A string que descreve o horário"
},
"non_dependent_count": {
"type": "number",
"description": "Número de clientes não dependentes adicionados"
},
"count": {
"type": "number",
"description": "Número de clientes adicionados"
}
}
}Faixas Etárias ¶
Obtendo Faixas Etárias ¶
Para obter quais faixas etárias estão diponíveis para um determindado passeio em um determinado dia será necessário fornecer o id do passeio e o dia desejado como parâmetros da URL.
Listar Faixas EtáriasGET/passeios/{id}/faixas-etarias{?dia}
Example URI
- id
int(required) Example: 42O Id do passeio
- dia
string(required) Example: 2020-09-05O dia escolhido no formato YYYY-MM-DD
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": 49,
"label": "Criança",
"dependente": "1",
"descricao": "Criança",
"preco": "50.00",
"preco_net": "50.00",
"preco_desconto": "40.00",
"faixa_etaria_id": 209,
"precos_sazonais": [
{
"id": 42,
"data_inicio": "2020-05-01",
"data_fim": "2020-08-31",
"preco_promocao_de": "50.00",
"preco": "40.00",
"preco_net": "40.00",
"preco_desconto": "40.00",
"promocao": "1"
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identificador único da faixa etária para esse passeio"
},
"label": {
"type": "string",
"description": "O nome da faixa etária"
},
"dependente": {
"type": "string",
"description": "\"1\" se essa faixa etária é dependente de um responsável para fazer o passeio"
},
"descricao": {
"type": "string",
"description": "A string que descreve o a faixa"
},
"preco": {
"type": "string",
"description": "O preço da faixa etária (Preço que deve ser cobrado por pessoa nesse passeio)"
},
"preco_net": {
"type": "string",
"description": "O preço de venda para afiliados da loja"
},
"preco_desconto": {
"type": "string",
"description": "Preço de venda caso seja selecionado pagamento em depósito"
},
"faixa_etaria_id": {
"type": "number",
"description": "Identificador único da faixa etária"
},
"precos_sazonais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
42
],
"description": "Identificador único"
},
"data_inicio": {
"type": "string",
"enum": [
"2020-05-01"
],
"description": "Data de início do preço sazonal"
},
"data_fim": {
"type": "string",
"enum": [
"2020-08-31"
],
"description": "Data de final do preço sazonal"
},
"preco_promocao_de": {
"type": "string",
"enum": [
"50.00"
],
"description": "Quanto custava antes do período começar"
},
"preco": {
"type": "string",
"enum": [
"40.00"
],
"description": "Quanto custa durante o período"
},
"preco_net": {
"type": "string",
"enum": [
"40.00"
],
"description": "Quanto custa durante o período para afiliados"
},
"preco_desconto": {
"type": "string",
"enum": [
"40.00"
],
"description": "Preço de venda caso seja selecionado pagamento em depósito"
},
"promocao": {
"type": "string",
"enum": [
"1"
],
"description": "\"1\" se o período é promocional"
}
},
"required": [
"id",
"data_inicio",
"data_fim",
"preco_promocao_de",
"preco",
"preco_net",
"preco_desconto",
"promocao"
],
"additionalProperties": false
},
"description": "A lista de preços sazonais"
}
},
"required": [
"precos_sazonais"
]
}Formulário Inteligente ¶
Obtendo o Formulário Inteligente ¶
Retorna os formulários inteligentes que devem ser preenchidos ao registrar um pedido de uma atividade, evento ou combo, com os campos de cada formulário. É daqui que vêm os valores de campo_id usados em formularios no registro do pedido.
O formulário vale por faixa etária: uma faixa pode usar um formulário próprio, usar o formulário padrão do produto ou não ter formulário (formulario_id nulo). Informe o dia para receber as faixas etárias daquele dia com o formulário de cada uma. Sem o dia, a resposta traz apenas o formulário padrão e a lista de formulários.
-
Atividades e eventos: o formulário de cada faixa vem em
faixas_etarias[].formulario_id. Em ingressos de casadinha (eventos), cada dia do pacote é um ingresso. O formulário de cada um vem emfaixas_etarias[].ingressos, e o preenchimento de cada pessoa traz os campos de todos esses formulários (cada dia recebe os campos do seu). -
Combos: cada atividade do combo tem o próprio formulário, em
atividades[].faixas_etarias[].formulario_id. No registro do pedido, ofaixa_etaria_idde cada preenchimento aceita oidda faixa (o mesmo defaixas_etarias[].id) ou ofaixa_etaria_iddesta resposta. Atividades cujo formulário é preenchido depois da compra (posterior_todoseposterior_unico) vêm sem formulário.
Quantos preenchimentos enviar
-
Um por pessoa da faixa etária, na ordem das pessoas, quando a faixa (ou o ingresso) tem
todas_as_pessoas: true. -
Um só preenchimento para o item inteiro quando
todas_as_pessoaséfalse(formulário padrão do produto compreenchimento_formularioanterior_unico): mande-o na primeira faixa do pedido que usa esse formulário, e nenhum nas outras faixas. Todas as pessoas herdam as respostas. Formulário próprio da faixa pede todas as pessoas mesmo noanterior_unico. -
Um só preenchimento por formulário quando o formulário tem
coleta_unica(todos os campos são coletados uma vez): também na primeira faixa do pedido que usa esse formulário. -
Mandar mais preenchimentos que o necessário é recusado com
400(“não corresponde a um ingresso que exige preenchimento”). -
Faixas, ingressos e atividades com
formulario_idnulo não recebem preenchimento. -
Na casadinha, mande um item por pessoa com os campos de todos os dias: cada dia usa os campos do seu formulário e as mesmas regras acima.
-
Na atividade, o formulário próprio da faixa só vale quando a atividade tem formulário padrão; sem ele, a faixa vem com
formulario_idnulo.
Regras dos campos
obrigatorio indica um campo obrigatório; com regras condicionais (show_if_*, hide_if_*, required_if_*), ele só é cobrado quando a condição vale. regras traz validações e condições extras: por exemplo, required_if_field_equals torna o campo obrigatório quando outro campo tem um valor, e date_years_ago exige uma idade mínima. Quando a regra depende de outro campo, config.uuid_field é o id desse campo.
Obter Formulário InteligenteGET/passeios/{id}/formulario{?dia}
Example URI
- id
int(required) Example: 42O Id da atividade, do evento ou do combo
- dia
string(optional) Example: 2020-09-05O dia escolhido no formato YYYY-MM-DD. Data em outro formato ou inexistente retorna
400
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}404Headers
Content-Type: application/jsonBody
{
"message": "Resource not found.",
"code": 64
}200Headers
Content-Type: application/jsonBody
{
"id": "692",
"tipo": "passeio",
"preenchimento_formulario": "anterior_todos",
"formulario_padrao_id": 86,
"faixas_etarias": [
{
"id": "5192",
"faixa_etaria_id": "1703",
"nome": "Adulto",
"formulario_id": 86,
"todas_as_pessoas": true,
"ingressos": [
{
"faixa_etaria_id": "1727",
"nome": "Sábado",
"formulario_id": 67,
"todas_as_pessoas": true
}
]
}
],
"atividades": [
{
"id": "695",
"nome": "Transfer Privativo",
"preenchimento_formulario": "anterior_todos",
"formulario_padrao_id": 90,
"faixas_etarias": [
{
"id": "5192",
"faixa_etaria_id": "1703",
"nome": "Adulto",
"formulario_id": 86,
"todas_as_pessoas": true,
"ingressos": [
{
"faixa_etaria_id": "1727",
"nome": "Sábado",
"formulario_id": 67,
"todas_as_pessoas": true
}
]
}
]
}
],
"formularios": [
{
"id": 86,
"nome": "Cadastro de passageiro",
"coleta_unica": false,
"campos": [
{
"id": 330,
"nome": "nome_completo",
"tipo": "nome_completo",
"label": "Nome completo",
"ajuda": "``",
"obrigatorio": true,
"identifica_ticket": true,
"pode_repetir": true,
"coleta_unica": false,
"opcoes": [],
"regras": [
{
"regra": "required_if_field_equals",
"config": {}
}
]
}
]
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O Id da atividade, do evento ou do combo"
},
"tipo": {
"type": "string",
"description": "passeio, evento ou combo"
},
"preenchimento_formulario": {
"type": "string",
"description": "Quando o formulário é preenchido: `anterior_todos` (todos, na compra), `anterior_unico` (só o 1º, na compra), `posterior_todos` ou `posterior_unico` (depois da compra)"
},
"formulario_padrao_id": {
"type": [
"number",
"null"
],
"description": "O formulário padrão do produto, ou null. Em combos, vem em cada atividade"
},
"faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"5192"
],
"description": "O Id da faixa etária, o mesmo de `/faixas-etarias` e de `faixas_etarias[].id` no registro do pedido"
},
"faixa_etaria_id": {
"type": "string",
"enum": [
"1703"
],
"description": "O Id da classificação da faixa etária"
},
"nome": {
"type": "string",
"enum": [
"Adulto"
],
"description": "O nome da faixa etária"
},
"formulario_id": {
"type": [
"number",
"null"
],
"enum": [
86,
null
],
"description": "O formulário inteligente da faixa, ou null quando a faixa não usa formulário inteligente"
},
"todas_as_pessoas": {
"type": "boolean",
"enum": [
true
],
"description": "true quando cada pessoa da faixa preenche; false quando o item inteiro tem um só preenchimento, mandado na primeira faixa do pedido que usa o formulário (formulário padrão no `anterior_unico`)"
},
"ingressos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"faixa_etaria_id": {
"type": "string",
"enum": [
"1727"
],
"description": "O Id da classificação do ingresso"
},
"nome": {
"type": "string",
"enum": [
"Sábado"
],
"description": "O nome do ingresso"
},
"formulario_id": {
"type": [
"number",
"null"
],
"enum": [
67,
null
],
"description": "O formulário inteligente do ingresso, ou null"
},
"todas_as_pessoas": {
"type": "boolean",
"enum": [
true
],
"description": "true quando cada pessoa preenche este ingresso; false quando o item inteiro tem um só preenchimento"
}
},
"required": [
"faixa_etaria_id",
"nome",
"formulario_id",
"todas_as_pessoas"
],
"additionalProperties": false
},
"description": "Somente em ingressos de casadinha: o formulário de cada dia do pacote. O preenchimento de cada pessoa traz os campos de todos esses formulários"
}
},
"required": [
"id",
"faixa_etaria_id",
"nome",
"formulario_id",
"todas_as_pessoas"
],
"additionalProperties": false
},
"description": "O formulário de cada faixa etária do dia (atividades e eventos). Vazio quando o `dia` não é informado e em combos"
},
"atividades": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"695"
],
"description": "O Id da atividade do combo"
},
"nome": {
"type": "string",
"enum": [
"Transfer Privativo"
],
"description": "O nome da atividade"
},
"preenchimento_formulario": {
"type": "string",
"enum": [
"anterior_todos"
],
"description": "Quando o formulário da atividade é preenchido"
},
"formulario_padrao_id": {
"type": [
"number",
"null"
],
"enum": [
90,
null
],
"description": "O formulário padrão da atividade, ou null"
},
"faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"5192"
],
"description": "O Id da faixa etária, o mesmo de `/faixas-etarias` e de `faixas_etarias[].id` no registro do pedido"
},
"faixa_etaria_id": {
"type": "string",
"enum": [
"1703"
],
"description": "O Id da classificação da faixa etária"
},
"nome": {
"type": "string",
"enum": [
"Adulto"
],
"description": "O nome da faixa etária"
},
"formulario_id": {
"type": [
"number",
"null"
],
"enum": [
86,
null
],
"description": "O formulário inteligente da faixa, ou null quando a faixa não usa formulário inteligente"
},
"todas_as_pessoas": {
"type": "boolean",
"enum": [
true
],
"description": "true quando cada pessoa da faixa preenche; false quando o item inteiro tem um só preenchimento, mandado na primeira faixa do pedido que usa o formulário (formulário padrão no `anterior_unico`)"
},
"ingressos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"faixa_etaria_id": {
"type": "string",
"enum": [
"1727"
],
"description": "O Id da classificação do ingresso"
},
"nome": {
"type": "string",
"enum": [
"Sábado"
],
"description": "O nome do ingresso"
},
"formulario_id": {
"type": [
"number",
"null"
],
"enum": [
67,
null
],
"description": "O formulário inteligente do ingresso, ou null"
},
"todas_as_pessoas": {
"type": "boolean",
"enum": [
true
],
"description": "true quando cada pessoa preenche este ingresso; false quando o item inteiro tem um só preenchimento"
}
},
"required": [
"faixa_etaria_id",
"nome",
"formulario_id",
"todas_as_pessoas"
],
"additionalProperties": false
},
"description": "Somente em ingressos de casadinha: o formulário de cada dia do pacote. O preenchimento de cada pessoa traz os campos de todos esses formulários"
}
},
"required": [
"id",
"faixa_etaria_id",
"nome",
"formulario_id",
"todas_as_pessoas"
],
"additionalProperties": false
},
"description": "As faixas etárias do combo no dia, com o formulário desta atividade para cada uma"
}
},
"required": [
"id",
"nome",
"preenchimento_formulario",
"formulario_padrao_id",
"faixas_etarias"
],
"additionalProperties": false
},
"description": "As atividades do combo com o formulário de cada uma. Vazio em atividades e eventos"
},
"formularios": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
86
],
"description": "O Id do formulário inteligente"
},
"nome": {
"type": "string",
"enum": [
"Cadastro de passageiro"
],
"description": "O nome do formulário"
},
"coleta_unica": {
"type": "boolean",
"enum": [
false
],
"description": "true quando todos os campos são coletados uma vez: só a primeira pessoa preenche"
},
"campos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
330
],
"description": "O Id do campo: é o `campo_id` do preenchimento"
},
"nome": {
"type": "string",
"enum": [
"nome_completo"
],
"description": "O nome técnico do campo, que volta como `chave` nas respostas do pedido"
},
"tipo": {
"type": "string",
"enum": [
"nome_completo"
],
"description": "O tipo do campo: text, longtext, integer, money, email, telefone, checkbox, date, data_nascimento, hora, datetime, options, select, multi_select, cpf, rg, cnh, cnpj, documento, orgao_emissor_rg, nome_completo, nacionalidade, passaporte, endereco_completo ou hospedagem"
},
"label": {
"type": "string",
"enum": [
"Nome completo"
],
"description": "O texto exibido para o cliente"
},
"ajuda": {
"type": "string",
"enum": [
"``"
],
"description": "O texto de ajuda do campo"
},
"obrigatorio": {
"type": "boolean",
"enum": [
true
],
"description": "Se o campo é obrigatório. Quando há regras `show_if_*`, `hide_if_*` ou `required_if_*`, vale só quando o campo é exibido ou a condição é atendida"
},
"identifica_ticket": {
"type": "boolean",
"enum": [
true
],
"description": "Se o valor identifica a pessoa no voucher (`nome_utilizador`)"
},
"pode_repetir": {
"type": "boolean",
"enum": [
true
],
"description": "false quando o valor não pode se repetir entre as pessoas da mesma atividade e horário"
},
"coleta_unica": {
"type": "boolean",
"enum": [
false
],
"description": "true quando o campo é coletado uma vez e repetido para as demais pessoas"
},
"opcoes": {
"type": [
"array",
"null"
],
"items": {
"type": "string",
"enum": [
""
]
},
"description": "As opções aceitas em campos de seleção, ou null"
},
"regras": {
"type": "array",
"items": {
"type": "object",
"properties": {
"regra": {
"type": "string",
"enum": [
"required_if_field_equals"
],
"description": "min_value, max_value, date_years_ago, greater_than_field, less_than_field, required_if_filled, required_if_field_equals, required_if_field_not_equals, hide_if_other_filled, show_if_field_equals, show_if_field_not_equals, required_if_date_under_18 ou required_if_date_over_18"
},
"config": {
"type": "object",
"properties": {},
"additionalProperties": false,
"description": "Os parâmetros da regra. `uuid_field` é o `id` do campo referenciado e `value` o valor comparado"
}
},
"required": [
"regra",
"config"
],
"additionalProperties": false
},
"description": "Validações e condições extras do campo"
}
},
"required": [
"id",
"nome",
"tipo",
"label",
"ajuda",
"obrigatorio",
"identifica_ticket",
"pode_repetir",
"coleta_unica",
"opcoes",
"regras"
],
"additionalProperties": false
},
"description": "Os campos, na ordem de exibição"
}
},
"required": [
"id",
"nome",
"coleta_unica",
"campos"
],
"additionalProperties": false
},
"description": "Os formulários citados na resposta, com os campos"
}
},
"required": [
"faixas_etarias",
"atividades",
"formularios"
]
}Cupons ¶
Obtendo Cupons ¶
Se o cliente souber um código de cupom, é possível obter informações usando esse código através desse endpoint. Se o código não for passado, será feita uma listagem de todos os cupons da loja. Aplique o desconto de acordo com o overview
Atenção
Fique atento as regras para aplicação do cupom:
-
A data atual deve estar dentro da faixa definida por
valido_deevalido_ate -
O cliente atual não deve ter usado o cupom mais que
quantidade_por_clientevezes -
Se um passeio possui data de realização dentro de uma das faixas do
faixas_datas_invalidasentão esse passeio deve ser desconsiderado e o cupom será somente parcialmente aplicado a compra -
Se
produtos_excecaoestá configurado como incluidos e o id do passeio não está na lista, então esse passeio deve ser desconsiderado e o cupom será somente parcialmente aplicado a compra -
Se
produtos_excecaoestá configurado como excluidos e o id do passeio está na lista, então esse passeio deve ser desconsiderado e o cupom será somente parcialmente aplicado a compra -
Se
aplicar_opcionaisfor 0 então o desconto deve desconsiderar os opcionais -
O valor da soma de todos os passeios que passaram nos teste mais os opcionais, caso aplicáveis, deve ser maior ou igual a
valor_minimo_compra
Obter InformaçõesGET/cupons{?cupom,page,perPage}
Example URI
- cupom
string(optional) Example: CARNAVAL10O código do cupom de desconto
- page
int(required) Example: 1A página que se deseja obter
- perPage
int(required) Example: 20Número de itens por página sendo no máximo 100
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}404Headers
Content-Type: application/jsonBody
{
"message": "Resource not found.",
"code": 64
}200Headers
Content-Type: application/jsonBody
{
"itens": [
{
"id": 42,
"loja_id": "55",
"codigo_cupom": "CARNAVAL10",
"descricao": "Cupom de desconto do carnaval",
"tipo": "porcentagem",
"valor": "10.00",
"valor_minimo_compra": "50.00",
"quantidade": 20,
"quantidade_por_cliente": 2,
"valido_de": "2019-04-16",
"valido_ate": "2020-12-31",
"produtos_excecao": {
"regra": "incluidos",
"lista": [
1
]
},
"faixas_datas_invalidas": [
{
"tipo": "excludente",
"inicio": "07/04/2021",
"fim": "30/04/2021"
}
],
"aplicar_opcionais": 1,
"afiliado_id": 70
}
],
"info": {
"total": 350,
"pagina": 1,
"total_paginas": 35
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
42
],
"description": "Identificador único"
},
"loja_id": {
"type": "string",
"enum": [
"55"
],
"description": "Identificador único da loja"
},
"codigo_cupom": {
"type": "string",
"enum": [
"CARNAVAL10"
],
"description": "Código desse cupom"
},
"descricao": {
"type": "string",
"enum": [
"Cupom de desconto do carnaval"
],
"description": "Uma descrição desse cupom de desconto"
},
"tipo": {
"type": "string",
"enum": [
"porcentagem"
],
"description": "Pode ser `valor` ou `porcentagem`"
},
"valor": {
"type": "string",
"enum": [
"10.00"
],
"description": "Valor do desconto"
},
"valor_minimo_compra": {
"type": "string",
"enum": [
"50.00"
],
"description": "O valor mínimo da soma de todos os passeios"
},
"quantidade": {
"type": "number",
"enum": [
20
],
"description": "Quantidade disponível"
},
"quantidade_por_cliente": {
"type": "number",
"enum": [
2
],
"description": "Quantas vezes pode ser aplicado para compras do mesmo cliente"
},
"valido_de": {
"type": "string",
"enum": [
"2019-04-16"
],
"description": "Data inicial de quando esse cupom começa a valer"
},
"valido_ate": {
"type": "string",
"enum": [
"2020-12-31"
],
"description": "Data de validade do cupom"
},
"produtos_excecao": {
"type": "object",
"properties": {
"regra": {
"type": "string",
"enum": [
"incluidos",
"excluidos",
"incluidos"
],
"description": "Regra a ser seguida, apenas estes ou exceto estes"
},
"lista": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "Lista de ids dos produtos permitidos ou proibidos dependendo da regra"
}
},
"required": [
"regra",
"lista"
],
"additionalProperties": false,
"description": "Lista de produtos o qual o cupom não se aplica ou somente se aplica, dependendo da regra"
},
"faixas_datas_invalidas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tipo": {
"type": "string",
"enum": [
"excludente",
"excludente"
],
"description": "Tipo de faixa, no momento somente excludente existe"
},
"inicio": {
"type": "string",
"enum": [
"07/04/2021"
],
"description": "Data de inicio desta faixa"
},
"fim": {
"type": "string",
"enum": [
"30/04/2021"
],
"description": "Data final desta faixa"
}
},
"required": [
"tipo",
"inicio",
"fim"
],
"additionalProperties": false
},
"description": "Regra de datas de passeios onde o cupom não pode ser aplicado"
},
"aplicar_opcionais": {
"type": "number",
"enum": [
1
],
"description": "1 se deve aplicar o desconto também nos opcionais, 0 caso contrário"
},
"afiliado_id": {
"type": "number",
"enum": [
70
],
"description": "Id do afiliado associado a esse cupom ou null caso não esteja associado"
}
},
"required": [
"id",
"loja_id",
"codigo_cupom",
"descricao",
"tipo",
"valor",
"valor_minimo_compra",
"quantidade",
"quantidade_por_cliente",
"valido_de",
"valido_ate",
"produtos_excecao",
"faixas_datas_invalidas",
"aplicar_opcionais",
"afiliado_id"
],
"additionalProperties": false
}
},
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
}
}
}
},
"required": [
"itens"
]
}Criando ¶
CriarPOST/cupons
Example URI
Headers
Authorization: Bearer <authorization-token>Body
{
"id": 42,
"loja_id": "55",
"codigo_cupom": "CARNAVAL10",
"descricao": "Cupom de desconto do carnaval",
"tipo": "porcentagem",
"valor": "10.00",
"valor_minimo_compra": "50.00",
"quantidade": 20,
"quantidade_por_cliente": 2,
"valido_de": "2019-04-16",
"valido_ate": "2020-12-31",
"produtos_excecao": {
"regra": "incluidos",
"lista": [
1
]
},
"faixas_datas_invalidas": [
{
"tipo": "excludente",
"inicio": "07/04/2021",
"fim": "30/04/2021"
}
],
"aplicar_opcionais": 1,
"afiliado_id": 70,
"_desconto_sobre_total_com_desconto_por_metodo_de_pagamento": "10.00",
"_desconto_sobre_total_sem_desconto_por_metodo_de_pagamento": "9.00"
}Schema
{
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identificador único"
},
"loja_id": {
"type": "string",
"description": "Identificador único da loja"
},
"codigo_cupom": {
"type": "string",
"description": "Código desse cupom"
},
"descricao": {
"type": "string",
"description": "Uma descrição desse cupom de desconto"
},
"tipo": {
"type": "string",
"description": "Pode ser `valor` ou `porcentagem`"
},
"valor": {
"type": "string",
"description": "Valor do desconto"
},
"valor_minimo_compra": {
"type": "string",
"description": "O valor mínimo da soma de todos os passeios"
},
"quantidade": {
"type": "number",
"description": "Quantidade disponível"
},
"quantidade_por_cliente": {
"type": "number",
"description": "Quantas vezes pode ser aplicado para compras do mesmo cliente"
},
"valido_de": {
"type": "string",
"description": "Data inicial de quando esse cupom começa a valer"
},
"valido_ate": {
"type": "string",
"description": "Data de validade do cupom"
},
"produtos_excecao": {
"type": "object",
"properties": {
"regra": {
"enum": [
"incluidos",
"excluidos",
"incluidos"
],
"description": "Regra a ser seguida, apenas estes ou exceto estes"
},
"lista": {
"type": "array",
"items": {
"type": "number"
},
"description": "Lista de ids dos produtos permitidos ou proibidos dependendo da regra"
}
},
"description": "Lista de produtos o qual o cupom não se aplica ou somente se aplica, dependendo da regra"
},
"faixas_datas_invalidas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tipo": {
"enum": [
"excludente",
"excludente"
],
"description": "Tipo de faixa, no momento somente excludente existe"
},
"inicio": {
"type": "string",
"description": "Data de inicio desta faixa"
},
"fim": {
"type": "string",
"description": "Data final desta faixa"
}
}
},
"description": "Regra de datas de passeios onde o cupom não pode ser aplicado"
},
"aplicar_opcionais": {
"type": "number",
"description": "1 se deve aplicar o desconto também nos opcionais, 0 caso contrário"
},
"afiliado_id": {
"type": "number",
"description": "Id do afiliado associado a esse cupom ou null caso não esteja associado"
},
"_desconto_sobre_total_com_desconto_por_metodo_de_pagamento": {
"type": "string",
"description": "Valor do desconto em reais a ser aplicado na compra feita com método de pagamento promocional"
},
"_desconto_sobre_total_sem_desconto_por_metodo_de_pagamento": {
"type": "string",
"description": "Valor do desconto em reais a ser aplicado na compra feita sem método de pagamento promocional"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}201Headers
Content-Type: application/jsonBody
{
"id": 42,
"loja_id": "55",
"codigo_cupom": "CARNAVAL10",
"descricao": "Cupom de desconto do carnaval",
"tipo": "porcentagem",
"valor": "10.00",
"valor_minimo_compra": "50.00",
"quantidade": 20,
"quantidade_por_cliente": 2,
"valido_de": "2019-04-16",
"valido_ate": "2020-12-31",
"produtos_excecao": {
"regra": "incluidos",
"lista": [
1
]
},
"faixas_datas_invalidas": [
{
"tipo": "excludente",
"inicio": "07/04/2021",
"fim": "30/04/2021"
}
],
"aplicar_opcionais": 1,
"afiliado_id": 70,
"_desconto_sobre_total_com_desconto_por_metodo_de_pagamento": "10.00",
"_desconto_sobre_total_sem_desconto_por_metodo_de_pagamento": "9.00"
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identificador único"
},
"loja_id": {
"type": "string",
"description": "Identificador único da loja"
},
"codigo_cupom": {
"type": "string",
"description": "Código desse cupom"
},
"descricao": {
"type": "string",
"description": "Uma descrição desse cupom de desconto"
},
"tipo": {
"type": "string",
"description": "Pode ser `valor` ou `porcentagem`"
},
"valor": {
"type": "string",
"description": "Valor do desconto"
},
"valor_minimo_compra": {
"type": "string",
"description": "O valor mínimo da soma de todos os passeios"
},
"quantidade": {
"type": "number",
"description": "Quantidade disponível"
},
"quantidade_por_cliente": {
"type": "number",
"description": "Quantas vezes pode ser aplicado para compras do mesmo cliente"
},
"valido_de": {
"type": "string",
"description": "Data inicial de quando esse cupom começa a valer"
},
"valido_ate": {
"type": "string",
"description": "Data de validade do cupom"
},
"produtos_excecao": {
"type": "object",
"properties": {
"regra": {
"type": "string",
"enum": [
"incluidos",
"excluidos",
"incluidos"
],
"description": "Regra a ser seguida, apenas estes ou exceto estes"
},
"lista": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "Lista de ids dos produtos permitidos ou proibidos dependendo da regra"
}
},
"required": [
"lista"
],
"description": "Lista de produtos o qual o cupom não se aplica ou somente se aplica, dependendo da regra"
},
"faixas_datas_invalidas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tipo": {
"type": "string",
"enum": [
"excludente",
"excludente"
],
"description": "Tipo de faixa, no momento somente excludente existe"
},
"inicio": {
"type": "string",
"enum": [
"07/04/2021"
],
"description": "Data de inicio desta faixa"
},
"fim": {
"type": "string",
"enum": [
"30/04/2021"
],
"description": "Data final desta faixa"
}
},
"required": [
"tipo",
"inicio",
"fim"
],
"additionalProperties": false
},
"description": "Regra de datas de passeios onde o cupom não pode ser aplicado"
},
"aplicar_opcionais": {
"type": "number",
"description": "1 se deve aplicar o desconto também nos opcionais, 0 caso contrário"
},
"afiliado_id": {
"type": "number",
"description": "Id do afiliado associado a esse cupom ou null caso não esteja associado"
},
"_desconto_sobre_total_com_desconto_por_metodo_de_pagamento": {
"type": "string",
"description": "Valor do desconto em reais a ser aplicado na compra feita com método de pagamento promocional"
},
"_desconto_sobre_total_sem_desconto_por_metodo_de_pagamento": {
"type": "string",
"description": "Valor do desconto em reais a ser aplicado na compra feita sem método de pagamento promocional"
}
},
"required": [
"faixas_datas_invalidas"
]
}Manipulando ¶
AtualizarPUT/cupons/{id}
Example URI
- id
int(required) Example: 42O id do cupom
Headers
Authorization: Bearer <authorization-token>Body
{
"id": 42,
"loja_id": "55",
"codigo_cupom": "CARNAVAL10",
"descricao": "Cupom de desconto do carnaval",
"tipo": "porcentagem",
"valor": "10.00",
"valor_minimo_compra": "50.00",
"quantidade": 20,
"quantidade_por_cliente": 2,
"valido_de": "2019-04-16",
"valido_ate": "2020-12-31",
"produtos_excecao": {
"regra": "incluidos",
"lista": [
1
]
},
"faixas_datas_invalidas": [
{
"tipo": "excludente",
"inicio": "07/04/2021",
"fim": "30/04/2021"
}
],
"aplicar_opcionais": 1,
"afiliado_id": 70,
"_desconto_sobre_total_com_desconto_por_metodo_de_pagamento": "10.00",
"_desconto_sobre_total_sem_desconto_por_metodo_de_pagamento": "9.00"
}Schema
{
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identificador único"
},
"loja_id": {
"type": "string",
"description": "Identificador único da loja"
},
"codigo_cupom": {
"type": "string",
"description": "Código desse cupom"
},
"descricao": {
"type": "string",
"description": "Uma descrição desse cupom de desconto"
},
"tipo": {
"type": "string",
"description": "Pode ser `valor` ou `porcentagem`"
},
"valor": {
"type": "string",
"description": "Valor do desconto"
},
"valor_minimo_compra": {
"type": "string",
"description": "O valor mínimo da soma de todos os passeios"
},
"quantidade": {
"type": "number",
"description": "Quantidade disponível"
},
"quantidade_por_cliente": {
"type": "number",
"description": "Quantas vezes pode ser aplicado para compras do mesmo cliente"
},
"valido_de": {
"type": "string",
"description": "Data inicial de quando esse cupom começa a valer"
},
"valido_ate": {
"type": "string",
"description": "Data de validade do cupom"
},
"produtos_excecao": {
"type": "object",
"properties": {
"regra": {
"enum": [
"incluidos",
"excluidos",
"incluidos"
],
"description": "Regra a ser seguida, apenas estes ou exceto estes"
},
"lista": {
"type": "array",
"items": {
"type": "number"
},
"description": "Lista de ids dos produtos permitidos ou proibidos dependendo da regra"
}
},
"description": "Lista de produtos o qual o cupom não se aplica ou somente se aplica, dependendo da regra"
},
"faixas_datas_invalidas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tipo": {
"enum": [
"excludente",
"excludente"
],
"description": "Tipo de faixa, no momento somente excludente existe"
},
"inicio": {
"type": "string",
"description": "Data de inicio desta faixa"
},
"fim": {
"type": "string",
"description": "Data final desta faixa"
}
}
},
"description": "Regra de datas de passeios onde o cupom não pode ser aplicado"
},
"aplicar_opcionais": {
"type": "number",
"description": "1 se deve aplicar o desconto também nos opcionais, 0 caso contrário"
},
"afiliado_id": {
"type": "number",
"description": "Id do afiliado associado a esse cupom ou null caso não esteja associado"
},
"_desconto_sobre_total_com_desconto_por_metodo_de_pagamento": {
"type": "string",
"description": "Valor do desconto em reais a ser aplicado na compra feita com método de pagamento promocional"
},
"_desconto_sobre_total_sem_desconto_por_metodo_de_pagamento": {
"type": "string",
"description": "Valor do desconto em reais a ser aplicado na compra feita sem método de pagamento promocional"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": 42,
"loja_id": "55",
"codigo_cupom": "CARNAVAL10",
"descricao": "Cupom de desconto do carnaval",
"tipo": "porcentagem",
"valor": "10.00",
"valor_minimo_compra": "50.00",
"quantidade": 20,
"quantidade_por_cliente": 2,
"valido_de": "2019-04-16",
"valido_ate": "2020-12-31",
"produtos_excecao": {
"regra": "incluidos",
"lista": [
1
]
},
"faixas_datas_invalidas": [
{
"tipo": "excludente",
"inicio": "07/04/2021",
"fim": "30/04/2021"
}
],
"aplicar_opcionais": 1,
"afiliado_id": 70,
"_desconto_sobre_total_com_desconto_por_metodo_de_pagamento": "10.00",
"_desconto_sobre_total_sem_desconto_por_metodo_de_pagamento": "9.00"
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identificador único"
},
"loja_id": {
"type": "string",
"description": "Identificador único da loja"
},
"codigo_cupom": {
"type": "string",
"description": "Código desse cupom"
},
"descricao": {
"type": "string",
"description": "Uma descrição desse cupom de desconto"
},
"tipo": {
"type": "string",
"description": "Pode ser `valor` ou `porcentagem`"
},
"valor": {
"type": "string",
"description": "Valor do desconto"
},
"valor_minimo_compra": {
"type": "string",
"description": "O valor mínimo da soma de todos os passeios"
},
"quantidade": {
"type": "number",
"description": "Quantidade disponível"
},
"quantidade_por_cliente": {
"type": "number",
"description": "Quantas vezes pode ser aplicado para compras do mesmo cliente"
},
"valido_de": {
"type": "string",
"description": "Data inicial de quando esse cupom começa a valer"
},
"valido_ate": {
"type": "string",
"description": "Data de validade do cupom"
},
"produtos_excecao": {
"type": "object",
"properties": {
"regra": {
"type": "string",
"enum": [
"incluidos",
"excluidos",
"incluidos"
],
"description": "Regra a ser seguida, apenas estes ou exceto estes"
},
"lista": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "Lista de ids dos produtos permitidos ou proibidos dependendo da regra"
}
},
"required": [
"lista"
],
"description": "Lista de produtos o qual o cupom não se aplica ou somente se aplica, dependendo da regra"
},
"faixas_datas_invalidas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tipo": {
"type": "string",
"enum": [
"excludente",
"excludente"
],
"description": "Tipo de faixa, no momento somente excludente existe"
},
"inicio": {
"type": "string",
"enum": [
"07/04/2021"
],
"description": "Data de inicio desta faixa"
},
"fim": {
"type": "string",
"enum": [
"30/04/2021"
],
"description": "Data final desta faixa"
}
},
"required": [
"tipo",
"inicio",
"fim"
],
"additionalProperties": false
},
"description": "Regra de datas de passeios onde o cupom não pode ser aplicado"
},
"aplicar_opcionais": {
"type": "number",
"description": "1 se deve aplicar o desconto também nos opcionais, 0 caso contrário"
},
"afiliado_id": {
"type": "number",
"description": "Id do afiliado associado a esse cupom ou null caso não esteja associado"
},
"_desconto_sobre_total_com_desconto_por_metodo_de_pagamento": {
"type": "string",
"description": "Valor do desconto em reais a ser aplicado na compra feita com método de pagamento promocional"
},
"_desconto_sobre_total_sem_desconto_por_metodo_de_pagamento": {
"type": "string",
"description": "Valor do desconto em reais a ser aplicado na compra feita sem método de pagamento promocional"
}
},
"required": [
"faixas_datas_invalidas"
]
}ApagarDELETE/cupons/{id}
Example URI
- id
int(required) Example: 42O id do cupom
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonValidando Cupons ¶
Devido a complexidade de validar e aplicar o cupom, esta api fornece um endpoint que permite não só realizar a validação incluindo todas as regras como também retorna qual o valor de desconto a ser aplicado. É recomendado o uso deste endpoint.
validar CupomPOST/cupons/validate
O retorno deste endpoint em caso de cupom não aplicável será um status 400 com a mensagem de erro contendo o motivo no corpo. Em caso de sucesso o cupom será retornado com 2 campos extras:
-
_desconto_sobre_total_com_desconto_por_metodo_de_pagamentocontendo o valor de desconto(R$) a ser aplicado se o pedido for fechado com método de pagamento que oferece desconto na loja -
_desconto_sobre_total_sem_desconto_por_metodo_de_pagamentocontendo o valor de desconto(R$) a ser aplicado se o pedido for fechado sem método de pagamento que oferece desconto na loja
Example URI
Headers
Authorization: Bearer <authorization-token>Body
{
"cupom": "DESCONTO10",
"valor_opcionais": "50.00",
"itens": [
{
"id": 56,
"name": "Passeio de Quadriciclo",
"value": 50,
"value_discount_method": 40,
"date": "08/04/2021"
}
]
}Schema
{
"type": "object",
"properties": {
"cupom": {
"type": "string",
"description": "O código do cupom"
},
"valor_opcionais": {
"type": "string",
"description": "A soma dos valores dos opcionais adicionados a compra"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Id do produto ou passeio"
},
"name": {
"type": "string",
"description": "Nome do produto ou passeio"
},
"value": {
"type": "number",
"description": "Valor do passeio sem desconto pro método de pagamento"
},
"value_discount_method": {
"type": "number",
"description": "Valor do passeio com desconto pro método de pagamento"
},
"date": {
"type": "string",
"description": "Data de relização do passeio ou null em caso de ser produto"
}
}
},
"description": "OS itens da compra"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}400Headers
Content-Type: application/jsonBody
{
"message": "O valor mínimo dos itens aplicáveis deve ser de R$ 10,00."
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": 42,
"loja_id": "55",
"codigo_cupom": "CARNAVAL10",
"descricao": "Cupom de desconto do carnaval",
"tipo": "porcentagem",
"valor": "10.00",
"valor_minimo_compra": "50.00",
"quantidade": 20,
"quantidade_por_cliente": 2,
"valido_de": "2019-04-16",
"valido_ate": "2020-12-31",
"produtos_excecao": {
"regra": "incluidos",
"lista": [
1
]
},
"faixas_datas_invalidas": [
{
"tipo": "excludente",
"inicio": "07/04/2021",
"fim": "30/04/2021"
}
],
"aplicar_opcionais": 1,
"afiliado_id": 70,
"_desconto_sobre_total_com_desconto_por_metodo_de_pagamento": "10.00",
"_desconto_sobre_total_sem_desconto_por_metodo_de_pagamento": "9.00"
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identificador único"
},
"loja_id": {
"type": "string",
"description": "Identificador único da loja"
},
"codigo_cupom": {
"type": "string",
"description": "Código desse cupom"
},
"descricao": {
"type": "string",
"description": "Uma descrição desse cupom de desconto"
},
"tipo": {
"type": "string",
"description": "Pode ser `valor` ou `porcentagem`"
},
"valor": {
"type": "string",
"description": "Valor do desconto"
},
"valor_minimo_compra": {
"type": "string",
"description": "O valor mínimo da soma de todos os passeios"
},
"quantidade": {
"type": "number",
"description": "Quantidade disponível"
},
"quantidade_por_cliente": {
"type": "number",
"description": "Quantas vezes pode ser aplicado para compras do mesmo cliente"
},
"valido_de": {
"type": "string",
"description": "Data inicial de quando esse cupom começa a valer"
},
"valido_ate": {
"type": "string",
"description": "Data de validade do cupom"
},
"produtos_excecao": {
"type": "object",
"properties": {
"regra": {
"type": "string",
"enum": [
"incluidos",
"excluidos",
"incluidos"
],
"description": "Regra a ser seguida, apenas estes ou exceto estes"
},
"lista": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "Lista de ids dos produtos permitidos ou proibidos dependendo da regra"
}
},
"required": [
"lista"
],
"description": "Lista de produtos o qual o cupom não se aplica ou somente se aplica, dependendo da regra"
},
"faixas_datas_invalidas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tipo": {
"type": "string",
"enum": [
"excludente",
"excludente"
],
"description": "Tipo de faixa, no momento somente excludente existe"
},
"inicio": {
"type": "string",
"enum": [
"07/04/2021"
],
"description": "Data de inicio desta faixa"
},
"fim": {
"type": "string",
"enum": [
"30/04/2021"
],
"description": "Data final desta faixa"
}
},
"required": [
"tipo",
"inicio",
"fim"
],
"additionalProperties": false
},
"description": "Regra de datas de passeios onde o cupom não pode ser aplicado"
},
"aplicar_opcionais": {
"type": "number",
"description": "1 se deve aplicar o desconto também nos opcionais, 0 caso contrário"
},
"afiliado_id": {
"type": "number",
"description": "Id do afiliado associado a esse cupom ou null caso não esteja associado"
},
"_desconto_sobre_total_com_desconto_por_metodo_de_pagamento": {
"type": "string",
"description": "Valor do desconto em reais a ser aplicado na compra feita com método de pagamento promocional"
},
"_desconto_sobre_total_sem_desconto_por_metodo_de_pagamento": {
"type": "string",
"description": "Valor do desconto em reais a ser aplicado na compra feita sem método de pagamento promocional"
}
},
"required": [
"faixas_datas_invalidas"
]
}Destinos ¶
Obtendo Destinos ¶
Este endpoint fornece uma lista de destinos para onde os passeios vão ou são realizados.
Diferente dos demais endpoints, este não requer login.
Os campos da query são todos opcionais. Se nenhum for passado, todos os destinos serão retornados.
O retorno estará sempre paginado, sendo 10 destinos por páginas.
Listar DestinosGET/destinos{?page,q,loja_id,latitude,longitude,range}
Example URI
- page
int(required) Example: 1A página que se deseja obter
- q
string(required) Example: NatalO texto de busca pelo nome do local/cidade/estado/país
- loja_id
int(required) Example: 42O id da loja que usa os destinos sendo buscados
- latitude
string(required) Example: -5.79448A latitude de um ponto no globo a ser usado na busca
- longitude
string(required) Example: -35.211A longitude de um ponto no globo a ser usado na busca
- range
int(required) Example: 100A distância, em metros, que os locais sendo buscados devem estar do ponto definido na latitude e longitude
200Headers
Content-Type: application/jsonBody
{
"results": [
{
"id": "55",
"titulo": "Praia do Meio",
"cidade": "Natal",
"estado": "Rio Grande do Norte",
"pais": "Brasil",
"latitude": "-5.79448",
"longitude": "-35.211",
"distancia": "10.56"
}
],
"pagination": {
"more": true,
"pages": 3,
"currentPage": 1
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"55"
],
"description": "Identificação única do destino"
},
"titulo": {
"type": "string",
"enum": [
"Praia do Meio"
],
"description": "O título do local, pode ser null"
},
"cidade": {
"type": "string",
"enum": [
"Natal"
],
"description": "A cidade do destino"
},
"estado": {
"type": "string",
"enum": [
"Rio Grande do Norte"
],
"description": "O estado do destino"
},
"pais": {
"type": "string",
"enum": [
"Brasil"
],
"description": "O país do destino"
},
"latitude": {
"type": "string",
"enum": [
"-5.79448"
],
"description": "A latitude da geolocalização do destino"
},
"longitude": {
"type": "string",
"enum": [
"-35.211"
],
"description": "A longitude da geolocalização do destino"
},
"distancia": {
"type": "string",
"enum": [
"10.56"
],
"description": "A distância entre o ponto usado na busca e esse local em metros, não estará presente caso a busca não inclua a latitude e longitude"
}
},
"required": [
"id",
"titulo",
"cidade",
"estado",
"pais",
"latitude",
"longitude"
],
"additionalProperties": false
},
"description": "A lista de destinos filtrda pelos parâmetros da busca"
},
"pagination": {
"type": "object",
"properties": {
"more": {
"type": "boolean",
"description": "Se tem mais destinos a serem listados pela paginação"
},
"pages": {
"type": "number",
"description": "O número de páginas disponíveis"
},
"currentPage": {
"type": "number",
"description": "A página atual"
}
},
"description": "As informação de paginação"
}
},
"required": [
"results"
]
}Detalhando Destino ¶
Este endpoint retorna as informações de um destino dado o seu id
Detalhar PedidosGET/destinos/{id}
Example URI
- id
int(required) Example: 42O id do destino a ser detalhado
200Headers
Content-Type: application/jsonBody
{
"id": "55",
"titulo": "Praia do Meio",
"cidade": "Natal",
"estado": "Rio Grande do Norte",
"pais": "Brasil",
"latitude": "-5.79448",
"longitude": "-35.211"
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identificação única do destino"
},
"titulo": {
"type": "string",
"description": "O título do local, pode ser null"
},
"cidade": {
"type": "string",
"description": "A cidade do destino"
},
"estado": {
"type": "string",
"description": "O estado do destino"
},
"pais": {
"type": "string",
"description": "O país do destino"
},
"latitude": {
"type": "string",
"description": "A latitude da geolocalização do destino"
},
"longitude": {
"type": "string",
"description": "A longitude da geolocalização do destino"
}
}
}Carrinhos ¶
Listando Carrinhos ¶
Para listar os carrinhos da loja, realize uma requisição GET para este endpoint, entretanto o resultado estará paginado.
Listar CarrinhosGET/carrinhos{?page,perPage}
Example URI
- page
int(required) Example: 1A página que se deseja obter
- perPage
int(required) Example: 20Número de carrinhos por página sendo no máximo 100
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"info": {
"total": 3,
"pagina": 1,
"total_paginas": 1,
"por_pagina": 20
},
"itens": [
{
"id": "03",
"codigo": "c3c95f202db3d84ba81756c6ac13878b6ff2712432c8764fb890cfc9a666c547",
"valido_ate": "2022-02-22 14:00:00",
"_link": "https://example.com/carrinho-de-compras/snapshot/c3c95f202db3d84ba81756c6ac13878b6ff2712432c8764fb890cfc9a666c547",
"itens": [
{
"id": "692",
"disponibilidade": {
"id": "18634972",
"faixas_etarias": [
{
"id": "27579",
"quantidade": 1
}
]
}
}
]
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "O total de carrinhos existentes"
},
"pagina": {
"type": "number",
"description": "A página atual"
},
"total_paginas": {
"type": "number",
"description": "O total de páginas disponíveis"
},
"por_pagina": {
"type": "number",
"description": "O número de carrinhos por página"
}
},
"description": "As informações sobre a listagem"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"03"
],
"description": "Identificador único do carrinho"
},
"codigo": {
"type": "string",
"enum": [
"c3c95f202db3d84ba81756c6ac13878b6ff2712432c8764fb890cfc9a666c547"
],
"description": "Código(SHA256) único e aleatório desse carrinho"
},
"valido_ate": {
"type": "string",
"enum": [
"2022-02-22 14:00:00"
],
"description": "Data de validade desse carrinho"
},
"_link": {
"type": "string",
"enum": [
"https://example.com/carrinho-de-compras/snapshot/c3c95f202db3d84ba81756c6ac13878b6ff2712432c8764fb890cfc9a666c547"
],
"description": "O link para acessar este carrinho na loja"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"692"
],
"description": "O id do produto que este item representa"
},
"disponibilidade": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"18634972"
],
"description": "O id da disponibilidade sendo usada"
},
"faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"27579"
],
"description": "O id da faixa etária"
},
"quantidade": {
"type": "number",
"enum": [
1
],
"description": "O número de pessoas nessa faixa etária"
}
},
"required": [
"id",
"quantidade"
],
"additionalProperties": false
},
"description": "A lista de faixas etárias dos utilizadores deste passeio"
}
},
"required": [
"id",
"faixas_etarias"
],
"additionalProperties": false,
"description": "A disponibilidade que este item usa"
}
},
"required": [
"id",
"disponibilidade"
],
"additionalProperties": false
},
"description": "A lista de itens deste carrinho"
}
},
"required": [
"id",
"codigo",
"valido_ate",
"_link",
"itens"
],
"additionalProperties": false
},
"description": "A lista de carrinhos"
}
},
"required": [
"itens"
]
}Operações com um Carrinho ¶
Este endpoint permite obter informações ou apagar um carrinho específico dado seu id.
Detalhar CarrinhoGET/carrinhos/{id}
Example URI
- id
int(required) Example: 42O id do carrinho
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": "03",
"codigo": "c3c95f202db3d84ba81756c6ac13878b6ff2712432c8764fb890cfc9a666c547",
"valido_ate": "2022-02-22 14:00:00",
"_link": "https://example.com/carrinho-de-compras/snapshot/c3c95f202db3d84ba81756c6ac13878b6ff2712432c8764fb890cfc9a666c547",
"itens": [
{
"id": "692",
"disponibilidade": {
"id": "18634972",
"faixas_etarias": [
{
"id": "27579",
"quantidade": 1
}
]
}
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identificador único do carrinho"
},
"codigo": {
"type": "string",
"description": "Código(SHA256) único e aleatório desse carrinho"
},
"valido_ate": {
"type": "string",
"description": "Data de validade desse carrinho"
},
"_link": {
"type": "string",
"description": "O link para acessar este carrinho na loja"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"692"
],
"description": "O id do produto que este item representa"
},
"disponibilidade": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"18634972"
],
"description": "O id da disponibilidade sendo usada"
},
"faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"27579"
],
"description": "O id da faixa etária"
},
"quantidade": {
"type": "number",
"enum": [
1
],
"description": "O número de pessoas nessa faixa etária"
}
},
"required": [
"id",
"quantidade"
],
"additionalProperties": false
},
"description": "A lista de faixas etárias dos utilizadores deste passeio"
}
},
"required": [
"id",
"faixas_etarias"
],
"additionalProperties": false,
"description": "A disponibilidade que este item usa"
}
},
"required": [
"id",
"disponibilidade"
],
"additionalProperties": false
},
"description": "A lista de itens deste carrinho"
}
},
"required": [
"itens"
]
}Apagar CarrinhoDELETE/carrinhos/{id}
Example URI
- id
int(required) Example: 42O id do carrinho
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"sucesso": true
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"sucesso": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
}
}
}Registrando Carrinhos ¶
Para registrar um carrinho no Paytour serão necessárias as informações dos passeios a serem realizados, além de informações a respeito da faixa etária e disponibilidade.
Note que o corpo da requisição deve estar em form-data e não em json
Data de validade
O parâmetro valito_ate determina a data quando o carinho não poderá mais ser acessado e estará marcado para ser automaticamente apagado.
Por causa da natureza dos itens do carrinho terem data de realização, todo carrinho deve ter uma data de validade que, quando atingida, marca o carrinho para ser apagado durante as tarefas de manutenção automaticas do Paytour, normalmente realizadas de madrugada.
O parâmetro deve estar no formato YYYY-MM-DD HH:mm:SS, por exemplo: 2022-02-22 16:53:00.
Registrar CarrinhoPOST/carrinhos
Example URI
Headers
Authorization: Bearer <authorization-token>
Content-Type: multipart/form-dataBody
{
"valido_ate": "2022-02-22 14:00:00",
"itens": [
{
"id": "692",
"disponibilidade": {
"id": "18634972",
"faixas_etarias": [
{
"id": "27579",
"quantidade": 1
}
]
}
}
]
}Schema
{
"type": "object",
"properties": {
"valido_ate": {
"type": "string",
"description": "Data de validade desse carrinho"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O id do produto que este item representa"
},
"disponibilidade": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O id da disponibilidade sendo usada"
},
"faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O id da faixa etária"
},
"quantidade": {
"type": "number",
"description": "O número de pessoas nessa faixa etária"
}
}
},
"description": "A lista de faixas etárias dos utilizadores deste passeio"
}
},
"description": "A disponibilidade que este item usa"
}
}
},
"description": "A lista de itens deste carrinho"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}201Headers
Content-Type: application/jsonBody
{
"id": "03",
"codigo": "c3c95f202db3d84ba81756c6ac13878b6ff2712432c8764fb890cfc9a666c547",
"valido_ate": "2022-02-22 14:00:00",
"_link": "https://example.com/carrinho-de-compras/snapshot/c3c95f202db3d84ba81756c6ac13878b6ff2712432c8764fb890cfc9a666c547",
"itens": [
{
"id": "692",
"disponibilidade": {
"id": "18634972",
"faixas_etarias": [
{
"id": "27579",
"quantidade": 1
}
]
}
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identificador único do carrinho"
},
"codigo": {
"type": "string",
"description": "Código(SHA256) único e aleatório desse carrinho"
},
"valido_ate": {
"type": "string",
"description": "Data de validade desse carrinho"
},
"_link": {
"type": "string",
"description": "O link para acessar este carrinho na loja"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"692"
],
"description": "O id do produto que este item representa"
},
"disponibilidade": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"18634972"
],
"description": "O id da disponibilidade sendo usada"
},
"faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"27579"
],
"description": "O id da faixa etária"
},
"quantidade": {
"type": "number",
"enum": [
1
],
"description": "O número de pessoas nessa faixa etária"
}
},
"required": [
"id",
"quantidade"
],
"additionalProperties": false
},
"description": "A lista de faixas etárias dos utilizadores deste passeio"
}
},
"required": [
"id",
"faixas_etarias"
],
"additionalProperties": false,
"description": "A disponibilidade que este item usa"
}
},
"required": [
"id",
"disponibilidade"
],
"additionalProperties": false
},
"description": "A lista de itens deste carrinho"
}
},
"required": [
"itens"
]
}Pedidos ¶
Listando Pedidos ¶
Para listar os pedidos da loja, realize uma requisição GET para este endpoint, entretanto o resultado estará paginado.
Listar PedidosGET/pedidos{?page,perPage,includeItems,includeLogsStatus,includeObs,createdAtMin,createdAtMax,updatedAtMin,updatedAtMax}
Example URI
- page
int(required) Example: 1A página que se deseja obter
- perPage
int(required) Example: 30Número de pedidos por página sendo no máximo 100
- includeItems
int(required) Example: 1Se 1 for passado nesse parâmetro, o resultado conterá também os itens do pedido
- includeObs
int(required) Example: 1Se 1 for passado nesse parâmetro, o resultado conterá também as observações do pedido
- includeLogsStatus
int(required) Example: 1Se 1 for passado nesse parâmetro, o resultado conterá também os logs de status do pedido
- createdAtMin
string(required) Example: 2022-03-28 00:00:00A data e hora mínima que o pedido deve ter sido criado
- createdAtMax
string(required) Example: 2022-04-01 23:59:59A data e hora máxima que o pedido deve ter sido criado
- updatedAtMin
string(required) Example: 2022-03-28 00:00:00A data e hora mínima que o pedido deve ter sido editado pela última vez
- updatedAtMax
string(required) Example: 2022-04-01 23:59:59A data e hora máxima que o pedido deve ter sido editado pela última vez
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}201Headers
Content-Type: application/jsonBody
{
"info": {
"total": 350,
"pagina": 1,
"total_paginas": 35,
"por_pagina": 10
},
"itens": [
{
"id": "200",
"loja_id": "468",
"valor": "170.00",
"desconto": "0.00",
"cliente_nome": "João Carlos da Silva",
"cliente_email": "[email protected]",
"cliente_cpf": "15658922243",
"cliente_celular": "(84) 999999999",
"cliente_telefone": "(84) 999999999",
"cliente_ddi": "+55",
"cliente_cep": "00000-000",
"cliente_endereco": "Rua São Carlos",
"cliente_complemento": "Próxima ao posto",
"cliente_numero": "19",
"cliente_bairro": "Ana Vieira",
"cliente_cidade": "Natal",
"cliente_uf": "RN",
"cliente_pais": "BRA",
"cliente_estrangeiro": 0,
"data_hora_pedido": "2020-08-01 09:47:39",
"data_hora_atualizacao": "2020-08-01 09:47:39",
"status": "aprovado",
"status_pagseguro": "aprovado",
"pagseguro_transacao_id": "as54s58",
"metodo_pagamento": "dinheiro",
"metodo_pagamento_externo": "dinheiro",
"transacao_id": "5484as-as4554-sas4d-54",
"status_pagamento": "pago",
"cupom_id": "415",
"afiliado_id": "454",
"afiliado_comissao": "45.00",
"afiliado_data_hora_clique": "2020-08-01 09:45:00",
"parceiro_id": "415",
"parceiro_comissao": "45.00",
"parcelas_pagamento": 1,
"bandeira_pagamento": "visa",
"final_cartao_pagamento": "9999",
"bin_cartao_pagamento": "999999",
"tipo_pagamento": "creditCard",
"transacao_erro_codigo": "1",
"transacao_erro_mensagem": "Cartão recusado",
"pagamento_extras": "null",
"hospedagem_tipo": "null",
"hospedagem_valor": "null",
"pagamento_pendente": "1",
"pagamento_pendente_valor": "40.00",
"pagamento_pendente_data_limite": "2020-08-01",
"pagamento_pendente_pago_em": "2020-08-01",
"deposito_codigo": "6595",
"deposito_data_pagamento": "2020-08-01",
"assinatura": "null",
"observacao": "null",
"operador_id": "48",
"loja_afiliado_id": 42,
"utm_source": "xxx",
"utm_medium": "xxx",
"utm_campaign": "xxx",
"utm_term": "xxx",
"utm_content": "xxx",
"_link_pagamento": "https//example.com.br/pagamento",
"pagamento_detalhes": {
"subtotal": 100,
"taxa_conveniencia": 5,
"desconto": 0,
"juros_para_cliente": 10,
"total": 110,
"valor_parcela": 10,
"parcelas_pagamento": 11,
"sem_juros_ate": 5,
"tabela_juros": [
{
"initial": 2,
"final": 6,
"rate": 10
}
],
"pix_emv": "00020101021226850014br.gov.bcb.pix..."
}
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
},
"por_pagina": {
"type": "number",
"description": "Quantos itens estão sendo mostrados por página"
}
}
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"200"
],
"description": "Identificação única desse pedido"
},
"loja_id": {
"type": "string",
"enum": [
"468"
],
"description": "Identificação única da loja"
},
"valor": {
"type": "string",
"enum": [
"170.00"
],
"description": "Valor total do pedido"
},
"desconto": {
"type": "string",
"enum": [
"0.00"
],
"description": "Valor do desconto aplicado no pedido"
},
"cliente_nome": {
"type": "string",
"enum": [
"João Carlos da Silva"
],
"description": "Nome do Cliente"
},
"cliente_email": {
"type": "string",
"enum": [
"[email protected]"
],
"description": "Email do Cliente"
},
"cliente_cpf": {
"type": "string",
"enum": [
"15658922243"
],
"description": "Documento do Cliente"
},
"cliente_celular": {
"type": "string",
"enum": [
"(84) 999999999"
],
"description": "Celular do Cliente"
},
"cliente_telefone": {
"type": "string",
"enum": [
"(84) 999999999"
],
"description": "Telefone do Cliente"
},
"cliente_ddi": {
"type": "string",
"enum": [
"+55"
],
"description": "DDI do Cliente"
},
"cliente_cep": {
"type": "string",
"enum": [
"00000-000"
],
"description": "Cep do Endereço"
},
"cliente_endereco": {
"type": "string",
"enum": [
"Rua São Carlos"
],
"description": "Rua do Endereço"
},
"cliente_complemento": {
"type": "string",
"enum": [
"Próxima ao posto"
],
"description": "Complemento do Endereço"
},
"cliente_numero": {
"type": "string",
"enum": [
"19"
],
"description": "Número do Endereço"
},
"cliente_bairro": {
"type": "string",
"enum": [
"Ana Vieira"
],
"description": "Bairro do Endereço"
},
"cliente_cidade": {
"type": "string",
"enum": [
"Natal"
],
"description": "Cidade do Endereço"
},
"cliente_uf": {
"type": "string",
"enum": [
"RN"
],
"description": "Estado do Endereço"
},
"cliente_pais": {
"type": "string",
"enum": [
"BRA"
],
"description": "O código do país no padrão ISO 3166-1-alpha-3"
},
"cliente_estrangeiro": {
"type": "number",
"enum": [
0
],
"description": "1 se é estrangeiro"
},
"data_hora_pedido": {
"type": "string",
"enum": [
"2020-08-01 09:47:39"
],
"description": "A data e hora do pedido no formato YYYY-MM-DD HH:mm:ss"
},
"data_hora_atualizacao": {
"type": "string",
"enum": [
"2020-08-01 09:47:39"
],
"description": "A data e hora que o pedido foi editado pela última vez, no formato YYYY-MM-DD HH:mm:ss"
},
"status": {
"type": "string",
"enum": [
"aprovado"
],
"description": "O status do pedido"
},
"status_pagseguro": {
"type": "string",
"enum": [
"aprovado"
],
"description": "O status informado, quando pagamento feito pelo Pagseguro"
},
"pagseguro_transacao_id": {
"type": "string",
"enum": [
"as54s58"
],
"description": "Id da transação feita no pagseguro"
},
"metodo_pagamento": {
"type": "string",
"enum": [
"dinheiro"
],
"description": "O método de pagamento"
},
"metodo_pagamento_externo": {
"type": "string",
"enum": [
"dinheiro"
],
"description": "O método de pagamento, quando feito por fora do sistema"
},
"transacao_id": {
"type": "string",
"enum": [
"5484as-as4554-sas4d-54"
],
"description": "O id da transação de cartão de crédito"
},
"status_pagamento": {
"type": "string",
"enum": [
"pago"
],
"description": "O status do pagamento desse pedido"
},
"cupom_id": {
"type": "string",
"enum": [
"415"
],
"description": "O id do cupom, quando aplicado"
},
"afiliado_id": {
"type": "string",
"enum": [
"454"
],
"description": "Id do afiliado da loja associado a venda"
},
"afiliado_comissao": {
"type": "string",
"enum": [
"45.00"
],
"description": "Valor a ser repassado ao afiliado"
},
"afiliado_data_hora_clique": {
"type": "string",
"enum": [
"2020-08-01 09:45:00"
],
"description": "A data e hora do clique no link"
},
"parceiro_id": {
"type": "string",
"enum": [
"415"
],
"description": "O id do parceiro responsável pela venda"
},
"parceiro_comissao": {
"type": "string",
"enum": [
"45.00"
],
"description": "Valor a ser repassado ao parceiro"
},
"parcelas_pagamento": {
"type": "number",
"enum": [
1
],
"description": "O número de parcelas"
},
"bandeira_pagamento": {
"type": "string",
"enum": [
"visa"
],
"description": "Bandeira do cartão usado"
},
"final_cartao_pagamento": {
"type": "string",
"enum": [
"9999"
],
"description": "Final do cartão usado"
},
"bin_cartao_pagamento": {
"type": "string",
"enum": [
"999999"
],
"description": "BIN do cartão usado"
},
"tipo_pagamento": {
"type": "string",
"enum": [
"creditCard"
],
"description": "Método de pagamento"
},
"transacao_erro_codigo": {
"type": "string",
"enum": [
"1"
],
"description": "O código do erro na transação"
},
"transacao_erro_mensagem": {
"type": "string",
"enum": [
"Cartão recusado"
],
"description": "A mensagem de erro na transação"
},
"pagamento_extras": {
"type": "string",
"enum": [
"null"
],
"description": "Informações adicionais do pagamento"
},
"hospedagem_tipo": {
"type": "string",
"enum": [
"null"
],
"description": "Tipo de hospedagem do cliente"
},
"hospedagem_valor": {
"type": "string",
"enum": [
"null"
],
"description": "Valor pago pela hospedagem"
},
"pagamento_pendente": {
"type": "string",
"enum": [
"1"
],
"description": "1 se ainda tem pagamento pendente"
},
"pagamento_pendente_valor": {
"type": "string",
"enum": [
"40.00"
],
"description": "Valor ainda pendente a ser pago"
},
"pagamento_pendente_data_limite": {
"type": "string",
"enum": [
"2020-08-01"
],
"description": "Data máxima para que o valor pendente seja pago"
},
"pagamento_pendente_pago_em": {
"type": "string",
"enum": [
"2020-08-01"
],
"description": "Data do pagamento do valor pendente"
},
"deposito_codigo": {
"type": "string",
"enum": [
"6595"
],
"description": "Número da transação do depósito do valor pendente"
},
"deposito_data_pagamento": {
"type": "string",
"enum": [
"2020-08-01"
],
"description": "Data do pagamento do valor pendente por depósito"
},
"assinatura": {
"type": "string",
"enum": [
"null"
],
"description": "Assinatura do pedido"
},
"observacao": {
"type": "string",
"enum": [
"null"
],
"description": "Observação cadastrada no momento da venda"
},
"operador_id": {
"type": "string",
"enum": [
"48"
],
"description": "Id do usuário que realizou o pedido"
},
"loja_afiliado_id": {
"type": "number",
"enum": [
42
],
"description": "O id do afiliado na loja, ou null caso o pedido não tenha afiliado associado"
},
"utm_source": {
"type": "string",
"enum": [
"xxx"
],
"description": "O campo de UTM source"
},
"utm_medium": {
"type": "string",
"enum": [
"xxx"
],
"description": "O campo de UTM medium"
},
"utm_campaign": {
"type": "string",
"enum": [
"xxx"
],
"description": "O campo de UTM campaign"
},
"utm_term": {
"type": "string",
"enum": [
"xxx"
],
"description": "O campo de UTM term"
},
"utm_content": {
"type": "string",
"enum": [
"xxx"
],
"description": "O campo de UTM content"
},
"_link_pagamento": {
"type": "string",
"enum": [
"https//example.com.br/pagamento"
],
"description": "O link que o cliente deve acessar para realizar o pagamento"
},
"pagamento_detalhes": {
"type": "object",
"properties": {
"subtotal": {
"type": "number",
"enum": [
100
],
"description": "Valor original, antes das taxas"
},
"taxa_conveniencia": {
"type": "number",
"enum": [
5
],
"description": "Taxa de conveniencia aplicável em venda de eventos"
},
"desconto": {
"type": "number",
"enum": [
0
],
"description": "Desconto aplicado"
},
"juros_para_cliente": {
"type": "number",
"enum": [
10
],
"description": "Quanto o cliente pagou em Juros"
},
"total": {
"type": "number",
"enum": [
110
],
"description": "Total com juros"
},
"valor_parcela": {
"type": "number",
"enum": [
10
],
"description": "O valor da parcela"
},
"parcelas_pagamento": {
"type": "number",
"enum": [
11
],
"description": "O número de parcelas"
},
"sem_juros_ate": {
"type": "number",
"enum": [
5
],
"description": "No momento da reserva quantas parcelas estavam configuradas sem juros"
},
"tabela_juros": {
"type": "array",
"items": {
"type": "object",
"properties": {
"initial": {
"type": "number",
"enum": [
2
],
"description": "Número mínimo de parcelas onde essa taxa se aplica"
},
"final": {
"type": "number",
"enum": [
6
],
"description": "Número máximo de parcelas onde essa taxa se aplica"
},
"rate": {
"type": "number",
"enum": [
10
],
"description": "Porcentagem de taxa de juros"
}
},
"required": [
"initial",
"final",
"rate"
],
"additionalProperties": false
},
"description": "A tabela de juros no momento da venda"
},
"pix_emv": {
"type": "string",
"enum": [
"00020101021226850014br.gov.bcb.pix..."
],
"description": "O código PIX para pagar, pode ser usando como copia e cola, ou pode ser transformado em qrCode"
}
},
"required": [
"subtotal",
"taxa_conveniencia",
"desconto",
"juros_para_cliente",
"total",
"valor_parcela",
"parcelas_pagamento",
"sem_juros_ate",
"tabela_juros",
"pix_emv"
],
"additionalProperties": false
}
},
"required": [
"id",
"loja_id",
"valor",
"desconto",
"cliente_nome",
"cliente_email",
"cliente_cpf",
"cliente_celular",
"cliente_telefone",
"cliente_ddi",
"cliente_cep",
"cliente_endereco",
"cliente_complemento",
"cliente_numero",
"cliente_bairro",
"cliente_cidade",
"cliente_uf",
"cliente_pais",
"cliente_estrangeiro",
"data_hora_pedido",
"data_hora_atualizacao",
"status",
"status_pagseguro",
"pagseguro_transacao_id",
"metodo_pagamento",
"metodo_pagamento_externo",
"transacao_id",
"status_pagamento",
"cupom_id",
"afiliado_id",
"afiliado_comissao",
"afiliado_data_hora_clique",
"parceiro_id",
"parceiro_comissao",
"parcelas_pagamento",
"bandeira_pagamento",
"final_cartao_pagamento",
"bin_cartao_pagamento",
"tipo_pagamento",
"transacao_erro_codigo",
"transacao_erro_mensagem",
"pagamento_extras",
"hospedagem_tipo",
"hospedagem_valor",
"pagamento_pendente",
"pagamento_pendente_valor",
"pagamento_pendente_data_limite",
"pagamento_pendente_pago_em",
"deposito_codigo",
"deposito_data_pagamento",
"assinatura",
"observacao",
"operador_id",
"loja_afiliado_id",
"utm_source",
"utm_medium",
"utm_campaign",
"utm_term",
"utm_content",
"_link_pagamento",
"pagamento_detalhes"
],
"additionalProperties": false
},
"description": "A lista de pedidos"
}
},
"required": [
"itens"
]
}Detalhando Pedido ¶
O endpoint anterior retorna apenas as informações do pedido sem seus itens(passeios e produtos adicionados).
Para obter os itens adicionados a um pedido realize a requisição abaixo.
Formulários inteligentes
Itens preenchidos por um formulário inteligente retornam as respostas no mesmo campo formulario dos itens (listagem com includeItems=1 e detalhe do pedido): a chave é o nome técnico do campo e cada entrada traz também tipo e valor_formatado (ver CampoFormulario). O nome_utilizador vem do primeiro campo identificador do ticket.
Detalhar PedidosGET/pedidos/{id}
Example URI
- id
int(required) Example: 42O id do pedido a ser detalhado
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": "200",
"loja_id": "468",
"valor": "170.00",
"desconto": "0.00",
"cliente_nome": "João Carlos da Silva",
"cliente_email": "[email protected]",
"cliente_cpf": "15658922243",
"cliente_celular": "(84) 999999999",
"cliente_telefone": "(84) 999999999",
"cliente_ddi": "+55",
"cliente_cep": "00000-000",
"cliente_endereco": "Rua São Carlos",
"cliente_complemento": "Próxima ao posto",
"cliente_numero": "19",
"cliente_bairro": "Ana Vieira",
"cliente_cidade": "Natal",
"cliente_uf": "RN",
"cliente_pais": "BRA",
"cliente_estrangeiro": 0,
"data_hora_pedido": "2020-08-01 09:47:39",
"data_hora_atualizacao": "2020-08-01 09:47:39",
"status": "aprovado",
"status_pagseguro": "aprovado",
"pagseguro_transacao_id": "as54s58",
"metodo_pagamento": "dinheiro",
"metodo_pagamento_externo": "dinheiro",
"transacao_id": "5484as-as4554-sas4d-54",
"status_pagamento": "pago",
"cupom_id": "415",
"afiliado_id": "454",
"afiliado_comissao": "45.00",
"afiliado_data_hora_clique": "2020-08-01 09:45:00",
"parceiro_id": "415",
"parceiro_comissao": "45.00",
"parcelas_pagamento": 1,
"bandeira_pagamento": "visa",
"final_cartao_pagamento": "9999",
"bin_cartao_pagamento": "999999",
"tipo_pagamento": "creditCard",
"transacao_erro_codigo": "1",
"transacao_erro_mensagem": "Cartão recusado",
"pagamento_extras": "null",
"hospedagem_tipo": "null",
"hospedagem_valor": "null",
"pagamento_pendente": "1",
"pagamento_pendente_valor": "40.00",
"pagamento_pendente_data_limite": "2020-08-01",
"pagamento_pendente_pago_em": "2020-08-01",
"deposito_codigo": "6595",
"deposito_data_pagamento": "2020-08-01",
"assinatura": "null",
"observacao": "null",
"operador_id": "48",
"loja_afiliado_id": 42,
"utm_source": "xxx",
"utm_medium": "xxx",
"utm_campaign": "xxx",
"utm_term": "xxx",
"utm_content": "xxx",
"_link_pagamento": "https//example.com.br/pagamento",
"itens": [
{
"id": "526",
"pedido_id": "200",
"valor": "60.00",
"produto_id": "null",
"produto_tipo": "passeio",
"utilizado": "0",
"data_utilizacao": "2020-08-05",
"produto_disponibilidade_id": "22642",
"produto_preco_id": "110",
"quantidade": "1",
"dados": "...",
"produto_preco_sazonal_id": "null",
"btms_num_reserva": "null",
"nome_produto": "Passeio de Trem",
"formulario": [
{
"chave": "nome",
"valor": "Alan Ferreira Pereira",
"label": "Nome",
"tipo": "nome_completo",
"valor_formatado": "Alan Ferreira Pereira"
}
],
"nome_utilizador": "Nome do útilizador",
"produto_disponibilidade_data": "2022-03-31",
"produto_disponibilidade_hora": "17:00 até 19:00",
"voucher_code": "59525165252",
"produto_faixa_etaria_nome": "Adulto",
"produto_faixa_etaria_descricao": "Acima de 18 anos",
"opcionais": [
{
"nome": "Almoço",
"valor": "20.00",
"desconto_cupom": "5.00"
}
]
}
],
"observacoes": [
{
"id": "526",
"observacao": "Reserva feita com antecedência",
"data_hora": "2023-12-25 09:00:00",
"operador_nome": "Carlos Augusto",
"operador_label": "Administrador",
"operador_id": 1,
"parceiro_id": 1
}
],
"logsStatus": [
{
"id": "526",
"status": "aprovado",
"data_hora": "2023-12-25 09:00:00",
"agente": "Carlos Augusto",
"agente_tipo": "Administrador"
}
],
"pagamento_detalhes": {
"subtotal": 100,
"taxa_conveniencia": 5,
"desconto": 0,
"juros_para_cliente": 10,
"total": 110,
"valor_parcela": 10,
"parcelas_pagamento": 11,
"sem_juros_ate": 5,
"tabela_juros": [
{
"initial": 2,
"final": 6,
"rate": 10
}
],
"pix_emv": "00020101021226850014br.gov.bcb.pix..."
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identificação única desse pedido"
},
"loja_id": {
"type": "string",
"description": "Identificação única da loja"
},
"valor": {
"type": "string",
"description": "Valor total do pedido"
},
"desconto": {
"type": "string",
"description": "Valor do desconto aplicado no pedido"
},
"cliente_nome": {
"type": "string",
"description": "Nome do Cliente"
},
"cliente_email": {
"type": "string",
"description": "Email do Cliente"
},
"cliente_cpf": {
"type": "string",
"description": "Documento do Cliente"
},
"cliente_celular": {
"type": "string",
"description": "Celular do Cliente"
},
"cliente_telefone": {
"type": "string",
"description": "Telefone do Cliente"
},
"cliente_ddi": {
"type": "string",
"description": "DDI do Cliente"
},
"cliente_cep": {
"type": "string",
"description": "Cep do Endereço"
},
"cliente_endereco": {
"type": "string",
"description": "Rua do Endereço"
},
"cliente_complemento": {
"type": "string",
"description": "Complemento do Endereço"
},
"cliente_numero": {
"type": "string",
"description": "Número do Endereço"
},
"cliente_bairro": {
"type": "string",
"description": "Bairro do Endereço"
},
"cliente_cidade": {
"type": "string",
"description": "Cidade do Endereço"
},
"cliente_uf": {
"type": "string",
"description": "Estado do Endereço"
},
"cliente_pais": {
"type": "string",
"description": "O código do país no padrão ISO 3166-1-alpha-3"
},
"cliente_estrangeiro": {
"type": "number",
"description": "1 se é estrangeiro"
},
"data_hora_pedido": {
"type": "string",
"description": "A data e hora do pedido no formato YYYY-MM-DD HH:mm:ss"
},
"data_hora_atualizacao": {
"type": "string",
"description": "A data e hora que o pedido foi editado pela última vez, no formato YYYY-MM-DD HH:mm:ss"
},
"status": {
"type": "string",
"description": "O status do pedido"
},
"status_pagseguro": {
"type": "string",
"description": "O status informado, quando pagamento feito pelo Pagseguro"
},
"pagseguro_transacao_id": {
"type": "string",
"description": "Id da transação feita no pagseguro"
},
"metodo_pagamento": {
"type": "string",
"description": "O método de pagamento"
},
"metodo_pagamento_externo": {
"type": "string",
"description": "O método de pagamento, quando feito por fora do sistema"
},
"transacao_id": {
"type": "string",
"description": "O id da transação de cartão de crédito"
},
"status_pagamento": {
"type": "string",
"description": "O status do pagamento desse pedido"
},
"cupom_id": {
"type": "string",
"description": "O id do cupom, quando aplicado"
},
"afiliado_id": {
"type": "string",
"description": "Id do afiliado da loja associado a venda"
},
"afiliado_comissao": {
"type": "string",
"description": "Valor a ser repassado ao afiliado"
},
"afiliado_data_hora_clique": {
"type": "string",
"description": "A data e hora do clique no link"
},
"parceiro_id": {
"type": "string",
"description": "O id do parceiro responsável pela venda"
},
"parceiro_comissao": {
"type": "string",
"description": "Valor a ser repassado ao parceiro"
},
"parcelas_pagamento": {
"type": "number",
"description": "O número de parcelas"
},
"bandeira_pagamento": {
"type": "string",
"description": "Bandeira do cartão usado"
},
"final_cartao_pagamento": {
"type": "string",
"description": "Final do cartão usado"
},
"bin_cartao_pagamento": {
"type": "string",
"description": "BIN do cartão usado"
},
"tipo_pagamento": {
"type": "string",
"description": "Método de pagamento"
},
"transacao_erro_codigo": {
"type": "string",
"description": "O código do erro na transação"
},
"transacao_erro_mensagem": {
"type": "string",
"description": "A mensagem de erro na transação"
},
"pagamento_extras": {
"type": "string",
"description": "Informações adicionais do pagamento"
},
"hospedagem_tipo": {
"type": "string",
"description": "Tipo de hospedagem do cliente"
},
"hospedagem_valor": {
"type": "string",
"description": "Valor pago pela hospedagem"
},
"pagamento_pendente": {
"type": "string",
"description": "1 se ainda tem pagamento pendente"
},
"pagamento_pendente_valor": {
"type": "string",
"description": "Valor ainda pendente a ser pago"
},
"pagamento_pendente_data_limite": {
"type": "string",
"description": "Data máxima para que o valor pendente seja pago"
},
"pagamento_pendente_pago_em": {
"type": "string",
"description": "Data do pagamento do valor pendente"
},
"deposito_codigo": {
"type": "string",
"description": "Número da transação do depósito do valor pendente"
},
"deposito_data_pagamento": {
"type": "string",
"description": "Data do pagamento do valor pendente por depósito"
},
"assinatura": {
"type": "string",
"description": "Assinatura do pedido"
},
"observacao": {
"type": "string",
"description": "Observação cadastrada no momento da venda"
},
"operador_id": {
"type": "string",
"description": "Id do usuário que realizou o pedido"
},
"loja_afiliado_id": {
"type": "number",
"description": "O id do afiliado na loja, ou null caso o pedido não tenha afiliado associado"
},
"utm_source": {
"type": "string",
"description": "O campo de UTM source"
},
"utm_medium": {
"type": "string",
"description": "O campo de UTM medium"
},
"utm_campaign": {
"type": "string",
"description": "O campo de UTM campaign"
},
"utm_term": {
"type": "string",
"description": "O campo de UTM term"
},
"utm_content": {
"type": "string",
"description": "O campo de UTM content"
},
"_link_pagamento": {
"type": "string",
"description": "O link que o cliente deve acessar para realizar o pagamento"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"526"
],
"description": "Id do item"
},
"pedido_id": {
"type": "string",
"enum": [
"200"
],
"description": "Ido do pedido"
},
"valor": {
"type": "string",
"enum": [
"60.00"
],
"description": "Valor desse item individualmente"
},
"produto_id": {
"type": "string",
"enum": [
"null"
],
"description": "Ido do produto"
},
"produto_tipo": {
"type": "string",
"enum": [
"passeio"
],
"description": "Tipo de produto: evento, combo, passeio ou produto"
},
"utilizado": {
"type": "string",
"enum": [
"0"
],
"description": "1 se já foi realizado o passeio"
},
"data_utilizacao": {
"type": "string",
"enum": [
"2020-08-05"
],
"description": "Data da realização do passeio"
},
"produto_disponibilidade_id": {
"type": "string",
"enum": [
"22642"
],
"description": "Id da disponibilidade"
},
"produto_preco_id": {
"type": "string",
"enum": [
"110"
],
"description": "Id do preço cobrado"
},
"quantidade": {
"type": "string",
"enum": [
"1"
],
"description": "Quantidade de pessoas nesse passeio"
},
"dados": {
"type": "string",
"enum": [
"..."
],
"description": "Dados extras a reséito do cliente"
},
"produto_preco_sazonal_id": {
"type": "string",
"enum": [
"null"
],
"description": "Id do preço sazonal"
},
"btms_num_reserva": {
"type": "string",
"enum": [
"null"
],
"description": "Id da reserva BTMS"
},
"nome_produto": {
"type": "string",
"enum": [
"Passeio de Trem"
],
"description": "O nome do produto ou passeio"
},
"formulario": {
"type": "array",
"items": {
"type": "object",
"properties": {
"chave": {
"type": "string",
"enum": [
"nome"
],
"description": "A chave que identifica o campo do formulário"
},
"valor": {
"type": "string",
"enum": [
"Alan Ferreira Pereira"
],
"description": "O valor preenchido no campo"
},
"label": {
"type": "string",
"enum": [
"Nome"
],
"description": "Uma label que identifica o campo"
},
"tipo": {
"type": "string",
"enum": [
"nome_completo"
],
"description": "O tipo do campo no catálogo de formulários inteligentes. Presente apenas em itens de formulário inteligente"
},
"valor_formatado": {
"type": "string",
"enum": [
"Alan Ferreira Pereira"
],
"description": "O valor formatado para exibição (datas em dd/mm/aaaa, CPF com máscara, etc). Presente apenas em itens de formulário inteligente"
}
},
"required": [
"chave",
"valor",
"label"
],
"additionalProperties": false
},
"description": "A lista de campos do formulário preenchido pelo cliente ou null em caso de não haver formulário"
},
"nome_utilizador": {
"type": "string",
"enum": [
"Nome do útilizador"
],
"description": "O nome do utilizador desse passeio ou produto"
},
"produto_disponibilidade_data": {
"type": "string",
"enum": [
"2022-03-31"
],
"description": "Data marcada para realização da atividade"
},
"produto_disponibilidade_hora": {
"type": "string",
"enum": [
"17:00 até 19:00"
],
"description": "Hora marcada para realização da atividade"
},
"voucher_code": {
"type": "string",
"enum": [
"59525165252"
],
"description": "Código único que identifica o voucher/ticket"
},
"produto_faixa_etaria_nome": {
"type": "string",
"enum": [
"Adulto"
],
"description": "Nome da faixa etária para esse voucher"
},
"produto_faixa_etaria_descricao": {
"type": "string",
"enum": [
"Acima de 18 anos"
],
"description": "Descrição da faixa etária para esse voucher"
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"enum": [
"Almoço"
],
"description": "O título do opcional incluso no voucher"
},
"valor": {
"type": "string",
"enum": [
"20.00"
],
"description": "O preço original do opcional incluso no voucher"
},
"desconto_cupom": {
"type": "string",
"enum": [
"5.00"
],
"description": "O desconto aplicado no opcional via cupom de desconto"
}
},
"required": [
"nome",
"valor",
"desconto_cupom"
],
"additionalProperties": false
},
"description": "A lista de opcionais inclusos no voucher"
}
},
"required": [
"id",
"pedido_id",
"valor",
"produto_id",
"produto_tipo",
"utilizado",
"data_utilizacao",
"produto_disponibilidade_id",
"produto_preco_id",
"quantidade",
"dados",
"produto_preco_sazonal_id",
"btms_num_reserva",
"nome_produto",
"formulario",
"nome_utilizador",
"produto_disponibilidade_data",
"produto_disponibilidade_hora",
"voucher_code",
"produto_faixa_etaria_nome",
"produto_faixa_etaria_descricao",
"opcionais"
],
"additionalProperties": false
},
"description": "A lista de itens do pedido"
},
"observacoes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"526"
],
"description": "Id da observação"
},
"observacao": {
"type": "string",
"enum": [
"Reserva feita com antecedência"
],
"description": "O texto da observação"
},
"data_hora": {
"type": "string",
"enum": [
"2023-12-25 09:00:00"
],
"description": "Data e hora em que a observação foi criada"
},
"operador_nome": {
"type": "string",
"enum": [
"Carlos Augusto"
],
"description": "O nome do operador que cadastrou a observação"
},
"operador_label": {
"type": "string",
"enum": [
"Administrador"
],
"description": "O nível de acesso do operador que cadastrou a observação (Administrador, Financeiro, Reservas, Atendimento, Afiliado)"
},
"operador_id": {
"type": "number",
"enum": [
1
],
"description": "O id que identifica o operador"
},
"parceiro_id": {
"type": "number",
"enum": [
1
],
"description": "O id que identifica o afiliado que cadastrou a observação caso tenha sido feito por um"
}
},
"required": [
"id",
"observacao",
"data_hora",
"operador_nome",
"operador_label",
"operador_id",
"parceiro_id"
],
"additionalProperties": false
},
"description": "A lista de observações do pedido"
},
"logsStatus": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"526"
],
"description": "Id do log"
},
"status": {
"type": "string",
"enum": [
"aprovado"
],
"description": "O status do pedido"
},
"data_hora": {
"type": "string",
"enum": [
"2023-12-25 09:00:00"
],
"description": "A data e hora em que o pedido teve seus status alterado"
},
"agente": {
"type": "string",
"enum": [
"Carlos Augusto"
],
"description": "O nome do operador realizou a atualização do status, podendo ser um sistema ou usuário"
},
"agente_tipo": {
"type": "string",
"enum": [
"Administrador"
],
"description": "Identificação do tipo de operador podendo ser Retorno Automático, Cliente ou Administrador"
}
},
"required": [
"id",
"status",
"data_hora",
"agente",
"agente_tipo"
],
"additionalProperties": false
},
"description": "A lista de status pelos quais o pedido passou"
},
"pagamento_detalhes": {
"type": "object",
"properties": {
"subtotal": {
"type": "number",
"description": "Valor original, antes das taxas"
},
"taxa_conveniencia": {
"type": "number",
"description": "Taxa de conveniencia aplicável em venda de eventos"
},
"desconto": {
"type": "number",
"description": "Desconto aplicado"
},
"juros_para_cliente": {
"type": "number",
"description": "Quanto o cliente pagou em Juros"
},
"total": {
"type": "number",
"description": "Total com juros"
},
"valor_parcela": {
"type": "number",
"description": "O valor da parcela"
},
"parcelas_pagamento": {
"type": "number",
"description": "O número de parcelas"
},
"sem_juros_ate": {
"type": "number",
"description": "No momento da reserva quantas parcelas estavam configuradas sem juros"
},
"tabela_juros": {
"type": "array",
"items": {
"type": "object",
"properties": {
"initial": {
"type": "number",
"enum": [
2
],
"description": "Número mínimo de parcelas onde essa taxa se aplica"
},
"final": {
"type": "number",
"enum": [
6
],
"description": "Número máximo de parcelas onde essa taxa se aplica"
},
"rate": {
"type": "number",
"enum": [
10
],
"description": "Porcentagem de taxa de juros"
}
},
"required": [
"initial",
"final",
"rate"
],
"additionalProperties": false
},
"description": "A tabela de juros no momento da venda"
},
"pix_emv": {
"type": "string",
"description": "O código PIX para pagar, pode ser usando como copia e cola, ou pode ser transformado em qrCode"
}
},
"required": [
"tabela_juros"
]
}
},
"required": [
"itens",
"observacoes",
"logsStatus"
]
}Registrando Pedidos ¶
Para registrar um pedido no Paytour serão necessárias as informações dos passeios a serem realizados, além de informações a respeito do cupom de desconto (se aplicado), sobre a forma de pagamento e sobre o cliente realizando o pedido.
Do cliente serão necessárias as seguintes informações: Nome completo, se é estrangeiro, número de telefone, E-mail, CPF (não estrangeiro) ou passaporte (estrangeiro).
Note que o corpo da requisição deve estar em form-data e não em json
Link para pagamento
O campo metodo_pagamento deve ser passado como PAYMENT_LINK para que no retorno da API o campo _link_pagamento esteja presente.
Ao acessar o link contido no campo _link_pagamento o cliente poderá realizar o pagamento do pedido criado.
Os formulários devem ser configurados combo posterior_todos. Se você é loja beta tem o formulário intelige nessa documentação.
Processar via API
O campo metodo_pagamento deve ser passado como CHECKOUT_API para que o endpoint de processamento de pedidos possa ser usado.
Ao registrar o pedido com esse método, será possível processar o pagamento via API.
Formulários inteligentes
Atividades, eventos e combos com formulário inteligente aceitam o preenchimento já no registro do pedido. Os formulários, os campos (campo_id) e quantos preenchimentos enviar estão em GET /passeios/{id}/formulario.
-
Atividades e eventos: cada faixa etária envia
formularios, um{campos: [{campo_id, campo_valor}]}por pessoa daquela faixa, na ordem das pessoas (verFaixaEtariaPayloadData). Em ingressos de casadinha, envie também um item por pessoa, com as respostas dos formulários de todos os dias do pacote: cada ingresso do pacote recebe os campos do seu formulário. -
Combos: cada atividade em
atividadesenviaformularios, um{faixa_etaria_id, campos}por passageiro (verFormularioComboPreenchimentoPayloadData). Atividades sem formulário inteligente não enviam nada.
Datas aceitam YYYY-MM-DD ou DD/MM/YYYY, data e hora YYYY-MM-DD HH:MM ou DD/MM/YYYY HH:MM e hora HH:MM, sempre com dois dígitos no dia, no mês, na hora e nos minutos. Datas que não existem (como 31/02/2020) são recusadas. Campos compostos (endereço, múltipla escolha) recebem o valor em JSON serializado.
As respostas são validadas com as mesmas regras da loja (obrigatoriedade, regras dos campos e não-repetição entre pessoas). Ao enviar formularios, todas as pessoas que precisam preencher devem vir preenchidas. Qualquer erro retorna 400 com a lista errors e o pedido não é criado.
Sem o campo formularios, o pedido é criado com os formulários pendentes e o link de preenchimento é retornado em formularios_link. Disponível para lojas com formulários inteligentes habilitados; nas demais, formularios é ignorado.
Diferença entre pedido de Passeio/Evento e Combo
Existem diferenças importantes nos requests para realizar a compra de um passeio/evento e um combo. Passeios e Eventos seguem a mesma estrutura de request, enquanto a compra de um Combo possui uma estrutura diferente.
Registrar PedidoPOST/pedidos
Example URI
Passeios ou EventosHeaders
Authorization: Bearer <authorization-token>
Content-Type: multipart/form-dataBody
{
"metodo_pagamento": "PAYMENT_LINK",
"metodo_pagamento_externo": "dinheiro",
"numero_parcelas": 12,
"valor_parcela": "42.50",
"afiliado_id": 123,
"parceiro_id": 123,
"itens": [
{
"id": "626",
"disponibilidade": {
"id": "807363",
"faixas_etarias": [
{
"id": "3466",
"preco": "150.0",
"quantidade": 1,
"opcionais": [
{
"id": "99",
"quantidade": 1
}
],
"formularios": [
{
"campos": [
{
"campo_id": 12,
"campo_valor": "João da Silva"
}
]
}
]
}
]
}
}
],
"cupom": {
"codigo_cupom": "CARNAVAL10"
},
"cliente": {
"nome": "João Carlos da Silva",
"email": "[email protected]",
"documento": "15658922243",
"estrangeiro": false,
"telefone": "(84) 999999999",
"ddi": "55",
"cep": "00000-000",
"cidade": "Natal",
"pais": "BRA",
"uf": "RN"
}
}Schema
{
"type": "object",
"properties": {
"metodo_pagamento": {
"type": "string",
"description": "Valores possíveis: PAYMENT_LINK, CREDIT_CARD, DEBIT_CARD, ON_DAY, MONEY, CHECKOUT_API, EXTERNAL"
},
"metodo_pagamento_externo": {
"type": "string",
"description": "Apenas para método EXTERNAL. Valores possíveis: dinheiro, cartao_credito, cartao_debito, pix, outros"
},
"numero_parcelas": {
"type": "number",
"description": "até 12, mas só pode ser maior que 1 no caso de metodo_pagamento: CREDIT_CARD"
},
"valor_parcela": {
"type": "string",
"description": "O valor cobrado por cada percela quando parcelado"
},
"afiliado_id": {
"type": "number",
"description": "O id do afiliado que fez a indição da venda"
},
"parceiro_id": {
"type": "number",
"description": "O id do parceiro que fez a venda"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O Id do passeio ou Evento"
},
"disponibilidade": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O Id da disponibilidade a ser usada"
},
"faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O Id da faixa etária"
},
"preco": {
"type": "string",
"description": "O preço a ser cobrado"
},
"quantidade": {
"type": "number",
"description": "Quantas pessoas dessa faixa etária vão fazer esse passeio"
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O ID do opcional"
},
"quantidade": {
"type": "number",
"description": "Quantas pessoas devem receber esse opcional"
}
}
},
"description": "Os opcionais selecionados"
},
"formularios": {
"type": "array",
"items": {
"type": "object",
"properties": {
"campos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"campo_id": {
"type": "number",
"description": "O id do campo do formulário inteligente, como em `campos[].id` de `GET /passeios/{id}/formulario`"
},
"campo_valor": {
"type": "string",
"description": "O valor da resposta (datas em `YYYY-MM-DD` ou `DD/MM/YYYY`, data e hora em `YYYY-MM-DD HH:MM` ou `DD/MM/YYYY HH:MM`, hora em `HH:MM`; datas que não existem são recusadas; campos compostos usam JSON serializado)"
}
}
},
"description": "As respostas dos campos do formulário inteligente"
}
}
},
"description": "Preenchimento dos formulários inteligentes (atividades e eventos): um item por pessoa dessa faixa etária, na ordem das pessoas. Em ingressos de casadinha, também um item por pessoa, com os campos dos formulários de todos os dias do pacote. Veja `GET /passeios/{id}/formulario`"
}
}
},
"description": "As faixas etárias das pessoas que vão ao passeio"
}
},
"description": "A disponibilidade selecionada"
}
}
},
"description": "Os itens (passeios/Evento) desse pedido"
},
"cupom": {
"type": "object",
"properties": {
"codigo_cupom": {
"type": "string",
"description": "O Código do cupom de desconto"
}
},
"description": "O cupom aplicado ou null caso não tenha cupom"
},
"cliente": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Nome Completo"
},
"email": {
"type": "string",
"description": "E-Mail do Cliente"
},
"documento": {
"type": "string",
"description": "CPF ou Passaporte"
},
"estrangeiro": {
"type": "boolean",
"description": "Se é ou não estrangeiro"
},
"telefone": {
"type": "string",
"description": "O Telefone para contato do Cliente"
},
"ddi": {
"type": "string",
"description": "O DDI do Cliente"
},
"cep": {
"type": "string",
"description": "O CEP do Cliente"
},
"cidade": {
"type": "string",
"description": "A Cidade do Cliente"
},
"pais": {
"type": "string",
"description": "O código do país no padrão ISO 3166-1-alpha-3"
},
"uf": {
"type": "string",
"description": "O Estado do Cliente"
}
},
"description": "Dados do cliente"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}CombosHeaders
Authorization: Bearer <authorization-token>
Content-Type: multipart/form-dataBody
{
"metodo_pagamento": "PAYMENT_LINK",
"metodo_pagamento_externo": "dinheiro",
"numero_parcelas": 12,
"valor_parcela": "42.50",
"afiliado_id": 123,
"parceiro_id": 123,
"itens": [
{
"id": "700",
"atividades": [
{
"id": "782",
"data": "2025-03-30",
"disponibilidade": "807363",
"opcionais": [
{
"id": "99",
"quantidade": 1
}
],
"formularios": [
{
"faixa_etaria_id": "3466",
"campos": [
{
"campo_id": 12,
"campo_valor": "João da Silva"
}
]
}
]
}
],
"faixas_etarias": [
{
"id": "3466",
"quantidade": 1
}
]
}
],
"cupom": {
"codigo_cupom": "CARNAVAL10"
},
"cliente": {
"nome": "João Carlos da Silva",
"email": "[email protected]",
"documento": "15658922243",
"estrangeiro": false,
"telefone": "(84) 999999999",
"ddi": "55",
"cep": "00000-000",
"cidade": "Natal",
"pais": "BRA",
"uf": "RN"
}
}Schema
{
"type": "object",
"properties": {
"metodo_pagamento": {
"type": "string",
"description": "Valores possíveis: PAYMENT_LINK, CREDIT_CARD, DEBIT_CARD, ON_DAY, MONEY, CHECKOUT_API, EXTERNAL"
},
"metodo_pagamento_externo": {
"type": "string",
"description": "Apenas para método EXTERNAL. Valores possíveis: dinheiro, cartao_credito, cartao_debito, pix, outros"
},
"numero_parcelas": {
"type": "number",
"description": "até 12, mas só pode ser maior que 1 no caso de metodo_pagamento: CREDIT_CARD"
},
"valor_parcela": {
"type": "string",
"description": "O valor cobrado por cada percela quando parcelado"
},
"afiliado_id": {
"type": "number",
"description": "O id do afiliado que fez a indição da venda"
},
"parceiro_id": {
"type": "number",
"description": "O id do parceiro que fez a venda"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O Id do Combo"
},
"atividades": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O Id do passeio"
},
"data": {
"type": "string",
"description": "A data do passeio"
},
"disponibilidade": {
"type": "string",
"description": "O id da disponibilidade do passeio"
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O ID do opcional"
},
"quantidade": {
"type": "number",
"description": "Quantas pessoas devem receber esse opcional"
}
}
},
"description": "Os opcionais selecionados"
},
"formularios": {
"type": "array",
"items": {
"type": "object",
"properties": {
"faixa_etaria_id": {
"type": "string",
"description": "A faixa etária do combo: o mesmo id usado em `faixas_etarias[].id` ou a classificação (`faixa_etaria_id` da consulta do formulário). Pode ser omitido quando o combo tem uma só faixa etária"
},
"campos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"campo_id": {
"type": "number",
"description": "O id do campo do formulário inteligente, como em `campos[].id` de `GET /passeios/{id}/formulario`"
},
"campo_valor": {
"type": "string",
"description": "O valor da resposta (datas em `YYYY-MM-DD` ou `DD/MM/YYYY`, data e hora em `YYYY-MM-DD HH:MM` ou `DD/MM/YYYY HH:MM`, hora em `HH:MM`; datas que não existem são recusadas; campos compostos usam JSON serializado)"
}
}
},
"description": "As respostas dos campos do formulário inteligente"
}
}
},
"description": "Preenchimento do formulário inteligente desta atividade do combo: um item por passageiro, na ordem dos passageiros"
}
}
},
"description": "A disponibilidade selecionada"
},
"faixas_etarias": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "O Id da faixa etária"
},
"quantidade": {
"type": "number",
"description": "Quantas pessoas dessa faixa etária vão fazer esse passeio"
}
}
},
"description": "As faixas etárias"
}
}
},
"description": "Os itens (Combos) desse pedido"
},
"cupom": {
"type": "object",
"properties": {
"codigo_cupom": {
"type": "string",
"description": "O Código do cupom de desconto"
}
},
"description": "O cupom aplicado ou null caso não tenha cupom"
},
"cliente": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Nome Completo"
},
"email": {
"type": "string",
"description": "E-Mail do Cliente"
},
"documento": {
"type": "string",
"description": "CPF ou Passaporte"
},
"estrangeiro": {
"type": "boolean",
"description": "Se é ou não estrangeiro"
},
"telefone": {
"type": "string",
"description": "O Telefone para contato do Cliente"
},
"ddi": {
"type": "string",
"description": "O DDI do Cliente"
},
"cep": {
"type": "string",
"description": "O CEP do Cliente"
},
"cidade": {
"type": "string",
"description": "A Cidade do Cliente"
},
"pais": {
"type": "string",
"description": "O código do país no padrão ISO 3166-1-alpha-3"
},
"uf": {
"type": "string",
"description": "O Estado do Cliente"
}
},
"description": "Dados do cliente"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}201Headers
Content-Type: application/jsonBody
{
"id": "200",
"loja_id": "468",
"valor": "170.00",
"desconto": "0.00",
"cliente_nome": "João Carlos da Silva",
"cliente_email": "[email protected]",
"cliente_cpf": "15658922243",
"cliente_celular": "(84) 999999999",
"cliente_telefone": "(84) 999999999",
"cliente_ddi": "+55",
"cliente_cep": "00000-000",
"cliente_endereco": "Rua São Carlos",
"cliente_complemento": "Próxima ao posto",
"cliente_numero": "19",
"cliente_bairro": "Ana Vieira",
"cliente_cidade": "Natal",
"cliente_uf": "RN",
"cliente_pais": "BRA",
"cliente_estrangeiro": 0,
"data_hora_pedido": "2020-08-01 09:47:39",
"data_hora_atualizacao": "2020-08-01 09:47:39",
"status": "aprovado",
"status_pagseguro": "aprovado",
"pagseguro_transacao_id": "as54s58",
"metodo_pagamento": "dinheiro",
"metodo_pagamento_externo": "dinheiro",
"transacao_id": "5484as-as4554-sas4d-54",
"status_pagamento": "pago",
"cupom_id": "415",
"afiliado_id": "454",
"afiliado_comissao": "45.00",
"afiliado_data_hora_clique": "2020-08-01 09:45:00",
"parceiro_id": "415",
"parceiro_comissao": "45.00",
"parcelas_pagamento": 1,
"bandeira_pagamento": "visa",
"final_cartao_pagamento": "9999",
"bin_cartao_pagamento": "999999",
"tipo_pagamento": "creditCard",
"transacao_erro_codigo": "1",
"transacao_erro_mensagem": "Cartão recusado",
"pagamento_extras": "null",
"hospedagem_tipo": "null",
"hospedagem_valor": "null",
"pagamento_pendente": "1",
"pagamento_pendente_valor": "40.00",
"pagamento_pendente_data_limite": "2020-08-01",
"pagamento_pendente_pago_em": "2020-08-01",
"selecionar_pagamento_ate": "2020-08-01 10:00:00",
"deposito_codigo": "6595",
"deposito_data_pagamento": "2020-08-01",
"assinatura": "null",
"observacao": "null",
"operador_id": "48",
"loja_afiliado_id": 42,
"utm_source": "xxx",
"utm_medium": "xxx",
"utm_campaign": "xxx",
"utm_term": "xxx",
"utm_content": "xxx",
"_link_pagamento": "https//example.com.br/pagamento",
"formularios_link": "https://minhaloja.paytour.com.br/...",
"items": [
{
"id": "526",
"pedido_id": "200",
"valor": "60.00",
"produto_id": "null",
"utilizado": "0",
"data_utilizacao": "2020-08-05",
"produto_disponibilidade_id": "22642",
"produto_preco_id": "110",
"quantidade": "1",
"dados": "...",
"produto_preco_sazonal_id": "null",
"btms_num_reserva": "null",
"produto_disponibilidade_data": "2022-03-31",
"produto_disponibilidade_hora": "17:00 até 19:00",
"voucher_code": "59525165252",
"produto_faixa_etaria_nome": "Adulto",
"produto_faixa_etaria_descricao": "Acima de 18 anos",
"opcionais": [
{
"nome": "Almoço",
"valor": "20.00",
"desconto_cupom": "5.00"
}
]
}
],
"observacoes": [
{
"id": "526",
"observacao": "Reserva feita com antecedência",
"data_hora": "2023-12-25 09:00:00",
"operador_nome": "Carlos Augusto",
"operador_label": "Administrador",
"operador_id": 1,
"parceiro_id": 1
}
],
"logsStatus": [
{
"id": "526",
"status": "aprovado",
"data_hora": "2023-12-25 09:00:00",
"agente": "Carlos Augusto",
"agente_tipo": "Administrador"
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identificação única desse pedido"
},
"loja_id": {
"type": "string",
"description": "Identificação única da loja"
},
"valor": {
"type": "string",
"description": "Valor total do pedido"
},
"desconto": {
"type": "string",
"description": "Valor do desconto aplicado no pedido"
},
"cliente_nome": {
"type": "string",
"description": "Nome do Cliente"
},
"cliente_email": {
"type": "string",
"description": "Email do Cliente"
},
"cliente_cpf": {
"type": "string",
"description": "Documento do Cliente"
},
"cliente_celular": {
"type": "string",
"description": "Celular do Cliente"
},
"cliente_telefone": {
"type": "string",
"description": "Telefone do Cliente"
},
"cliente_ddi": {
"type": "string",
"description": "DDI do Cliente"
},
"cliente_cep": {
"type": "string",
"description": "Cep do Endereço"
},
"cliente_endereco": {
"type": "string",
"description": "Rua do Endereço"
},
"cliente_complemento": {
"type": "string",
"description": "Complemento do Endereço"
},
"cliente_numero": {
"type": "string",
"description": "Número do Endereço"
},
"cliente_bairro": {
"type": "string",
"description": "Bairro do Endereço"
},
"cliente_cidade": {
"type": "string",
"description": "Cidade do Endereço"
},
"cliente_uf": {
"type": "string",
"description": "Estado do Endereço"
},
"cliente_pais": {
"type": "string",
"description": "O código do país no padrão ISO 3166-1-alpha-3"
},
"cliente_estrangeiro": {
"type": "number",
"description": "1 se é estrangeiro"
},
"data_hora_pedido": {
"type": "string",
"description": "A data e hora do pedido no formato YYYY-MM-DD HH:mm:ss"
},
"data_hora_atualizacao": {
"type": "string",
"description": "A data e hora que o pedido foi editado pela última vez, no formato YYYY-MM-DD HH:mm:ss"
},
"status": {
"type": "string",
"description": "O status do pedido"
},
"status_pagseguro": {
"type": "string",
"description": "O status informado, quando pagamento feito pelo Pagseguro"
},
"pagseguro_transacao_id": {
"type": "string",
"description": "Id da transação feita no pagseguro"
},
"metodo_pagamento": {
"type": "string",
"description": "O método de pagamento"
},
"metodo_pagamento_externo": {
"type": "string",
"description": "O método de pagamento, quando feito por fora do sistema"
},
"transacao_id": {
"type": "string",
"description": "O id da transação de cartão de crédito"
},
"status_pagamento": {
"type": "string",
"description": "O status do pagamento desse pedido"
},
"cupom_id": {
"type": "string",
"description": "O id do cupom, quando aplicado"
},
"afiliado_id": {
"type": "string",
"description": "Id do afiliado da loja associado a venda"
},
"afiliado_comissao": {
"type": "string",
"description": "Valor a ser repassado ao afiliado"
},
"afiliado_data_hora_clique": {
"type": "string",
"description": "A data e hora do clique no link"
},
"parceiro_id": {
"type": "string",
"description": "O id do parceiro responsável pela venda"
},
"parceiro_comissao": {
"type": "string",
"description": "Valor a ser repassado ao parceiro"
},
"parcelas_pagamento": {
"type": "number",
"description": "O número de parcelas"
},
"bandeira_pagamento": {
"type": "string",
"description": "Bandeira do cartão usado"
},
"final_cartao_pagamento": {
"type": "string",
"description": "Final do cartão usado"
},
"bin_cartao_pagamento": {
"type": "string",
"description": "BIN do cartão usado"
},
"tipo_pagamento": {
"type": "string",
"description": "Método de pagamento"
},
"transacao_erro_codigo": {
"type": "string",
"description": "O código do erro na transação"
},
"transacao_erro_mensagem": {
"type": "string",
"description": "A mensagem de erro na transação"
},
"pagamento_extras": {
"type": "string",
"description": "Informações adicionais do pagamento"
},
"hospedagem_tipo": {
"type": "string",
"description": "Tipo de hospedagem do cliente"
},
"hospedagem_valor": {
"type": "string",
"description": "Valor pago pela hospedagem"
},
"pagamento_pendente": {
"type": "string",
"description": "1 se ainda tem pagamento pendente"
},
"pagamento_pendente_valor": {
"type": "string",
"description": "Valor ainda pendente a ser pago"
},
"pagamento_pendente_data_limite": {
"type": "string",
"description": "Data máxima para que o valor pendente seja pago"
},
"pagamento_pendente_pago_em": {
"type": "string",
"description": "Data do pagamento do valor pendente"
},
"selecionar_pagamento_ate": {
"type": "string",
"description": "Data máxima para que o link seja acessado e pago"
},
"deposito_codigo": {
"type": "string",
"description": "Número da transação do depósito do valor pendente"
},
"deposito_data_pagamento": {
"type": "string",
"description": "Data do pagamento do valor pendente por depósito"
},
"assinatura": {
"type": "string",
"description": "Assinatura do pedido"
},
"observacao": {
"type": "string",
"description": "Observação cadastrada no momento da venda"
},
"operador_id": {
"type": "string",
"description": "Id do usuário que realizou o pedido"
},
"loja_afiliado_id": {
"type": "number",
"description": "O id do afiliado na loja, ou null caso o pedido não tenha afiliado associado"
},
"utm_source": {
"type": "string",
"description": "O campo de UTM source"
},
"utm_medium": {
"type": "string",
"description": "O campo de UTM medium"
},
"utm_campaign": {
"type": "string",
"description": "O campo de UTM campaign"
},
"utm_term": {
"type": "string",
"description": "O campo de UTM term"
},
"utm_content": {
"type": "string",
"description": "O campo de UTM content"
},
"_link_pagamento": {
"type": "string",
"description": "O link que o cliente deve acessar para realizar o pagamento"
},
"formularios_link": {
"type": "string",
"description": "O link para o cliente preencher os formulários pendentes, ou null quando nenhum item tem formulário pendente"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"526"
],
"description": "Id do item"
},
"pedido_id": {
"type": "string",
"enum": [
"200"
],
"description": "Ido do pedido"
},
"valor": {
"type": "string",
"enum": [
"60.00"
],
"description": "Valor desse item individualmente"
},
"produto_id": {
"type": "string",
"enum": [
"null"
],
"description": "Ido do produto"
},
"utilizado": {
"type": "string",
"enum": [
"0"
],
"description": "1 se já foi realizado o passeio"
},
"data_utilizacao": {
"type": "string",
"enum": [
"2020-08-05"
],
"description": "Data da realização do passeio"
},
"produto_disponibilidade_id": {
"type": "string",
"enum": [
"22642"
],
"description": "Id da disponibilidade"
},
"produto_preco_id": {
"type": "string",
"enum": [
"110"
],
"description": "Id do preço cobrado"
},
"quantidade": {
"type": "string",
"enum": [
"1"
],
"description": "Quantidade de pessoas nesse passeio"
},
"dados": {
"type": "string",
"enum": [
"..."
],
"description": "Dados extras a reséito do cliente"
},
"produto_preco_sazonal_id": {
"type": "string",
"enum": [
"null"
],
"description": "Id do preço sazonal"
},
"btms_num_reserva": {
"type": "string",
"enum": [
"null"
],
"description": "Id da reserva BTMS"
},
"produto_disponibilidade_data": {
"type": "string",
"enum": [
"2022-03-31"
],
"description": "Data marcada para realização da atividade"
},
"produto_disponibilidade_hora": {
"type": "string",
"enum": [
"17:00 até 19:00"
],
"description": "Hora marcada para realização da atividade"
},
"voucher_code": {
"type": "string",
"enum": [
"59525165252"
],
"description": "Código único que identifica o voucher/ticket"
},
"produto_faixa_etaria_nome": {
"type": "string",
"enum": [
"Adulto"
],
"description": "Nome da faixa etária para esse voucher"
},
"produto_faixa_etaria_descricao": {
"type": "string",
"enum": [
"Acima de 18 anos"
],
"description": "Descrição da faixa etária para esse voucher"
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"enum": [
"Almoço"
],
"description": "O título do opcional incluso no voucher"
},
"valor": {
"type": "string",
"enum": [
"20.00"
],
"description": "O preço original do opcional incluso no voucher"
},
"desconto_cupom": {
"type": "string",
"enum": [
"5.00"
],
"description": "O desconto aplicado no opcional via cupom de desconto"
}
},
"required": [
"nome",
"valor",
"desconto_cupom"
],
"additionalProperties": false
},
"description": "A lista de opcionais inclusos no voucher"
}
},
"required": [
"id",
"pedido_id",
"valor",
"produto_id",
"utilizado",
"data_utilizacao",
"produto_disponibilidade_id",
"produto_preco_id",
"quantidade",
"dados",
"produto_preco_sazonal_id",
"btms_num_reserva",
"produto_disponibilidade_data",
"produto_disponibilidade_hora",
"voucher_code",
"produto_faixa_etaria_nome",
"produto_faixa_etaria_descricao",
"opcionais"
],
"additionalProperties": false
},
"description": "A lista de itens do pedido"
},
"observacoes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"526"
],
"description": "Id da observação"
},
"observacao": {
"type": "string",
"enum": [
"Reserva feita com antecedência"
],
"description": "O texto da observação"
},
"data_hora": {
"type": "string",
"enum": [
"2023-12-25 09:00:00"
],
"description": "Data e hora em que a observação foi criada"
},
"operador_nome": {
"type": "string",
"enum": [
"Carlos Augusto"
],
"description": "O nome do operador que cadastrou a observação"
},
"operador_label": {
"type": "string",
"enum": [
"Administrador"
],
"description": "O nível de acesso do operador que cadastrou a observação (Administrador, Financeiro, Reservas, Atendimento, Afiliado)"
},
"operador_id": {
"type": "number",
"enum": [
1
],
"description": "O id que identifica o operador"
},
"parceiro_id": {
"type": "number",
"enum": [
1
],
"description": "O id que identifica o afiliado que cadastrou a observação caso tenha sido feito por um"
}
},
"required": [
"id",
"observacao",
"data_hora",
"operador_nome",
"operador_label",
"operador_id",
"parceiro_id"
],
"additionalProperties": false
},
"description": "A lista de observações do pedido"
},
"logsStatus": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"526"
],
"description": "Id do log"
},
"status": {
"type": "string",
"enum": [
"aprovado"
],
"description": "O status do pedido"
},
"data_hora": {
"type": "string",
"enum": [
"2023-12-25 09:00:00"
],
"description": "A data e hora em que o pedido teve seus status alterado"
},
"agente": {
"type": "string",
"enum": [
"Carlos Augusto"
],
"description": "O nome do operador realizou a atualização do status, podendo ser um sistema ou usuário"
},
"agente_tipo": {
"type": "string",
"enum": [
"Administrador"
],
"description": "Identificação do tipo de operador podendo ser Retorno Automático, Cliente ou Administrador"
}
},
"required": [
"id",
"status",
"data_hora",
"agente",
"agente_tipo"
],
"additionalProperties": false
},
"description": "A lista de status pelos quais o pedido passou"
}
},
"required": [
"items",
"observacoes",
"logsStatus"
]
}400Preenchimento de formulário inteligente inválido. O pedido não é criado.
Headers
Content-Type: application/jsonBody
{
"message": "Invalid request",
"code": 4,
"errors": [
"Ticket 1: O campo \"CPF\" é obrigatório."
]
}Aprovando Pedidos ¶
Uma vez registrado, um pedido pode ter seu status alterado.
A mudança de status mais comum a se realizar é a de aprovação do pedido. Uma vez registrado é possível aprovar (ou realizar outra mudança) o pedido conforme abaixo.
Estornar pagamento
Se o novo status do Pedido for de cancelado, é possível enviar também o campo cancel_on_gateway,
podendo ser 1 ou 0. Se o campo não for enviado, será considerado o comportamento padrão configurado
no gateway pela interface do Paytour. Caso seja enviado, e o gateway usado na reserva esteja
configurado para decidir por reserva, então o valor desse campo servirá para decidir se o pagamento deve ser estornado ou não junto ao Gateway.
Aprovar PedidoPUT/pedidos/{id}/atualizar-status
Example URI
- id
int(required) Example: 5496O Id do pedido
Headers
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer <authorization-token>Body
{
"status": "aprovado",
"cancel_on_gateway": "1"
}Schema
{
"type": "object",
"properties": {
"status": {
"enum": [
"aprovado",
"pendente",
"aprovado_pagamento_pendente",
"reprovado",
"cancelado",
"aguardando_pagamento"
],
"description": "O Status Desejado"
},
"cancel_on_gateway": {
"type": "string",
"description": "1 para estornar a compra no gateway, 0 para não estornar, em branco para usar o comportamento padrão"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": "200",
"loja_id": "468",
"valor": "170.00",
"desconto": "0.00",
"cliente_nome": "João Carlos da Silva",
"cliente_email": "[email protected]",
"cliente_cpf": "15658922243",
"cliente_celular": "(84) 999999999",
"cliente_telefone": "(84) 999999999",
"cliente_ddi": "+55",
"cliente_cep": "00000-000",
"cliente_endereco": "Rua São Carlos",
"cliente_complemento": "Próxima ao posto",
"cliente_numero": "19",
"cliente_bairro": "Ana Vieira",
"cliente_cidade": "Natal",
"cliente_uf": "RN",
"cliente_pais": "BRA",
"cliente_estrangeiro": 0,
"data_hora_pedido": "2020-08-01 09:47:39",
"data_hora_atualizacao": "2020-08-01 09:47:39",
"status": "aprovado",
"status_pagseguro": "aprovado",
"pagseguro_transacao_id": "as54s58",
"metodo_pagamento": "dinheiro",
"metodo_pagamento_externo": "dinheiro",
"transacao_id": "5484as-as4554-sas4d-54",
"status_pagamento": "pago",
"cupom_id": "415",
"afiliado_id": "454",
"afiliado_comissao": "45.00",
"afiliado_data_hora_clique": "2020-08-01 09:45:00",
"parceiro_id": "415",
"parceiro_comissao": "45.00",
"parcelas_pagamento": 1,
"bandeira_pagamento": "visa",
"final_cartao_pagamento": "9999",
"bin_cartao_pagamento": "999999",
"tipo_pagamento": "creditCard",
"transacao_erro_codigo": "1",
"transacao_erro_mensagem": "Cartão recusado",
"pagamento_extras": "null",
"hospedagem_tipo": "null",
"hospedagem_valor": "null",
"pagamento_pendente": "1",
"pagamento_pendente_valor": "40.00",
"pagamento_pendente_data_limite": "2020-08-01",
"pagamento_pendente_pago_em": "2020-08-01",
"deposito_codigo": "6595",
"deposito_data_pagamento": "2020-08-01",
"assinatura": "null",
"observacao": "null",
"operador_id": "48",
"loja_afiliado_id": 42,
"utm_source": "xxx",
"utm_medium": "xxx",
"utm_campaign": "xxx",
"utm_term": "xxx",
"utm_content": "xxx",
"_link_pagamento": "https//example.com.br/pagamento",
"itens": [
{
"id": "526",
"pedido_id": "200",
"valor": "60.00",
"produto_id": "null",
"produto_tipo": "passeio",
"utilizado": "0",
"data_utilizacao": "2020-08-05",
"produto_disponibilidade_id": "22642",
"produto_preco_id": "110",
"quantidade": "1",
"dados": "...",
"produto_preco_sazonal_id": "null",
"btms_num_reserva": "null",
"nome_produto": "Passeio de Trem",
"formulario": [
{
"chave": "nome",
"valor": "Alan Ferreira Pereira",
"label": "Nome",
"tipo": "nome_completo",
"valor_formatado": "Alan Ferreira Pereira"
}
],
"nome_utilizador": "Nome do útilizador",
"produto_disponibilidade_data": "2022-03-31",
"produto_disponibilidade_hora": "17:00 até 19:00",
"voucher_code": "59525165252",
"produto_faixa_etaria_nome": "Adulto",
"produto_faixa_etaria_descricao": "Acima de 18 anos",
"opcionais": [
{
"nome": "Almoço",
"valor": "20.00",
"desconto_cupom": "5.00"
}
]
}
],
"observacoes": [
{
"id": "526",
"observacao": "Reserva feita com antecedência",
"data_hora": "2023-12-25 09:00:00",
"operador_nome": "Carlos Augusto",
"operador_label": "Administrador",
"operador_id": 1,
"parceiro_id": 1
}
],
"logsStatus": [
{
"id": "526",
"status": "aprovado",
"data_hora": "2023-12-25 09:00:00",
"agente": "Carlos Augusto",
"agente_tipo": "Administrador"
}
],
"pagamento_detalhes": {
"subtotal": 100,
"taxa_conveniencia": 5,
"desconto": 0,
"juros_para_cliente": 10,
"total": 110,
"valor_parcela": 10,
"parcelas_pagamento": 11,
"sem_juros_ate": 5,
"tabela_juros": [
{
"initial": 2,
"final": 6,
"rate": 10
}
],
"pix_emv": "00020101021226850014br.gov.bcb.pix..."
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identificação única desse pedido"
},
"loja_id": {
"type": "string",
"description": "Identificação única da loja"
},
"valor": {
"type": "string",
"description": "Valor total do pedido"
},
"desconto": {
"type": "string",
"description": "Valor do desconto aplicado no pedido"
},
"cliente_nome": {
"type": "string",
"description": "Nome do Cliente"
},
"cliente_email": {
"type": "string",
"description": "Email do Cliente"
},
"cliente_cpf": {
"type": "string",
"description": "Documento do Cliente"
},
"cliente_celular": {
"type": "string",
"description": "Celular do Cliente"
},
"cliente_telefone": {
"type": "string",
"description": "Telefone do Cliente"
},
"cliente_ddi": {
"type": "string",
"description": "DDI do Cliente"
},
"cliente_cep": {
"type": "string",
"description": "Cep do Endereço"
},
"cliente_endereco": {
"type": "string",
"description": "Rua do Endereço"
},
"cliente_complemento": {
"type": "string",
"description": "Complemento do Endereço"
},
"cliente_numero": {
"type": "string",
"description": "Número do Endereço"
},
"cliente_bairro": {
"type": "string",
"description": "Bairro do Endereço"
},
"cliente_cidade": {
"type": "string",
"description": "Cidade do Endereço"
},
"cliente_uf": {
"type": "string",
"description": "Estado do Endereço"
},
"cliente_pais": {
"type": "string",
"description": "O código do país no padrão ISO 3166-1-alpha-3"
},
"cliente_estrangeiro": {
"type": "number",
"description": "1 se é estrangeiro"
},
"data_hora_pedido": {
"type": "string",
"description": "A data e hora do pedido no formato YYYY-MM-DD HH:mm:ss"
},
"data_hora_atualizacao": {
"type": "string",
"description": "A data e hora que o pedido foi editado pela última vez, no formato YYYY-MM-DD HH:mm:ss"
},
"status": {
"type": "string",
"description": "O status do pedido"
},
"status_pagseguro": {
"type": "string",
"description": "O status informado, quando pagamento feito pelo Pagseguro"
},
"pagseguro_transacao_id": {
"type": "string",
"description": "Id da transação feita no pagseguro"
},
"metodo_pagamento": {
"type": "string",
"description": "O método de pagamento"
},
"metodo_pagamento_externo": {
"type": "string",
"description": "O método de pagamento, quando feito por fora do sistema"
},
"transacao_id": {
"type": "string",
"description": "O id da transação de cartão de crédito"
},
"status_pagamento": {
"type": "string",
"description": "O status do pagamento desse pedido"
},
"cupom_id": {
"type": "string",
"description": "O id do cupom, quando aplicado"
},
"afiliado_id": {
"type": "string",
"description": "Id do afiliado da loja associado a venda"
},
"afiliado_comissao": {
"type": "string",
"description": "Valor a ser repassado ao afiliado"
},
"afiliado_data_hora_clique": {
"type": "string",
"description": "A data e hora do clique no link"
},
"parceiro_id": {
"type": "string",
"description": "O id do parceiro responsável pela venda"
},
"parceiro_comissao": {
"type": "string",
"description": "Valor a ser repassado ao parceiro"
},
"parcelas_pagamento": {
"type": "number",
"description": "O número de parcelas"
},
"bandeira_pagamento": {
"type": "string",
"description": "Bandeira do cartão usado"
},
"final_cartao_pagamento": {
"type": "string",
"description": "Final do cartão usado"
},
"bin_cartao_pagamento": {
"type": "string",
"description": "BIN do cartão usado"
},
"tipo_pagamento": {
"type": "string",
"description": "Método de pagamento"
},
"transacao_erro_codigo": {
"type": "string",
"description": "O código do erro na transação"
},
"transacao_erro_mensagem": {
"type": "string",
"description": "A mensagem de erro na transação"
},
"pagamento_extras": {
"type": "string",
"description": "Informações adicionais do pagamento"
},
"hospedagem_tipo": {
"type": "string",
"description": "Tipo de hospedagem do cliente"
},
"hospedagem_valor": {
"type": "string",
"description": "Valor pago pela hospedagem"
},
"pagamento_pendente": {
"type": "string",
"description": "1 se ainda tem pagamento pendente"
},
"pagamento_pendente_valor": {
"type": "string",
"description": "Valor ainda pendente a ser pago"
},
"pagamento_pendente_data_limite": {
"type": "string",
"description": "Data máxima para que o valor pendente seja pago"
},
"pagamento_pendente_pago_em": {
"type": "string",
"description": "Data do pagamento do valor pendente"
},
"deposito_codigo": {
"type": "string",
"description": "Número da transação do depósito do valor pendente"
},
"deposito_data_pagamento": {
"type": "string",
"description": "Data do pagamento do valor pendente por depósito"
},
"assinatura": {
"type": "string",
"description": "Assinatura do pedido"
},
"observacao": {
"type": "string",
"description": "Observação cadastrada no momento da venda"
},
"operador_id": {
"type": "string",
"description": "Id do usuário que realizou o pedido"
},
"loja_afiliado_id": {
"type": "number",
"description": "O id do afiliado na loja, ou null caso o pedido não tenha afiliado associado"
},
"utm_source": {
"type": "string",
"description": "O campo de UTM source"
},
"utm_medium": {
"type": "string",
"description": "O campo de UTM medium"
},
"utm_campaign": {
"type": "string",
"description": "O campo de UTM campaign"
},
"utm_term": {
"type": "string",
"description": "O campo de UTM term"
},
"utm_content": {
"type": "string",
"description": "O campo de UTM content"
},
"_link_pagamento": {
"type": "string",
"description": "O link que o cliente deve acessar para realizar o pagamento"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"526"
],
"description": "Id do item"
},
"pedido_id": {
"type": "string",
"enum": [
"200"
],
"description": "Ido do pedido"
},
"valor": {
"type": "string",
"enum": [
"60.00"
],
"description": "Valor desse item individualmente"
},
"produto_id": {
"type": "string",
"enum": [
"null"
],
"description": "Ido do produto"
},
"produto_tipo": {
"type": "string",
"enum": [
"passeio"
],
"description": "Tipo de produto: evento, combo, passeio ou produto"
},
"utilizado": {
"type": "string",
"enum": [
"0"
],
"description": "1 se já foi realizado o passeio"
},
"data_utilizacao": {
"type": "string",
"enum": [
"2020-08-05"
],
"description": "Data da realização do passeio"
},
"produto_disponibilidade_id": {
"type": "string",
"enum": [
"22642"
],
"description": "Id da disponibilidade"
},
"produto_preco_id": {
"type": "string",
"enum": [
"110"
],
"description": "Id do preço cobrado"
},
"quantidade": {
"type": "string",
"enum": [
"1"
],
"description": "Quantidade de pessoas nesse passeio"
},
"dados": {
"type": "string",
"enum": [
"..."
],
"description": "Dados extras a reséito do cliente"
},
"produto_preco_sazonal_id": {
"type": "string",
"enum": [
"null"
],
"description": "Id do preço sazonal"
},
"btms_num_reserva": {
"type": "string",
"enum": [
"null"
],
"description": "Id da reserva BTMS"
},
"nome_produto": {
"type": "string",
"enum": [
"Passeio de Trem"
],
"description": "O nome do produto ou passeio"
},
"formulario": {
"type": "array",
"items": {
"type": "object",
"properties": {
"chave": {
"type": "string",
"enum": [
"nome"
],
"description": "A chave que identifica o campo do formulário"
},
"valor": {
"type": "string",
"enum": [
"Alan Ferreira Pereira"
],
"description": "O valor preenchido no campo"
},
"label": {
"type": "string",
"enum": [
"Nome"
],
"description": "Uma label que identifica o campo"
},
"tipo": {
"type": "string",
"enum": [
"nome_completo"
],
"description": "O tipo do campo no catálogo de formulários inteligentes. Presente apenas em itens de formulário inteligente"
},
"valor_formatado": {
"type": "string",
"enum": [
"Alan Ferreira Pereira"
],
"description": "O valor formatado para exibição (datas em dd/mm/aaaa, CPF com máscara, etc). Presente apenas em itens de formulário inteligente"
}
},
"required": [
"chave",
"valor",
"label"
],
"additionalProperties": false
},
"description": "A lista de campos do formulário preenchido pelo cliente ou null em caso de não haver formulário"
},
"nome_utilizador": {
"type": "string",
"enum": [
"Nome do útilizador"
],
"description": "O nome do utilizador desse passeio ou produto"
},
"produto_disponibilidade_data": {
"type": "string",
"enum": [
"2022-03-31"
],
"description": "Data marcada para realização da atividade"
},
"produto_disponibilidade_hora": {
"type": "string",
"enum": [
"17:00 até 19:00"
],
"description": "Hora marcada para realização da atividade"
},
"voucher_code": {
"type": "string",
"enum": [
"59525165252"
],
"description": "Código único que identifica o voucher/ticket"
},
"produto_faixa_etaria_nome": {
"type": "string",
"enum": [
"Adulto"
],
"description": "Nome da faixa etária para esse voucher"
},
"produto_faixa_etaria_descricao": {
"type": "string",
"enum": [
"Acima de 18 anos"
],
"description": "Descrição da faixa etária para esse voucher"
},
"opcionais": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"enum": [
"Almoço"
],
"description": "O título do opcional incluso no voucher"
},
"valor": {
"type": "string",
"enum": [
"20.00"
],
"description": "O preço original do opcional incluso no voucher"
},
"desconto_cupom": {
"type": "string",
"enum": [
"5.00"
],
"description": "O desconto aplicado no opcional via cupom de desconto"
}
},
"required": [
"nome",
"valor",
"desconto_cupom"
],
"additionalProperties": false
},
"description": "A lista de opcionais inclusos no voucher"
}
},
"required": [
"id",
"pedido_id",
"valor",
"produto_id",
"produto_tipo",
"utilizado",
"data_utilizacao",
"produto_disponibilidade_id",
"produto_preco_id",
"quantidade",
"dados",
"produto_preco_sazonal_id",
"btms_num_reserva",
"nome_produto",
"formulario",
"nome_utilizador",
"produto_disponibilidade_data",
"produto_disponibilidade_hora",
"voucher_code",
"produto_faixa_etaria_nome",
"produto_faixa_etaria_descricao",
"opcionais"
],
"additionalProperties": false
},
"description": "A lista de itens do pedido"
},
"observacoes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"526"
],
"description": "Id da observação"
},
"observacao": {
"type": "string",
"enum": [
"Reserva feita com antecedência"
],
"description": "O texto da observação"
},
"data_hora": {
"type": "string",
"enum": [
"2023-12-25 09:00:00"
],
"description": "Data e hora em que a observação foi criada"
},
"operador_nome": {
"type": "string",
"enum": [
"Carlos Augusto"
],
"description": "O nome do operador que cadastrou a observação"
},
"operador_label": {
"type": "string",
"enum": [
"Administrador"
],
"description": "O nível de acesso do operador que cadastrou a observação (Administrador, Financeiro, Reservas, Atendimento, Afiliado)"
},
"operador_id": {
"type": "number",
"enum": [
1
],
"description": "O id que identifica o operador"
},
"parceiro_id": {
"type": "number",
"enum": [
1
],
"description": "O id que identifica o afiliado que cadastrou a observação caso tenha sido feito por um"
}
},
"required": [
"id",
"observacao",
"data_hora",
"operador_nome",
"operador_label",
"operador_id",
"parceiro_id"
],
"additionalProperties": false
},
"description": "A lista de observações do pedido"
},
"logsStatus": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"526"
],
"description": "Id do log"
},
"status": {
"type": "string",
"enum": [
"aprovado"
],
"description": "O status do pedido"
},
"data_hora": {
"type": "string",
"enum": [
"2023-12-25 09:00:00"
],
"description": "A data e hora em que o pedido teve seus status alterado"
},
"agente": {
"type": "string",
"enum": [
"Carlos Augusto"
],
"description": "O nome do operador realizou a atualização do status, podendo ser um sistema ou usuário"
},
"agente_tipo": {
"type": "string",
"enum": [
"Administrador"
],
"description": "Identificação do tipo de operador podendo ser Retorno Automático, Cliente ou Administrador"
}
},
"required": [
"id",
"status",
"data_hora",
"agente",
"agente_tipo"
],
"additionalProperties": false
},
"description": "A lista de status pelos quais o pedido passou"
},
"pagamento_detalhes": {
"type": "object",
"properties": {
"subtotal": {
"type": "number",
"description": "Valor original, antes das taxas"
},
"taxa_conveniencia": {
"type": "number",
"description": "Taxa de conveniencia aplicável em venda de eventos"
},
"desconto": {
"type": "number",
"description": "Desconto aplicado"
},
"juros_para_cliente": {
"type": "number",
"description": "Quanto o cliente pagou em Juros"
},
"total": {
"type": "number",
"description": "Total com juros"
},
"valor_parcela": {
"type": "number",
"description": "O valor da parcela"
},
"parcelas_pagamento": {
"type": "number",
"description": "O número de parcelas"
},
"sem_juros_ate": {
"type": "number",
"description": "No momento da reserva quantas parcelas estavam configuradas sem juros"
},
"tabela_juros": {
"type": "array",
"items": {
"type": "object",
"properties": {
"initial": {
"type": "number",
"enum": [
2
],
"description": "Número mínimo de parcelas onde essa taxa se aplica"
},
"final": {
"type": "number",
"enum": [
6
],
"description": "Número máximo de parcelas onde essa taxa se aplica"
},
"rate": {
"type": "number",
"enum": [
10
],
"description": "Porcentagem de taxa de juros"
}
},
"required": [
"initial",
"final",
"rate"
],
"additionalProperties": false
},
"description": "A tabela de juros no momento da venda"
},
"pix_emv": {
"type": "string",
"description": "O código PIX para pagar, pode ser usando como copia e cola, ou pode ser transformado em qrCode"
}
},
"required": [
"tabela_juros"
]
}
},
"required": [
"itens",
"observacoes",
"logsStatus"
]
}Consultando Parcelas Disponíveis ¶
Este endpoint retorna as opções de parcelamento disponíveis para um gateway de pagamento específico, incluindo informações sobre juros aplicados em cada parcela.
Também pode, e deve, ser usando para obter informações sobre o valor final a ser pago mesmo que o Gateway escolhido não ofereça parcelamento.
Por exemplo, no caso do PIX, apenas uma parcela será retornada, mas se o PIX oferece desconto e a reserva tem itens com desconto por método de pagamento, então será possível obter qual o valor final a ser pago e calcular desconto aplicado.
Como consultar desconto por método de pagamento
Se a reserva será feita com Pix, envie o gateway zoop_pix para esse endpoint, envie obrigatóriamente o campo pedido_id. No retorno, o campo valor contem o valor original da reserva. O campo parcelas.1.valor_total irá conter o valor real a pagar. Faça valor - parcelas.1.valor_total para obter o desconto em reais.
Parcelas do PaytourCard
Com o gateway zoop_credit_card, os valores seguem as taxas do PaytourCard da loja e são exatamente os que serão cobrados no checkout: valor_parcela é o valor de cada parcela e valor_total é o total cobrado do cliente.
Até o limite de parcelas sem juros da loja, tem_juros é false. Como cada parcela é arredondada para cima no centavo, o total pode ficar alguns centavos acima do valor da reserva (ex.: R$ 100,00 em 3x sem juros = 3 × R$ 33,34 = R$ 100,02); esses centavos aparecem em valor_juros e porcentagem_juros.
Acima do limite sem juros, tem_juros é true. Quando a taxa daquela quantidade de parcelas é a mesma do limite sem juros, o cliente não paga juros de fato: a parcela vem com tem_juros: true, mas com valor_juros igual a 0 (ou a alguns centavos de arredondamento). Para mostrar ao cliente quanto ele paga a mais, use valor_juros.
Se a conta Paytour/Zoop da loja não estiver ativa, o endpoint responde 400 (“Gateway não está ativo para esta loja.”). Se o pedido não tiver valor a pagar, também responde 400 (“O pedido não tem valor a pagar.”).
Consultar ParcelasGET/pedidos/pagamentos/parcelas{?gateway,valor,pedido_id,is_foreign}
Example URI
- gateway
string(required) Example: redeO gateway de pagamento. Valores aceitos: “rede”, “cielo”, “zoop_pix” ou “zoop_credit_card” (PaytourCard)
- pedido_id
number(required) Example: 1234O id do pedido para simular parcelamento, método recomendado, mas pode ser omitido se
valorfor passado- valor
float(optional) Example: 800O valor total da compra, em reais, para calcular as parcelas. Ao invés desse campo, recomendamos usar apenas o
pedido_id- is_foreign
number(optional) Example: 0Se o cliente é estrangeiro, 1 para sim 0 para não. Se 1, retorna apenas 1 parcela
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}400Headers
Content-Type: application/jsonBody
{
"message": "O parâmetro \"gateway\" é obrigatório.",
"code": 2
}200Headers
Content-Type: application/jsonBody
{
"gateway": "REDE",
"valor": 800,
"parcelas": {
"1": {
"parcela": 1,
"valor_parcela": 800,
"valor_total": 800,
"label": "1x de R$ 800,00 (Total: R$ 800,00) - Sem juros",
"tem_juros": false,
"porcentagem_juros": 0,
"valor_juros": 0
},
"2": {
"parcela": 2,
"valor_parcela": 412,
"valor_total": 824,
"label": "2x de R$ 412,00 (Total: R$ 824,00) - Com juros de 3,00%",
"tem_juros": true,
"porcentagem_juros": 3,
"valor_juros": 24
},
"3": {
"parcela": 3,
"valor_parcela": 288.4,
"valor_total": 865.2,
"label": "3x de R$ 288,40 (Total: R$ 865,20) - Com juros de 8,15%",
"tem_juros": true,
"porcentagem_juros": 8.15,
"valor_juros": 65.2
},
"4": {
"parcela": 4,
"valor_parcela": 227.12,
"valor_total": 908.46,
"label": "4x de R$ 227,12 (Total: R$ 908,46) - Com juros de 13,56%",
"tem_juros": true,
"porcentagem_juros": 13.56,
"valor_juros": 108.46
}
}
}Consultando Gateways Disponíveis ¶
Este endpoint retorna a lista de Gateways de pagamento disponíveis para a loja na API.
Os gateways listados são: cielo, rede, zoop_pix (Pix) e zoop_credit_card (PaytourCard).
Use o campo active para saber se a loja está com o gateway ativo e max_installments para saber até quantas parcelas ela aceita.
Consultar GatewaysGET/pedidos/pagamentos/gateways
Example URI
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}400Headers
Content-Type: application/jsonBody
{
"message": "O parâmetro \"gateway\" é obrigatório.",
"code": 2
}200Headers
Content-Type: application/jsonBody
[
{
"key": "rede",
"name": "Rede",
"state": "enabled",
"active": true,
"max_installments": 12,
"offers_discount": true
}
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string",
"enum": [
"rede"
],
"description": "A chave de identificação do Gateway: `cielo`, `rede`, `zoop_pix` (Pix) ou `zoop_credit_card` (PaytourCard)"
},
"name": {
"type": "string",
"enum": [
"Rede"
],
"description": "O nome do gateway"
},
"state": {
"type": "string",
"enum": [
"enabled",
"disabled",
"not_set",
"misconfigured",
"unavailable",
"enabled"
],
"description": "O estado atual do gateway"
},
"active": {
"type": "boolean",
"enum": [
true
],
"description": "Se o gateway está ativo para ser usado"
},
"max_installments": {
"type": "number",
"enum": [
12
],
"description": "A quantidade máxima de parcelas que o Gateway aceita"
},
"offers_discount": {
"type": "boolean",
"enum": [
true
],
"description": "Se, ao utilizar esse gateway, a reserva pode receber desconto"
}
},
"required": [
"key",
"name",
"state",
"active",
"max_installments",
"offers_discount"
],
"additionalProperties": false
}
}Processando pagamentos ¶
Uma vez registrado, um pedido pode ter seu pagamento processado via API.
Gateways disponíveis para processamento via API: rede, cielo, zoop_pix (Pix) e zoop_credit_card (PaytourCard).
Autenticação adicional
No processamento de pagamento via Rede. Pode ser necessário que o cliente seja direcionado a uma url de autenticação adicional da Rede.
Normalmente isso acontece no fluxo de segurança 3DS. Essa URL não pertence e não é controlada pelo Paytour, sendo um processo totalmente controlado pelo Gateway/bandeira/emissor do cartão.
Por esta razão, é necessário fornecer o campo redirect_url, uma url do seu sistema, para onde o cliente será redirecionado ao finalizar da autenticação adicional.
Ao redirecionar para a sua url, serão adicionados os campos pedidoId e result na query, este último podendo ser ‘1’ ou ‘0’ para indicar sucesso ou falha.
Exemplo: redirect_url = https://example.com resultará no cliente sendo direcionado para https://example.com?pedidoId=123&result=1 após finalizada a autenticação bem sucedida.
Dados obrigatórios do comprador no 3DS (Rede)
Por exigência da bandeira Elo (Programa de Proteção 3DS), quando a loja tem o 3DS ativo na Rede é obrigatório enviar os dados do comprador:
email, telefone, fatura (endereço de cobrança), ip (IPv4 do comprador), user_agent e dispositivo (dados do navegador do comprador).
E-mail, telefone e endereço podem ser omitidos se já estiverem preenchidos no pedido. Se algum dado obrigatório faltar, o pagamento não é processado
e a resposta traz success: false com a lista dos campos em message.
PaytourCard (zoop_credit_card)
O pagamento é processado na hora, sem autenticação adicional: redirect_url é opcional e a resposta sempre traz redirect_url: null. Se enviada, a URL precisa ser válida e fica registrada no pedido.
O número de parcelas (parcelamento) precisa estar entre as opções devolvidas pela consulta de parcelas do pedido (GET /pedidos/pagamentos/parcelas?gateway=zoop_credit_card&pedido_id=...). Se o cliente do pedido for estrangeiro, envie também is_foreign=1 na consulta: estrangeiro só pode pagar em 1x. Fora dessas opções a resposta é success: false com Número de parcelas indisponível para este pedido. e nada é cobrado.
O PaytourCard só cobra em reais (lojas em outra moeda não podem usá-lo) e só aceita cliente estrangeiro se a conta Paytour/Zoop da loja tiver venda internacional.
Os dados do comprador enviados à operadora para a análise de risco (e-mail, telefone, cidade, UF e CEP) são os do cliente do pedido; o nome enviado é o nome_titular do cartão.
O CEP enviado segue esta ordem: cliente estrangeiro usa sempre um CEP brasileiro padrão; senão, o CEP de fatura (endereço de cobrança do titular, opcional), quando enviado; senão, o CEP do cliente do pedido. A fatura enviada fica registrada no pedido; se ela não for um objeto com campos de texto (ou número inteiro), a resposta é success: false com Dados de fatura inválidos. e nada é cobrado.
Um mesmo pedido só pode ser processado uma vez: chamadas repetidas ou simultâneas para o mesmo pedido são recusadas sem nova cobrança.
A resposta depende do resultado:
-
success: true,Pagamento aprovado.: pagamento aprovado; -
success: true,Pagamento em análise.: aprovado no cartão, mas em análise antifraude (order.status = analise); -
success: true,Pagamento pendente de confirmação.: a operadora ainda não confirmou (order.status = pendente); -
success: false,Pagamento recusado.: recusado ou falha na comunicação com a operadora (order.status = reprovado); -
success: false,Erro ao processar pagamento.: erro inesperado no processamento. O pedido fica bloqueado para novas tentativas pela API (pode ter havido cobrança); consulte o pedido e acione o suporte; -
success: false,Gateway não está ativo para esta loja.: PaytourCard desativado, conta Paytour/Zoop da loja inativa ou loja com moeda diferente de real; -
success: false,Esta loja não aceita PaytourCard de cliente estrangeiro.: cliente estrangeiro e conta da loja sem venda internacional; -
success: false,O pedido não tem valor a pagar.: o pedido não tem valor a cobrar; -
success: false,Dados de fatura inválidos.:faturaenviada em formato inválido (precisa ser um objeto com o endereço, cada campo em texto ou número inteiro); -
success: false,Pedido não está usando opção para processamento via API.: o pedido já está sendo (ou foi) processado por outra chamada.
Processar PagamentoPOST/pedidos/{id}/checkout
Example URI
- id
int(required) Example: 5496O Id do pedido
Cartão de crédito RedeHeaders
Content-Type: multipart/form-data
Authorization: Bearer <authorization-token>Body
{
"metodo_pagamento": "rede",
"parcelamento": 12,
"numero_cartao": "1234 1234 1234 1234",
"vencimento": "09/2030",
"codigo_seguranca": 123,
"nome_titular": "Pedro carvalho",
"redirect_url": "https//example.com",
"email": "[email protected]",
"telefone": "(84) 98888-7777",
"fatura": {
"cep": "59000-000",
"endereco": "Rua das Flores",
"numero": "10",
"complemento": "Apto 101",
"bairro": "Centro",
"cidade": "Natal",
"uf": "RN",
"pais": "BRA"
},
"ip": "200.100.50.25",
"user_agent": "Mozilla/5.0 ...",
"dispositivo": {
"colorDepth": 24,
"javaEnabled": false,
"language": "pt-BR",
"screenHeight": 1080,
"screenWidth": 1920,
"timezoneOffset": 3
}
}Schema
{
"type": "object",
"properties": {
"metodo_pagamento": {
"type": "string",
"description": "Indica para o Paytour que a Rede deve ser usada para processar o pagamento"
},
"parcelamento": {
"type": "number",
"description": "Em quantas parcelas deve ser feito o pagamento"
},
"numero_cartao": {
"type": "string",
"description": "O Número do cartão"
},
"vencimento": {
"type": "string",
"description": "Data de vencimento no formato MM/YYYY, nesse exemplo Setembro de 2030"
},
"codigo_seguranca": {
"type": "number",
"description": "O nome completo do títular"
},
"nome_titular": {
"type": "string",
"description": "O nome completo do títular"
},
"redirect_url": {
"type": "string",
"description": "A url para onde o cliente deve voltar ao finalizar a segunda etapa de autenticação"
},
"email": {
"type": "string",
"description": "E-mail do comprador. Obrigatório com 3DS ativo se o pedido não tiver e-mail"
},
"telefone": {
"type": "string",
"description": "Telefone do comprador com DDD. Obrigatório com 3DS ativo se o pedido não tiver telefone"
},
"fatura": {
"type": "object",
"properties": {
"cep": {
"type": "string",
"description": "CEP"
},
"endereco": {
"type": "string",
"description": "Logradouro"
},
"numero": {
"type": "string",
"description": "Número"
},
"complemento": {
"type": "string",
"description": "Complemento"
},
"bairro": {
"type": "string",
"description": "Bairro"
},
"cidade": {
"type": "string",
"description": "Cidade"
},
"uf": {
"type": "string",
"description": "UF"
},
"pais": {
"type": "string",
"description": "País (ISO 3166-1 alfa-3)"
}
},
"description": "Endereço de cobrança do portador. Obrigatório com 3DS ativo se o pedido não tiver endereço"
},
"ip": {
"type": "string",
"description": "IPv4 do comprador. Obrigatório com 3DS ativo (a Rede não aceita IPv6)"
},
"user_agent": {
"type": "string",
"description": "User agent do navegador do comprador. Obrigatório com 3DS ativo"
},
"dispositivo": {
"type": "object",
"properties": {
"colorDepth": {
"type": "number",
"description": "`screen.colorDepth`"
},
"javaEnabled": {
"type": "boolean",
"description": "`navigator.javaEnabled()`"
},
"language": {
"type": "string",
"description": "`navigator.language` (BCP47)"
},
"screenHeight": {
"type": "number",
"description": "`screen.height`"
},
"screenWidth": {
"type": "number",
"description": "`screen.width`"
},
"timezoneOffset": {
"type": "number",
"description": "`new Date().getTimezoneOffset() / 60`"
}
},
"description": "Dados do navegador do comprador. Recomendado com 3DS ativo"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}Cartão de crédito CieloHeaders
Content-Type: multipart/form-data
Authorization: Bearer <authorization-token>Body
{
"metodo_pagamento": "cielo",
"parcelamento": 12,
"numero_cartao": "1234 1234 1234 1234",
"vencimento": "09/2030",
"codigo_seguranca": 123,
"nome_titular": "Pedro carvalho",
"redirect_url": "https//example.com"
}Schema
{
"type": "object",
"properties": {
"metodo_pagamento": {
"type": "string",
"description": "Indica para o Paytour que a Cielo deve ser usada para processar o pagamento"
},
"parcelamento": {
"type": "number",
"description": "Em quantas parcelas deve ser feito o pagamento"
},
"numero_cartao": {
"type": "string",
"description": "O Número do cartão"
},
"vencimento": {
"type": "string",
"description": "Data de vencimento no formato MM/YYYY, nesse exemplo Setembro de 2030"
},
"codigo_seguranca": {
"type": "number",
"description": "O nome completo do títular"
},
"nome_titular": {
"type": "string",
"description": "O nome completo do títular"
},
"redirect_url": {
"type": "string",
"description": "A url para onde o cliente deve voltar ao finalizar a segunda etapa de autenticação"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}PIX ZoopHeaders
Content-Type: multipart/form-data
Authorization: Bearer <authorization-token>Body
{
"metodo_pagamento": "zoop_pix"
}Schema
{
"type": "object",
"properties": {
"metodo_pagamento": {
"type": "string",
"description": "Indica para o Paytour que o Pix deve ser usado para processar o pagamento"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}Cartão de crédito PaytourCardHeaders
Content-Type: multipart/form-data
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"success": true,
"message": "Pagamento aprovado.",
"redirect_url": "https//example.com",
"order": {
"id": "200",
"loja_id": "468",
"valor": "170.00",
"desconto": "0.00",
"cliente_nome": "João Carlos da Silva",
"cliente_email": "[email protected]",
"cliente_cpf": "15658922243",
"cliente_celular": "(84) 999999999",
"cliente_telefone": "(84) 999999999",
"cliente_ddi": "+55",
"cliente_cep": "00000-000",
"cliente_endereco": "Rua São Carlos",
"cliente_complemento": "Próxima ao posto",
"cliente_numero": "19",
"cliente_bairro": "Ana Vieira",
"cliente_cidade": "Natal",
"cliente_uf": "RN",
"cliente_pais": "BRA",
"cliente_estrangeiro": 0,
"data_hora_pedido": "2020-08-01 09:47:39",
"data_hora_atualizacao": "2020-08-01 09:47:39",
"status": "aprovado",
"status_pagseguro": "aprovado",
"pagseguro_transacao_id": "as54s58",
"metodo_pagamento": "dinheiro",
"metodo_pagamento_externo": "dinheiro",
"transacao_id": "5484as-as4554-sas4d-54",
"status_pagamento": "pago",
"cupom_id": "415",
"afiliado_id": "454",
"afiliado_comissao": "45.00",
"afiliado_data_hora_clique": "2020-08-01 09:45:00",
"parceiro_id": "415",
"parceiro_comissao": "45.00",
"parcelas_pagamento": 1,
"bandeira_pagamento": "visa",
"final_cartao_pagamento": "9999",
"bin_cartao_pagamento": "999999",
"tipo_pagamento": "creditCard",
"transacao_erro_codigo": "1",
"transacao_erro_mensagem": "Cartão recusado",
"pagamento_extras": "null",
"hospedagem_tipo": "null",
"hospedagem_valor": "null",
"pagamento_pendente": "1",
"pagamento_pendente_valor": "40.00",
"pagamento_pendente_data_limite": "2020-08-01",
"pagamento_pendente_pago_em": "2020-08-01",
"deposito_codigo": "6595",
"deposito_data_pagamento": "2020-08-01",
"assinatura": "null",
"observacao": "null",
"operador_id": "48",
"loja_afiliado_id": 42,
"utm_source": "xxx",
"utm_medium": "xxx",
"utm_campaign": "xxx",
"utm_term": "xxx",
"utm_content": "xxx",
"_link_pagamento": "https//example.com.br/pagamento",
"pagamento_detalhes": {
"subtotal": 100,
"taxa_conveniencia": 5,
"desconto": 0,
"juros_para_cliente": 10,
"total": 110,
"valor_parcela": 10,
"parcelas_pagamento": 11,
"sem_juros_ate": 5,
"tabela_juros": [
{
"initial": 2,
"final": 6,
"rate": 10
}
],
"pix_emv": "00020101021226850014br.gov.bcb.pix..."
}
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Indica se o pagamento foi aprovado"
},
"message": {
"type": "string",
"description": "Mensagem de status do pagamento"
},
"redirect_url": {
"type": "string",
"description": "A url para onde o cliente deve ser enviado para autenticação adicional, null caso não seja necessário"
},
"order": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Identificação única desse pedido"
},
"loja_id": {
"type": "string",
"description": "Identificação única da loja"
},
"valor": {
"type": "string",
"description": "Valor total do pedido"
},
"desconto": {
"type": "string",
"description": "Valor do desconto aplicado no pedido"
},
"cliente_nome": {
"type": "string",
"description": "Nome do Cliente"
},
"cliente_email": {
"type": "string",
"description": "Email do Cliente"
},
"cliente_cpf": {
"type": "string",
"description": "Documento do Cliente"
},
"cliente_celular": {
"type": "string",
"description": "Celular do Cliente"
},
"cliente_telefone": {
"type": "string",
"description": "Telefone do Cliente"
},
"cliente_ddi": {
"type": "string",
"description": "DDI do Cliente"
},
"cliente_cep": {
"type": "string",
"description": "Cep do Endereço"
},
"cliente_endereco": {
"type": "string",
"description": "Rua do Endereço"
},
"cliente_complemento": {
"type": "string",
"description": "Complemento do Endereço"
},
"cliente_numero": {
"type": "string",
"description": "Número do Endereço"
},
"cliente_bairro": {
"type": "string",
"description": "Bairro do Endereço"
},
"cliente_cidade": {
"type": "string",
"description": "Cidade do Endereço"
},
"cliente_uf": {
"type": "string",
"description": "Estado do Endereço"
},
"cliente_pais": {
"type": "string",
"description": "O código do país no padrão ISO 3166-1-alpha-3"
},
"cliente_estrangeiro": {
"type": "number",
"description": "1 se é estrangeiro"
},
"data_hora_pedido": {
"type": "string",
"description": "A data e hora do pedido no formato YYYY-MM-DD HH:mm:ss"
},
"data_hora_atualizacao": {
"type": "string",
"description": "A data e hora que o pedido foi editado pela última vez, no formato YYYY-MM-DD HH:mm:ss"
},
"status": {
"type": "string",
"description": "O status do pedido"
},
"status_pagseguro": {
"type": "string",
"description": "O status informado, quando pagamento feito pelo Pagseguro"
},
"pagseguro_transacao_id": {
"type": "string",
"description": "Id da transação feita no pagseguro"
},
"metodo_pagamento": {
"type": "string",
"description": "O método de pagamento"
},
"metodo_pagamento_externo": {
"type": "string",
"description": "O método de pagamento, quando feito por fora do sistema"
},
"transacao_id": {
"type": "string",
"description": "O id da transação de cartão de crédito"
},
"status_pagamento": {
"type": "string",
"description": "O status do pagamento desse pedido"
},
"cupom_id": {
"type": "string",
"description": "O id do cupom, quando aplicado"
},
"afiliado_id": {
"type": "string",
"description": "Id do afiliado da loja associado a venda"
},
"afiliado_comissao": {
"type": "string",
"description": "Valor a ser repassado ao afiliado"
},
"afiliado_data_hora_clique": {
"type": "string",
"description": "A data e hora do clique no link"
},
"parceiro_id": {
"type": "string",
"description": "O id do parceiro responsável pela venda"
},
"parceiro_comissao": {
"type": "string",
"description": "Valor a ser repassado ao parceiro"
},
"parcelas_pagamento": {
"type": "number",
"description": "O número de parcelas"
},
"bandeira_pagamento": {
"type": "string",
"description": "Bandeira do cartão usado"
},
"final_cartao_pagamento": {
"type": "string",
"description": "Final do cartão usado"
},
"bin_cartao_pagamento": {
"type": "string",
"description": "BIN do cartão usado"
},
"tipo_pagamento": {
"type": "string",
"description": "Método de pagamento"
},
"transacao_erro_codigo": {
"type": "string",
"description": "O código do erro na transação"
},
"transacao_erro_mensagem": {
"type": "string",
"description": "A mensagem de erro na transação"
},
"pagamento_extras": {
"type": "string",
"description": "Informações adicionais do pagamento"
},
"hospedagem_tipo": {
"type": "string",
"description": "Tipo de hospedagem do cliente"
},
"hospedagem_valor": {
"type": "string",
"description": "Valor pago pela hospedagem"
},
"pagamento_pendente": {
"type": "string",
"description": "1 se ainda tem pagamento pendente"
},
"pagamento_pendente_valor": {
"type": "string",
"description": "Valor ainda pendente a ser pago"
},
"pagamento_pendente_data_limite": {
"type": "string",
"description": "Data máxima para que o valor pendente seja pago"
},
"pagamento_pendente_pago_em": {
"type": "string",
"description": "Data do pagamento do valor pendente"
},
"deposito_codigo": {
"type": "string",
"description": "Número da transação do depósito do valor pendente"
},
"deposito_data_pagamento": {
"type": "string",
"description": "Data do pagamento do valor pendente por depósito"
},
"assinatura": {
"type": "string",
"description": "Assinatura do pedido"
},
"observacao": {
"type": "string",
"description": "Observação cadastrada no momento da venda"
},
"operador_id": {
"type": "string",
"description": "Id do usuário que realizou o pedido"
},
"loja_afiliado_id": {
"type": "number",
"description": "O id do afiliado na loja, ou null caso o pedido não tenha afiliado associado"
},
"utm_source": {
"type": "string",
"description": "O campo de UTM source"
},
"utm_medium": {
"type": "string",
"description": "O campo de UTM medium"
},
"utm_campaign": {
"type": "string",
"description": "O campo de UTM campaign"
},
"utm_term": {
"type": "string",
"description": "O campo de UTM term"
},
"utm_content": {
"type": "string",
"description": "O campo de UTM content"
},
"_link_pagamento": {
"type": "string",
"description": "O link que o cliente deve acessar para realizar o pagamento"
},
"pagamento_detalhes": {
"type": "object",
"properties": {
"subtotal": {
"type": "number",
"description": "Valor original, antes das taxas"
},
"taxa_conveniencia": {
"type": "number",
"description": "Taxa de conveniencia aplicável em venda de eventos"
},
"desconto": {
"type": "number",
"description": "Desconto aplicado"
},
"juros_para_cliente": {
"type": "number",
"description": "Quanto o cliente pagou em Juros"
},
"total": {
"type": "number",
"description": "Total com juros"
},
"valor_parcela": {
"type": "number",
"description": "O valor da parcela"
},
"parcelas_pagamento": {
"type": "number",
"description": "O número de parcelas"
},
"sem_juros_ate": {
"type": "number",
"description": "No momento da reserva quantas parcelas estavam configuradas sem juros"
},
"tabela_juros": {
"type": "array",
"items": {
"type": "object",
"properties": {
"initial": {
"type": "number",
"enum": [
2
],
"description": "Número mínimo de parcelas onde essa taxa se aplica"
},
"final": {
"type": "number",
"enum": [
6
],
"description": "Número máximo de parcelas onde essa taxa se aplica"
},
"rate": {
"type": "number",
"enum": [
10
],
"description": "Porcentagem de taxa de juros"
}
},
"required": [
"initial",
"final",
"rate"
],
"additionalProperties": false
},
"description": "A tabela de juros no momento da venda"
},
"pix_emv": {
"type": "string",
"description": "O código PIX para pagar, pode ser usando como copia e cola, ou pode ser transformado em qrCode"
}
},
"required": [
"tabela_juros"
]
}
},
"description": "Os dados atualizados do pedido que foi processado"
}
}
}Reagendamento ¶
Uma vez que reservas são registradas, ainda é possível reagendar as atividades. Este endpoint tem esse exato objetivo.
Reagendar itens de um pedido ¶
Será necessário que, além do id do pedido, o id do item, o antigo id de disponibilidade e o novo id de disponibilidade sejam fornecidos.
Para o id do item e id da antiga disponibilidade, use o endpoint de detalhar pedido, nele você encontra a lista de itens,
onde, para cada um, estarão disponíveis os ids.
Para o novo id de disponibilidade, use os endpoints de listar datas e horas, da mesma forma que usa para realizar a reserva.
No reagendamento de eventos, não devem ser enviados os campos de id de disponibilidade, ao invés deles, envie apenas o campo priceId que represente qual o id do ingresso que substitue o antigo. Abaixo existem exemplos de de como reagendar atividades ou eventos, ambos podem ser reagendados na mesma request.
ReagendarPOST/reagendar/{pedido_id}
Example URI
- pedido_id
number(required) Example: 4242Id do pedido
PasseiosHeaders
Authorization: Bearer <authorization-token>Body
{
"items": [
{
"itemId": 123,
"oldScheduleId": 123,
"newScheduleId": 123
}
],
"sendEmailToClient": false
}Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"itemId": {
"type": "number",
"description": "O id do item do pedido"
},
"oldScheduleId": {
"type": "number",
"description": "O id da antiga disponibilidade presente no item do pedido"
},
"newScheduleId": {
"type": "number",
"description": "O id da nova disponibilidade que deve ser usada no item do pedido"
}
}
},
"description": "Os itens a serem reagendados"
},
"sendEmailToClient": {
"type": "boolean",
"description": "Se um email deve ser enviado o cliente, avisando do reagendamento"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}EventosHeaders
Authorization: Bearer <authorization-token>
Content-Type: multipart/form-dataBody
{
"items": [
{
"itemId": 123,
"priceId": 123
}
],
"sendEmailToClient": false
}Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"itemId": {
"type": "number",
"description": "O id do item do pedido"
},
"priceId": {
"type": "number",
"description": "O id do novo preço/ingresso a ser usado no item do pedido"
}
}
},
"description": "Os itens a serem reagendados"
},
"sendEmailToClient": {
"type": "boolean",
"description": "Se um email deve ser enviado o cliente, avisando do reagendamento"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}Passeios + EventosHeaders
Authorization: Bearer <authorization-token>
Content-Type: multipart/form-dataBody
{
"items": [
{
"itemId": 123,
"oldScheduleId": 123,
"newScheduleId": 123
},
{
"itemId": 123,
"priceId": 123
}
],
"sendEmailToClient": false
}Schema
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"itemId": {
"type": "number",
"description": "O id do item do pedido"
},
"oldScheduleId": {
"type": "number",
"description": "O id da antiga disponibilidade presente no item do pedido"
},
"newScheduleId": {
"type": "number",
"description": "O id da nova disponibilidade que deve ser usada no item do pedido"
}
}
},
{
"type": "object",
"properties": {
"itemId": {
"type": "number",
"description": "O id do item do pedido"
},
"priceId": {
"type": "number",
"description": "O id do novo preço/ingresso a ser usado no item do pedido"
}
}
}
]
},
"description": "Os itens a serem reagendados"
},
"sendEmailToClient": {
"type": "boolean",
"description": "Se um email deve ser enviado o cliente, avisando do reagendamento"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"success": true,
}Ícones do Paytour ¶
Listando Ícones ¶
Use esse endpoint para listar os ícones disponíveis em nossa biblioteca
Listar ÍconesGET/paytour_icons
Example URI
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
[
{
"id": "03",
"titulo": "Icone",
"icone": "abc.svg",
"_url": "https://cdn.paytour-dev.com.br/assets/uploads/icone_svg/abc.svg"
}
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"03"
],
"description": "Identificador único do icone"
},
"titulo": {
"type": "string",
"enum": [
"Icone"
],
"description": "O título que descreve o icone"
},
"icone": {
"type": "string",
"enum": [
"abc.svg"
],
"description": "O nome do arquivo do icone"
},
"_url": {
"type": "string",
"enum": [
"https://cdn.paytour-dev.com.br/assets/uploads/icone_svg/abc.svg"
],
"description": "O link direto para o icone"
}
},
"required": [
"id",
"titulo",
"icone",
"_url"
],
"additionalProperties": false
}
}Fotos de Passeios ¶
Fotos ¶
Liste, crie e edite as fotos de um passeio
Listar FotosGET/passeios/{id}/fotos
Example URI
- id
int(required) Example: 42O Id do passeio
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
[
{
"id": "03",
"capa": false,
"visivel_site": true,
"ordem": 3,
"url": "https://cdn.paytour-dev.com.br/assets/images/abc.jpg"
}
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"03"
],
"description": "Identificador único da foto"
},
"capa": {
"type": "boolean",
"enum": [
false
],
"description": "Se essa foto é a capa do passeio ou não"
},
"visivel_site": {
"type": "boolean",
"enum": [
true
],
"description": "Se essa foto está visível na loja online"
},
"ordem": {
"type": "number",
"enum": [
3
],
"description": "A ordem em que essa imagem aparece na loja"
},
"url": {
"type": "string",
"enum": [
"https://cdn.paytour-dev.com.br/assets/images/abc.jpg"
],
"description": "O link direto para a foto"
}
},
"required": [
"id",
"capa",
"visivel_site",
"ordem",
"url"
],
"additionalProperties": false
}
}Cadastrar FotoPOST/passeios/{id}/fotos
Example URI
- id
int(required) Example: 42O Id do passeio
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
[
{
"success": true,
"data": [
{
"id": "03",
"capa": false,
"visivel_site": true,
"ordem": 3,
"url": "https://cdn.paytour-dev.com.br/assets/images/abc.jpg"
}
]
}
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array",
"items": {
"type": "object",
"properties": {
"success": {
"type": "boolean",
"enum": [
true
],
"description": "Se a operação foi bem sucedida"
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"03"
],
"description": "Identificador único da foto"
},
"capa": {
"type": "boolean",
"enum": [
false
],
"description": "Se essa foto é a capa do passeio ou não"
},
"visivel_site": {
"type": "boolean",
"enum": [
true
],
"description": "Se essa foto está visível na loja online"
},
"ordem": {
"type": "number",
"enum": [
3
],
"description": "A ordem em que essa imagem aparece na loja"
},
"url": {
"type": "string",
"enum": [
"https://cdn.paytour-dev.com.br/assets/images/abc.jpg"
],
"description": "O link direto para a foto"
}
},
"required": [
"id",
"capa",
"visivel_site",
"ordem",
"url"
],
"additionalProperties": false
},
"description": "A foto"
}
},
"required": [
"success",
"data"
],
"additionalProperties": false
}
}Manipular uma Foto ¶
Não é possível editar o arquivo da foto, apenas posição, se está visível no site e se é capa
Editar FotoPUT/passeios/{passeio_id}/fotos/{id}
Example URI
- passeio_id
int(required) Example: 42O Id do passeio
- id
int(required) Example: 42O Id da foto
Headers
Authorization: Bearer <authorization-token>Body
{
"capa": 0,
"visivel_site": 1,
"ordem": 3
}Schema
{
"type": "object",
"properties": {
"capa": {
"type": "number",
"description": "Se essa foto é a capa do passeio ou não"
},
"visivel_site": {
"type": "number",
"description": "Se essa foto está visível na loja online"
},
"ordem": {
"type": "number",
"description": "A ordem em que essa imagem aparece na loja"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"success": true,
"data": [
{
"id": "03",
"capa": false,
"visivel_site": true,
"ordem": 3,
"url": "https://cdn.paytour-dev.com.br/assets/images/abc.jpg"
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
},
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"03"
],
"description": "Identificador único da foto"
},
"capa": {
"type": "boolean",
"enum": [
false
],
"description": "Se essa foto é a capa do passeio ou não"
},
"visivel_site": {
"type": "boolean",
"enum": [
true
],
"description": "Se essa foto está visível na loja online"
},
"ordem": {
"type": "number",
"enum": [
3
],
"description": "A ordem em que essa imagem aparece na loja"
},
"url": {
"type": "string",
"enum": [
"https://cdn.paytour-dev.com.br/assets/images/abc.jpg"
],
"description": "O link direto para a foto"
}
},
"required": [
"id",
"capa",
"visivel_site",
"ordem",
"url"
],
"additionalProperties": false
},
"description": "A foto"
}
},
"required": [
"data"
]
}Apagar FotoDELETE/passeios/{passeio_id}/fotos/{id}
Example URI
- passeio_id
int(required) Example: 42O Id do passeio
- id
int(required) Example: 42O Id da foto
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonReordenar ¶
O payload deve ser um array contendo os ids das fotos e as posições serão usadas como ordenamento
Ordenar FotosPUT/passeios/{passeio_id}/fotos/ordenar
Example URI
- passeio_id
int(required) Example: 42O Id do passeio
Headers
Authorization: Bearer <authorization-token>Body
[
1
]Schema
{
"type": "array",
"items": {
"type": "number"
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonHospedagens ¶
Listando Hospedagens ¶
Para listar as hospedagens da loja, realize uma requisição GET para este endpoint, entretanto o resultado estará paginado.
Listar HospedagensGET/hospedagens{?page,perPage}
Example URI
- page
int(required) Example: 1A página que se deseja obter
- perPage
int(required) Example: 20Número de hospedagens por página sendo no máximo 100
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"info": {
"total": 1,
"pagina": 1,
"total_paginas": 1
},
"itens": [
{
"id": 1,
"loja_id": 1,
"nome": "Pousada etc",
"telefone": "84 98888 8888",
"email": "[email protected]",
"cep": "5900-000",
"endereco": "Rua exemplo",
"complemento": "Sala 5",
"numero": "15",
"bairro": "Centro",
"cidade": "Natal",
"codigo_interno": "123",
"uf": "RN",
"status": "1",
"created": "2021-06-01 15:56:50",
"updated": "2021-06-01 15:56:50",
"antecedencia_busca": 15,
"antecedencia_busca_ate": 15
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
}
},
"description": "As informações sobre a listagem"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "Identificador único da hospedagem"
},
"loja_id": {
"type": "number",
"enum": [
1
],
"description": "Identificador único da loja"
},
"nome": {
"type": "string",
"enum": [
"Pousada etc"
],
"description": "O nome da hospedagem"
},
"telefone": {
"type": "string",
"enum": [
"84 98888 8888"
],
"description": "O telefone da hospedagem"
},
"email": {
"type": "string",
"enum": [
"[email protected]"
],
"description": "O email para contato"
},
"cep": {
"type": "string",
"enum": [
"5900-000"
],
"description": "O CEP"
},
"endereco": {
"type": "string",
"enum": [
"Rua exemplo"
],
"description": "A primeira linha do endereço"
},
"complemento": {
"type": "string",
"enum": [
"Sala 5"
],
"description": "O complemento do endereço"
},
"numero": {
"type": "string",
"enum": [
"15"
],
"description": "O número do endereço"
},
"bairro": {
"type": "string",
"enum": [
"Centro"
],
"description": "O bairro do endereço"
},
"cidade": {
"type": "string",
"enum": [
"Natal"
],
"description": "A cidade do endereço"
},
"codigo_interno": {
"type": "string",
"enum": [
"123"
],
"description": "O código que identifica a hospedagem no sistema"
},
"uf": {
"type": "string",
"enum": [
"RN"
],
"description": "A UF com 2 letras"
},
"status": {
"type": "string",
"enum": [
"1"
],
"description": "Se está ativo"
},
"created": {
"type": "string",
"enum": [
"2021-06-01 15:56:50"
],
"description": "Data de criação"
},
"updated": {
"type": "string",
"enum": [
"2021-06-01 15:56:50"
],
"description": "Data da última atualização"
},
"antecedencia_busca": {
"type": "number",
"enum": [
15
],
"description": "Quantos minutos o transporte deve chegar antes da partida"
},
"antecedencia_busca_ate": {
"type": "number",
"enum": [
15
],
"description": "Quantos minutos, no máximo o transporte deve chegar antes da partida"
}
},
"required": [
"id",
"loja_id",
"nome",
"telefone",
"email",
"cep",
"endereco",
"complemento",
"numero",
"bairro",
"cidade",
"codigo_interno",
"uf",
"status",
"created",
"updated",
"antecedencia_busca",
"antecedencia_busca_ate"
],
"additionalProperties": false
},
"description": "A lista de hospedagens"
}
},
"required": [
"itens"
]
}Operações com a Hospedagem ¶
Este endpoint permite obter informações dado um id válido
Detalhar HospedagemGET/hospedagens/{id}
Example URI
- id
int(required) Example: 42O id da hospedagem
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": 1,
"loja_id": 1,
"nome": "Pousada etc",
"telefone": "84 98888 8888",
"email": "[email protected]",
"cep": "5900-000",
"endereco": "Rua exemplo",
"complemento": "Sala 5",
"numero": "15",
"bairro": "Centro",
"cidade": "Natal",
"codigo_interno": "123",
"uf": "RN",
"status": "1",
"created": "2021-06-01 15:56:50",
"updated": "2021-06-01 15:56:50",
"antecedencia_busca": 15,
"antecedencia_busca_ate": 15
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identificador único da hospedagem"
},
"loja_id": {
"type": "number",
"description": "Identificador único da loja"
},
"nome": {
"type": "string",
"description": "O nome da hospedagem"
},
"telefone": {
"type": "string",
"description": "O telefone da hospedagem"
},
"email": {
"type": "string",
"description": "O email para contato"
},
"cep": {
"type": "string",
"description": "O CEP"
},
"endereco": {
"type": "string",
"description": "A primeira linha do endereço"
},
"complemento": {
"type": "string",
"description": "O complemento do endereço"
},
"numero": {
"type": "string",
"description": "O número do endereço"
},
"bairro": {
"type": "string",
"description": "O bairro do endereço"
},
"cidade": {
"type": "string",
"description": "A cidade do endereço"
},
"codigo_interno": {
"type": "string",
"description": "O código que identifica a hospedagem no sistema"
},
"uf": {
"type": "string",
"description": "A UF com 2 letras"
},
"status": {
"type": "string",
"description": "Se está ativo"
},
"created": {
"type": "string",
"description": "Data de criação"
},
"updated": {
"type": "string",
"description": "Data da última atualização"
},
"antecedencia_busca": {
"type": "number",
"description": "Quantos minutos o transporte deve chegar antes da partida"
},
"antecedencia_busca_ate": {
"type": "number",
"description": "Quantos minutos, no máximo o transporte deve chegar antes da partida"
}
}
}Afiliados ¶
Listando Afiliados ¶
Para listar os Afiliados da loja, realize uma requisição GET para este endpoint, entretanto o resultado estará paginado.
Listar AfiliadosGET/afiliados{?page,perPage}
Example URI
- page
int(required) Example: 1A página que se deseja obter
- perPage
int(required) Example: 20Número de Afiliados por página sendo no máximo 100
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"info": {
"total": 1,
"pagina": 1,
"total_paginas": 1
},
"itens": [
{
"id": 1,
"nome": "João da silva",
"telefone": "84 98888 8888",
"email": "[email protected]",
"celular": "84 98888 8889",
"url_site": "joaoexample.com.br",
"empresa": "João Soluções",
"estrangeiro": "0",
"loja_afiliado_id": 2,
"comissao": "16.50",
"created": "2021-06-01 15:56:50",
"updated": "2021-06-01 15:56:50",
"_codigo": "abcdefghi"
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
}
},
"description": "As informações sobre a listagem"
},
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "Identificador único do afiliado"
},
"nome": {
"type": "string",
"enum": [
"João da silva"
],
"description": "O nome do afiliado"
},
"telefone": {
"type": "string",
"enum": [
"84 98888 8888"
],
"description": "O telefone do afiliado"
},
"email": {
"type": "string",
"enum": [
"[email protected]"
],
"description": "O email para contato"
},
"celular": {
"type": "string",
"enum": [
"84 98888 8889"
],
"description": "O telefone alternativo do afiliado"
},
"url_site": {
"type": "string",
"enum": [
"joaoexample.com.br"
],
"description": "A URL do site do afiliado"
},
"empresa": {
"type": "string",
"enum": [
"João Soluções"
],
"description": "Nome da empresa"
},
"estrangeiro": {
"type": "string",
"enum": [
"0"
],
"description": "Se é estrangeiro"
},
"loja_afiliado_id": {
"type": "number",
"enum": [
2
],
"description": "Identificador único do vínculo entre o afiliado e a loja"
},
"comissao": {
"type": "string",
"enum": [
"16.50"
],
"description": "A porcentagem da comissão"
},
"created": {
"type": "string",
"enum": [
"2021-06-01 15:56:50"
],
"description": "Data de criação"
},
"updated": {
"type": "string",
"enum": [
"2021-06-01 15:56:50"
],
"description": "Data da última atualização"
},
"_codigo": {
"type": "string",
"enum": [
"abcdefghi"
],
"description": "O código do afiliado que pode ser passado para o site com ?ref=abcdefghi para associar a uma venda"
}
},
"required": [
"id",
"nome",
"telefone",
"email",
"celular",
"url_site",
"empresa",
"estrangeiro",
"loja_afiliado_id",
"comissao",
"created",
"updated",
"_codigo"
],
"additionalProperties": false
},
"description": "A lista de afiliados"
}
},
"required": [
"itens"
]
}Operações com o Afiliado ¶
Este endpoint permite obter informações dado um id válido
Detalhar AfiliadoGET/afiliados/{id}
Example URI
- id
int(required) Example: 42O id do Afiliado
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"id": 1,
"nome": "João da silva",
"telefone": "84 98888 8888",
"email": "[email protected]",
"celular": "84 98888 8889",
"url_site": "joaoexample.com.br",
"empresa": "João Soluções",
"estrangeiro": "0",
"loja_afiliado_id": 2,
"comissao": "16.50",
"created": "2021-06-01 15:56:50",
"updated": "2021-06-01 15:56:50",
"_codigo": "abcdefghi"
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identificador único do afiliado"
},
"nome": {
"type": "string",
"description": "O nome do afiliado"
},
"telefone": {
"type": "string",
"description": "O telefone do afiliado"
},
"email": {
"type": "string",
"description": "O email para contato"
},
"celular": {
"type": "string",
"description": "O telefone alternativo do afiliado"
},
"url_site": {
"type": "string",
"description": "A URL do site do afiliado"
},
"empresa": {
"type": "string",
"description": "Nome da empresa"
},
"estrangeiro": {
"type": "string",
"description": "Se é estrangeiro"
},
"loja_afiliado_id": {
"type": "number",
"description": "Identificador único do vínculo entre o afiliado e a loja"
},
"comissao": {
"type": "string",
"description": "A porcentagem da comissão"
},
"created": {
"type": "string",
"description": "Data de criação"
},
"updated": {
"type": "string",
"description": "Data da última atualização"
},
"_codigo": {
"type": "string",
"description": "O código do afiliado que pode ser passado para o site com ?ref=abcdefghi para associar a uma venda"
}
}
}Webhooks ¶
Webhooks ¶
Uma vez registrado, o webhook será chamado sempre que um novo pedido for criado.
O payload enviado contém o tipo de evento e os dados do pedido no mesmo formado do endpoint de detalhamento de pedido.
O tipo de evento estará no campo event e pode ser ORDER.CREATED, ORDER.UPDATED ou ORDER_ITEMS.UPDATED.
Os dados do pedido, no campo payload, estarão sempre no mesmo formato independente do tipo de evento.
Política de tentativas
Quando o webhook é executado, o Paytour espera uma resposta HTTP entre 200 e 299. Em caso de status diferente ou falha na conexão, novas tentativas serão feitas.
-
A segunda tentativa é feita 30 segundos após tentativa origial.
-
A terceira tentativa é feita 5 minutos após a segunda tentativa.
-
A quarta tentativa é feita 10 minutos após a terceira tentativa.
-
A quinta tentativa é feita 20 minutos após a quarta tentativa.
Após 5 tentativas sem sucesso, o Paytour não tentará mais executar o webhook.
Listar WebhooksGET/webhooks
Example URI
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"itens": [
{
"id": 1,
"loja_id": 1,
"url": "https://example.com",
"data_hora_criacao": "2023-08-07 01:00:00",
"data_hora_atualizacao": "2023-08-07 02:00:00"
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id do Webhook"
},
"loja_id": {
"type": "number",
"enum": [
1
],
"description": "O id da loja"
},
"url": {
"type": "string",
"enum": [
"https://example.com"
],
"description": "A url do Webhook"
},
"data_hora_criacao": {
"type": "string",
"enum": [
"2023-08-07 01:00:00"
],
"description": "A data e hora de criação do Webhook"
},
"data_hora_atualizacao": {
"type": "string",
"enum": [
"2023-08-07 02:00:00"
],
"description": "A data e hora da última atualização do Webhook"
}
},
"required": [
"id",
"loja_id",
"url",
"data_hora_criacao",
"data_hora_atualizacao"
],
"additionalProperties": false
},
"description": "A lista de Webkooks"
}
},
"required": [
"itens"
]
}Registrar WebhookPOST/webhooks
Ao registrar um webhook, se já existia um anteriormente criado, ele será atualizado com a nova URL.
No header de todas as requisições enviadas ao webhook cadastrado, será enviada a entrada Authorization com o token passado em token no momento da criação.
Entretanto esse token não será retornado ao listar os webhooks. Sendo assim se o token for perdido será necessário criar um novo webhook ou atualizar o atual.
Example URI
Headers
Authorization: Bearer <authorization-token>
Content-Type: multipart/form-dataBody
{
"url": "https://example.com",
"token": "1a2b3c4d5e6f7g898"
}Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "A url do Webhook"
},
"token": {
"type": "string",
"description": "Um token que será enviado em todas as requests para essa url"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}201Headers
Content-Type: application/jsonBody
{
"id": 1,
"loja_id": 1,
"url": "https://example.com",
"data_hora_criacao": "2023-08-07 01:00:00",
"data_hora_atualizacao": "2023-08-07 02:00:00"
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "O id do Webhook"
},
"loja_id": {
"type": "number",
"description": "O id da loja"
},
"url": {
"type": "string",
"description": "A url do Webhook"
},
"data_hora_criacao": {
"type": "string",
"description": "A data e hora de criação do Webhook"
},
"data_hora_atualizacao": {
"type": "string",
"description": "A data e hora da última atualização do Webhook"
}
}
}Apagando um Webhook ¶
Apagar WebhookDELETE/webhooks/{id}
Example URI
- id
int(required) Example: 42O id do webhook
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"sucesso": true
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"sucesso": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
}
}
}Faixa Etária ¶
As faixas etárias são usadas para distinguir tipos de ingresso para uma atividade, elas também determinam preço.
Criando ¶
CriarPOST/classificacao
Example URI
Headers
Authorization: Bearer <authorization-token>Body
{
"nome": "...",
"descricao": "...",
"dependente": 1
}Schema
{
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Como o cliente visualizará no momento da compra"
},
"descricao": {
"type": "string",
"description": "Descrição da classificação para orientar o cliente na compra"
},
"dependente": {
"type": "number",
"description": "Se essa faixa etária só pode ser vendida junto com outra que não seja dependente"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}201Headers
Content-Type: application/jsonBody
{
"success": true,
"data": {
"nome": "...",
"descricao": "...",
"dependente": 1
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
},
"data": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Como o cliente visualizará no momento da compra"
},
"descricao": {
"type": "string",
"description": "Descrição da classificação para orientar o cliente na compra"
},
"dependente": {
"type": "number",
"description": "Se essa faixa etária só pode ser vendida junto com outra que não seja dependente"
}
},
"description": "O payload de resposta"
}
}
}Listando ¶
ListarGET/classificacao{?page,perPage,dependente,nome}
Example URI
- page
int(required) Example: 1A página que se deseja obter
- perPage
int(required) Example: 20Número de itens por página sendo no máximo 100
- dependente
number(required) Example: 1Filtrar por classificação dependente ou não
- nome
string(required) Example: AdultoFiltrar por classificação cujo nome inclui o valor informado
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"itens": [
{
"nome": "...",
"descricao": "...",
"dependente": 1
}
],
"info": {
"total": 1,
"pagina": 1,
"total_paginas": 1
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"enum": [
"..."
],
"description": "Como o cliente visualizará no momento da compra"
},
"descricao": {
"type": "string",
"enum": [
"..."
],
"description": "Descrição da classificação para orientar o cliente na compra"
},
"dependente": {
"type": "number",
"enum": [
1
],
"description": "Se essa faixa etária só pode ser vendida junto com outra que não seja dependente"
}
},
"required": [
"nome",
"descricao",
"dependente"
],
"additionalProperties": false
}
},
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
}
}
}
},
"required": [
"itens"
]
}Manipulando ¶
ObterGET/classificacao/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"nome": "...",
"descricao": "...",
"dependente": 1
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Como o cliente visualizará no momento da compra"
},
"descricao": {
"type": "string",
"description": "Descrição da classificação para orientar o cliente na compra"
},
"dependente": {
"type": "number",
"description": "Se essa faixa etária só pode ser vendida junto com outra que não seja dependente"
}
}
}AtualizarPUT/classificacao/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>Body
{
"nome": "...",
"descricao": "...",
"dependente": 1
}Schema
{
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Como o cliente visualizará no momento da compra"
},
"descricao": {
"type": "string",
"description": "Descrição da classificação para orientar o cliente na compra"
},
"dependente": {
"type": "number",
"description": "Se essa faixa etária só pode ser vendida junto com outra que não seja dependente"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"success": true,
"data": {
"nome": "...",
"descricao": "...",
"dependente": 1
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
},
"data": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Como o cliente visualizará no momento da compra"
},
"descricao": {
"type": "string",
"description": "Descrição da classificação para orientar o cliente na compra"
},
"dependente": {
"type": "number",
"description": "Se essa faixa etária só pode ser vendida junto com outra que não seja dependente"
}
},
"description": "O payload de resposta"
}
}
}ApagarDELETE/classificacao/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonFormulários ¶
Listando ¶
ListarGET/formularios{?page,perPage}
Example URI
- page
int(required) Example: 1A página que se deseja obter
- perPage
int(required) Example: 20Número de itens por página sendo no máximo 100
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"itens": [
{
"nome": "...",
"campo_exibicao": "...",
"campos": "...",
"campos_voucher": "..."
}
],
"info": {
"total": 1,
"pagina": 1,
"total_paginas": 1
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"enum": [
"..."
],
"description": "Nome"
},
"campo_exibicao": {
"type": "string",
"enum": [
"..."
],
"description": "Campo que será utilizado para identificar o utilizador no carrinho. Geralmente é o nome do utilizador."
},
"campos": {
"type": "string",
"enum": [
"..."
],
"description": "campos"
},
"campos_voucher": {
"type": "string",
"enum": [
"..."
],
"description": "Campos para exibir no voucher"
}
},
"required": [
"nome",
"campo_exibicao",
"campos",
"campos_voucher"
],
"additionalProperties": false
}
},
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
}
}
}
},
"required": [
"itens"
]
}Manipulando ¶
ObterGET/formularios/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"nome": "...",
"campo_exibicao": "...",
"campos": "...",
"campos_voucher": "..."
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Nome"
},
"campo_exibicao": {
"type": "string",
"description": "Campo que será utilizado para identificar o utilizador no carrinho. Geralmente é o nome do utilizador."
},
"campos": {
"type": "string",
"description": "campos"
},
"campos_voucher": {
"type": "string",
"description": "Campos para exibir no voucher"
}
}
}Opcionais ¶
Os opcionais podem ser comprados junto de uma atividade
Criando ¶
CriarPOST/opcionais
Example URI
Headers
Authorization: Bearer <authorization-token>Body
{
"nome": "...",
"preco": "50.00",
"periodos": [
{
"preco_sazonal_id": 42,
"periodo_id": 42,
"preco": 50,
"preco_promocao": 50
}
]
}Schema
{
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Nome do opcional da atividade"
},
"preco": {
"type": "string",
"description": "Preço que o opcional será vendido dentro da atividade"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_sazonal_id": {
"type": "number",
"description": "O id do preço sazonal caso queira atualizar, nulo caso queira criar"
},
"periodo_id": {
"type": "number",
"description": "O id do período sazonal"
},
"preco": {
"type": "number",
"description": "O preço nesse período"
},
"preco_promocao": {
"type": "number",
"description": "O preço promocional caso o período seja uma promoção"
}
}
},
"description": "Caso não tenha diferença de preço nestes períodos, deixe o campo em branco."
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}201Headers
Content-Type: application/jsonBody
{
"success": true,
"data": {
"nome": "...",
"preco": "50.00",
"periodos": [
{
"preco_sazonal_id": 42,
"periodo_id": 42,
"preco": 50,
"preco_promocao": 50
}
]
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
},
"data": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Nome do opcional da atividade"
},
"preco": {
"type": "string",
"description": "Preço que o opcional será vendido dentro da atividade"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_sazonal_id": {
"type": "number",
"enum": [
42
],
"description": "O id do preço sazonal caso queira atualizar, nulo caso queira criar"
},
"periodo_id": {
"type": "number",
"enum": [
42
],
"description": "O id do período sazonal"
},
"preco": {
"type": "number",
"enum": [
50
],
"description": "O preço nesse período"
},
"preco_promocao": {
"type": "number",
"enum": [
50
],
"description": "O preço promocional caso o período seja uma promoção"
}
},
"required": [
"preco_sazonal_id",
"periodo_id",
"preco",
"preco_promocao"
],
"additionalProperties": false
},
"description": "Caso não tenha diferença de preço nestes períodos, deixe o campo em branco."
}
},
"required": [
"periodos"
],
"description": "O payload de resposta"
}
}
}Listando ¶
ListarGET/opcionais{?page,perPage,showDeleteds}
Example URI
- page
int(required) Example: 1A página que se deseja obter
- perPage
int(required) Example: 20Número de itens por página sendo no máximo 100
- showDeleteds
number(required) Example: 1Mostrar também os deletados
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"itens": [
{
"nome": "...",
"preco": "50.00",
"periodos": [
{
"preco_sazonal_id": 42,
"periodo_id": 42,
"preco": 50,
"preco_promocao": 50
}
]
}
],
"info": {
"total": 1,
"pagina": 1,
"total_paginas": 1
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"enum": [
"..."
],
"description": "Nome do opcional da atividade"
},
"preco": {
"type": "string",
"enum": [
"50.00"
],
"description": "Preço que o opcional será vendido dentro da atividade"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_sazonal_id": {
"type": "number",
"enum": [
42
],
"description": "O id do preço sazonal caso queira atualizar, nulo caso queira criar"
},
"periodo_id": {
"type": "number",
"enum": [
42
],
"description": "O id do período sazonal"
},
"preco": {
"type": "number",
"enum": [
50
],
"description": "O preço nesse período"
},
"preco_promocao": {
"type": "number",
"enum": [
50
],
"description": "O preço promocional caso o período seja uma promoção"
}
},
"required": [
"preco_sazonal_id",
"periodo_id",
"preco",
"preco_promocao"
],
"additionalProperties": false
},
"description": "Caso não tenha diferença de preço nestes períodos, deixe o campo em branco."
}
},
"required": [
"nome",
"preco",
"periodos"
],
"additionalProperties": false
}
},
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
}
}
}
},
"required": [
"itens"
]
}Manipulando ¶
ObterGET/opcionais/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"nome": "...",
"preco": "50.00",
"periodos": [
{
"preco_sazonal_id": 42,
"periodo_id": 42,
"preco": 50,
"preco_promocao": 50
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Nome do opcional da atividade"
},
"preco": {
"type": "string",
"description": "Preço que o opcional será vendido dentro da atividade"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_sazonal_id": {
"type": "number",
"enum": [
42
],
"description": "O id do preço sazonal caso queira atualizar, nulo caso queira criar"
},
"periodo_id": {
"type": "number",
"enum": [
42
],
"description": "O id do período sazonal"
},
"preco": {
"type": "number",
"enum": [
50
],
"description": "O preço nesse período"
},
"preco_promocao": {
"type": "number",
"enum": [
50
],
"description": "O preço promocional caso o período seja uma promoção"
}
},
"required": [
"preco_sazonal_id",
"periodo_id",
"preco",
"preco_promocao"
],
"additionalProperties": false
},
"description": "Caso não tenha diferença de preço nestes períodos, deixe o campo em branco."
}
},
"required": [
"periodos"
]
}AtualizarPUT/opcionais/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>Body
{
"nome": "...",
"preco": "50.00",
"periodos": [
{
"preco_sazonal_id": 42,
"periodo_id": 42,
"preco": 50,
"preco_promocao": 50
}
]
}Schema
{
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Nome do opcional da atividade"
},
"preco": {
"type": "string",
"description": "Preço que o opcional será vendido dentro da atividade"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_sazonal_id": {
"type": "number",
"description": "O id do preço sazonal caso queira atualizar, nulo caso queira criar"
},
"periodo_id": {
"type": "number",
"description": "O id do período sazonal"
},
"preco": {
"type": "number",
"description": "O preço nesse período"
},
"preco_promocao": {
"type": "number",
"description": "O preço promocional caso o período seja uma promoção"
}
}
},
"description": "Caso não tenha diferença de preço nestes períodos, deixe o campo em branco."
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"success": true,
"data": {
"nome": "...",
"preco": "50.00",
"periodos": [
{
"preco_sazonal_id": 42,
"periodo_id": 42,
"preco": 50,
"preco_promocao": 50
}
]
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
},
"data": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Nome do opcional da atividade"
},
"preco": {
"type": "string",
"description": "Preço que o opcional será vendido dentro da atividade"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_sazonal_id": {
"type": "number",
"enum": [
42
],
"description": "O id do preço sazonal caso queira atualizar, nulo caso queira criar"
},
"periodo_id": {
"type": "number",
"enum": [
42
],
"description": "O id do período sazonal"
},
"preco": {
"type": "number",
"enum": [
50
],
"description": "O preço nesse período"
},
"preco_promocao": {
"type": "number",
"enum": [
50
],
"description": "O preço promocional caso o período seja uma promoção"
}
},
"required": [
"preco_sazonal_id",
"periodo_id",
"preco",
"preco_promocao"
],
"additionalProperties": false
},
"description": "Caso não tenha diferença de preço nestes períodos, deixe o campo em branco."
}
},
"required": [
"periodos"
],
"description": "O payload de resposta"
}
}
}ApagarDELETE/opcionais/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonPasseios ¶
Criando ¶
CriarPOST/passeios
Example URI
Headers
Authorization: Bearer <authorization-token>Body
{
"nome": "...",
"codigo": "...",
"duracao_passeio": "...",
"descricao": "...",
"tipo_passeio": "fixo|faixa|dia_inteiro|turno|intervalo_dias",
"tipo_atividade": "passeio|transfer|pacote",
"seletor": "calendario|lista",
"url_video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"lojas_opcionais": [
1
],
"lojas_produtos": [
1
],
"nao_vendavel": 1,
"nao_vendavel_admin": 1,
"nao_vendavel_afiliado": 1,
"exibir_proxima_data": 1,
"ativo": 1,
"mensagem_loja_nao_vendavel": "...",
"mensagem_cliente_nao_vendavel": "...",
"prazo_minimo_para_compra": 42,
"tipo_prazo_para_compra": "dias|horas",
"preenchimento_formulario": "anterior_todos|anterior_unico|posterior_todos|posterior_unico",
"prioridade": 42,
"quantidade_min_venda": 42,
"quantidade_max_venda": 42,
"termos_uso": "...",
"termos_uso_obrigatorio": 1,
"visivel_site": 1,
"texto_voucher": "...",
"produto_formulario_id": "42",
"alerta_texto": "...",
"precos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"gratuidade": 0,
"preco": "42.00",
"preco_desconto": "35.00",
"preco_net": "30.00",
"periodos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"periodo_id": 1,
"preco": "42.00",
"preco_promocao": "30.00",
"preco_desconto": "35.00",
"preco_net": "30.00"
}
]
}
],
"visualizacao_preco": "menor_preco|maior_preco|menor_nao_dependente|menor_preco_recente|maior_preco_recente|menor_preco_desconto|desconto_dependente|menor_geral_desconto|menor_geral_desconto_n_dependente|menor_desconto_recente",
"destino_id": "...",
"tags": "tag1,tag2",
"singular": "...",
"plural": "...",
"seo_title": "...",
"seo_description": "...",
"seo_keywords": "...",
"seo_extras": "...",
"itens_inclusos": [
{
"id": 1,
"incluso": 1,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"itens_nao_inclusos": [
{
"id": 1,
"incluso": 0,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"caracteristicas": [
{
"id": 1,
"icone_svg_id": 1,
"ordem": 1,
"titulo": "Desconto à vista",
"descricao": "Receba 10% de desconto pagando à vista, no PIX!"
}
]
}Schema
{
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Campo para inserir o nome da atividade. Exemplo: Mergulho, City Tour, Arvorismo, Atividade de Buggy."
},
"codigo": {
"type": "string",
"description": "O código cadastrado é para identificar sua atividade, uma abreviação do nome da sua atividade de maneira mais prática. Exemplo: “Mergulho” será MERG ou MERGU."
},
"duracao_passeio": {
"type": "string",
"description": "Indica ao cliente o tempo que a atividade poderá ter. Recomenda-se utilizar o termo “aproximadamente” para não causar expectativa, colocando sempre para menos. Duração de uma atividade de buggy é de 2 horas. No cadastro indicar como “aproximadamente 1h50min”."
},
"descricao": {
"type": "string",
"description": "A descrição do Passeio, podendo ser em HTML"
},
"tipo_passeio": {
"type": "string",
"description": "O tipo de atividade no que diz respeito ao horário"
},
"tipo_atividade": {
"type": "string",
"description": "Ao categorizar a atividade, ela será identificada com uma TAG (etiqueta) na listagem do site para identificação pelo cliente.<br /><br /> Atividades que estejam cadastradas com a opção 'Atividade' aparecerão na loja com a etiqueta conforme o termo cadastrado no campo 'Título da atividade' nas Regras ➝ Atividades.<br /><br /> Caso tenha dúvidas, confira este artigo em nossa Base de Conhecimento - <a href="https://atendimento.paytour.com.br/kb/article/373225/como-associar-a-tag-do-tipo-da-atividade" target="_blank">Ler artigo</a>."
},
"seletor": {
"type": "string",
"description": "Escolha a opção de seletor de datas no formato Calendário ou Lista<br><br><strong>Calendário:</strong> Recomendamos o uso para atividades que tenham muitas saídas, com bastante frequência.<br><br><strong>Lista:</strong> Recomendamos utilizar esse formato para atividades que tem datas específicas de saídas, por exemplo excursões e viagens."
},
"url_video": {
"type": "string",
"description": "URL do vídeo"
},
"lojas_opcionais": {
"type": "array",
"items": {
"type": "number"
},
"description": "A lista de ids dos opcionais desse passeio"
},
"lojas_produtos": {
"type": "array",
"items": {
"type": "number"
},
"description": "Produtos Relacionados"
},
"nao_vendavel": {
"type": "number",
"description": "Se pode ser vendido pela loja(1) ou não(0)"
},
"nao_vendavel_admin": {
"type": "number",
"description": "Se pode ser vendido pelo admin(1) ou não(0)"
},
"nao_vendavel_afiliado": {
"type": "number",
"description": "Se pode ser vendido pelo afiliado(1) ou não(0)"
},
"exibir_proxima_data": {
"type": "number",
"description": "Exibir próxima data disponível na home"
},
"ativo": {
"type": "number",
"description": "Indica quando a sua Atividade está ativa no seu site ou não. A opção “Ativa” indica que irá aparecer no seu site e “Inativa” quando não deverá estar disponível no site."
},
"mensagem_loja_nao_vendavel": {
"type": "string"
},
"mensagem_cliente_nao_vendavel": {
"type": "string"
},
"prazo_minimo_para_compra": {
"type": "number",
"description": "Valor"
},
"tipo_prazo_para_compra": {
"type": "string",
"description": "Prazo mínimo para compra da atividade, podendo ser em dias ou horas.<br>Exempro dias: Com o valor <strong>3</strong> para este campo, os usuários hoje só poderão comprar esta atividade para o dia 20/05/2023 em diante.<br>Exempro horas: Com o valor <strong>3</strong> para este campo, os usuários só poderão comprar a atividade no mínimo 3 horas antes dele acontecer."
},
"preenchimento_formulario": {
"type": "string",
"description": "Existem três regras: Informar se apenas o 1º usuário deve preencher todo o formulário; Todos os usuários após a compra; Apenas o 1º usuário após a compra."
},
"prioridade": {
"type": "number",
"description": "Quanto maior o número adicionado neste campo, mais alta será a exibição da atividade na loja. Com isso, as atividades com valores mais altos estarão sempre no topo da loja, e os de valores menores estarão abaixo, seguindo sempre a ordem. Por exemplo: Atividade A com valor 100 irá aparecer primeiro do que a Atividade B com valor 1."
},
"quantidade_min_venda": {
"type": "number",
"description": "Indica o número mínimo de reservas que uma única pessoa poderá adquirir dessa atividade"
},
"quantidade_max_venda": {
"type": "number",
"description": "Indica o número máximo de reservas que uma única pessoa poderá adquirir dessa atividade."
},
"termos_uso": {
"type": "string",
"description": "O texto dos termos de uso podendo ser em HTML"
},
"termos_uso_obrigatorio": {
"type": "number",
"description": "Ativar ou desativar a opção para leitura obrigatória dos termos de uso da Atividade. Se ativado, o cliente só poderá avançar na compra apenas após a confirmação que leu e concorda com o termo. Usado para informar horários, taxas extras, peso adequado, altura para estar apto a realizar a atividade, etc."
},
"visivel_site": {
"type": "number",
"description": "Aparece na listagem do site"
},
"texto_voucher": {
"type": "string",
"description": "O texto que vai no voucher"
},
"produto_formulario_id": {
"type": "string",
"description": "Listagem dos formulários que foram cadastrados no sistema. A atividade se associará ao formulário indicado (contendo perguntas essenciais para a atividade ser realizada da melhor forma). Cada atividade pode ter seu próprio formulário, mas precisa ser direto somente com informações relevantes como antes da data de realização da atividade, por exemplo caso venha a ser um mergulho e seja necessário o número de calçado do cliente para o pé de pato."
},
"alerta_texto": {
"type": "string",
"description": "Frase que ficará no topo da foto do passeio. Frases mais usadas: Passeio mais vendido, passeio top de vendas, passeio mais procurado, etc."
},
"precos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"description": "O id do preço, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"description": "O id da faixa etária"
},
"gratuidade": {
"type": "number",
"description": "1 se esse preço é na verdade gratuito e 0 caso contrário"
},
"preco": {
"type": "string",
"description": "O preço padrão"
},
"preco_desconto": {
"type": "string",
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"description": "O preço para o afiliado"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"description": "O id do preço sazonal, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"description": "O id da faixa etária"
},
"periodo_id": {
"type": "number",
"description": "O id do período já cadastrado"
},
"preco": {
"type": "string",
"description": "O preço atual do período ou o antigo preço caso seja promoção"
},
"preco_promocao": {
"type": "string",
"description": "O novo preço do período caso seja promoção"
},
"preco_desconto": {
"type": "string",
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"description": "O preço para o afiliado"
}
}
},
"description": "Os períodos de preço especiais"
}
}
},
"description": "Os preços de acordo com faixa etária e períodos"
},
"visualizacao_preco": {
"type": "string",
"description": "Mostrar Preço na Loja"
},
"destino_id": {
"type": "string",
"description": "Opção que oferece a indicação de onde é realizada a atividade. Basta digitar o nome da cidade onde sua atividade será realizada."
},
"tags": {
"type": "string",
"description": "Recurso utilizado para associar os passeios aos menus. São palavras-chave que remetem ao passeio, separadas por vírgula. Passeios como: mergulho, lancha, lagoa poderiam ter como tag a palavra “água”. A loja poderia ter um menu com um nome específico e nele estarem todos os passeios da tag associada."
},
"singular": {
"type": "string",
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacote, quadriciclo, bicicleta, buggy."
},
"plural": {
"type": "string",
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacotes, quadriciclos, bicicletas, buggys."
},
"seo_title": {
"type": "string",
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_description": {
"type": "string",
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_keywords": {
"type": "string",
"description": "As palavras chaves não aparecem no resultado do Google, mas ajuda na busca caso alguém pesquise por uma delas. Cadastre as palavras-chave separadas por vírgula."
},
"seo_extras": {
"type": "string",
"description": "Coloque tags extras para serem adicionadas na página de detalhe da atividade."
},
"itens_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"description": "Se este item é do tipo incluso ou não. Deve ser 1"
},
"ordem": {
"type": "number",
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"description": "Uma frase que descreva o item incluso"
}
}
},
"description": "Os itens que esse passeio inclui"
},
"itens_nao_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"description": "Se este item é do tipo incluso ou não. Deve ser 0"
},
"ordem": {
"type": "number",
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"description": "Uma frase que descreva o item incluso"
}
}
},
"description": "Os itens que esse passeio inclui"
},
"caracteristicas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "O id da caracteristica, caso já exista"
},
"icone_svg_id": {
"type": "number",
"description": "O id do icone SVG da nossa base de dados"
},
"ordem": {
"type": "number",
"description": "A ordem em que esse item aparece"
},
"titulo": {
"type": "string",
"description": "O título dessa caracteristica"
},
"descricao": {
"type": "string",
"description": "O título dessa caracteristica"
}
}
},
"description": "Os itens que esse passeio inclui"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}201Headers
Content-Type: application/jsonBody
{
"success": true,
"data": {
"nome": "...",
"codigo": "...",
"duracao_passeio": "...",
"descricao": "...",
"tipo_passeio": "fixo|faixa|dia_inteiro|turno|intervalo_dias",
"tipo_atividade": "passeio|transfer|pacote",
"seletor": "calendario|lista",
"url_video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"lojas_opcionais": [
1
],
"lojas_produtos": [
1
],
"nao_vendavel": 1,
"nao_vendavel_admin": 1,
"nao_vendavel_afiliado": 1,
"exibir_proxima_data": 1,
"ativo": 1,
"mensagem_loja_nao_vendavel": "...",
"mensagem_cliente_nao_vendavel": "...",
"prazo_minimo_para_compra": 42,
"tipo_prazo_para_compra": "dias|horas",
"preenchimento_formulario": "anterior_todos|anterior_unico|posterior_todos|posterior_unico",
"prioridade": 42,
"quantidade_min_venda": 42,
"quantidade_max_venda": 42,
"termos_uso": "...",
"termos_uso_obrigatorio": 1,
"visivel_site": 1,
"texto_voucher": "...",
"produto_formulario_id": "42",
"alerta_texto": "...",
"precos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"gratuidade": 0,
"preco": "42.00",
"preco_desconto": "35.00",
"preco_net": "30.00",
"periodos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"periodo_id": 1,
"preco": "42.00",
"preco_promocao": "30.00",
"preco_desconto": "35.00",
"preco_net": "30.00"
}
]
}
],
"visualizacao_preco": "menor_preco|maior_preco|menor_nao_dependente|menor_preco_recente|maior_preco_recente|menor_preco_desconto|desconto_dependente|menor_geral_desconto|menor_geral_desconto_n_dependente|menor_desconto_recente",
"destino_id": "...",
"tags": "tag1,tag2",
"singular": "...",
"plural": "...",
"seo_title": "...",
"seo_description": "...",
"seo_keywords": "...",
"seo_extras": "...",
"itens_inclusos": [
{
"id": 1,
"incluso": 1,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"itens_nao_inclusos": [
{
"id": 1,
"incluso": 0,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"caracteristicas": [
{
"id": 1,
"icone_svg_id": 1,
"ordem": 1,
"titulo": "Desconto à vista",
"descricao": "Receba 10% de desconto pagando à vista, no PIX!"
}
]
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
},
"data": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Campo para inserir o nome da atividade. Exemplo: Mergulho, City Tour, Arvorismo, Atividade de Buggy."
},
"codigo": {
"type": "string",
"description": "O código cadastrado é para identificar sua atividade, uma abreviação do nome da sua atividade de maneira mais prática. Exemplo: “Mergulho” será MERG ou MERGU."
},
"duracao_passeio": {
"type": "string",
"description": "Indica ao cliente o tempo que a atividade poderá ter. Recomenda-se utilizar o termo “aproximadamente” para não causar expectativa, colocando sempre para menos. Duração de uma atividade de buggy é de 2 horas. No cadastro indicar como “aproximadamente 1h50min”."
},
"descricao": {
"type": "string",
"description": "A descrição do Passeio, podendo ser em HTML"
},
"tipo_passeio": {
"type": "string",
"description": "O tipo de atividade no que diz respeito ao horário"
},
"tipo_atividade": {
"type": "string",
"description": "Ao categorizar a atividade, ela será identificada com uma TAG (etiqueta) na listagem do site para identificação pelo cliente.<br /><br /> Atividades que estejam cadastradas com a opção 'Atividade' aparecerão na loja com a etiqueta conforme o termo cadastrado no campo 'Título da atividade' nas Regras ➝ Atividades.<br /><br /> Caso tenha dúvidas, confira este artigo em nossa Base de Conhecimento - <a href="https://atendimento.paytour.com.br/kb/article/373225/como-associar-a-tag-do-tipo-da-atividade" target="_blank">Ler artigo</a>."
},
"seletor": {
"type": "string",
"description": "Escolha a opção de seletor de datas no formato Calendário ou Lista<br><br><strong>Calendário:</strong> Recomendamos o uso para atividades que tenham muitas saídas, com bastante frequência.<br><br><strong>Lista:</strong> Recomendamos utilizar esse formato para atividades que tem datas específicas de saídas, por exemplo excursões e viagens."
},
"url_video": {
"type": "string",
"description": "URL do vídeo"
},
"lojas_opcionais": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "A lista de ids dos opcionais desse passeio"
},
"lojas_produtos": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "Produtos Relacionados"
},
"nao_vendavel": {
"type": "number",
"description": "Se pode ser vendido pela loja(1) ou não(0)"
},
"nao_vendavel_admin": {
"type": "number",
"description": "Se pode ser vendido pelo admin(1) ou não(0)"
},
"nao_vendavel_afiliado": {
"type": "number",
"description": "Se pode ser vendido pelo afiliado(1) ou não(0)"
},
"exibir_proxima_data": {
"type": "number",
"description": "Exibir próxima data disponível na home"
},
"ativo": {
"type": "number",
"description": "Indica quando a sua Atividade está ativa no seu site ou não. A opção “Ativa” indica que irá aparecer no seu site e “Inativa” quando não deverá estar disponível no site."
},
"mensagem_loja_nao_vendavel": {
"type": "string"
},
"mensagem_cliente_nao_vendavel": {
"type": "string"
},
"prazo_minimo_para_compra": {
"type": "number",
"description": "Valor"
},
"tipo_prazo_para_compra": {
"type": "string",
"description": "Prazo mínimo para compra da atividade, podendo ser em dias ou horas.<br>Exempro dias: Com o valor <strong>3</strong> para este campo, os usuários hoje só poderão comprar esta atividade para o dia 20/05/2023 em diante.<br>Exempro horas: Com o valor <strong>3</strong> para este campo, os usuários só poderão comprar a atividade no mínimo 3 horas antes dele acontecer."
},
"preenchimento_formulario": {
"type": "string",
"description": "Existem três regras: Informar se apenas o 1º usuário deve preencher todo o formulário; Todos os usuários após a compra; Apenas o 1º usuário após a compra."
},
"prioridade": {
"type": "number",
"description": "Quanto maior o número adicionado neste campo, mais alta será a exibição da atividade na loja. Com isso, as atividades com valores mais altos estarão sempre no topo da loja, e os de valores menores estarão abaixo, seguindo sempre a ordem. Por exemplo: Atividade A com valor 100 irá aparecer primeiro do que a Atividade B com valor 1."
},
"quantidade_min_venda": {
"type": "number",
"description": "Indica o número mínimo de reservas que uma única pessoa poderá adquirir dessa atividade"
},
"quantidade_max_venda": {
"type": "number",
"description": "Indica o número máximo de reservas que uma única pessoa poderá adquirir dessa atividade."
},
"termos_uso": {
"type": "string",
"description": "O texto dos termos de uso podendo ser em HTML"
},
"termos_uso_obrigatorio": {
"type": "number",
"description": "Ativar ou desativar a opção para leitura obrigatória dos termos de uso da Atividade. Se ativado, o cliente só poderá avançar na compra apenas após a confirmação que leu e concorda com o termo. Usado para informar horários, taxas extras, peso adequado, altura para estar apto a realizar a atividade, etc."
},
"visivel_site": {
"type": "number",
"description": "Aparece na listagem do site"
},
"texto_voucher": {
"type": "string",
"description": "O texto que vai no voucher"
},
"produto_formulario_id": {
"type": "string",
"description": "Listagem dos formulários que foram cadastrados no sistema. A atividade se associará ao formulário indicado (contendo perguntas essenciais para a atividade ser realizada da melhor forma). Cada atividade pode ter seu próprio formulário, mas precisa ser direto somente com informações relevantes como antes da data de realização da atividade, por exemplo caso venha a ser um mergulho e seja necessário o número de calçado do cliente para o pé de pato."
},
"alerta_texto": {
"type": "string",
"description": "Frase que ficará no topo da foto do passeio. Frases mais usadas: Passeio mais vendido, passeio top de vendas, passeio mais procurado, etc."
},
"precos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"enum": [
1
],
"description": "O id do preço, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
1
],
"description": "O id da faixa etária"
},
"gratuidade": {
"type": "number",
"enum": [
0
],
"description": "1 se esse preço é na verdade gratuito e 0 caso contrário"
},
"preco": {
"type": "string",
"enum": [
"42.00"
],
"description": "O preço padrão"
},
"preco_desconto": {
"type": "string",
"enum": [
"35.00"
],
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"enum": [
"30.00"
],
"description": "O preço para o afiliado"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"enum": [
1
],
"description": "O id do preço sazonal, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
1
],
"description": "O id da faixa etária"
},
"periodo_id": {
"type": "number",
"enum": [
1
],
"description": "O id do período já cadastrado"
},
"preco": {
"type": "string",
"enum": [
"42.00"
],
"description": "O preço atual do período ou o antigo preço caso seja promoção"
},
"preco_promocao": {
"type": "string",
"enum": [
"30.00"
],
"description": "O novo preço do período caso seja promoção"
},
"preco_desconto": {
"type": "string",
"enum": [
"35.00"
],
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"enum": [
"30.00"
],
"description": "O preço para o afiliado"
}
},
"required": [
"preco_id",
"faixa_etaria_id",
"periodo_id",
"preco",
"preco_promocao",
"preco_desconto",
"preco_net"
],
"additionalProperties": false
},
"description": "Os períodos de preço especiais"
}
},
"required": [
"preco_id",
"faixa_etaria_id",
"gratuidade",
"preco",
"preco_desconto",
"preco_net",
"periodos"
],
"additionalProperties": false
},
"description": "Os preços de acordo com faixa etária e períodos"
},
"visualizacao_preco": {
"type": "string",
"description": "Mostrar Preço na Loja"
},
"destino_id": {
"type": "string",
"description": "Opção que oferece a indicação de onde é realizada a atividade. Basta digitar o nome da cidade onde sua atividade será realizada."
},
"tags": {
"type": "string",
"description": "Recurso utilizado para associar os passeios aos menus. São palavras-chave que remetem ao passeio, separadas por vírgula. Passeios como: mergulho, lancha, lagoa poderiam ter como tag a palavra “água”. A loja poderia ter um menu com um nome específico e nele estarem todos os passeios da tag associada."
},
"singular": {
"type": "string",
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacote, quadriciclo, bicicleta, buggy."
},
"plural": {
"type": "string",
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacotes, quadriciclos, bicicletas, buggys."
},
"seo_title": {
"type": "string",
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_description": {
"type": "string",
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_keywords": {
"type": "string",
"description": "As palavras chaves não aparecem no resultado do Google, mas ajuda na busca caso alguém pesquise por uma delas. Cadastre as palavras-chave separadas por vírgula."
},
"seo_extras": {
"type": "string",
"description": "Coloque tags extras para serem adicionadas na página de detalhe da atividade."
},
"itens_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"enum": [
1
],
"description": "Se este item é do tipo incluso ou não. Deve ser 1"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"enum": [
"Almoço e bebida"
],
"description": "Uma frase que descreva o item incluso"
}
},
"required": [
"id",
"incluso",
"ordem",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
},
"itens_nao_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"enum": [
0
],
"description": "Se este item é do tipo incluso ou não. Deve ser 0"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"enum": [
"Almoço e bebida"
],
"description": "Uma frase que descreva o item incluso"
}
},
"required": [
"id",
"incluso",
"ordem",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
},
"caracteristicas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id da caracteristica, caso já exista"
},
"icone_svg_id": {
"type": "number",
"enum": [
1
],
"description": "O id do icone SVG da nossa base de dados"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"titulo": {
"type": "string",
"enum": [
"Desconto à vista"
],
"description": "O título dessa caracteristica"
},
"descricao": {
"type": "string",
"enum": [
"Receba 10% de desconto pagando à vista, no PIX!"
],
"description": "O título dessa caracteristica"
}
},
"required": [
"id",
"icone_svg_id",
"ordem",
"titulo",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
}
},
"required": [
"lojas_opcionais",
"lojas_produtos",
"precos",
"itens_inclusos",
"itens_nao_inclusos",
"caracteristicas"
],
"description": "O payload de resposta"
}
}
}Listando ¶
ListarGET/passeios{?page,perPage,minimalResponse,nome}
Example URI
- page
int(required) Example: 1A página que se deseja obter
- perPage
int(required) Example: 20Número de itens por página sendo no máximo 100
- minimalResponse
int(required) Example: 1Passe apenas se deseja um resposta com poucos campos e mais rápida
- nome
string(required) Example: PraiaFiltrar por atividades cujo nome inclui o valor informado
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"itens": [
{
"nome": "...",
"codigo": "...",
"duracao_passeio": "...",
"descricao": "...",
"tipo_passeio": "fixo|faixa|dia_inteiro|turno|intervalo_dias",
"tipo_atividade": "passeio|transfer|pacote",
"seletor": "calendario|lista",
"url_video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"lojas_opcionais": [
1
],
"lojas_produtos": [
1
],
"nao_vendavel": 1,
"nao_vendavel_admin": 1,
"nao_vendavel_afiliado": 1,
"exibir_proxima_data": 1,
"ativo": 1,
"mensagem_loja_nao_vendavel": "...",
"mensagem_cliente_nao_vendavel": "...",
"prazo_minimo_para_compra": 42,
"tipo_prazo_para_compra": "dias|horas",
"preenchimento_formulario": "anterior_todos|anterior_unico|posterior_todos|posterior_unico",
"prioridade": 42,
"quantidade_min_venda": 42,
"quantidade_max_venda": 42,
"termos_uso": "...",
"termos_uso_obrigatorio": 1,
"visivel_site": 1,
"texto_voucher": "...",
"produto_formulario_id": "42",
"alerta_texto": "...",
"precos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"gratuidade": 0,
"preco": "42.00",
"preco_desconto": "35.00",
"preco_net": "30.00",
"periodos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"periodo_id": 1,
"preco": "42.00",
"preco_promocao": "30.00",
"preco_desconto": "35.00",
"preco_net": "30.00"
}
]
}
],
"visualizacao_preco": "menor_preco|maior_preco|menor_nao_dependente|menor_preco_recente|maior_preco_recente|menor_preco_desconto|desconto_dependente|menor_geral_desconto|menor_geral_desconto_n_dependente|menor_desconto_recente",
"destino_id": "...",
"tags": "tag1,tag2",
"singular": "...",
"plural": "...",
"seo_title": "...",
"seo_description": "...",
"seo_keywords": "...",
"seo_extras": "...",
"itens_inclusos": [
{
"id": 1,
"incluso": 1,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"itens_nao_inclusos": [
{
"id": 1,
"incluso": 0,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"caracteristicas": [
{
"id": 1,
"icone_svg_id": 1,
"ordem": 1,
"titulo": "Desconto à vista",
"descricao": "Receba 10% de desconto pagando à vista, no PIX!"
}
]
}
],
"info": {
"total": 1,
"pagina": 1,
"total_paginas": 1
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"enum": [
"..."
],
"description": "Campo para inserir o nome da atividade. Exemplo: Mergulho, City Tour, Arvorismo, Atividade de Buggy."
},
"codigo": {
"type": "string",
"enum": [
"..."
],
"description": "O código cadastrado é para identificar sua atividade, uma abreviação do nome da sua atividade de maneira mais prática. Exemplo: “Mergulho” será MERG ou MERGU."
},
"duracao_passeio": {
"type": "string",
"enum": [
"..."
],
"description": "Indica ao cliente o tempo que a atividade poderá ter. Recomenda-se utilizar o termo “aproximadamente” para não causar expectativa, colocando sempre para menos. Duração de uma atividade de buggy é de 2 horas. No cadastro indicar como “aproximadamente 1h50min”."
},
"descricao": {
"type": "string",
"enum": [
"..."
],
"description": "A descrição do Passeio, podendo ser em HTML"
},
"tipo_passeio": {
"type": "string",
"enum": [
"fixo|faixa|dia_inteiro|turno|intervalo_dias"
],
"description": "O tipo de atividade no que diz respeito ao horário"
},
"tipo_atividade": {
"type": "string",
"enum": [
"passeio|transfer|pacote"
],
"description": "Ao categorizar a atividade, ela será identificada com uma TAG (etiqueta) na listagem do site para identificação pelo cliente.<br /><br /> Atividades que estejam cadastradas com a opção 'Atividade' aparecerão na loja com a etiqueta conforme o termo cadastrado no campo 'Título da atividade' nas Regras ➝ Atividades.<br /><br /> Caso tenha dúvidas, confira este artigo em nossa Base de Conhecimento - <a href="https://atendimento.paytour.com.br/kb/article/373225/como-associar-a-tag-do-tipo-da-atividade" target="_blank">Ler artigo</a>."
},
"seletor": {
"type": "string",
"enum": [
"calendario|lista"
],
"description": "Escolha a opção de seletor de datas no formato Calendário ou Lista<br><br><strong>Calendário:</strong> Recomendamos o uso para atividades que tenham muitas saídas, com bastante frequência.<br><br><strong>Lista:</strong> Recomendamos utilizar esse formato para atividades que tem datas específicas de saídas, por exemplo excursões e viagens."
},
"url_video": {
"type": "string",
"enum": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
],
"description": "URL do vídeo"
},
"lojas_opcionais": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "A lista de ids dos opcionais desse passeio"
},
"lojas_produtos": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "Produtos Relacionados"
},
"nao_vendavel": {
"type": "number",
"enum": [
1
],
"description": "Se pode ser vendido pela loja(1) ou não(0)"
},
"nao_vendavel_admin": {
"type": "number",
"enum": [
1
],
"description": "Se pode ser vendido pelo admin(1) ou não(0)"
},
"nao_vendavel_afiliado": {
"type": "number",
"enum": [
1
],
"description": "Se pode ser vendido pelo afiliado(1) ou não(0)"
},
"exibir_proxima_data": {
"type": "number",
"enum": [
1
],
"description": "Exibir próxima data disponível na home"
},
"ativo": {
"type": "number",
"enum": [
1
],
"description": "Indica quando a sua Atividade está ativa no seu site ou não. A opção “Ativa” indica que irá aparecer no seu site e “Inativa” quando não deverá estar disponível no site."
},
"mensagem_loja_nao_vendavel": {
"type": "string",
"enum": [
"..."
]
},
"mensagem_cliente_nao_vendavel": {
"type": "string",
"enum": [
"..."
]
},
"prazo_minimo_para_compra": {
"type": "number",
"enum": [
42
],
"description": "Valor"
},
"tipo_prazo_para_compra": {
"type": "string",
"enum": [
"dias|horas"
],
"description": "Prazo mínimo para compra da atividade, podendo ser em dias ou horas.<br>Exempro dias: Com o valor <strong>3</strong> para este campo, os usuários hoje só poderão comprar esta atividade para o dia 20/05/2023 em diante.<br>Exempro horas: Com o valor <strong>3</strong> para este campo, os usuários só poderão comprar a atividade no mínimo 3 horas antes dele acontecer."
},
"preenchimento_formulario": {
"type": "string",
"enum": [
"anterior_todos|anterior_unico|posterior_todos|posterior_unico"
],
"description": "Existem três regras: Informar se apenas o 1º usuário deve preencher todo o formulário; Todos os usuários após a compra; Apenas o 1º usuário após a compra."
},
"prioridade": {
"type": "number",
"enum": [
42
],
"description": "Quanto maior o número adicionado neste campo, mais alta será a exibição da atividade na loja. Com isso, as atividades com valores mais altos estarão sempre no topo da loja, e os de valores menores estarão abaixo, seguindo sempre a ordem. Por exemplo: Atividade A com valor 100 irá aparecer primeiro do que a Atividade B com valor 1."
},
"quantidade_min_venda": {
"type": "number",
"enum": [
42
],
"description": "Indica o número mínimo de reservas que uma única pessoa poderá adquirir dessa atividade"
},
"quantidade_max_venda": {
"type": "number",
"enum": [
42
],
"description": "Indica o número máximo de reservas que uma única pessoa poderá adquirir dessa atividade."
},
"termos_uso": {
"type": "string",
"enum": [
"..."
],
"description": "O texto dos termos de uso podendo ser em HTML"
},
"termos_uso_obrigatorio": {
"type": "number",
"enum": [
1
],
"description": "Ativar ou desativar a opção para leitura obrigatória dos termos de uso da Atividade. Se ativado, o cliente só poderá avançar na compra apenas após a confirmação que leu e concorda com o termo. Usado para informar horários, taxas extras, peso adequado, altura para estar apto a realizar a atividade, etc."
},
"visivel_site": {
"type": "number",
"enum": [
1
],
"description": "Aparece na listagem do site"
},
"texto_voucher": {
"type": "string",
"enum": [
"..."
],
"description": "O texto que vai no voucher"
},
"produto_formulario_id": {
"type": "string",
"enum": [
"42"
],
"description": "Listagem dos formulários que foram cadastrados no sistema. A atividade se associará ao formulário indicado (contendo perguntas essenciais para a atividade ser realizada da melhor forma). Cada atividade pode ter seu próprio formulário, mas precisa ser direto somente com informações relevantes como antes da data de realização da atividade, por exemplo caso venha a ser um mergulho e seja necessário o número de calçado do cliente para o pé de pato."
},
"alerta_texto": {
"type": "string",
"enum": [
"..."
],
"description": "Frase que ficará no topo da foto do passeio. Frases mais usadas: Passeio mais vendido, passeio top de vendas, passeio mais procurado, etc."
},
"precos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"enum": [
1
],
"description": "O id do preço, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
1
],
"description": "O id da faixa etária"
},
"gratuidade": {
"type": "number",
"enum": [
0
],
"description": "1 se esse preço é na verdade gratuito e 0 caso contrário"
},
"preco": {
"type": "string",
"enum": [
"42.00"
],
"description": "O preço padrão"
},
"preco_desconto": {
"type": "string",
"enum": [
"35.00"
],
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"enum": [
"30.00"
],
"description": "O preço para o afiliado"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"enum": [
1
],
"description": "O id do preço sazonal, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
1
],
"description": "O id da faixa etária"
},
"periodo_id": {
"type": "number",
"enum": [
1
],
"description": "O id do período já cadastrado"
},
"preco": {
"type": "string",
"enum": [
"42.00"
],
"description": "O preço atual do período ou o antigo preço caso seja promoção"
},
"preco_promocao": {
"type": "string",
"enum": [
"30.00"
],
"description": "O novo preço do período caso seja promoção"
},
"preco_desconto": {
"type": "string",
"enum": [
"35.00"
],
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"enum": [
"30.00"
],
"description": "O preço para o afiliado"
}
},
"required": [
"preco_id",
"faixa_etaria_id",
"periodo_id",
"preco",
"preco_promocao",
"preco_desconto",
"preco_net"
],
"additionalProperties": false
},
"description": "Os períodos de preço especiais"
}
},
"required": [
"preco_id",
"faixa_etaria_id",
"gratuidade",
"preco",
"preco_desconto",
"preco_net",
"periodos"
],
"additionalProperties": false
},
"description": "Os preços de acordo com faixa etária e períodos"
},
"visualizacao_preco": {
"type": "string",
"enum": [
"menor_preco|maior_preco|menor_nao_dependente|menor_preco_recente|maior_preco_recente|menor_preco_desconto|desconto_dependente|menor_geral_desconto|menor_geral_desconto_n_dependente|menor_desconto_recente"
],
"description": "Mostrar Preço na Loja"
},
"destino_id": {
"type": "string",
"enum": [
"..."
],
"description": "Opção que oferece a indicação de onde é realizada a atividade. Basta digitar o nome da cidade onde sua atividade será realizada."
},
"tags": {
"type": "string",
"enum": [
"tag1,tag2"
],
"description": "Recurso utilizado para associar os passeios aos menus. São palavras-chave que remetem ao passeio, separadas por vírgula. Passeios como: mergulho, lancha, lagoa poderiam ter como tag a palavra “água”. A loja poderia ter um menu com um nome específico e nele estarem todos os passeios da tag associada."
},
"singular": {
"type": "string",
"enum": [
"..."
],
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacote, quadriciclo, bicicleta, buggy."
},
"plural": {
"type": "string",
"enum": [
"..."
],
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacotes, quadriciclos, bicicletas, buggys."
},
"seo_title": {
"type": "string",
"enum": [
"..."
],
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_description": {
"type": "string",
"enum": [
"..."
],
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_keywords": {
"type": "string",
"enum": [
"..."
],
"description": "As palavras chaves não aparecem no resultado do Google, mas ajuda na busca caso alguém pesquise por uma delas. Cadastre as palavras-chave separadas por vírgula."
},
"seo_extras": {
"type": "string",
"enum": [
"..."
],
"description": "Coloque tags extras para serem adicionadas na página de detalhe da atividade."
},
"itens_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"enum": [
1
],
"description": "Se este item é do tipo incluso ou não. Deve ser 1"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"enum": [
"Almoço e bebida"
],
"description": "Uma frase que descreva o item incluso"
}
},
"required": [
"id",
"incluso",
"ordem",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
},
"itens_nao_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"enum": [
0
],
"description": "Se este item é do tipo incluso ou não. Deve ser 0"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"enum": [
"Almoço e bebida"
],
"description": "Uma frase que descreva o item incluso"
}
},
"required": [
"id",
"incluso",
"ordem",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
},
"caracteristicas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id da caracteristica, caso já exista"
},
"icone_svg_id": {
"type": "number",
"enum": [
1
],
"description": "O id do icone SVG da nossa base de dados"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"titulo": {
"type": "string",
"enum": [
"Desconto à vista"
],
"description": "O título dessa caracteristica"
},
"descricao": {
"type": "string",
"enum": [
"Receba 10% de desconto pagando à vista, no PIX!"
],
"description": "O título dessa caracteristica"
}
},
"required": [
"id",
"icone_svg_id",
"ordem",
"titulo",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
}
},
"required": [
"nome",
"codigo",
"duracao_passeio",
"descricao",
"tipo_passeio",
"tipo_atividade",
"seletor",
"url_video",
"lojas_opcionais",
"lojas_produtos",
"nao_vendavel",
"nao_vendavel_admin",
"nao_vendavel_afiliado",
"exibir_proxima_data",
"ativo",
"mensagem_loja_nao_vendavel",
"mensagem_cliente_nao_vendavel",
"prazo_minimo_para_compra",
"tipo_prazo_para_compra",
"preenchimento_formulario",
"prioridade",
"quantidade_min_venda",
"quantidade_max_venda",
"termos_uso",
"termos_uso_obrigatorio",
"visivel_site",
"texto_voucher",
"produto_formulario_id",
"alerta_texto",
"precos",
"visualizacao_preco",
"destino_id",
"tags",
"singular",
"plural",
"seo_title",
"seo_description",
"seo_keywords",
"seo_extras",
"itens_inclusos",
"itens_nao_inclusos",
"caracteristicas"
],
"additionalProperties": false
}
},
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
}
}
}
},
"required": [
"itens"
]
}Manipulando ¶
ObterGET/passeios/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"nome": "...",
"codigo": "...",
"duracao_passeio": "...",
"descricao": "...",
"tipo_passeio": "fixo|faixa|dia_inteiro|turno|intervalo_dias",
"tipo_atividade": "passeio|transfer|pacote",
"seletor": "calendario|lista",
"url_video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"lojas_opcionais": [
1
],
"lojas_produtos": [
1
],
"nao_vendavel": 1,
"nao_vendavel_admin": 1,
"nao_vendavel_afiliado": 1,
"exibir_proxima_data": 1,
"ativo": 1,
"mensagem_loja_nao_vendavel": "...",
"mensagem_cliente_nao_vendavel": "...",
"prazo_minimo_para_compra": 42,
"tipo_prazo_para_compra": "dias|horas",
"preenchimento_formulario": "anterior_todos|anterior_unico|posterior_todos|posterior_unico",
"prioridade": 42,
"quantidade_min_venda": 42,
"quantidade_max_venda": 42,
"termos_uso": "...",
"termos_uso_obrigatorio": 1,
"visivel_site": 1,
"texto_voucher": "...",
"produto_formulario_id": "42",
"alerta_texto": "...",
"precos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"gratuidade": 0,
"preco": "42.00",
"preco_desconto": "35.00",
"preco_net": "30.00",
"periodos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"periodo_id": 1,
"preco": "42.00",
"preco_promocao": "30.00",
"preco_desconto": "35.00",
"preco_net": "30.00"
}
]
}
],
"visualizacao_preco": "menor_preco|maior_preco|menor_nao_dependente|menor_preco_recente|maior_preco_recente|menor_preco_desconto|desconto_dependente|menor_geral_desconto|menor_geral_desconto_n_dependente|menor_desconto_recente",
"destino_id": "...",
"tags": "tag1,tag2",
"singular": "...",
"plural": "...",
"seo_title": "...",
"seo_description": "...",
"seo_keywords": "...",
"seo_extras": "...",
"itens_inclusos": [
{
"id": 1,
"incluso": 1,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"itens_nao_inclusos": [
{
"id": 1,
"incluso": 0,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"caracteristicas": [
{
"id": 1,
"icone_svg_id": 1,
"ordem": 1,
"titulo": "Desconto à vista",
"descricao": "Receba 10% de desconto pagando à vista, no PIX!"
}
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Campo para inserir o nome da atividade. Exemplo: Mergulho, City Tour, Arvorismo, Atividade de Buggy."
},
"codigo": {
"type": "string",
"description": "O código cadastrado é para identificar sua atividade, uma abreviação do nome da sua atividade de maneira mais prática. Exemplo: “Mergulho” será MERG ou MERGU."
},
"duracao_passeio": {
"type": "string",
"description": "Indica ao cliente o tempo que a atividade poderá ter. Recomenda-se utilizar o termo “aproximadamente” para não causar expectativa, colocando sempre para menos. Duração de uma atividade de buggy é de 2 horas. No cadastro indicar como “aproximadamente 1h50min”."
},
"descricao": {
"type": "string",
"description": "A descrição do Passeio, podendo ser em HTML"
},
"tipo_passeio": {
"type": "string",
"description": "O tipo de atividade no que diz respeito ao horário"
},
"tipo_atividade": {
"type": "string",
"description": "Ao categorizar a atividade, ela será identificada com uma TAG (etiqueta) na listagem do site para identificação pelo cliente.<br /><br /> Atividades que estejam cadastradas com a opção 'Atividade' aparecerão na loja com a etiqueta conforme o termo cadastrado no campo 'Título da atividade' nas Regras ➝ Atividades.<br /><br /> Caso tenha dúvidas, confira este artigo em nossa Base de Conhecimento - <a href="https://atendimento.paytour.com.br/kb/article/373225/como-associar-a-tag-do-tipo-da-atividade" target="_blank">Ler artigo</a>."
},
"seletor": {
"type": "string",
"description": "Escolha a opção de seletor de datas no formato Calendário ou Lista<br><br><strong>Calendário:</strong> Recomendamos o uso para atividades que tenham muitas saídas, com bastante frequência.<br><br><strong>Lista:</strong> Recomendamos utilizar esse formato para atividades que tem datas específicas de saídas, por exemplo excursões e viagens."
},
"url_video": {
"type": "string",
"description": "URL do vídeo"
},
"lojas_opcionais": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "A lista de ids dos opcionais desse passeio"
},
"lojas_produtos": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "Produtos Relacionados"
},
"nao_vendavel": {
"type": "number",
"description": "Se pode ser vendido pela loja(1) ou não(0)"
},
"nao_vendavel_admin": {
"type": "number",
"description": "Se pode ser vendido pelo admin(1) ou não(0)"
},
"nao_vendavel_afiliado": {
"type": "number",
"description": "Se pode ser vendido pelo afiliado(1) ou não(0)"
},
"exibir_proxima_data": {
"type": "number",
"description": "Exibir próxima data disponível na home"
},
"ativo": {
"type": "number",
"description": "Indica quando a sua Atividade está ativa no seu site ou não. A opção “Ativa” indica que irá aparecer no seu site e “Inativa” quando não deverá estar disponível no site."
},
"mensagem_loja_nao_vendavel": {
"type": "string"
},
"mensagem_cliente_nao_vendavel": {
"type": "string"
},
"prazo_minimo_para_compra": {
"type": "number",
"description": "Valor"
},
"tipo_prazo_para_compra": {
"type": "string",
"description": "Prazo mínimo para compra da atividade, podendo ser em dias ou horas.<br>Exempro dias: Com o valor <strong>3</strong> para este campo, os usuários hoje só poderão comprar esta atividade para o dia 20/05/2023 em diante.<br>Exempro horas: Com o valor <strong>3</strong> para este campo, os usuários só poderão comprar a atividade no mínimo 3 horas antes dele acontecer."
},
"preenchimento_formulario": {
"type": "string",
"description": "Existem três regras: Informar se apenas o 1º usuário deve preencher todo o formulário; Todos os usuários após a compra; Apenas o 1º usuário após a compra."
},
"prioridade": {
"type": "number",
"description": "Quanto maior o número adicionado neste campo, mais alta será a exibição da atividade na loja. Com isso, as atividades com valores mais altos estarão sempre no topo da loja, e os de valores menores estarão abaixo, seguindo sempre a ordem. Por exemplo: Atividade A com valor 100 irá aparecer primeiro do que a Atividade B com valor 1."
},
"quantidade_min_venda": {
"type": "number",
"description": "Indica o número mínimo de reservas que uma única pessoa poderá adquirir dessa atividade"
},
"quantidade_max_venda": {
"type": "number",
"description": "Indica o número máximo de reservas que uma única pessoa poderá adquirir dessa atividade."
},
"termos_uso": {
"type": "string",
"description": "O texto dos termos de uso podendo ser em HTML"
},
"termos_uso_obrigatorio": {
"type": "number",
"description": "Ativar ou desativar a opção para leitura obrigatória dos termos de uso da Atividade. Se ativado, o cliente só poderá avançar na compra apenas após a confirmação que leu e concorda com o termo. Usado para informar horários, taxas extras, peso adequado, altura para estar apto a realizar a atividade, etc."
},
"visivel_site": {
"type": "number",
"description": "Aparece na listagem do site"
},
"texto_voucher": {
"type": "string",
"description": "O texto que vai no voucher"
},
"produto_formulario_id": {
"type": "string",
"description": "Listagem dos formulários que foram cadastrados no sistema. A atividade se associará ao formulário indicado (contendo perguntas essenciais para a atividade ser realizada da melhor forma). Cada atividade pode ter seu próprio formulário, mas precisa ser direto somente com informações relevantes como antes da data de realização da atividade, por exemplo caso venha a ser um mergulho e seja necessário o número de calçado do cliente para o pé de pato."
},
"alerta_texto": {
"type": "string",
"description": "Frase que ficará no topo da foto do passeio. Frases mais usadas: Passeio mais vendido, passeio top de vendas, passeio mais procurado, etc."
},
"precos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"enum": [
1
],
"description": "O id do preço, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
1
],
"description": "O id da faixa etária"
},
"gratuidade": {
"type": "number",
"enum": [
0
],
"description": "1 se esse preço é na verdade gratuito e 0 caso contrário"
},
"preco": {
"type": "string",
"enum": [
"42.00"
],
"description": "O preço padrão"
},
"preco_desconto": {
"type": "string",
"enum": [
"35.00"
],
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"enum": [
"30.00"
],
"description": "O preço para o afiliado"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"enum": [
1
],
"description": "O id do preço sazonal, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
1
],
"description": "O id da faixa etária"
},
"periodo_id": {
"type": "number",
"enum": [
1
],
"description": "O id do período já cadastrado"
},
"preco": {
"type": "string",
"enum": [
"42.00"
],
"description": "O preço atual do período ou o antigo preço caso seja promoção"
},
"preco_promocao": {
"type": "string",
"enum": [
"30.00"
],
"description": "O novo preço do período caso seja promoção"
},
"preco_desconto": {
"type": "string",
"enum": [
"35.00"
],
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"enum": [
"30.00"
],
"description": "O preço para o afiliado"
}
},
"required": [
"preco_id",
"faixa_etaria_id",
"periodo_id",
"preco",
"preco_promocao",
"preco_desconto",
"preco_net"
],
"additionalProperties": false
},
"description": "Os períodos de preço especiais"
}
},
"required": [
"preco_id",
"faixa_etaria_id",
"gratuidade",
"preco",
"preco_desconto",
"preco_net",
"periodos"
],
"additionalProperties": false
},
"description": "Os preços de acordo com faixa etária e períodos"
},
"visualizacao_preco": {
"type": "string",
"description": "Mostrar Preço na Loja"
},
"destino_id": {
"type": "string",
"description": "Opção que oferece a indicação de onde é realizada a atividade. Basta digitar o nome da cidade onde sua atividade será realizada."
},
"tags": {
"type": "string",
"description": "Recurso utilizado para associar os passeios aos menus. São palavras-chave que remetem ao passeio, separadas por vírgula. Passeios como: mergulho, lancha, lagoa poderiam ter como tag a palavra “água”. A loja poderia ter um menu com um nome específico e nele estarem todos os passeios da tag associada."
},
"singular": {
"type": "string",
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacote, quadriciclo, bicicleta, buggy."
},
"plural": {
"type": "string",
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacotes, quadriciclos, bicicletas, buggys."
},
"seo_title": {
"type": "string",
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_description": {
"type": "string",
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_keywords": {
"type": "string",
"description": "As palavras chaves não aparecem no resultado do Google, mas ajuda na busca caso alguém pesquise por uma delas. Cadastre as palavras-chave separadas por vírgula."
},
"seo_extras": {
"type": "string",
"description": "Coloque tags extras para serem adicionadas na página de detalhe da atividade."
},
"itens_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"enum": [
1
],
"description": "Se este item é do tipo incluso ou não. Deve ser 1"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"enum": [
"Almoço e bebida"
],
"description": "Uma frase que descreva o item incluso"
}
},
"required": [
"id",
"incluso",
"ordem",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
},
"itens_nao_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"enum": [
0
],
"description": "Se este item é do tipo incluso ou não. Deve ser 0"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"enum": [
"Almoço e bebida"
],
"description": "Uma frase que descreva o item incluso"
}
},
"required": [
"id",
"incluso",
"ordem",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
},
"caracteristicas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id da caracteristica, caso já exista"
},
"icone_svg_id": {
"type": "number",
"enum": [
1
],
"description": "O id do icone SVG da nossa base de dados"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"titulo": {
"type": "string",
"enum": [
"Desconto à vista"
],
"description": "O título dessa caracteristica"
},
"descricao": {
"type": "string",
"enum": [
"Receba 10% de desconto pagando à vista, no PIX!"
],
"description": "O título dessa caracteristica"
}
},
"required": [
"id",
"icone_svg_id",
"ordem",
"titulo",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
}
},
"required": [
"lojas_opcionais",
"lojas_produtos",
"precos",
"itens_inclusos",
"itens_nao_inclusos",
"caracteristicas"
]
}AtualizarPUT/passeios/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>Body
{
"nome": "...",
"codigo": "...",
"duracao_passeio": "...",
"descricao": "...",
"tipo_passeio": "fixo|faixa|dia_inteiro|turno|intervalo_dias",
"tipo_atividade": "passeio|transfer|pacote",
"seletor": "calendario|lista",
"url_video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"lojas_opcionais": [
1
],
"lojas_produtos": [
1
],
"nao_vendavel": 1,
"nao_vendavel_admin": 1,
"nao_vendavel_afiliado": 1,
"exibir_proxima_data": 1,
"ativo": 1,
"mensagem_loja_nao_vendavel": "...",
"mensagem_cliente_nao_vendavel": "...",
"prazo_minimo_para_compra": 42,
"tipo_prazo_para_compra": "dias|horas",
"preenchimento_formulario": "anterior_todos|anterior_unico|posterior_todos|posterior_unico",
"prioridade": 42,
"quantidade_min_venda": 42,
"quantidade_max_venda": 42,
"termos_uso": "...",
"termos_uso_obrigatorio": 1,
"visivel_site": 1,
"texto_voucher": "...",
"produto_formulario_id": "42",
"alerta_texto": "...",
"precos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"gratuidade": 0,
"preco": "42.00",
"preco_desconto": "35.00",
"preco_net": "30.00",
"periodos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"periodo_id": 1,
"preco": "42.00",
"preco_promocao": "30.00",
"preco_desconto": "35.00",
"preco_net": "30.00"
}
]
}
],
"visualizacao_preco": "menor_preco|maior_preco|menor_nao_dependente|menor_preco_recente|maior_preco_recente|menor_preco_desconto|desconto_dependente|menor_geral_desconto|menor_geral_desconto_n_dependente|menor_desconto_recente",
"destino_id": "...",
"tags": "tag1,tag2",
"singular": "...",
"plural": "...",
"seo_title": "...",
"seo_description": "...",
"seo_keywords": "...",
"seo_extras": "...",
"itens_inclusos": [
{
"id": 1,
"incluso": 1,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"itens_nao_inclusos": [
{
"id": 1,
"incluso": 0,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"caracteristicas": [
{
"id": 1,
"icone_svg_id": 1,
"ordem": 1,
"titulo": "Desconto à vista",
"descricao": "Receba 10% de desconto pagando à vista, no PIX!"
}
]
}Schema
{
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Campo para inserir o nome da atividade. Exemplo: Mergulho, City Tour, Arvorismo, Atividade de Buggy."
},
"codigo": {
"type": "string",
"description": "O código cadastrado é para identificar sua atividade, uma abreviação do nome da sua atividade de maneira mais prática. Exemplo: “Mergulho” será MERG ou MERGU."
},
"duracao_passeio": {
"type": "string",
"description": "Indica ao cliente o tempo que a atividade poderá ter. Recomenda-se utilizar o termo “aproximadamente” para não causar expectativa, colocando sempre para menos. Duração de uma atividade de buggy é de 2 horas. No cadastro indicar como “aproximadamente 1h50min”."
},
"descricao": {
"type": "string",
"description": "A descrição do Passeio, podendo ser em HTML"
},
"tipo_passeio": {
"type": "string",
"description": "O tipo de atividade no que diz respeito ao horário"
},
"tipo_atividade": {
"type": "string",
"description": "Ao categorizar a atividade, ela será identificada com uma TAG (etiqueta) na listagem do site para identificação pelo cliente.<br /><br /> Atividades que estejam cadastradas com a opção 'Atividade' aparecerão na loja com a etiqueta conforme o termo cadastrado no campo 'Título da atividade' nas Regras ➝ Atividades.<br /><br /> Caso tenha dúvidas, confira este artigo em nossa Base de Conhecimento - <a href="https://atendimento.paytour.com.br/kb/article/373225/como-associar-a-tag-do-tipo-da-atividade" target="_blank">Ler artigo</a>."
},
"seletor": {
"type": "string",
"description": "Escolha a opção de seletor de datas no formato Calendário ou Lista<br><br><strong>Calendário:</strong> Recomendamos o uso para atividades que tenham muitas saídas, com bastante frequência.<br><br><strong>Lista:</strong> Recomendamos utilizar esse formato para atividades que tem datas específicas de saídas, por exemplo excursões e viagens."
},
"url_video": {
"type": "string",
"description": "URL do vídeo"
},
"lojas_opcionais": {
"type": "array",
"items": {
"type": "number"
},
"description": "A lista de ids dos opcionais desse passeio"
},
"lojas_produtos": {
"type": "array",
"items": {
"type": "number"
},
"description": "Produtos Relacionados"
},
"nao_vendavel": {
"type": "number",
"description": "Se pode ser vendido pela loja(1) ou não(0)"
},
"nao_vendavel_admin": {
"type": "number",
"description": "Se pode ser vendido pelo admin(1) ou não(0)"
},
"nao_vendavel_afiliado": {
"type": "number",
"description": "Se pode ser vendido pelo afiliado(1) ou não(0)"
},
"exibir_proxima_data": {
"type": "number",
"description": "Exibir próxima data disponível na home"
},
"ativo": {
"type": "number",
"description": "Indica quando a sua Atividade está ativa no seu site ou não. A opção “Ativa” indica que irá aparecer no seu site e “Inativa” quando não deverá estar disponível no site."
},
"mensagem_loja_nao_vendavel": {
"type": "string"
},
"mensagem_cliente_nao_vendavel": {
"type": "string"
},
"prazo_minimo_para_compra": {
"type": "number",
"description": "Valor"
},
"tipo_prazo_para_compra": {
"type": "string",
"description": "Prazo mínimo para compra da atividade, podendo ser em dias ou horas.<br>Exempro dias: Com o valor <strong>3</strong> para este campo, os usuários hoje só poderão comprar esta atividade para o dia 20/05/2023 em diante.<br>Exempro horas: Com o valor <strong>3</strong> para este campo, os usuários só poderão comprar a atividade no mínimo 3 horas antes dele acontecer."
},
"preenchimento_formulario": {
"type": "string",
"description": "Existem três regras: Informar se apenas o 1º usuário deve preencher todo o formulário; Todos os usuários após a compra; Apenas o 1º usuário após a compra."
},
"prioridade": {
"type": "number",
"description": "Quanto maior o número adicionado neste campo, mais alta será a exibição da atividade na loja. Com isso, as atividades com valores mais altos estarão sempre no topo da loja, e os de valores menores estarão abaixo, seguindo sempre a ordem. Por exemplo: Atividade A com valor 100 irá aparecer primeiro do que a Atividade B com valor 1."
},
"quantidade_min_venda": {
"type": "number",
"description": "Indica o número mínimo de reservas que uma única pessoa poderá adquirir dessa atividade"
},
"quantidade_max_venda": {
"type": "number",
"description": "Indica o número máximo de reservas que uma única pessoa poderá adquirir dessa atividade."
},
"termos_uso": {
"type": "string",
"description": "O texto dos termos de uso podendo ser em HTML"
},
"termos_uso_obrigatorio": {
"type": "number",
"description": "Ativar ou desativar a opção para leitura obrigatória dos termos de uso da Atividade. Se ativado, o cliente só poderá avançar na compra apenas após a confirmação que leu e concorda com o termo. Usado para informar horários, taxas extras, peso adequado, altura para estar apto a realizar a atividade, etc."
},
"visivel_site": {
"type": "number",
"description": "Aparece na listagem do site"
},
"texto_voucher": {
"type": "string",
"description": "O texto que vai no voucher"
},
"produto_formulario_id": {
"type": "string",
"description": "Listagem dos formulários que foram cadastrados no sistema. A atividade se associará ao formulário indicado (contendo perguntas essenciais para a atividade ser realizada da melhor forma). Cada atividade pode ter seu próprio formulário, mas precisa ser direto somente com informações relevantes como antes da data de realização da atividade, por exemplo caso venha a ser um mergulho e seja necessário o número de calçado do cliente para o pé de pato."
},
"alerta_texto": {
"type": "string",
"description": "Frase que ficará no topo da foto do passeio. Frases mais usadas: Passeio mais vendido, passeio top de vendas, passeio mais procurado, etc."
},
"precos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"description": "O id do preço, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"description": "O id da faixa etária"
},
"gratuidade": {
"type": "number",
"description": "1 se esse preço é na verdade gratuito e 0 caso contrário"
},
"preco": {
"type": "string",
"description": "O preço padrão"
},
"preco_desconto": {
"type": "string",
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"description": "O preço para o afiliado"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"description": "O id do preço sazonal, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"description": "O id da faixa etária"
},
"periodo_id": {
"type": "number",
"description": "O id do período já cadastrado"
},
"preco": {
"type": "string",
"description": "O preço atual do período ou o antigo preço caso seja promoção"
},
"preco_promocao": {
"type": "string",
"description": "O novo preço do período caso seja promoção"
},
"preco_desconto": {
"type": "string",
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"description": "O preço para o afiliado"
}
}
},
"description": "Os períodos de preço especiais"
}
}
},
"description": "Os preços de acordo com faixa etária e períodos"
},
"visualizacao_preco": {
"type": "string",
"description": "Mostrar Preço na Loja"
},
"destino_id": {
"type": "string",
"description": "Opção que oferece a indicação de onde é realizada a atividade. Basta digitar o nome da cidade onde sua atividade será realizada."
},
"tags": {
"type": "string",
"description": "Recurso utilizado para associar os passeios aos menus. São palavras-chave que remetem ao passeio, separadas por vírgula. Passeios como: mergulho, lancha, lagoa poderiam ter como tag a palavra “água”. A loja poderia ter um menu com um nome específico e nele estarem todos os passeios da tag associada."
},
"singular": {
"type": "string",
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacote, quadriciclo, bicicleta, buggy."
},
"plural": {
"type": "string",
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacotes, quadriciclos, bicicletas, buggys."
},
"seo_title": {
"type": "string",
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_description": {
"type": "string",
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_keywords": {
"type": "string",
"description": "As palavras chaves não aparecem no resultado do Google, mas ajuda na busca caso alguém pesquise por uma delas. Cadastre as palavras-chave separadas por vírgula."
},
"seo_extras": {
"type": "string",
"description": "Coloque tags extras para serem adicionadas na página de detalhe da atividade."
},
"itens_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"description": "Se este item é do tipo incluso ou não. Deve ser 1"
},
"ordem": {
"type": "number",
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"description": "Uma frase que descreva o item incluso"
}
}
},
"description": "Os itens que esse passeio inclui"
},
"itens_nao_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"description": "Se este item é do tipo incluso ou não. Deve ser 0"
},
"ordem": {
"type": "number",
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"description": "Uma frase que descreva o item incluso"
}
}
},
"description": "Os itens que esse passeio inclui"
},
"caracteristicas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "O id da caracteristica, caso já exista"
},
"icone_svg_id": {
"type": "number",
"description": "O id do icone SVG da nossa base de dados"
},
"ordem": {
"type": "number",
"description": "A ordem em que esse item aparece"
},
"titulo": {
"type": "string",
"description": "O título dessa caracteristica"
},
"descricao": {
"type": "string",
"description": "O título dessa caracteristica"
}
}
},
"description": "Os itens que esse passeio inclui"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"success": true,
"data": {
"nome": "...",
"codigo": "...",
"duracao_passeio": "...",
"descricao": "...",
"tipo_passeio": "fixo|faixa|dia_inteiro|turno|intervalo_dias",
"tipo_atividade": "passeio|transfer|pacote",
"seletor": "calendario|lista",
"url_video": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"lojas_opcionais": [
1
],
"lojas_produtos": [
1
],
"nao_vendavel": 1,
"nao_vendavel_admin": 1,
"nao_vendavel_afiliado": 1,
"exibir_proxima_data": 1,
"ativo": 1,
"mensagem_loja_nao_vendavel": "...",
"mensagem_cliente_nao_vendavel": "...",
"prazo_minimo_para_compra": 42,
"tipo_prazo_para_compra": "dias|horas",
"preenchimento_formulario": "anterior_todos|anterior_unico|posterior_todos|posterior_unico",
"prioridade": 42,
"quantidade_min_venda": 42,
"quantidade_max_venda": 42,
"termos_uso": "...",
"termos_uso_obrigatorio": 1,
"visivel_site": 1,
"texto_voucher": "...",
"produto_formulario_id": "42",
"alerta_texto": "...",
"precos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"gratuidade": 0,
"preco": "42.00",
"preco_desconto": "35.00",
"preco_net": "30.00",
"periodos": [
{
"preco_id": 1,
"faixa_etaria_id": 1,
"periodo_id": 1,
"preco": "42.00",
"preco_promocao": "30.00",
"preco_desconto": "35.00",
"preco_net": "30.00"
}
]
}
],
"visualizacao_preco": "menor_preco|maior_preco|menor_nao_dependente|menor_preco_recente|maior_preco_recente|menor_preco_desconto|desconto_dependente|menor_geral_desconto|menor_geral_desconto_n_dependente|menor_desconto_recente",
"destino_id": "...",
"tags": "tag1,tag2",
"singular": "...",
"plural": "...",
"seo_title": "...",
"seo_description": "...",
"seo_keywords": "...",
"seo_extras": "...",
"itens_inclusos": [
{
"id": 1,
"incluso": 1,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"itens_nao_inclusos": [
{
"id": 1,
"incluso": 0,
"ordem": 1,
"descricao": "Almoço e bebida"
}
],
"caracteristicas": [
{
"id": 1,
"icone_svg_id": 1,
"ordem": 1,
"titulo": "Desconto à vista",
"descricao": "Receba 10% de desconto pagando à vista, no PIX!"
}
]
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
},
"data": {
"type": "object",
"properties": {
"nome": {
"type": "string",
"description": "Campo para inserir o nome da atividade. Exemplo: Mergulho, City Tour, Arvorismo, Atividade de Buggy."
},
"codigo": {
"type": "string",
"description": "O código cadastrado é para identificar sua atividade, uma abreviação do nome da sua atividade de maneira mais prática. Exemplo: “Mergulho” será MERG ou MERGU."
},
"duracao_passeio": {
"type": "string",
"description": "Indica ao cliente o tempo que a atividade poderá ter. Recomenda-se utilizar o termo “aproximadamente” para não causar expectativa, colocando sempre para menos. Duração de uma atividade de buggy é de 2 horas. No cadastro indicar como “aproximadamente 1h50min”."
},
"descricao": {
"type": "string",
"description": "A descrição do Passeio, podendo ser em HTML"
},
"tipo_passeio": {
"type": "string",
"description": "O tipo de atividade no que diz respeito ao horário"
},
"tipo_atividade": {
"type": "string",
"description": "Ao categorizar a atividade, ela será identificada com uma TAG (etiqueta) na listagem do site para identificação pelo cliente.<br /><br /> Atividades que estejam cadastradas com a opção 'Atividade' aparecerão na loja com a etiqueta conforme o termo cadastrado no campo 'Título da atividade' nas Regras ➝ Atividades.<br /><br /> Caso tenha dúvidas, confira este artigo em nossa Base de Conhecimento - <a href="https://atendimento.paytour.com.br/kb/article/373225/como-associar-a-tag-do-tipo-da-atividade" target="_blank">Ler artigo</a>."
},
"seletor": {
"type": "string",
"description": "Escolha a opção de seletor de datas no formato Calendário ou Lista<br><br><strong>Calendário:</strong> Recomendamos o uso para atividades que tenham muitas saídas, com bastante frequência.<br><br><strong>Lista:</strong> Recomendamos utilizar esse formato para atividades que tem datas específicas de saídas, por exemplo excursões e viagens."
},
"url_video": {
"type": "string",
"description": "URL do vídeo"
},
"lojas_opcionais": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "A lista de ids dos opcionais desse passeio"
},
"lojas_produtos": {
"type": "array",
"items": {
"type": "number",
"enum": [
0
]
},
"description": "Produtos Relacionados"
},
"nao_vendavel": {
"type": "number",
"description": "Se pode ser vendido pela loja(1) ou não(0)"
},
"nao_vendavel_admin": {
"type": "number",
"description": "Se pode ser vendido pelo admin(1) ou não(0)"
},
"nao_vendavel_afiliado": {
"type": "number",
"description": "Se pode ser vendido pelo afiliado(1) ou não(0)"
},
"exibir_proxima_data": {
"type": "number",
"description": "Exibir próxima data disponível na home"
},
"ativo": {
"type": "number",
"description": "Indica quando a sua Atividade está ativa no seu site ou não. A opção “Ativa” indica que irá aparecer no seu site e “Inativa” quando não deverá estar disponível no site."
},
"mensagem_loja_nao_vendavel": {
"type": "string"
},
"mensagem_cliente_nao_vendavel": {
"type": "string"
},
"prazo_minimo_para_compra": {
"type": "number",
"description": "Valor"
},
"tipo_prazo_para_compra": {
"type": "string",
"description": "Prazo mínimo para compra da atividade, podendo ser em dias ou horas.<br>Exempro dias: Com o valor <strong>3</strong> para este campo, os usuários hoje só poderão comprar esta atividade para o dia 20/05/2023 em diante.<br>Exempro horas: Com o valor <strong>3</strong> para este campo, os usuários só poderão comprar a atividade no mínimo 3 horas antes dele acontecer."
},
"preenchimento_formulario": {
"type": "string",
"description": "Existem três regras: Informar se apenas o 1º usuário deve preencher todo o formulário; Todos os usuários após a compra; Apenas o 1º usuário após a compra."
},
"prioridade": {
"type": "number",
"description": "Quanto maior o número adicionado neste campo, mais alta será a exibição da atividade na loja. Com isso, as atividades com valores mais altos estarão sempre no topo da loja, e os de valores menores estarão abaixo, seguindo sempre a ordem. Por exemplo: Atividade A com valor 100 irá aparecer primeiro do que a Atividade B com valor 1."
},
"quantidade_min_venda": {
"type": "number",
"description": "Indica o número mínimo de reservas que uma única pessoa poderá adquirir dessa atividade"
},
"quantidade_max_venda": {
"type": "number",
"description": "Indica o número máximo de reservas que uma única pessoa poderá adquirir dessa atividade."
},
"termos_uso": {
"type": "string",
"description": "O texto dos termos de uso podendo ser em HTML"
},
"termos_uso_obrigatorio": {
"type": "number",
"description": "Ativar ou desativar a opção para leitura obrigatória dos termos de uso da Atividade. Se ativado, o cliente só poderá avançar na compra apenas após a confirmação que leu e concorda com o termo. Usado para informar horários, taxas extras, peso adequado, altura para estar apto a realizar a atividade, etc."
},
"visivel_site": {
"type": "number",
"description": "Aparece na listagem do site"
},
"texto_voucher": {
"type": "string",
"description": "O texto que vai no voucher"
},
"produto_formulario_id": {
"type": "string",
"description": "Listagem dos formulários que foram cadastrados no sistema. A atividade se associará ao formulário indicado (contendo perguntas essenciais para a atividade ser realizada da melhor forma). Cada atividade pode ter seu próprio formulário, mas precisa ser direto somente com informações relevantes como antes da data de realização da atividade, por exemplo caso venha a ser um mergulho e seja necessário o número de calçado do cliente para o pé de pato."
},
"alerta_texto": {
"type": "string",
"description": "Frase que ficará no topo da foto do passeio. Frases mais usadas: Passeio mais vendido, passeio top de vendas, passeio mais procurado, etc."
},
"precos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"enum": [
1
],
"description": "O id do preço, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
1
],
"description": "O id da faixa etária"
},
"gratuidade": {
"type": "number",
"enum": [
0
],
"description": "1 se esse preço é na verdade gratuito e 0 caso contrário"
},
"preco": {
"type": "string",
"enum": [
"42.00"
],
"description": "O preço padrão"
},
"preco_desconto": {
"type": "string",
"enum": [
"35.00"
],
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"enum": [
"30.00"
],
"description": "O preço para o afiliado"
},
"periodos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"preco_id": {
"type": "number",
"enum": [
1
],
"description": "O id do preço sazonal, caso já exista"
},
"faixa_etaria_id": {
"type": "number",
"enum": [
1
],
"description": "O id da faixa etária"
},
"periodo_id": {
"type": "number",
"enum": [
1
],
"description": "O id do período já cadastrado"
},
"preco": {
"type": "string",
"enum": [
"42.00"
],
"description": "O preço atual do período ou o antigo preço caso seja promoção"
},
"preco_promocao": {
"type": "string",
"enum": [
"30.00"
],
"description": "O novo preço do período caso seja promoção"
},
"preco_desconto": {
"type": "string",
"enum": [
"35.00"
],
"description": "O preço com desconto pagando à vista"
},
"preco_net": {
"type": "string",
"enum": [
"30.00"
],
"description": "O preço para o afiliado"
}
},
"required": [
"preco_id",
"faixa_etaria_id",
"periodo_id",
"preco",
"preco_promocao",
"preco_desconto",
"preco_net"
],
"additionalProperties": false
},
"description": "Os períodos de preço especiais"
}
},
"required": [
"preco_id",
"faixa_etaria_id",
"gratuidade",
"preco",
"preco_desconto",
"preco_net",
"periodos"
],
"additionalProperties": false
},
"description": "Os preços de acordo com faixa etária e períodos"
},
"visualizacao_preco": {
"type": "string",
"description": "Mostrar Preço na Loja"
},
"destino_id": {
"type": "string",
"description": "Opção que oferece a indicação de onde é realizada a atividade. Basta digitar o nome da cidade onde sua atividade será realizada."
},
"tags": {
"type": "string",
"description": "Recurso utilizado para associar os passeios aos menus. São palavras-chave que remetem ao passeio, separadas por vírgula. Passeios como: mergulho, lancha, lagoa poderiam ter como tag a palavra “água”. A loja poderia ter um menu com um nome específico e nele estarem todos os passeios da tag associada."
},
"singular": {
"type": "string",
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacote, quadriciclo, bicicleta, buggy."
},
"plural": {
"type": "string",
"description": "Este valor será exibido no carrinho. É útil quando a atividade for para mais de uma pessoa. Exemplos: pacotes, quadriciclos, bicicletas, buggys."
},
"seo_title": {
"type": "string",
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_description": {
"type": "string",
"description": "Este texto é o que aparece no título do Google, caso deixe em branco o sistema mostrará o título da atividade"
},
"seo_keywords": {
"type": "string",
"description": "As palavras chaves não aparecem no resultado do Google, mas ajuda na busca caso alguém pesquise por uma delas. Cadastre as palavras-chave separadas por vírgula."
},
"seo_extras": {
"type": "string",
"description": "Coloque tags extras para serem adicionadas na página de detalhe da atividade."
},
"itens_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"enum": [
1
],
"description": "Se este item é do tipo incluso ou não. Deve ser 1"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"enum": [
"Almoço e bebida"
],
"description": "Uma frase que descreva o item incluso"
}
},
"required": [
"id",
"incluso",
"ordem",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
},
"itens_nao_inclusos": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id do item incluso, caso já exista"
},
"incluso": {
"type": "number",
"enum": [
0
],
"description": "Se este item é do tipo incluso ou não. Deve ser 0"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"descricao": {
"type": "string",
"enum": [
"Almoço e bebida"
],
"description": "Uma frase que descreva o item incluso"
}
},
"required": [
"id",
"incluso",
"ordem",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
},
"caracteristicas": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"enum": [
1
],
"description": "O id da caracteristica, caso já exista"
},
"icone_svg_id": {
"type": "number",
"enum": [
1
],
"description": "O id do icone SVG da nossa base de dados"
},
"ordem": {
"type": "number",
"enum": [
1
],
"description": "A ordem em que esse item aparece"
},
"titulo": {
"type": "string",
"enum": [
"Desconto à vista"
],
"description": "O título dessa caracteristica"
},
"descricao": {
"type": "string",
"enum": [
"Receba 10% de desconto pagando à vista, no PIX!"
],
"description": "O título dessa caracteristica"
}
},
"required": [
"id",
"icone_svg_id",
"ordem",
"titulo",
"descricao"
],
"additionalProperties": false
},
"description": "Os itens que esse passeio inclui"
}
},
"required": [
"lojas_opcionais",
"lojas_produtos",
"precos",
"itens_inclusos",
"itens_nao_inclusos",
"caracteristicas"
],
"description": "O payload de resposta"
}
}
}ApagarDELETE/passeios/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonPeríodos Sazonais ¶
Criando ¶
CriarPOST/periodos
Example URI
Headers
Authorization: Bearer <authorization-token>Body
{
"titulo": "...",
"promocao": 1,
"data_inicio": "2023-01-01",
"data_final": "2023-01-01"
}Schema
{
"type": "object",
"properties": {
"titulo": {
"type": "string",
"description": "Apenas para controle interno, o cliente não visualizará."
},
"promocao": {
"type": "number",
"description": "Caso o período seja promocional, no cadastro de passeios terá opçao de inserir preço <strong>DE</strong> e <strong>POR</strong>"
},
"data_inicio": {
"type": "string",
"description": "Data de início do período"
},
"data_final": {
"type": "string",
"description": "Data de término do período"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}201Headers
Content-Type: application/jsonBody
{
"success": true,
"data": {
"titulo": "...",
"promocao": 1,
"data_inicio": "2023-01-01",
"data_final": "2023-01-01"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
},
"data": {
"type": "object",
"properties": {
"titulo": {
"type": "string",
"description": "Apenas para controle interno, o cliente não visualizará."
},
"promocao": {
"type": "number",
"description": "Caso o período seja promocional, no cadastro de passeios terá opçao de inserir preço <strong>DE</strong> e <strong>POR</strong>"
},
"data_inicio": {
"type": "string",
"description": "Data de início do período"
},
"data_final": {
"type": "string",
"description": "Data de término do período"
}
},
"description": "O payload de resposta"
}
}
}Listando ¶
ListarGET/periodos{?page,perPage}
Example URI
- page
int(required) Example: 1A página que se deseja obter
- perPage
int(required) Example: 20Número de itens por página sendo no máximo 100
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"itens": [
{
"titulo": "...",
"promocao": 1,
"data_inicio": "2023-01-01",
"data_final": "2023-01-01"
}
],
"info": {
"total": 1,
"pagina": 1,
"total_paginas": 1
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"itens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"titulo": {
"type": "string",
"enum": [
"..."
],
"description": "Apenas para controle interno, o cliente não visualizará."
},
"promocao": {
"type": "number",
"enum": [
1
],
"description": "Caso o período seja promocional, no cadastro de passeios terá opçao de inserir preço <strong>DE</strong> e <strong>POR</strong>"
},
"data_inicio": {
"type": "string",
"enum": [
"2023-01-01"
],
"description": "Data de início do período"
},
"data_final": {
"type": "string",
"enum": [
"2023-01-01"
],
"description": "Data de término do período"
}
},
"required": [
"titulo",
"promocao",
"data_inicio",
"data_final"
],
"additionalProperties": false
}
},
"info": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Quantidade total de registros"
},
"pagina": {
"type": "number",
"description": "Página atual"
},
"total_paginas": {
"type": "number",
"description": "Quantidade de páginas"
}
}
}
},
"required": [
"itens"
]
}Manipulando ¶
ObterGET/periodos/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"titulo": "...",
"promocao": 1,
"data_inicio": "2023-01-01",
"data_final": "2023-01-01"
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"titulo": {
"type": "string",
"description": "Apenas para controle interno, o cliente não visualizará."
},
"promocao": {
"type": "number",
"description": "Caso o período seja promocional, no cadastro de passeios terá opçao de inserir preço <strong>DE</strong> e <strong>POR</strong>"
},
"data_inicio": {
"type": "string",
"description": "Data de início do período"
},
"data_final": {
"type": "string",
"description": "Data de término do período"
}
}
}AtualizarPUT/periodos/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>Body
{
"titulo": "...",
"promocao": 1,
"data_inicio": "2023-01-01",
"data_final": "2023-01-01"
}Schema
{
"type": "object",
"properties": {
"titulo": {
"type": "string",
"description": "Apenas para controle interno, o cliente não visualizará."
},
"promocao": {
"type": "number",
"description": "Caso o período seja promocional, no cadastro de passeios terá opçao de inserir preço <strong>DE</strong> e <strong>POR</strong>"
},
"data_inicio": {
"type": "string",
"description": "Data de início do período"
},
"data_final": {
"type": "string",
"description": "Data de término do período"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/jsonBody
{
"success": true,
"data": {
"titulo": "...",
"promocao": 1,
"data_inicio": "2023-01-01",
"data_final": "2023-01-01"
}
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Se a operação foi bem sucedida"
},
"data": {
"type": "object",
"properties": {
"titulo": {
"type": "string",
"description": "Apenas para controle interno, o cliente não visualizará."
},
"promocao": {
"type": "number",
"description": "Caso o período seja promocional, no cadastro de passeios terá opçao de inserir preço <strong>DE</strong> e <strong>POR</strong>"
},
"data_inicio": {
"type": "string",
"description": "Data de início do período"
},
"data_final": {
"type": "string",
"description": "Data de término do período"
}
},
"description": "O payload de resposta"
}
}
}ApagarDELETE/periodos/{id}
Example URI
- id
int(required) Example: 42O id
Headers
Authorization: Bearer <authorization-token>401Headers
Content-Type: application/jsonBody
{
"message": "Unauthorized.",
"code": 1
}200Headers
Content-Type: application/json