Uma chave nomeada por canal
"Web principal", "App móvel", "Agência Roma": tantas chaves quantos canais, cada uma nomeada pelo que é, para que um vazamento ou um erro leve de volta a uma única integração, nunca à conta inteira.
API de reservas
Não existe uma versão separada e mais limitada da Tiqory para integrações. Um plugin de WordPress, uma conexão com um revendedor ou o nosso próprio painel administrativo chamam exatamente o mesmo motor, através de uma chave delimitada ao que ela realmente precisa.
Cada uma limita o que uma integração pode realmente fazer, sem limitar o que a própria plataforma pode fazer.
"Web principal", "App móvel", "Agência Roma": tantas chaves quantos canais, cada uma nomeada pelo que é, para que um vazamento ou um erro leve de volta a uma única integração, nunca à conta inteira.
Uma chave recebe exatamente as permissões de que precisa: ler um produto, criar um checkout, enviar um lead, nunca acesso amplo a tudo o que a API pode fazer.
Cada organização decide, permissão por permissão, se um navegador pode chamá-la diretamente ou se ela precisa passar por um servidor com uma chave. Leads, suporte e feedback sempre exigem uma.
Uma chave comprometida é rotacionada, e qualquer chamador que ainda use o segredo antigo para de funcionar já na próxima requisição, sem nenhum prazo de expiração de token para esperar.
Como se resolve
Cinco passos, toda vez que uma requisição traz uma chave de API.
A chave em texto puro chega como prefixo.segredo. O prefixo localiza a linha, e então o segredo é comparado com seu hash armazenado por meio de uma verificação de tempo constante, nunca uma igualdade simples.
A ação solicitada precisa aparecer explicitamente na lista de permissões concedidas àquela chave. Se faltar, retorna o mesmo erro genérico, exista a chave ou não.
O tráfego daquela chave conta contra o seu próprio limite de taxa configurado, isolado de qualquer outra chave da mesma conta. O tráfego público sem chave conta por endereço IP.
Uma vez autenticada, a chamada opera apenas dentro da organização daquela chave. Não existe caminho de uma chave para o catálogo de outro tenant, nem mesmo tentando adivinhar um id interno.
O horário do último uso e o IP de quem chamou são atualizados a cada requisição bem-sucedida, para que uma chave ociosa ou esquecida fique visível bem antes de alguém pensar em procurar por ela.
A API, tal como é
Um produto localizado pelo seu alias público retorna suas opções, tipos de ingresso, datas disponíveis, preços resolvidos e capacidade restante, já corretos para a moeda e o país da requisição.
{
"data": {
"name": "City Food Tour",
"alias": "city-food-tour",
"currency": "EUR",
"options": [
{
"code": "general",
"next_slot": "2026-08-14T10:00:00+02:00",
"remaining": 12,
"price": {
"amount": 42.5,
"currency": "EUR"
}
}
]
}
}O detalhe que quase ninguém explica
Um produto que pertence a outra organização e um produto que simplesmente não existe retornam exatamente o mesmo "não encontrado", nunca um erro de permissão que confirmaria que o produto existe em outro lugar. Uma chave inválida ou revogada recebe seu próprio erro distinto, mas nada em nenhuma resposta revela se o recurso solicitado pertence a outro tenant.
Rotacione-a. A rotação emite imediatamente um novo prefixo e segredo, e invalida o par antigo, então qualquer chamador que ainda use o segredo vazado passa a falhar já na próxima requisição, sem nenhum atraso de propagação para esperar.
Não. Toda consulta autenticada por uma chave roda delimitada à própria organização daquela chave. Um produto que pertence a outra pessoa retorna o mesmo "não encontrado" que um que simplesmente não existe.
Não. products.read e checkout.create podem rodar diretamente de um navegador se a organização os deixar públicos. leads.create, support.create e feedback.create sempre exigem uma chave, já que existem especificamente para serem chamadas a partir de um servidor controlado pela organização.
Um padrão razoável por permissão, contado por endereço IP: generoso para navegação, mais restrito para criar um checkout ou enviar um lead. Uma chave sobrepõe esse padrão com seu próprio limite configurado, de 10 a 10.000 requisições por minuto.
Uma resposta 429 com um cabeçalho Retry-After, além do limite e da contagem de requisições restantes, para que uma integração possa recuar automaticamente em vez de adivinhar quando tentar de novo.
A Tiqory mantém disponibilidade, preços, pagamentos e acesso a trabalhar juntos enquanto a sua operação cresce. Conte-nos para onde vai; mostramos como chegar lá sem recomeçar.