[{"data":1,"prerenderedAt":1793},["ShallowReactive",2],{"guide-concepts":3},{"id":4,"title":5,"body":6,"description":1784,"extension":1785,"meta":1786,"navigation":1788,"path":1789,"seo":1790,"stem":1791,"__hash__":1792},"content/guides/concepts.md","Key Concepts",{"type":7,"value":8,"toc":1735},"minimal",[9,13,17,20,25,30,42,53,57,85,87,91,95,102,107,133,138,214,216,220,226,231,251,255,281,285,407,409,413,419,424,486,490,515,520,663,665,669,673,679,704,708,741,745,777,779,783,787,792,796,864,868,871,980,982,986,990,997,1002,1015,1020,1034,1038,1043,1049,1054,1080,1082,1086,1090,1097,1108,1128,1130,1134,1137,1143,1149,1155,1161,1181,1183,1187,1190,1194,1244,1248,1274,1278,1298,1300,1304,1308,1429,1433,1502,1506,1511,1517,1519,1523,1527,1533,1537,1540,1555,1558,1560,1564,1568,1577,1603,1607,1614,1636,1644,1646,1650,1714,1716,1720,1723,1731],[10,11,5],"h1",{"id":12},"key-concepts",[14,15,16],"p",{},"Understanding these core concepts will help you build better integrations with CHeKT.",[18,19],"hr",{},[21,22,24],"h2",{"id":23},"the-gateway-model","The Gateway Model",[26,27,29],"h3",{"id":28},"what-is-a-gateway","What is a Gateway?",[14,31,32,33,37,38,41],{},"CHeKT acts as a ",[34,35,36],"strong",{},"gateway"," or ",[34,39,40],{},"bridge"," between security systems and monitoring centers. Instead of integrating with each monitoring center individually, you integrate once with CHeKT.",[43,44,49],"pre",{"className":45,"code":47,"language":48},[46],"language-text","Without CHeKT:\nYour System → Monitoring Center A ❌\nYour System → Monitoring Center B ❌  (Multiple integrations)\nYour System → Monitoring Center C ❌\n\nWith CHeKT:\nYour System → CHeKT Gateway → Any Monitoring Center ✓ (One integration)\n","text",[50,51,47],"code",{"__ignoreMap":52},"",[26,54,56],{"id":55},"benefits-of-the-gateway-model","Benefits of the Gateway Model",[58,59,60,67,73,79],"ul",{},[61,62,63,66],"li",{},[34,64,65],{},"Single Integration Point"," - Connect once, reach all monitoring centers",[61,68,69,72],{},[34,70,71],{},"Protocol Translation"," - CHeKT handles different monitoring protocols",[61,74,75,78],{},[34,76,77],{},"Enrichment"," - Add video verification automatically",[61,80,81,84],{},[34,82,83],{},"Reliability"," - Built-in redundancy and failover",[18,86],{},[21,88,90],{"id":89},"core-entities","Core Entities",[26,92,94],{"id":93},"sites","Sites",[14,96,97,98,101],{},"A ",[34,99,100],{},"site"," represents a physical location being monitored (home, business, warehouse, etc.).",[14,103,104],{},[34,105,106],{},"Key Properties:",[58,108,109,115,121,127],{},[61,110,111,114],{},[34,112,113],{},"Address"," - Physical location",[61,116,117,120],{},[34,118,119],{},"Timezone"," - For scheduling and timestamps",[61,122,123,126],{},[34,124,125],{},"Monitoring Status"," - Whether monitoring is active",[61,128,129,132],{},[34,130,131],{},"Emergency Contacts"," - Who to notify in emergencies",[14,134,135],{},[34,136,137],{},"Example:",[43,139,143],{"className":140,"code":141,"language":142,"meta":52,"style":52},"language-json shiki shiki-themes github-light github-dark","{\n  \"id\": \"site_abc123\",\n  \"name\": \"John's Home\",\n  \"address\": \"123 Main St, San Francisco, CA\",\n  \"monitoring_enabled\": true\n}\n","json",[50,144,145,154,171,184,197,208],{"__ignoreMap":52},[146,147,150],"span",{"class":148,"line":149},"line",1,[146,151,153],{"class":152},"sVt8B","{\n",[146,155,157,161,164,168],{"class":148,"line":156},2,[146,158,160],{"class":159},"sj4cs","  \"id\"",[146,162,163],{"class":152},": ",[146,165,167],{"class":166},"sZZnC","\"site_abc123\"",[146,169,170],{"class":152},",\n",[146,172,174,177,179,182],{"class":148,"line":173},3,[146,175,176],{"class":159},"  \"name\"",[146,178,163],{"class":152},[146,180,181],{"class":166},"\"John's Home\"",[146,183,170],{"class":152},[146,185,187,190,192,195],{"class":148,"line":186},4,[146,188,189],{"class":159},"  \"address\"",[146,191,163],{"class":152},[146,193,194],{"class":166},"\"123 Main St, San Francisco, CA\"",[146,196,170],{"class":152},[146,198,200,203,205],{"class":148,"line":199},5,[146,201,202],{"class":159},"  \"monitoring_enabled\"",[146,204,163],{"class":152},[146,206,207],{"class":159},"true\n",[146,209,211],{"class":148,"line":210},6,[146,212,213],{"class":152},"}\n",[18,215],{},[26,217,219],{"id":218},"devices-cameras-sensors-panels","Devices (Cameras, Sensors, Panels)",[14,221,222,225],{},[34,223,224],{},"Devices"," are the physical hardware at a site that detect events and capture video.",[14,227,228],{},[34,229,230],{},"Types of Devices:",[58,232,233,239,245],{},[61,234,235,238],{},[34,236,237],{},"Cameras"," - Capture video, detect motion",[61,240,241,244],{},[34,242,243],{},"Sensors"," - Door/window sensors, motion detectors",[61,246,247,250],{},[34,248,249],{},"Panels"," - Control panels, alarm systems",[14,252,253],{},[34,254,106],{},[58,256,257,263,269,275],{},[61,258,259,262],{},[34,260,261],{},"Device ID"," - Unique identifier from your system",[61,264,265,268],{},[34,266,267],{},"Capabilities"," - What the device can do (record, PTZ, audio)",[61,270,271,274],{},[34,272,273],{},"Status"," - Online/offline state",[61,276,277,280],{},[34,278,279],{},"Stream URLs"," - Where to access live video",[14,282,283],{},[34,284,137],{},[43,286,288],{"className":140,"code":287,"language":142,"meta":52,"style":52},"{\n  \"id\": \"cam_xyz789\",\n  \"name\": \"Front Door Camera\",\n  \"device_id\": \"camera_001\",\n  \"type\": \"camera\",\n  \"capabilities\": {\n    \"record\": true,\n    \"motion_detection\": true,\n    \"two_way_audio\": true,\n    \"ptz\": false\n  }\n}\n",[50,289,290,294,305,316,328,340,348,361,373,385,396,402],{"__ignoreMap":52},[146,291,292],{"class":148,"line":149},[146,293,153],{"class":152},[146,295,296,298,300,303],{"class":148,"line":156},[146,297,160],{"class":159},[146,299,163],{"class":152},[146,301,302],{"class":166},"\"cam_xyz789\"",[146,304,170],{"class":152},[146,306,307,309,311,314],{"class":148,"line":173},[146,308,176],{"class":159},[146,310,163],{"class":152},[146,312,313],{"class":166},"\"Front Door Camera\"",[146,315,170],{"class":152},[146,317,318,321,323,326],{"class":148,"line":186},[146,319,320],{"class":159},"  \"device_id\"",[146,322,163],{"class":152},[146,324,325],{"class":166},"\"camera_001\"",[146,327,170],{"class":152},[146,329,330,333,335,338],{"class":148,"line":199},[146,331,332],{"class":159},"  \"type\"",[146,334,163],{"class":152},[146,336,337],{"class":166},"\"camera\"",[146,339,170],{"class":152},[146,341,342,345],{"class":148,"line":210},[146,343,344],{"class":159},"  \"capabilities\"",[146,346,347],{"class":152},": {\n",[146,349,351,354,356,359],{"class":148,"line":350},7,[146,352,353],{"class":159},"    \"record\"",[146,355,163],{"class":152},[146,357,358],{"class":159},"true",[146,360,170],{"class":152},[146,362,364,367,369,371],{"class":148,"line":363},8,[146,365,366],{"class":159},"    \"motion_detection\"",[146,368,163],{"class":152},[146,370,358],{"class":159},[146,372,170],{"class":152},[146,374,376,379,381,383],{"class":148,"line":375},9,[146,377,378],{"class":159},"    \"two_way_audio\"",[146,380,163],{"class":152},[146,382,358],{"class":159},[146,384,170],{"class":152},[146,386,388,391,393],{"class":148,"line":387},10,[146,389,390],{"class":159},"    \"ptz\"",[146,392,163],{"class":152},[146,394,395],{"class":159},"false\n",[146,397,399],{"class":148,"line":398},11,[146,400,401],{"class":152},"  }\n",[146,403,405],{"class":148,"line":404},12,[146,406,213],{"class":152},[18,408],{},[26,410,412],{"id":411},"events-alarms-troubles-status-changes","Events (Alarms, Troubles, Status Changes)",[14,414,415,418],{},[34,416,417],{},"Events"," are occurrences that need to be reported to monitoring centers.",[14,420,421],{},[34,422,423],{},"Event Types:",[425,426,427,443],"table",{},[428,429,430],"thead",{},[431,432,433,437,440],"tr",{},[434,435,436],"th",{},"Type",[434,438,439],{},"Description",[434,441,442],{},"Examples",[444,445,446,460,473],"tbody",{},[431,447,448,454,457],{},[449,450,451],"td",{},[34,452,453],{},"Alarm",[449,455,456],{},"Security breach or threat",[449,458,459],{},"Intrusion, panic button, fire",[431,461,462,467,470],{},[449,463,464],{},[34,465,466],{},"Trouble",[449,468,469],{},"System issues",[449,471,472],{},"Device offline, low battery, network loss",[431,474,475,480,483],{},[449,476,477],{},[34,478,479],{},"Arming",[449,481,482],{},"System status changes",[449,484,485],{},"Armed, disarmed, schedule change",[14,487,488],{},[34,489,106],{},[58,491,492,498,504,509],{},[61,493,494,497],{},[34,495,496],{},"Event Time"," - When it occurred (ISO 8601 format)",[61,499,500,503],{},[34,501,502],{},"Event Type"," - Alarm, trouble, or arming",[61,505,506,508],{},[34,507,261],{}," - Which device triggered it",[61,510,511,514],{},[34,512,513],{},"Video Clips"," - Associated video for verification",[14,516,517],{},[34,518,519],{},"Example Alarm Event:",[43,521,523],{"className":140,"code":522,"language":142,"meta":52,"style":52},"{\n  \"event_id\": \"evt_abc123\",\n  \"event_type\": \"alarm\",\n  \"event_subtype\": \"intrusion\",\n  \"event_time\": \"2026-02-11T14:30:00Z\",\n  \"site_id\": \"site_abc123\",\n  \"camera_id\": \"cam_xyz789\",\n  \"video_clips\": [\n    {\n      \"start_time\": \"2026-02-11T14:29:55Z\",\n      \"duration\": 10,\n      \"url\": \"https://...\"\n    }\n  ]\n}\n",[50,524,525,529,541,553,565,577,588,599,607,612,624,636,646,652,658],{"__ignoreMap":52},[146,526,527],{"class":148,"line":149},[146,528,153],{"class":152},[146,530,531,534,536,539],{"class":148,"line":156},[146,532,533],{"class":159},"  \"event_id\"",[146,535,163],{"class":152},[146,537,538],{"class":166},"\"evt_abc123\"",[146,540,170],{"class":152},[146,542,543,546,548,551],{"class":148,"line":173},[146,544,545],{"class":159},"  \"event_type\"",[146,547,163],{"class":152},[146,549,550],{"class":166},"\"alarm\"",[146,552,170],{"class":152},[146,554,555,558,560,563],{"class":148,"line":186},[146,556,557],{"class":159},"  \"event_subtype\"",[146,559,163],{"class":152},[146,561,562],{"class":166},"\"intrusion\"",[146,564,170],{"class":152},[146,566,567,570,572,575],{"class":148,"line":199},[146,568,569],{"class":159},"  \"event_time\"",[146,571,163],{"class":152},[146,573,574],{"class":166},"\"2026-02-11T14:30:00Z\"",[146,576,170],{"class":152},[146,578,579,582,584,586],{"class":148,"line":210},[146,580,581],{"class":159},"  \"site_id\"",[146,583,163],{"class":152},[146,585,167],{"class":166},[146,587,170],{"class":152},[146,589,590,593,595,597],{"class":148,"line":350},[146,591,592],{"class":159},"  \"camera_id\"",[146,594,163],{"class":152},[146,596,302],{"class":166},[146,598,170],{"class":152},[146,600,601,604],{"class":148,"line":363},[146,602,603],{"class":159},"  \"video_clips\"",[146,605,606],{"class":152},": [\n",[146,608,609],{"class":148,"line":375},[146,610,611],{"class":152},"    {\n",[146,613,614,617,619,622],{"class":148,"line":387},[146,615,616],{"class":159},"      \"start_time\"",[146,618,163],{"class":152},[146,620,621],{"class":166},"\"2026-02-11T14:29:55Z\"",[146,623,170],{"class":152},[146,625,626,629,631,634],{"class":148,"line":398},[146,627,628],{"class":159},"      \"duration\"",[146,630,163],{"class":152},[146,632,633],{"class":159},"10",[146,635,170],{"class":152},[146,637,638,641,643],{"class":148,"line":404},[146,639,640],{"class":159},"      \"url\"",[146,642,163],{"class":152},[146,644,645],{"class":166},"\"https://...\"\n",[146,647,649],{"class":148,"line":648},13,[146,650,651],{"class":152},"    }\n",[146,653,655],{"class":148,"line":654},14,[146,656,657],{"class":152},"  ]\n",[146,659,661],{"class":148,"line":660},15,[146,662,213],{"class":152},[18,664],{},[21,666,668],{"id":667},"video-verification","Video Verification",[26,670,672],{"id":671},"why-video-matters","Why Video Matters",[14,674,675,678],{},[34,676,677],{},"Video verification"," dramatically improves alarm response:",[58,680,681,687,693,699],{},[61,682,683,686],{},[34,684,685],{},"80% reduction"," in false alarms",[61,688,689,692],{},[34,690,691],{},"3x faster"," police dispatch for real threats",[61,694,695,698],{},[34,696,697],{},"Better evidence"," for insurance and prosecution",[61,700,701],{},[34,702,703],{},"Higher customer satisfaction",[26,705,707],{"id":706},"how-it-works","How It Works",[709,710,711,717,723,729,735],"ol",{},[61,712,713,716],{},[34,714,715],{},"Event Occurs"," - Camera detects motion/alarm",[61,718,719,722],{},[34,720,721],{},"Video Captured"," - System records pre/post event video",[61,724,725,728],{},[34,726,727],{},"Attached to Event"," - Video URL included in alarm event",[61,730,731,734],{},[34,732,733],{},"Delivered Together"," - Monitoring center receives alarm + video simultaneously",[61,736,737,740],{},[34,738,739],{},"Operator Reviews"," - Human verification before dispatch",[26,742,744],{"id":743},"video-requirements","Video Requirements",[58,746,747,753,759,765,771],{},[61,748,749,752],{},[34,750,751],{},"Format:"," MP4, H.264 codec",[61,754,755,758],{},[34,756,757],{},"Duration:"," 5-30 seconds (configurable)",[61,760,761,764],{},[34,762,763],{},"Resolution:"," Minimum 720p recommended",[61,766,767,770],{},[34,768,769],{},"Pre-Alarm:"," Include 5 seconds before event",[61,772,773,776],{},[34,774,775],{},"Post-Alarm:"," Include 5-10 seconds after event",[18,778],{},[21,780,782],{"id":781},"arming-states","Arming States",[26,784,786],{"id":785},"what-is-arming","What is Arming?",[14,788,789,791],{},[34,790,479],{}," refers to the security system's armed/disarmed state. Different arming modes control which devices are active.",[26,793,795],{"id":794},"arming-modes","Arming Modes",[425,797,798,810],{},[428,799,800],{},[431,801,802,805,807],{},[434,803,804],{},"Mode",[434,806,439],{},[434,808,809],{},"Typical Use",[444,811,812,825,838,851],{},[431,813,814,819,822],{},[449,815,816],{},[34,817,818],{},"Disarmed",[449,820,821],{},"All monitoring off",[449,823,824],{},"When occupants are home",[431,826,827,832,835],{},[449,828,829],{},[34,830,831],{},"Armed Stay",[449,833,834],{},"Perimeter only",[449,836,837],{},"Sleeping, at home",[431,839,840,845,848],{},[449,841,842],{},[34,843,844],{},"Armed Away",[449,846,847],{},"All devices active",[449,849,850],{},"When away from property",[431,852,853,858,861],{},[449,854,855],{},[34,856,857],{},"Armed Night",[449,859,860],{},"Partial monitoring",[449,862,863],{},"Nighttime, selective zones",[26,865,867],{"id":866},"arming-schedules","Arming Schedules",[14,869,870],{},"Automate arming based on time:",[43,872,874],{"className":140,"code":873,"language":142,"meta":52,"style":52},"{\n  \"schedule\": {\n    \"monday\": {\n      \"arm_time\": \"08:00\",\n      \"arm_mode\": \"away\",\n      \"disarm_time\": \"18:00\"\n    },\n    \"tuesday\": {\n      \"arm_time\": \"08:00\",\n      \"arm_mode\": \"away\",\n      \"disarm_time\": \"18:00\"\n    }\n  }\n}\n",[50,875,876,880,887,894,906,918,928,933,940,950,960,968,972,976],{"__ignoreMap":52},[146,877,878],{"class":148,"line":149},[146,879,153],{"class":152},[146,881,882,885],{"class":148,"line":156},[146,883,884],{"class":159},"  \"schedule\"",[146,886,347],{"class":152},[146,888,889,892],{"class":148,"line":173},[146,890,891],{"class":159},"    \"monday\"",[146,893,347],{"class":152},[146,895,896,899,901,904],{"class":148,"line":186},[146,897,898],{"class":159},"      \"arm_time\"",[146,900,163],{"class":152},[146,902,903],{"class":166},"\"08:00\"",[146,905,170],{"class":152},[146,907,908,911,913,916],{"class":148,"line":199},[146,909,910],{"class":159},"      \"arm_mode\"",[146,912,163],{"class":152},[146,914,915],{"class":166},"\"away\"",[146,917,170],{"class":152},[146,919,920,923,925],{"class":148,"line":210},[146,921,922],{"class":159},"      \"disarm_time\"",[146,924,163],{"class":152},[146,926,927],{"class":166},"\"18:00\"\n",[146,929,930],{"class":148,"line":350},[146,931,932],{"class":152},"    },\n",[146,934,935,938],{"class":148,"line":363},[146,936,937],{"class":159},"    \"tuesday\"",[146,939,347],{"class":152},[146,941,942,944,946,948],{"class":148,"line":375},[146,943,898],{"class":159},[146,945,163],{"class":152},[146,947,903],{"class":166},[146,949,170],{"class":152},[146,951,952,954,956,958],{"class":148,"line":387},[146,953,910],{"class":159},[146,955,163],{"class":152},[146,957,915],{"class":166},[146,959,170],{"class":152},[146,961,962,964,966],{"class":148,"line":398},[146,963,922],{"class":159},[146,965,163],{"class":152},[146,967,927],{"class":166},[146,969,970],{"class":148,"line":404},[146,971,651],{"class":152},[146,973,974],{"class":148,"line":648},[146,975,401],{"class":152},[146,977,978],{"class":148,"line":654},[146,979,213],{"class":152},[18,981],{},[21,983,985],{"id":984},"two-way-communication","Two-Way Communication",[26,987,989],{"id":988},"bidirectional-flow","Bidirectional Flow",[14,991,992,993,996],{},"CHeKT enables ",[34,994,995],{},"two-way communication"," between monitoring centers and security systems:",[14,998,999],{},[34,1000,1001],{},"Outbound (You → Monitoring):",[58,1003,1004,1007,1010,1012],{},[61,1005,1006],{},"Alarm events",[61,1008,1009],{},"Status updates",[61,1011,677],{},[61,1013,1014],{},"Device health",[14,1016,1017],{},[34,1018,1019],{},"Inbound (Monitoring → You):",[58,1021,1022,1025,1028,1031],{},[61,1023,1024],{},"Arming commands",[61,1026,1027],{},"Camera control requests",[61,1029,1030],{},"Audio communication requests",[61,1032,1033],{},"Verification status",[26,1035,1037],{"id":1036},"webhooks","Webhooks",[14,1039,1040,1042],{},[34,1041,1037],{}," deliver real-time notifications from CHeKT to your system:",[43,1044,1047],{"className":1045,"code":1046,"language":48},[46],"Event occurs at monitoring center\n         ↓\nCHeKT sends webhook to your endpoint\n         ↓\nYour system receives and processes\n",[50,1048,1046],{"__ignoreMap":52},[14,1050,1051],{},[34,1052,1053],{},"Common Webhook Events:",[58,1055,1056,1062,1068,1074],{},[61,1057,1058,1061],{},[50,1059,1060],{},"arming.command"," - Arm/disarm request",[61,1063,1064,1067],{},[50,1065,1066],{},"camera.view_request"," - Live view requested",[61,1069,1070,1073],{},[50,1071,1072],{},"verification.complete"," - Alarm verified",[61,1075,1076,1079],{},[50,1077,1078],{},"device.status_change"," - Device online/offline",[18,1081],{},[21,1083,1085],{"id":1084},"authentication","Authentication",[26,1087,1089],{"id":1088},"public-api-api-keys","Public API: API Keys",[14,1091,1092,1093,1096],{},"Simple ",[34,1094,1095],{},"Bearer Token"," authentication:",[43,1098,1102],{"className":1099,"code":1100,"language":1101,"meta":52,"style":52},"language-http shiki shiki-themes github-light github-dark","Authorization: Bearer YOUR_API_KEY\n","http",[50,1103,1104],{"__ignoreMap":52},[146,1105,1106],{"class":148,"line":149},[146,1107,1100],{},[58,1109,1110,1116,1122],{},[61,1111,1112,1115],{},[34,1113,1114],{},"Permanent"," until manually rotated",[61,1117,1118,1121],{},[34,1119,1120],{},"Scoped"," to your dealer account",[61,1123,1124,1127],{},[34,1125,1126],{},"Easy"," to use for testing and development",[18,1129],{},[26,1131,1133],{"id":1132},"partner-api-oauth-20-jwt","Partner API: OAuth 2.0 + JWT",[14,1135,1136],{},"Two-stage authentication:",[14,1138,1139,1142],{},[34,1140,1141],{},"1. OAuth Authorization Code Flow"," (for dealer connection)",[43,1144,1147],{"className":1145,"code":1146,"language":48},[46],"User → Authorizes → OAuth Flow → Dealer Connected\n",[50,1148,1146],{"__ignoreMap":52},[14,1150,1151,1154],{},[34,1152,1153],{},"2. M2M with JWT"," (for API calls)",[43,1156,1159],{"className":1157,"code":1158,"language":48},[46],"Generate JWT → Sign with Secret → Exchange for Token → API Call\n",[50,1160,1158],{"__ignoreMap":52},[58,1162,1163,1169,1175],{},[61,1164,1165,1168],{},[34,1166,1167],{},"Secure"," using RS256 signing",[61,1170,1171,1174],{},[34,1172,1173],{},"Short-lived"," tokens (1 hour expiry)",[61,1176,1177,1180],{},[34,1178,1179],{},"Cached"," for performance",[18,1182],{},[21,1184,1186],{"id":1185},"rate-limiting","Rate Limiting",[14,1188,1189],{},"CHeKT implements rate limiting to ensure fair usage and system stability.",[26,1191,1193],{"id":1192},"limits","Limits",[425,1195,1196,1209],{},[428,1197,1198],{},[431,1199,1200,1203,1206],{},[434,1201,1202],{},"API",[434,1204,1205],{},"Rate Limit",[434,1207,1208],{},"Burst Limit",[444,1210,1211,1222,1233],{},[431,1212,1213,1216,1219],{},[449,1214,1215],{},"Public API",[449,1217,1218],{},"1,000 req/min",[449,1220,1221],{},"100 req/sec",[431,1223,1224,1227,1230],{},[449,1225,1226],{},"Partner API",[449,1228,1229],{},"5,000 req/min",[449,1231,1232],{},"500 req/sec",[431,1234,1235,1238,1241],{},[449,1236,1237],{},"Event API",[449,1239,1240],{},"10,000 events/sec",[449,1242,1243],{},"Unlimited",[26,1245,1247],{"id":1246},"best-practices","Best Practices",[58,1249,1250,1256,1262,1268],{},[61,1251,1252,1255],{},[34,1253,1254],{},"Cache responses"," when appropriate",[61,1257,1258,1261],{},[34,1259,1260],{},"Use bulk endpoints"," for multiple operations",[61,1263,1264,1267],{},[34,1265,1266],{},"Implement retry logic"," with exponential backoff",[61,1269,1270,1273],{},[34,1271,1272],{},"Monitor rate limit headers"," in responses",[26,1275,1277],{"id":1276},"rate-limit-headers","Rate Limit Headers",[43,1279,1281],{"className":1099,"code":1280,"language":1101,"meta":52,"style":52},"X-RateLimit-Limit: 1000\nX-RateLimit-Remaining: 950\nX-RateLimit-Reset: 1644595200\n",[50,1282,1283,1288,1293],{"__ignoreMap":52},[146,1284,1285],{"class":148,"line":149},[146,1286,1287],{},"X-RateLimit-Limit: 1000\n",[146,1289,1290],{"class":148,"line":156},[146,1291,1292],{},"X-RateLimit-Remaining: 950\n",[146,1294,1295],{"class":148,"line":173},[146,1296,1297],{},"X-RateLimit-Reset: 1644595200\n",[18,1299],{},[21,1301,1303],{"id":1302},"error-handling","Error Handling",[26,1305,1307],{"id":1306},"http-status-codes","HTTP Status Codes",[425,1309,1310,1323],{},[428,1311,1312],{},[431,1313,1314,1317,1320],{},[434,1315,1316],{},"Code",[434,1318,1319],{},"Meaning",[434,1321,1322],{},"Action",[444,1324,1325,1338,1351,1364,1377,1390,1403,1416],{},[431,1326,1327,1332,1335],{},[449,1328,1329],{},[34,1330,1331],{},"200",[449,1333,1334],{},"Success",[449,1336,1337],{},"Request completed",[431,1339,1340,1345,1348],{},[449,1341,1342],{},[34,1343,1344],{},"201",[449,1346,1347],{},"Created",[449,1349,1350],{},"Resource created successfully",[431,1352,1353,1358,1361],{},[449,1354,1355],{},[34,1356,1357],{},"400",[449,1359,1360],{},"Bad Request",[449,1362,1363],{},"Fix request parameters",[431,1365,1366,1371,1374],{},[449,1367,1368],{},[34,1369,1370],{},"401",[449,1372,1373],{},"Unauthorized",[449,1375,1376],{},"Check API key/token",[431,1378,1379,1384,1387],{},[449,1380,1381],{},[34,1382,1383],{},"403",[449,1385,1386],{},"Forbidden",[449,1388,1389],{},"Insufficient permissions",[431,1391,1392,1397,1400],{},[449,1393,1394],{},[34,1395,1396],{},"404",[449,1398,1399],{},"Not Found",[449,1401,1402],{},"Resource doesn't exist",[431,1404,1405,1410,1413],{},[449,1406,1407],{},[34,1408,1409],{},"429",[449,1411,1412],{},"Too Many Requests",[449,1414,1415],{},"Slow down, retry later",[431,1417,1418,1423,1426],{},[449,1419,1420],{},[34,1421,1422],{},"500",[449,1424,1425],{},"Server Error",[449,1427,1428],{},"Retry with backoff",[26,1430,1432],{"id":1431},"error-response-format","Error Response Format",[43,1434,1436],{"className":140,"code":1435,"language":142,"meta":52,"style":52},"{\n  \"error\": \"ValidationError\",\n  \"message\": \"Missing required field: site_id\",\n  \"details\": {\n    \"field\": \"site_id\",\n    \"required\": true\n  }\n}\n",[50,1437,1438,1442,1454,1466,1473,1485,1494,1498],{"__ignoreMap":52},[146,1439,1440],{"class":148,"line":149},[146,1441,153],{"class":152},[146,1443,1444,1447,1449,1452],{"class":148,"line":156},[146,1445,1446],{"class":159},"  \"error\"",[146,1448,163],{"class":152},[146,1450,1451],{"class":166},"\"ValidationError\"",[146,1453,170],{"class":152},[146,1455,1456,1459,1461,1464],{"class":148,"line":173},[146,1457,1458],{"class":159},"  \"message\"",[146,1460,163],{"class":152},[146,1462,1463],{"class":166},"\"Missing required field: site_id\"",[146,1465,170],{"class":152},[146,1467,1468,1471],{"class":148,"line":186},[146,1469,1470],{"class":159},"  \"details\"",[146,1472,347],{"class":152},[146,1474,1475,1478,1480,1483],{"class":148,"line":199},[146,1476,1477],{"class":159},"    \"field\"",[146,1479,163],{"class":152},[146,1481,1482],{"class":166},"\"site_id\"",[146,1484,170],{"class":152},[146,1486,1487,1490,1492],{"class":148,"line":210},[146,1488,1489],{"class":159},"    \"required\"",[146,1491,163],{"class":152},[146,1493,207],{"class":159},[146,1495,1496],{"class":148,"line":350},[146,1497,401],{"class":152},[146,1499,1500],{"class":148,"line":363},[146,1501,213],{"class":152},[26,1503,1505],{"id":1504},"retry-strategy","Retry Strategy",[14,1507,1508],{},[34,1509,1510],{},"Implement exponential backoff for failed requests:",[43,1512,1515],{"className":1513,"code":1514,"language":48},[46],"1st retry: Wait 1 second\n2nd retry: Wait 2 seconds\n3rd retry: Wait 4 seconds\n4th retry: Wait 8 seconds\nMax retries: 5\n",[50,1516,1514],{"__ignoreMap":52},[18,1518],{},[21,1520,1522],{"id":1521},"idempotency","Idempotency",[26,1524,1526],{"id":1525},"what-is-idempotency","What is Idempotency?",[14,1528,1529,1532],{},[34,1530,1531],{},"Idempotent operations"," produce the same result when called multiple times. This is crucial for handling network failures and retries.",[26,1534,1536],{"id":1535},"idempotency-keys","Idempotency Keys",[14,1538,1539],{},"Some endpoints support idempotency keys to prevent duplicate operations:",[43,1541,1543],{"className":1099,"code":1542,"language":1101,"meta":52,"style":52},"POST /ext/v1/events\nIdempotency-Key: unique-request-id-12345\n",[50,1544,1545,1550],{"__ignoreMap":52},[146,1546,1547],{"class":148,"line":149},[146,1548,1549],{},"POST /ext/v1/events\n",[146,1551,1552],{"class":148,"line":156},[146,1553,1554],{},"Idempotency-Key: unique-request-id-12345\n",[14,1556,1557],{},"If you retry with the same key, CHeKT returns the original response instead of creating a duplicate.",[18,1559],{},[21,1561,1563],{"id":1562},"environments","Environments",[26,1565,1567],{"id":1566},"development-sandbox","Development (Sandbox)",[14,1569,1570,1573,1574],{},[34,1571,1572],{},"Base URL:"," ",[50,1575,1576],{},"https://api.chektdev.com",[58,1578,1579,1585,1591,1597],{},[61,1580,1581,1584],{},[34,1582,1583],{},"Purpose:"," Testing and development",[61,1586,1587,1590],{},[34,1588,1589],{},"Data:"," Isolated from production",[61,1592,1593,1596],{},[34,1594,1595],{},"Monitoring:"," No real monitoring centers",[61,1598,1599,1602],{},[34,1600,1601],{},"Rate Limits:"," Lower limits",[26,1604,1606],{"id":1605},"production","Production",[14,1608,1609,1573,1611],{},[34,1610,1572],{},[50,1612,1613],{},"https://api.chekt.com",[58,1615,1616,1621,1626,1631],{},[61,1617,1618,1620],{},[34,1619,1583],{}," Live customer operations",[61,1622,1623,1625],{},[34,1624,1589],{}," Real customer data",[61,1627,1628,1630],{},[34,1629,1595],{}," Connected to real monitoring centers",[61,1632,1633,1635],{},[34,1634,1601],{}," Full production limits",[1637,1638,1641],"guide-alert",{"title":1639,"type":1640},"Use Sandbox First","warning",[14,1642,1643],{},"Always test your integration in the sandbox environment before going to production. Never test with real alarm events!",[18,1645],{},[21,1647,1649],{"id":1648},"best-practices-summary","Best Practices Summary",[1651,1652,1653],"guide-check-list",{},[58,1654,1655,1662,1668,1672,1678,1684,1690,1696,1702,1708],{},[61,1656,1657,1658,1661],{},"✓ ",[34,1659,1660],{},"Use HTTPS"," for all API calls",[61,1663,1657,1664,1667],{},[34,1665,1666],{},"Validate input"," before sending to API",[61,1669,1657,1670,1267],{},[34,1671,1266],{},[61,1673,1657,1674,1677],{},[34,1675,1676],{},"Cache tokens"," until expiration",[61,1679,1657,1680,1683],{},[34,1681,1682],{},"Handle errors gracefully"," with user-friendly messages",[61,1685,1657,1686,1689],{},[34,1687,1688],{},"Log all API interactions"," for debugging",[61,1691,1657,1692,1695],{},[34,1693,1694],{},"Test in sandbox"," before production",[61,1697,1657,1698,1701],{},[34,1699,1700],{},"Monitor rate limits"," to avoid throttling",[61,1703,1657,1704,1707],{},[34,1705,1706],{},"Include video"," with all alarm events",[61,1709,1657,1710,1713],{},[34,1711,1712],{},"Use webhook callbacks"," for real-time updates",[18,1715],{},[21,1717,1719],{"id":1718},"next-steps","Next Steps",[14,1721,1722],{},"Now that you understand the key concepts, start building:",[1724,1725,1726],"guide-next-steps",{},[14,1727,1728],{},[146,1729,1730],{},"\n{\n\"title\": \"Quick Start Guide\",\n\"description\": \"Make your first API call\",\n\"link\": \"/guides/quick-start\"\n},\n{\n\"title\": \"Public API Overview\",\n\"description\": \"Learn about the Public API\",\n\"link\": \"/guides/public-api/overview\"\n},\n{\n\"title\": \"Partner API Overview\",\n\"description\": \"Learn about the Partner API\",\n\"link\": \"/guides/partner-api/overview\"\n}\n",[1732,1733,1734],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":52,"searchDepth":173,"depth":173,"links":1736},[1737,1741,1746,1751,1756,1760,1764,1769,1774,1778,1782,1783],{"id":23,"depth":156,"text":24,"children":1738},[1739,1740],{"id":28,"depth":173,"text":29},{"id":55,"depth":173,"text":56},{"id":89,"depth":156,"text":90,"children":1742},[1743,1744,1745],{"id":93,"depth":173,"text":94},{"id":218,"depth":173,"text":219},{"id":411,"depth":173,"text":412},{"id":667,"depth":156,"text":668,"children":1747},[1748,1749,1750],{"id":671,"depth":173,"text":672},{"id":706,"depth":173,"text":707},{"id":743,"depth":173,"text":744},{"id":781,"depth":156,"text":782,"children":1752},[1753,1754,1755],{"id":785,"depth":173,"text":786},{"id":794,"depth":173,"text":795},{"id":866,"depth":173,"text":867},{"id":984,"depth":156,"text":985,"children":1757},[1758,1759],{"id":988,"depth":173,"text":989},{"id":1036,"depth":173,"text":1037},{"id":1084,"depth":156,"text":1085,"children":1761},[1762,1763],{"id":1088,"depth":173,"text":1089},{"id":1132,"depth":173,"text":1133},{"id":1185,"depth":156,"text":1186,"children":1765},[1766,1767,1768],{"id":1192,"depth":173,"text":1193},{"id":1246,"depth":173,"text":1247},{"id":1276,"depth":173,"text":1277},{"id":1302,"depth":156,"text":1303,"children":1770},[1771,1772,1773],{"id":1306,"depth":173,"text":1307},{"id":1431,"depth":173,"text":1432},{"id":1504,"depth":173,"text":1505},{"id":1521,"depth":156,"text":1522,"children":1775},[1776,1777],{"id":1525,"depth":173,"text":1526},{"id":1535,"depth":173,"text":1536},{"id":1562,"depth":156,"text":1563,"children":1779},[1780,1781],{"id":1566,"depth":173,"text":1567},{"id":1605,"depth":173,"text":1606},{"id":1648,"depth":156,"text":1649},{"id":1718,"depth":156,"text":1719},"Essential concepts for working with CHeKT","md",{"category":1787,"order":173},"Getting Started",true,"/guides/concepts",{"title":5,"description":1784},"guides/concepts","XfAgguN2e_1biBcJ3Unfr6mN66jsn9_qjGawmirpAa8",1770959188012]