A IoT API do Repull vai deixar o teu código reagir a eventos físicos da mesma forma que reage a uma alteração de reserva. Roda um código de porta no check-out. Pré-aclimata uma unidade antes da chegada. Recebe um webhook quando um termostato está a 30 graus há seis horas.
O que vais construir
Na criação da reserva, gera um código. Na hora do check-out, expira-o e emite o do próximo hóspede. Acabou o "o pessoal da limpeza mudou o código?" — a fechadura e a reserva são o mesmo objeto.
A T-2 horas, põe a unidade a uma temperatura confortável. Depois do check-out, baixa-a para um modo de manutenção. Multiplica num portfólio e a poupança de energia paga a conta da IoT sozinha.
Porta deixada aberta durante uma hora na rotação. Termostato a 30°C sem ocupantes. Sensor de fuga de água acionado. O webhook dispara, a fila de operações recebe a tarefa, o telemóvel de alguém vibra.
Como vai ser a API
A IoT API trata cada dispositivo ligado — fechadura, termostato, sensor — como filho do listing. Reservas e dispositivos partilham a mesma auth, os mesmos webhooks e o mesmo workspace, por isso constróis fluxos cross-cutting num só sítio.
A maior parte dos vendors usa OAuth ou pairing ao nível da conta. O Repull Connect picker trata disso da mesma forma que trata das ligações PMS — um fluxo consistente.
Mesma superfície de webhooks que tudo o resto. door.opened, lock.code.created, climate.target_changed, sensor.alert. Assinatura verificada, retries em 5xx, um único log de eventos para fazeres grep.
Trigger em reservation.confirmed para gerar um código. Trigger em reservation.checkout para o expirar. As mesmas primitivas que já usas para mensagens e pricing.
// Repull IoT API — em breve. A shape para a qual estamos a convergir:
import { Repull } from '@repull/sdk'
const repull = new Repull({ apiKey: ..., workspaceId: ... })
// No reservation.confirmed
repull.webhooks.on('reservation.confirmed', async (e) => {
const lock = await repull.devices.get(e.listingId, { kind: 'lock' })
await repull.devices.lock.codes.create(lock.id, {
label: e.guestName,
code: '4271', // ou omite para auto-gerar
activeFrom: e.checkIn,
activeUntil: e.checkOut,
})
})
// No reservation.checkout, o código auto-expira.
// Num alerta de sensor, encaminha para a tua queue de ops:
repull.webhooks.on('sensor.alert', async (e) => {
if (e.kind === 'water_leak') await ops.create({
listingId: e.listingId,
severity: 'critical',
title: `Fuga de água detetada · ${e.location}`,
})
})As shapes acima são como estamos a pensar nisto — os nomes finais dos métodos saem com o release público. Vendors de fechaduras alvo para v1: Yale, Schlage, August. Climatização: Nest, ecobee, Honeywell.
A chegar
Se geres um portfólio com fechaduras e climatização já instaladas, ou estás a construir um produto que precisa de falar com dispositivos físicos, manda mensagem. Os primeiros design partners moldam a API.
Fechaduras
Yale Linus / Assure, Schlage Encode, August, igloohome.
Climatização
Nest, ecobee, Honeywell Lyric, Sensibo.
Sensores
Ruído (Minut, NoiseAware), fuga de água, ocupação.
Sem data fixa de lançamento. Lançamos quando as primeiras três integrações funcionarem ponta-a-ponta em dados reais.
Diz-nos que dispositivos é que tens instalados e o que construirias com isto. A equipa lê todos os emails.
Vai direto para a equipa. Sem mailing list, sem drip.
EnviarA IoT está a chegar. Reservas, canais, pricing e agentes AI não — estão live agora.