[{"data":1,"prerenderedAt":213},["ShallowReactive",2],{"/docs/jobs/policejob/reference/exports/client-advanced-speed-camera-boundary":3,"/docs/jobs/policejob/reference/exports/client-advanced-speed-camera-boundary-surround":201,"/docs/jobs/policejob/reference/exports/client-advanced-speed-camera-boundary-implemented-suggestions":212},{"id":4,"title":5,"body":6,"description":192,"extension":193,"head":194,"implementedSuggestions":194,"meta":195,"navigation":99,"path":196,"schemaOrg":194,"seo":197,"sitemap":198,"stem":199,"__hash__":200},"docs/1.docs/0.jobs/1.policejob/4.reference/3.exports/16.client-advanced-speed-camera-boundary.md","Client: Advanced Speed Camera boundary",{"type":7,"value":8,"toc":187},"minimark",[9,17,20,25,30,35,38,42,45,163,175,183],[10,11,12],"p",{},[13,14,16],"a",{"href":15},"/docs/jobs/policejob/reference/exports","All exports",[10,18,19],{},"This page documents the supported public integration calls. Client values are never authoritative for police permissions, review decisions, evidence, offences, or billing.",[21,22,24],"h2",{"id":23},"client-exports","Client Exports",[26,27,29],"h3",{"id":28},"advanced-speed-camera-boundary","Advanced Speed Camera boundary",[31,32,34],"h4",{"id":33},"no-client-side-review-mutation-export","No client-side review mutation export",[10,36,37],{},"Sky Police Job intentionally does not export client functions for approving or discarding reviews,\nchanging measured speed, replacing a plate, attaching arbitrary evidence, or issuing an invoice.\nThose actions require server-owned context and remain inside the authenticated tablet workflow.",[31,39,41],{"id":40},"detect-the-open-review-app","Detect the open review app",[10,43,44],{},"An integration that only needs presentation state can use the shared Jobs Base tablet export.",[46,47,53],"pre",{"className":48,"code":49,"filename":50,"language":51,"meta":52,"style":52},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","local tablet = exports[\"sky_jobs_base\"]:GetTabletState()\n\nif tablet.open and tablet.appKey == \"speedcam_reviews\" then\n    print(\"Speed Camera Reviews is open\")\nend\n","client.lua","lua","",[54,55,56,94,101,138,157],"code",{"__ignoreMap":52},[57,58,61,65,69,72,75,78,82,84,87,91],"span",{"class":59,"line":60},"line",1,[57,62,64],{"class":63},"sMK4o","local",[57,66,68],{"class":67},"sTEyZ"," tablet ",[57,70,71],{"class":63},"=",[57,73,74],{"class":67}," exports[",[57,76,77],{"class":63},"\"",[57,79,81],{"class":80},"sfazB","sky_jobs_base",[57,83,77],{"class":63},[57,85,86],{"class":67},"]:",[57,88,90],{"class":89},"s2Zo4","GetTabletState",[57,92,93],{"class":67},"()\n",[57,95,97],{"class":59,"line":96},2,[57,98,100],{"emptyLinePlaceholder":99},true,"\n",[57,102,104,108,111,115,118,120,123,126,129,132,135],{"class":59,"line":103},3,[57,105,107],{"class":106},"s7zQu","if",[57,109,110],{"class":67}," tablet.",[57,112,114],{"class":113},"sBMFI","open",[57,116,117],{"class":63}," and",[57,119,110],{"class":67},[57,121,122],{"class":113},"appKey",[57,124,125],{"class":63}," ==",[57,127,128],{"class":63}," \"",[57,130,131],{"class":80},"speedcam_reviews",[57,133,134],{"class":63},"\" ",[57,136,137],{"class":106},"then\n",[57,139,141,144,147,149,152,154],{"class":59,"line":140},4,[57,142,143],{"class":89},"    print",[57,145,146],{"class":67},"(",[57,148,77],{"class":63},[57,150,151],{"class":80},"Speed Camera Reviews is open",[57,153,77],{"class":63},[57,155,156],{"class":67},")\n",[57,158,160],{"class":59,"line":159},5,[57,161,162],{"class":106},"end\n",[10,164,165,166,170,171,174],{},"For deployed camera state, use the read-only\n",[13,167,169],{"href":168},"/docs/jobs/policejob/reference/events#advanced-speed-camera","client events",". For authoritative\ncamera data, call ",[54,172,173],{},"GetSpeedcamCameras()"," from a server script.",[176,177,180],"callout",{"color":178,"icon":179},"warning","i-lucide-shield-alert",[10,181,182],{},"Client code can be inspected and invoked by an exploiter. Never make a billing, evidence, owner,\noffence, or review decision from a client export result.",[184,185,186],"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 .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":52,"searchDepth":60,"depth":96,"links":188},[189],{"id":23,"depth":96,"text":24,"children":190},[191],{"id":28,"depth":103,"text":29},"Reference for Client: Advanced Speed Camera boundary in policejob.","md",null,{},"/docs/jobs/policejob/reference/exports/client-advanced-speed-camera-boundary",{"title":5,"description":192},{"loc":196},"1.docs/0.jobs/1.policejob/4.reference/3.exports/16.client-advanced-speed-camera-boundary","UoIDID2wWgYjZXnFlsFTTSmYXc841jwDpERCAadJGxs",[202,207],{"title":203,"path":204,"stem":205,"description":206,"children":-1},"Client: Usable items","/docs/jobs/policejob/reference/exports/client-usable-items","1.docs/0.jobs/1.policejob/4.reference/3.exports/15.client-usable-items","Reference for Client: Usable items in policejob.",{"title":208,"path":209,"stem":210,"description":211,"children":-1},"Server: Dispatch","/docs/jobs/policejob/reference/exports/server-dispatch","1.docs/0.jobs/1.policejob/4.reference/3.exports/2.server-dispatch","Reference for Server: Dispatch in policejob.",[],1791814212963]