[{"data":1,"prerenderedAt":632},["ShallowReactive",2],{"/docs/base/jobs-base/server-exports/emergency-dispatch":3,"/docs/base/jobs-base/server-exports/emergency-dispatch-surround":618,"/docs/base/jobs-base/server-exports/emergency-dispatch-implemented-suggestions":631},{"id":4,"title":5,"body":6,"description":607,"extension":608,"head":609,"implementedSuggestions":609,"meta":610,"navigation":611,"path":613,"schemaOrg":609,"seo":614,"sitemap":615,"stem":616,"__hash__":617},"docs/1.docs/base/2.jobs-base/4.server-exports/1.emergency-dispatch.md","Emergency Dispatch",{"type":7,"value":8,"toc":600},"minimark",[9,13,17,34,41,156,171,411,443,449,452,459,504,510,513,521,593,596],[10,11,5],"h2",{"id":12},"emergency-dispatch",[14,15,16],"p",{},"These exports let server resources create Dispatch App incidents and manage incidents associated\nwith their own source identifiers.",[18,19,22],"callout",{"color":20,"icon":21},"info","i-lucide-info",[14,23,24,25,29,30,33],{},"With ",[26,27,28],"code",{},"Config.Dispatch.enabled = true",", ",[26,31,32],{},"createDispatch"," creates a persistent Dispatch App incident.\nWhen the master switch is disabled, the same export automatically uses the legacy map dispatch and\ntop-center notification.",[35,36,38],"h3",{"id":37},"createdispatchtitle-message-coords-jobs-meta",[26,39,40],{},"createDispatch(title, message, coords, jobs, meta)",[42,43,44,60],"table",{},[45,46,47],"thead",{},[48,49,50,54,57],"tr",{},[51,52,53],"th",{},"Argument",[51,55,56],{},"Type",[51,58,59],{},"Description",[61,62,63,79,93,112,127],"tbody",{},[48,64,65,71,76],{},[66,67,68],"td",{},[26,69,70],{},"title",[66,72,73],{},[26,74,75],{},"string",[66,77,78],{},"Required incident title.",[48,80,81,86,90],{},[66,82,83],{},[26,84,85],{},"message",[66,87,88],{},[26,89,75],{},[66,91,92],{},"Incident description.",[48,94,95,100,105],{},[66,96,97],{},[26,98,99],{},"coords",[66,101,102],{},[26,103,104],{},"vector3 | table",[66,106,107,108,111],{},"Required world position. Tables use ",[26,109,110],{},"{ x, y, z }",".",[48,113,114,119,124],{},[66,115,116],{},[26,117,118],{},"jobs",[66,120,121],{},[26,122,123],{},"string | string[]",[66,125,126],{},"One job name or an array of target jobs.",[48,128,129,134,139],{},[66,130,131],{},[26,132,133],{},"meta",[66,135,136],{},[26,137,138],{},"table?",[66,140,141,142,29,145,29,148,151,152,155],{},"Optional ",[26,143,144],{},"source",[26,146,147],{},"sourceKey",[26,149,150],{},"sourceId",", and ",[26,153,154],{},"category"," values.",[14,157,158,162,163,166,167,170],{},[159,160,161],"strong",{},"Returns:"," ",[26,164,165],{},"table | nil"," — the created dispatch entry, or ",[26,168,169],{},"nil"," when validation fails.",[172,173,179],"pre",{"className":174,"code":175,"filename":176,"language":177,"meta":178,"style":178},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","local dispatch = exports[\"sky_jobs_base\"]:createDispatch(\n    \"Bank Robbery\",\n    \"Silent alarm triggered at Pacific Standard\",\n    vector3(235.0, 216.0, 106.0),\n    \"police\",\n    {\n        source = source,\n        sourceKey = \"alarm\",\n        sourceId = \"pacific-standard\",\n        category = \"robbery\"\n    }\n)\n\nif dispatch then\n    print(\"Dispatch created:\", dispatch.id)\nend\n","server.lua","lua","",[26,180,181,218,232,244,270,282,288,299,317,334,350,356,362,369,381,405],{"__ignoreMap":178},[182,183,186,190,194,197,200,203,207,209,212,215],"span",{"class":184,"line":185},"line",1,[182,187,189],{"class":188},"sMK4o","local",[182,191,193],{"class":192},"sTEyZ"," dispatch ",[182,195,196],{"class":188},"=",[182,198,199],{"class":192}," exports[",[182,201,202],{"class":188},"\"",[182,204,206],{"class":205},"sfazB","sky_jobs_base",[182,208,202],{"class":188},[182,210,211],{"class":192},"]:",[182,213,32],{"class":214},"s2Zo4",[182,216,217],{"class":192},"(\n",[182,219,221,224,227,229],{"class":184,"line":220},2,[182,222,223],{"class":188},"    \"",[182,225,226],{"class":205},"Bank Robbery",[182,228,202],{"class":188},[182,230,231],{"class":192},",\n",[182,233,235,237,240,242],{"class":184,"line":234},3,[182,236,223],{"class":188},[182,238,239],{"class":205},"Silent alarm triggered at Pacific Standard",[182,241,202],{"class":188},[182,243,231],{"class":192},[182,245,247,250,253,257,259,262,264,267],{"class":184,"line":246},4,[182,248,249],{"class":214},"    vector3",[182,251,252],{"class":192},"(",[182,254,256],{"class":255},"sbssI","235.0",[182,258,29],{"class":192},[182,260,261],{"class":255},"216.0",[182,263,29],{"class":192},[182,265,266],{"class":255},"106.0",[182,268,269],{"class":192},"),\n",[182,271,273,275,278,280],{"class":184,"line":272},5,[182,274,223],{"class":188},[182,276,277],{"class":205},"police",[182,279,202],{"class":188},[182,281,231],{"class":192},[182,283,285],{"class":184,"line":284},6,[182,286,287],{"class":192},"    {\n",[182,289,291,294,296],{"class":184,"line":290},7,[182,292,293],{"class":192},"        source ",[182,295,196],{"class":188},[182,297,298],{"class":192}," source,\n",[182,300,302,305,307,310,313,315],{"class":184,"line":301},8,[182,303,304],{"class":192},"        sourceKey ",[182,306,196],{"class":188},[182,308,309],{"class":188}," \"",[182,311,312],{"class":205},"alarm",[182,314,202],{"class":188},[182,316,231],{"class":192},[182,318,320,323,325,327,330,332],{"class":184,"line":319},9,[182,321,322],{"class":192},"        sourceId ",[182,324,196],{"class":188},[182,326,309],{"class":188},[182,328,329],{"class":205},"pacific-standard",[182,331,202],{"class":188},[182,333,231],{"class":192},[182,335,337,340,342,344,347],{"class":184,"line":336},10,[182,338,339],{"class":192},"        category ",[182,341,196],{"class":188},[182,343,309],{"class":188},[182,345,346],{"class":205},"robbery",[182,348,349],{"class":188},"\"\n",[182,351,353],{"class":184,"line":352},11,[182,354,355],{"class":192},"    }\n",[182,357,359],{"class":184,"line":358},12,[182,360,361],{"class":192},")\n",[182,363,365],{"class":184,"line":364},13,[182,366,368],{"emptyLinePlaceholder":367},true,"\n",[182,370,372,376,378],{"class":184,"line":371},14,[182,373,375],{"class":374},"s7zQu","if",[182,377,193],{"class":192},[182,379,380],{"class":374},"then\n",[182,382,384,387,389,391,394,396,399,403],{"class":184,"line":383},15,[182,385,386],{"class":214},"    print",[182,388,252],{"class":192},[182,390,202],{"class":188},[182,392,393],{"class":205},"Dispatch created:",[182,395,202],{"class":188},[182,397,398],{"class":192},", dispatch.",[182,400,402],{"class":401},"sBMFI","id",[182,404,361],{"class":192},[182,406,408],{"class":184,"line":407},16,[182,409,410],{"class":374},"end\n",[14,412,413,414,29,416,29,418,29,420,29,422,29,424,29,427,231,430,433,434,437,438,440,441,111],{},"The returned entry contains ",[26,415,402],{},[26,417,70],{},[26,419,85],{},[26,421,99],{},[26,423,118],{},[26,425,426],{},"job",[26,428,429],{},"status",[26,431,432],{},"createdAt",", and the supplied source metadata. Dispatch App incidents also expose an internal\n",[26,435,436],{},"centerIncidentId","; integrations should continue using their own ",[26,439,147],{}," and ",[26,442,150],{},[35,444,446],{"id":445},"hasdispatchsourcekey-sourceid",[26,447,448],{},"HasDispatch(sourceKey, sourceId)",[14,450,451],{},"Checks whether a non-completed dispatch exists for the exact source key and ID pair.",[14,453,454,162,456],{},[159,455,161],{},[26,457,458],{},"boolean",[172,460,462],{"className":174,"code":461,"filename":176,"language":177,"meta":178,"style":178},"local exists = exports[\"sky_jobs_base\"]:HasDispatch(\"alarm\", \"pacific-standard\")\n",[26,463,464],{"__ignoreMap":178},[182,465,466,468,471,473,475,477,479,481,483,486,488,490,492,494,496,498,500,502],{"class":184,"line":185},[182,467,189],{"class":188},[182,469,470],{"class":192}," exists ",[182,472,196],{"class":188},[182,474,199],{"class":192},[182,476,202],{"class":188},[182,478,206],{"class":205},[182,480,202],{"class":188},[182,482,211],{"class":192},[182,484,485],{"class":214},"HasDispatch",[182,487,252],{"class":192},[182,489,202],{"class":188},[182,491,312],{"class":205},[182,493,202],{"class":188},[182,495,29],{"class":192},[182,497,202],{"class":188},[182,499,329],{"class":205},[182,501,202],{"class":188},[182,503,361],{"class":192},[35,505,507],{"id":506},"removedispatchesbysourceandidsourcekey-sourceid",[26,508,509],{},"RemoveDispatchesBySourceAndId(sourceKey, sourceId)",[14,511,512],{},"Removes every matching dispatch and closes its linked Dispatch App incident.",[14,514,515,162,517,520],{},[159,516,161],{},[26,518,519],{},"number"," — the number of removed dispatches.",[172,522,524],{"className":174,"code":523,"filename":176,"language":177,"meta":178,"style":178},"local removed = exports[\"sky_jobs_base\"]:RemoveDispatchesBySourceAndId(\n    \"alarm\",\n    \"pacific-standard\"\n)\n\nprint(\"Removed dispatches:\", removed)\n",[26,525,526,550,560,568,572,576],{"__ignoreMap":178},[182,527,528,530,533,535,537,539,541,543,545,548],{"class":184,"line":185},[182,529,189],{"class":188},[182,531,532],{"class":192}," removed ",[182,534,196],{"class":188},[182,536,199],{"class":192},[182,538,202],{"class":188},[182,540,206],{"class":205},[182,542,202],{"class":188},[182,544,211],{"class":192},[182,546,547],{"class":214},"RemoveDispatchesBySourceAndId",[182,549,217],{"class":192},[182,551,552,554,556,558],{"class":184,"line":220},[182,553,223],{"class":188},[182,555,312],{"class":205},[182,557,202],{"class":188},[182,559,231],{"class":192},[182,561,562,564,566],{"class":184,"line":234},[182,563,223],{"class":188},[182,565,329],{"class":205},[182,567,349],{"class":188},[182,569,570],{"class":184,"line":246},[182,571,361],{"class":192},[182,573,574],{"class":184,"line":272},[182,575,368],{"emptyLinePlaceholder":367},[182,577,578,581,583,585,588,590],{"class":184,"line":284},[182,579,580],{"class":214},"print",[182,582,252],{"class":192},[182,584,202],{"class":188},[182,586,587],{"class":205},"Removed dispatches:",[182,589,202],{"class":188},[182,591,592],{"class":192},", removed)\n",[14,594,595],{},"Use a stable, resource-owned key and ID pair when you need duplicate prevention or later cleanup.",[597,598,599],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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);}",{"title":178,"searchDepth":185,"depth":220,"links":601},[602],{"id":12,"depth":220,"text":5,"children":603},[604,605,606],{"id":37,"depth":234,"text":40},{"id":445,"depth":234,"text":448},{"id":506,"depth":234,"text":509},"Public server-side exports for creating, checking, and removing Emergency Dispatch incidents.","md",null,{},{"icon":612},"i-lucide-siren","/docs/base/jobs-base/server-exports/emergency-dispatch",{"title":5,"description":607},{"loc":613},"1.docs/base/2.jobs-base/4.server-exports/1.emergency-dispatch","KGX0AbLMrOiFQhtOOXQy833fre1hgCXgY4doJY-38Ls",[619,625],{"title":620,"path":621,"stem":622,"children":-1,"description":623,"icon":624},"Server Exports","/docs/base/jobs-base/server-exports","1.docs/base/2.jobs-base/4.server-exports","Server-side exports provided by sky_jobs_base for dispatch, tablet app registration, and more.","i-lucide-server",{"title":626,"path":627,"stem":628,"children":-1,"description":629,"icon":630},"Client Events","/docs/base/jobs-base/client-events","1.docs/base/2.jobs-base/5.client-events","Client-side events provided by sky_jobs_base that other resources can listen to.","i-lucide-radio",[],1786217466447]