{"statuscode":200,"message":"success","data":{"apiVersion":"2026-09-01","eventTypes":["channel.booking.created","channel.booking.modified","channel.booking.cancelled","zimmerstack.ping"],"headers":{"id":"webhook-id","timestamp":"webhook-timestamp","signature":"webhook-signature","event":"x-zimmerstack-event","delivery":"x-zimmerstack-delivery","apiVersion":"x-zimmerstack-api-version","idempotencyKey":"idempotency-key"},"signature":{"scheme":"standard-webhooks","algorithm":"HMAC-SHA256","signedContent":"${webhook-id}.${webhook-timestamp}.${raw body}","secretPrefix":"whsec_","toleranceSeconds":300},"delivery":{"semantics":"at-least-once","ordering":"best-effort per endpoint; order on occurredAt, dedupe on id","timeoutSeconds":10,"retrySchedule":["30s","2m","10m","30m","1h","3h","6h","12h"],"autoPauseOn":[410]},"schemas":{"channel.booking.*":{"$ref":"#/definitions/ChannelBookingEvent","definitions":{"ChannelBookingEvent":{"type":"object","properties":{"type":{"type":"string","enum":["channel.booking.created","channel.booking.modified","channel.booking.cancelled"]},"apiVersion":{"type":"string"},"occurredAt":{"type":"string"},"property":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"currency":{"type":"string"},"timezone":{"type":"string"}},"required":["id","name","currency","timezone"],"additionalProperties":false},"data":{"type":"object","properties":{"booking":{"type":"object","properties":{"id":{"type":"integer"},"reference":{"type":"string"},"status":{"type":"string","enum":["CONFIRMED","CANCELLED"]},"stayStatus":{"type":"string"},"channel":{"type":"object","properties":{"otaName":{"type":"string"},"otaReservationCode":{"type":"string"},"source":{"type":"string"},"sourceGroup":{"type":"string"}},"required":["otaName","otaReservationCode","source","sourceGroup"],"additionalProperties":false},"stay":{"type":"object","properties":{"checkIn":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"checkOut":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/stay/properties/checkIn"},"nights":{"type":"integer"},"dayUse":{"type":"boolean"}},"required":["checkIn","checkOut","nights","dayUse"],"additionalProperties":false},"guest":{"type":"object","properties":{"fullName":{"type":"string"},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"phone":{"type":["string","null"]},"email":{"type":["string","null"]},"country":{"type":["string","null"]},"language":{"type":["string","null"]}},"required":["fullName","firstName","lastName","country","language"],"additionalProperties":false},"guestNotes":{"type":["string","null"]},"occupancy":{"type":"object","properties":{"adults":{"type":"integer"},"children":{"type":"integer"}},"required":["adults","children"],"additionalProperties":false},"rooms":{"type":"array","items":{"type":"object","properties":{"roomTypeId":{"type":"integer"},"roomTypeName":{"type":"string"},"mealPlan":{"type":"string","enum":["EP","CP","MAP","AP"]},"adults":{"type":"integer"},"children":{"type":"integer"},"checkIn":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/stay/properties/checkIn"},"checkOut":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/stay/properties/checkIn"},"nights":{"type":"integer"},"dayUse":{"type":"boolean"},"ratePerNight":{"type":"number"},"amount":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/rooms/items/properties/ratePerNight"},"status":{"type":"string"}},"required":["roomTypeId","roomTypeName","mealPlan","adults","children","checkIn","checkOut","nights","dayUse","ratePerNight","amount","status"],"additionalProperties":false}},"amounts":{"type":"object","properties":{"currency":{"type":"string"},"total":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/rooms/items/properties/ratePerNight"},"paid":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/rooms/items/properties/ratePerNight"},"balanceDue":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/rooms/items/properties/ratePerNight"},"paymentCollect":{"type":"string","enum":["ota","property","unknown"]}},"required":["currency","total","paid","balanceDue","paymentCollect"],"additionalProperties":false},"finance":{"anyOf":[{"type":"object","properties":{"otaName":{"type":"string"},"amountBasis":{"type":"string"},"currency":{"type":["string","null"]},"grossAmount":{"type":["number","null"]},"commissionAmount":{"type":["number","null"]},"taxAmount":{"type":["number","null"]},"netPayoutAmount":{"type":["number","null"]}},"required":["otaName","amountBasis","currency","grossAmount","commissionAmount","taxAmount","netPayoutAmount"],"additionalProperties":false},{"type":"null"}]},"cancellation":{"anyOf":[{"type":"object","properties":{"at":{"$ref":"#/definitions/ChannelBookingEvent/properties/occurredAt"},"reason":{"type":["string","null"]}},"required":["at","reason"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"$ref":"#/definitions/ChannelBookingEvent/properties/occurredAt"},"updatedAt":{"$ref":"#/definitions/ChannelBookingEvent/properties/occurredAt"}},"required":["id","reference","status","stayStatus","channel","stay","guest","guestNotes","occupancy","rooms","amounts","finance","cancellation","createdAt","updatedAt"],"additionalProperties":false}},"required":["booking"],"additionalProperties":false},"changes":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"previous":{"anyOf":[{"type":"object","properties":{"stay":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/stay"},"amounts":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/amounts"},"rooms":{"type":"array","items":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/rooms/items"}},"occupancy":{"$ref":"#/definitions/ChannelBookingEvent/properties/data/properties/booking/properties/occupancy"},"guest":{"type":"object","properties":{"fullName":{"type":"string"}},"required":["fullName"],"additionalProperties":false},"status":{"type":"string","enum":["CONFIRMED","CANCELLED"]}},"additionalProperties":false},{"type":"null"}]},"truncated":{"type":"boolean"},"id":{"type":"string"},"mode":{"type":"string","enum":["live","test"]}},"required":["type","apiVersion","occurredAt","property","data","changes","previous","id","mode"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"},"zimmerstack.ping":{"$ref":"#/definitions/PingEvent","definitions":{"PingEvent":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","const":"zimmerstack.ping"},"apiVersion":{"type":"string"},"occurredAt":{"type":"string"},"mode":{"type":"string","const":"test"},"property":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"currency":{"type":"string"},"timezone":{"type":"string"}},"required":["id","name","currency","timezone"],"additionalProperties":false},"data":{"type":"object","properties":{"message":{"type":"string"},"endpointId":{"type":"integer"}},"required":["message","endpointId"],"additionalProperties":false}},"required":["id","type","apiVersion","occurredAt","mode","property","data"],"additionalProperties":false}},"$schema":"http://json-schema.org/draft-07/schema#"}},"samples":{"channel.booking.created":{"id":"evt_5d3f0c4a-6b1e-4a7e-9c1b-2f0e8d1a9b77","mode":"live","type":"channel.booking.created","apiVersion":"2026-09-01","occurredAt":"2026-10-20T14:26:40.195Z","property":{"id":61,"name":"Sea Breeze Apartments","currency":"INR","timezone":"Asia/Kolkata"},"data":{"booking":{"id":100001,"reference":"TEST-ZS-8K3Q2M","status":"CONFIRMED","stayStatus":"UPCOMING","channel":{"otaName":"MakeMyTrip","otaReservationCode":"TEST-ZS-8K3Q2M","source":"CHANNEL_MANAGER","sourceGroup":"INDIRECT"},"stay":{"checkIn":"2026-11-03","checkOut":"2026-11-05","nights":2,"dayUse":false},"guest":{"fullName":"Asha Verma","firstName":"Asha","lastName":"Verma","phone":"+919876500000","email":"asha.verma@example.com","country":"IN","language":"en"},"guestNotes":"Late arrival around 22:00. Non-smoking room please. (test event)","occupancy":{"adults":2,"children":0},"rooms":[{"roomTypeId":412,"roomTypeName":"Deluxe Sea View","mealPlan":"CP","adults":2,"children":0,"checkIn":"2026-11-03","checkOut":"2026-11-05","nights":2,"dayUse":false,"ratePerNight":2700,"amount":5400,"status":"UPCOMING"}],"amounts":{"currency":"INR","total":5400,"paid":0,"balanceDue":5400,"paymentCollect":"property"},"finance":{"otaName":"MakeMyTrip","amountBasis":"GROSS_TOTAL","currency":"INR","grossAmount":5400,"commissionAmount":1350,"taxAmount":648,"netPayoutAmount":4050},"cancellation":null,"createdAt":"2026-10-20T14:26:40.195Z","updatedAt":"2026-10-20T14:26:40.195Z"}},"changes":null,"previous":null},"channel.booking.modified":{"id":"evt_5d3f0c4a-6b1e-4a7e-9c1b-2f0e8d1a9b77","mode":"live","type":"channel.booking.modified","apiVersion":"2026-09-01","occurredAt":"2026-10-20T14:26:40.195Z","property":{"id":61,"name":"Sea Breeze Apartments","currency":"INR","timezone":"Asia/Kolkata"},"data":{"booking":{"id":100001,"reference":"TEST-ZS-8K3Q2M","status":"CONFIRMED","stayStatus":"UPCOMING","channel":{"otaName":"MakeMyTrip","otaReservationCode":"TEST-ZS-8K3Q2M","source":"CHANNEL_MANAGER","sourceGroup":"INDIRECT"},"stay":{"checkIn":"2026-11-03","checkOut":"2026-11-06","nights":3,"dayUse":false},"guest":{"fullName":"Asha Verma","firstName":"Asha","lastName":"Verma","phone":"+919876500000","email":"asha.verma@example.com","country":"IN","language":"en"},"guestNotes":"Late arrival around 22:00. Non-smoking room please. (test event)","occupancy":{"adults":2,"children":0},"rooms":[{"roomTypeId":412,"roomTypeName":"Deluxe Sea View","mealPlan":"CP","adults":2,"children":0,"checkIn":"2026-11-03","checkOut":"2026-11-06","nights":3,"dayUse":false,"ratePerNight":2700,"amount":8100,"status":"UPCOMING"}],"amounts":{"currency":"INR","total":8100,"paid":0,"balanceDue":8100,"paymentCollect":"property"},"finance":{"otaName":"MakeMyTrip","amountBasis":"GROSS_TOTAL","currency":"INR","grossAmount":8100,"commissionAmount":2025,"taxAmount":972,"netPayoutAmount":6075},"cancellation":null,"createdAt":"2026-10-20T14:26:40.195Z","updatedAt":"2026-10-20T14:26:40.195Z"}},"changes":["stay.checkOut","stay.nights","rooms[0].checkOut","rooms[0].nights","rooms[0].amount","amounts.total","amounts.balanceDue"],"previous":{"status":"CONFIRMED","stay":{"checkIn":"2026-11-03","checkOut":"2026-11-05","nights":2,"dayUse":false},"occupancy":{"adults":2,"children":0},"rooms":[{"roomTypeId":412,"roomTypeName":"Deluxe Sea View","mealPlan":"CP","adults":2,"children":0,"checkIn":"2026-11-03","checkOut":"2026-11-05","nights":2,"dayUse":false,"ratePerNight":2700,"amount":5400,"status":"UPCOMING"}],"amounts":{"currency":"INR","total":5400,"paid":0,"balanceDue":5400,"paymentCollect":"property"},"guest":{"fullName":"Asha Verma"}}},"channel.booking.cancelled":{"id":"evt_5d3f0c4a-6b1e-4a7e-9c1b-2f0e8d1a9b77","mode":"live","type":"channel.booking.cancelled","apiVersion":"2026-09-01","occurredAt":"2026-10-20T14:26:40.195Z","property":{"id":61,"name":"Sea Breeze Apartments","currency":"INR","timezone":"Asia/Kolkata"},"data":{"booking":{"id":100001,"reference":"TEST-ZS-8K3Q2M","status":"CANCELLED","stayStatus":"CANCELLED","channel":{"otaName":"MakeMyTrip","otaReservationCode":"TEST-ZS-8K3Q2M","source":"CHANNEL_MANAGER","sourceGroup":"INDIRECT"},"stay":{"checkIn":"2026-11-03","checkOut":"2026-11-05","nights":2,"dayUse":false},"guest":{"fullName":"Asha Verma","firstName":"Asha","lastName":"Verma","phone":"+919876500000","email":"asha.verma@example.com","country":"IN","language":"en"},"guestNotes":"Late arrival around 22:00. Non-smoking room please. (test event)","occupancy":{"adults":2,"children":0},"rooms":[{"roomTypeId":412,"roomTypeName":"Deluxe Sea View","mealPlan":"CP","adults":2,"children":0,"checkIn":"2026-11-03","checkOut":"2026-11-05","nights":2,"dayUse":false,"ratePerNight":2700,"amount":5400,"status":"CANCELLED"}],"amounts":{"currency":"INR","total":5400,"paid":0,"balanceDue":5400,"paymentCollect":"property"},"finance":{"otaName":"MakeMyTrip","amountBasis":"GROSS_TOTAL","currency":"INR","grossAmount":5400,"commissionAmount":1350,"taxAmount":648,"netPayoutAmount":4050},"cancellation":{"at":"2026-10-20T14:26:40.195Z","reason":"Cancelled on MakeMyTrip"},"createdAt":"2026-10-20T14:26:40.195Z","updatedAt":"2026-10-20T14:26:40.195Z"}},"changes":null,"previous":null},"zimmerstack.ping":{"id":"evt_5d3f0c4a-6b1e-4a7e-9c1b-2f0e8d1a9b77","type":"zimmerstack.ping","apiVersion":"2026-09-01","occurredAt":"2026-10-20T14:26:40.195Z","mode":"test","property":{"id":61,"name":"Sea Breeze Apartments","currency":"INR","timezone":"Asia/Kolkata"},"data":{"message":"Hello from ZimmerStack. If you can read this and the signature verified, your endpoint is ready.","endpointId":1}}}}}