Skip to main content

Doctor / Health Check

Channel managers move real money, so the integration ships a checker rather than trusting that a push returned 200. ChannexDoctorService verifies a listing's integration end-to-end.

GET /api/v1/admin/channex/listings/{listingId}/doctor?channelId=chnl_X&sampleDays=14

It runs these checks and returns a structured report:

CheckVerifies
credentialsa Channex API key is configured for the channel
api_reachableGET /properties succeeds with the key
property_mappingthe listing is onboarded (channex_property_id present, SYNCED)
room_type_mappingsevery room type has a room_type_id + rate_plan_id
availability_readbacka sampled GET /availability matches locally computed availability
rate_readbacka sampled GET /restrictions?…&filter[restrictions]=rate matches local rates
feed_reachablethe revision feed responds; reports the pending-revision count

sampleDays controls the read-back window (default 14, max 60). The read-backs compare Channex's values against what we would push for the same cells, so any drift (a stale rate, a missed availability update) is surfaced with the specific mismatching cells.

CI / monitoring

The endpoint returns 200 when every check passes and 503 when any check fails, so a monitor or CI job can alert on a failing integration without parsing the body.

{
"listingId": "lst_0853ie",
"channelId": "chnl_X",
"ok": false,
"checks": [
{ "name": "rate_readback", "ok": false,
"detail": "1 of 14 mismatch: [cx_rate|2026-07-03 local=12000 channex=15000]" }
]
}