Hoppa till innehåll

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.

TapahtumaMilloin se lähetetään
booking.createdLähetetään kun uusi varaus luodaan — vastaanoton, varausmoottorin tai ulkoisen kanavan kautta.
booking.checked_inLähetetään kun vieras kirjataan sisään.
booking.checked_outLähetetään kun vieras kirjataan ulos.
booking.cancelledLähetetään kun varaus perutaan.
payment.succeededLä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.