Kehittäjät
Webhookit — reaaliaikaiset tapahtumat Stayosta
Tilaa tapahtumia Stayosta reaaliajassa: uudet varaukset, sisään- ja uloskirjautumiset, peruutukset ja onnistuneet maksut. Allekirjoitettu toimitus, testitoimitus, salaisuuksien kierto ja toimitushistoria.
Automaattinen lähetys
Tapahtumat lähetetään reaaliajassa kun jotain tapahtuu Stayossa — ei polling-töitä tai aikataulutusta.
Allekirjoitetut toimitukset
Jokainen payload allekirjoitetaan HMAC-SHA256:lla ja teidän signing secretillänne, jotta voitte varmistaa kutsun tulevan Stayosta.
Kierrätä salaisuuksia
Kierrätä signing secret milloin haluatte suoraan /settings/webhooks -sivulta — menettämättä historiaa.
Testitoimitus
Lähetä testitapahtuma endpointiinne yhdellä klikkauksella ja varmistakaa, että allekirjoitus ja payload tulevat perille.
Toimitushistoria
Nähkää kaikki lähtevät kutsut tilakoodin, ajan, payloadin ja vastauksen kanssa. Epäonnistuneet toimitukset voidaan toistaa.
Useita endpointteja
Rekisteröikää useita URL:eja per tapahtuma — rakentakaa omia integraatioita, hälytyksiä tai erillisiä ympäristöjä.
Tapahtumat
Tilatkaa per endpoint ne tapahtumat, joista olette kiinnostuneita.
| Tapahtuma | Milloin se lähetetään |
|---|---|
| booking.created | Lähetetään kun uusi varaus luodaan — vastaanoton, varausmoottorin tai ulkoisen kanavan kautta. |
| booking.checked_in | Lähetetään kun vieras kirjataan sisään. |
| booking.checked_out | Lähetetään kun vieras kirjataan ulos. |
| booking.cancelled | Lähetetään kun varaus perutaan. |
| payment.succeeded | Lähetetään kun maksu suoritetaan (kortti, Swish, lasku ym.). |
Esimerkki-payload
Kaikki webhookit lähetetään POST:na JSON:lla. Allekirjoitus ja tapahtumatyyppi ovat headereissa, jotta voitte reitittää ja varmistaa ennen payloadin tulkitsemista.
- • Stayo-Event — tapahtumatyyppi.
- • Stayo-Signature — timestamp + HMAC-SHA256.
- • Stayo-Delivery — yksilöllinen ID per toimitus (idempotenssia varten).
POST https://din-app.example.com/stayo/webhook
Content-Type: application/json
Stayo-Event: booking.created
Stayo-Signature: t=1737200000,v1=9f2c...ab12
Stayo-Delivery: whd_01HXYZ...
{
"id": "evt_01HXYZ...",
"type": "booking.created",
"created": "2026-08-12T09:14:22Z",
"data": {
"booking": {
"id": "bk_01HXYZ...",
"status": "confirmed",
"channel": "direct",
"arrival": "2026-08-20",
"departure": "2026-08-23",
"guest": { "name": "Anna Andersson", "email": "anna@example.com" },
"total": { "amount": 4200, "currency": "SEK" }
}
}
}Varmista allekirjoitus
Laske HMAC-SHA256 arvolle {timestamp}.{rawBody} signing secretillänne ja vertaa Stayo-Signaturen v1:een. Käytä vakioaikaista vertailua.
Hylätkää kutsut, joiden aikaleima on vanhempi kuin muutama minuutti, replay-hyökkäysten estämiseksi.
import crypto from "node:crypto";
export function verifyStayoSignature(
rawBody: string,
header: string,
secret: string,
) {
const [tPart, v1Part] = header.split(",");
const timestamp = tPart.split("=")[1];
const signature = v1Part.split("=")[1];
const expected = crypto
.createHmac("sha256", secret)
.update(`${timestamp}.${rawBody}`)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature, "hex"),
Buffer.from(expected, "hex"),
);
}Hallinnoi webhookkeja Stayossa
Kohdassa Asetukset → Webhookit Stayossa (/settings/webhooks) voitte:
- • Lisätä ja poistaa endpointteja per tapahtuma.
- • Nähdä ja kierrättää signing secretin.
- • Lähettää testitoimituksen endpointille.
- • Selata toimitushistoriaa tilan ja payloadin kanssa.
- • Toistaa epäonnistuneita toimituksia.
- • Keskeyttää endpointin tilapäisesti menettämättä konfiguraatiota.
Haluatteko rakentaa integraation Stayohon?
Yhdistäkää webhookit julkiseen API:imme — autamme alkuun ja annamme pääsyn OpenAPI-spesifikaatioon ja testiympäristöön.