[{"data":1,"prerenderedAt":4031},["ShallowReactive",2],{"/docs/jobs/policejob/reference/exports":3,"/docs/jobs/policejob/reference/exports-surround":4018,"/docs/jobs/policejob/reference/exports-implemented-suggestions":4030},{"id":4,"title":5,"body":6,"description":4007,"extension":4008,"head":4009,"implementedSuggestions":4009,"meta":4010,"navigation":4011,"path":4013,"schemaOrg":4009,"seo":4014,"sitemap":4015,"stem":4016,"__hash__":4017},"docs/1.docs/0.jobs/1.policejob/4.reference/3.exports.md","Exports",{"type":7,"value":8,"toc":3982},"minimark",[9,13,18,23,26,256,259,263,277,286,292,299,402,474,480,493,522,528,541,569,575,589,619,623,629,642,670,676,693,721,727,740,768,772,778,791,821,825,831,846,883,889,902,932,938,952,981,987,1009,1075,1079,1085,1111,1142,1146,1157,1160,1202,1206,1209,1423,1425,1428,1529,1531,1534,1603,1605,1608,1668,1672,1675,1815,1817,1820,1939,1941,1944,2012,2014,2017,2072,2076,2079,2297,2300,2389,2393,2399,2405,2421,2427,2442,2448,2464,2527,2539,2543,2547,2552,2555,2638,2641,2814,2817,2821,2824,2830,2837,2841,2844,2856,2867,2870,2876,2905,2926,2932,2945,2966,2972,2985,3006,3019,3040,3108,3117,3130,3169,3175,3188,3216,3219,3225,3238,3259,3265,3278,3299,3305,3317,3338,3341,3347,3354,3376,3380,3383,3451,3457,3479,3508,3514,3527,3564,3570,3586,3669,3675,3688,3725,3731,3754,3790,3793,3799,3814,3844,3848,3852,3855,3859,3862,3944,3955,3962,3966,3969,3978],[10,11,12],"p",{},"This page documents the supported public integration calls. Client values are never authoritative for police permissions, review decisions, evidence, offences, or billing.",[14,15,17],"h2",{"id":16},"server-exports","Server Exports",[19,20,22],"h3",{"id":21},"dispatch","Dispatch",[10,24,25],{},"Create a dispatch for the MDT Tablet.",[27,28,29,155],"code-group",{},[30,31,37],"pre",{"className":32,"code":33,"filename":34,"language":35,"meta":36,"style":36},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","exports[\"sky_jobs_base\"]:createDispatch(\n    \"Suspicious activity\", -- title\n    \"Caller reports suspicious behavior near Legion Square.\", -- description\n    GetEntityCoords(PlayerPedId()), -- coords (vector3)\n    { \"police\", \"sheriff\" } -- jobs\n)\n","client.lua","lua","",[38,39,40,69,87,102,120,149],"code",{"__ignoreMap":36},[41,42,45,49,53,57,59,62,66],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"sTEyZ","exports[",[41,50,52],{"class":51},"sMK4o","\"",[41,54,56],{"class":55},"sfazB","sky_jobs_base",[41,58,52],{"class":51},[41,60,61],{"class":47},"]:",[41,63,65],{"class":64},"s2Zo4","createDispatch",[41,67,68],{"class":47},"(\n",[41,70,72,75,78,80,83],{"class":43,"line":71},2,[41,73,74],{"class":51},"    \"",[41,76,77],{"class":55},"Suspicious activity",[41,79,52],{"class":51},[41,81,82],{"class":47},", ",[41,84,86],{"class":85},"sHwdD","-- title\n",[41,88,90,92,95,97,99],{"class":43,"line":89},3,[41,91,74],{"class":51},[41,93,94],{"class":55},"Caller reports suspicious behavior near Legion Square.",[41,96,52],{"class":51},[41,98,82],{"class":47},[41,100,101],{"class":85},"-- description\n",[41,103,105,108,111,114,117],{"class":43,"line":104},4,[41,106,107],{"class":64},"    GetEntityCoords",[41,109,110],{"class":47},"(",[41,112,113],{"class":64},"PlayerPedId",[41,115,116],{"class":47},"()), ",[41,118,119],{"class":85},"-- coords (vector3)\n",[41,121,123,126,128,131,133,135,137,140,143,146],{"class":43,"line":122},5,[41,124,125],{"class":47},"    { ",[41,127,52],{"class":51},[41,129,130],{"class":55},"police",[41,132,52],{"class":51},[41,134,82],{"class":47},[41,136,52],{"class":51},[41,138,139],{"class":55},"sheriff",[41,141,142],{"class":51},"\" ",[41,144,145],{"class":47},"} ",[41,147,148],{"class":85},"-- jobs\n",[41,150,152],{"class":43,"line":151},6,[41,153,154],{"class":47},")\n",[30,156,159],{"className":32,"code":157,"filename":158,"language":35,"meta":36,"style":36},"exports[\"sky_jobs_base\"]:createDispatch(\n    \"Suspicious activity\", -- title\n    \"Caller reports suspicious behavior near Legion Square.\", -- description\n    vector3(215.9, -810.2, 30.7), -- coords (vector3)\n    { \"police\", \"sheriff\" } -- jobs\n)\n","server.lua",[38,160,161,177,189,201,230,252],{"__ignoreMap":36},[41,162,163,165,167,169,171,173,175],{"class":43,"line":44},[41,164,48],{"class":47},[41,166,52],{"class":51},[41,168,56],{"class":55},[41,170,52],{"class":51},[41,172,61],{"class":47},[41,174,65],{"class":64},[41,176,68],{"class":47},[41,178,179,181,183,185,187],{"class":43,"line":71},[41,180,74],{"class":51},[41,182,77],{"class":55},[41,184,52],{"class":51},[41,186,82],{"class":47},[41,188,86],{"class":85},[41,190,191,193,195,197,199],{"class":43,"line":89},[41,192,74],{"class":51},[41,194,94],{"class":55},[41,196,52],{"class":51},[41,198,82],{"class":47},[41,200,101],{"class":85},[41,202,203,206,208,212,214,217,220,222,225,228],{"class":43,"line":104},[41,204,205],{"class":64},"    vector3",[41,207,110],{"class":47},[41,209,211],{"class":210},"sbssI","215.9",[41,213,82],{"class":47},[41,215,216],{"class":51},"-",[41,218,219],{"class":210},"810.2",[41,221,82],{"class":47},[41,223,224],{"class":210},"30.7",[41,226,227],{"class":47},"), ",[41,229,119],{"class":85},[41,231,232,234,236,238,240,242,244,246,248,250],{"class":43,"line":122},[41,233,125],{"class":47},[41,235,52],{"class":51},[41,237,130],{"class":55},[41,239,52],{"class":51},[41,241,82],{"class":47},[41,243,52],{"class":51},[41,245,139],{"class":55},[41,247,142],{"class":51},[41,249,145],{"class":47},[41,251,148],{"class":85},[41,253,254],{"class":43,"line":151},[41,255,154],{"class":47},[257,258],"br",{},[19,260,262],{"id":261},"restraints","Restraints",[10,264,265,266,268,269,272,273,276],{},"These are compatibility forwards to the shared ",[38,267,56],{}," interaction system. Police jobs from\n",[38,270,271],{},"Config.Jobs"," are registered automatically. For any other job resource, call\n",[38,274,275],{},"registerInteractionJobs"," from a server script before using these exports. The acting player's job,\nduty policy, target distance/state, and configured item requirements are validated server-side;\ncalling a Police Job export does not bypass them.",[10,278,279,280,285],{},"See the ",[281,282,284],"a",{"href":283},"/docs/base/jobs-base/server-exports#player-interaction-whitelist","Sky Jobs Base server exports","\nfor registration, permissions, and the preferred shared exports.",[10,287,288,289,291],{},"Police keeps compatibility forwards for cuffs, zipties, and escort. Leg restraints and head bags are owned exclusively by Jobs Base; call the corresponding ",[38,290,56],{}," exports directly.",[293,294,296],"h4",{"id":295},"cuffplayersourceid-targetid-cufftype-options",[38,297,298],{},"cuffPlayer(sourceId, targetId, cuffType?, options?)",[300,301,302,310,384],"ul",{},[303,304,305,309],"li",{},[306,307,308],"strong",{},"Purpose",": Applies cuffs or zipties to a target player from another resource.",[303,311,312,315,316],{},[306,313,314],{},"Arguments",":\n",[300,317,318,328,336,353],{},[303,319,320,323,324,327],{},[38,321,322],{},"sourceId"," (",[38,325,326],{},"number","): The server ID of the acting player.",[303,329,330,323,333,335],{},[38,331,332],{},"targetId",[38,334,326],{},"): The server ID of the target player.",[303,337,338,323,341,344,345,348,349,352],{},[38,339,340],{},"cuffType",[38,342,343],{},"string?","): ",[38,346,347],{},"\"cuffs\""," (default) or ",[38,350,351],{},"\"zipties\"",".",[303,354,355,323,358,361,362],{},[38,356,357],{},"options",[38,359,360],{},"table?","):\n",[300,363,364,373],{},[303,365,366,323,369,372],{},[38,367,368],{},"ignoreItemCheck",[38,370,371],{},"boolean?",") â€” skip the restraint item requirement and consumption.",[303,374,375,323,378,380,381,352],{},[38,376,377],{},"allowSelf",[38,379,371],{},") â€” allow ",[38,382,383],{},"sourceId == targetId",[303,385,386,389,390,393,394,397,398,401],{},[306,387,388],{},"Returns",": ",[38,391,392],{},"boolean, string?"," â€” ",[38,395,396],{},"true"," on success, otherwise ",[38,399,400],{},"false"," and a reason key.",[30,403,405],{"className":32,"code":404,"language":35,"meta":36,"style":36},"local success, reason = exports[\"sky_policejob\"]:cuffPlayer(sourceId, targetId, \"cuffs\", {\n    ignoreItemCheck = false,\n    allowSelf = false\n})\n",[38,406,407,446,459,469],{"__ignoreMap":36},[41,408,409,412,415,418,421,423,426,428,430,433,436,438,441,443],{"class":43,"line":44},[41,410,411],{"class":51},"local",[41,413,414],{"class":47}," success, reason ",[41,416,417],{"class":51},"=",[41,419,420],{"class":47}," exports[",[41,422,52],{"class":51},[41,424,425],{"class":55},"sky_policejob",[41,427,52],{"class":51},[41,429,61],{"class":47},[41,431,432],{"class":64},"cuffPlayer",[41,434,435],{"class":47},"(sourceId, targetId, ",[41,437,52],{"class":51},[41,439,440],{"class":55},"cuffs",[41,442,52],{"class":51},[41,444,445],{"class":47},", {\n",[41,447,448,451,453,456],{"class":43,"line":71},[41,449,450],{"class":47},"    ignoreItemCheck ",[41,452,417],{"class":51},[41,454,455],{"class":51}," false",[41,457,458],{"class":47},",\n",[41,460,461,464,466],{"class":43,"line":89},[41,462,463],{"class":47},"    allowSelf ",[41,465,417],{"class":51},[41,467,468],{"class":51}," false\n",[41,470,471],{"class":43,"line":104},[41,472,473],{"class":47},"})\n",[293,475,477],{"id":476},"uncuffplayersourceid-targetid-options",[38,478,479],{},"uncuffPlayer(sourceId, targetId, options?)",[300,481,482,487],{},[303,483,484,486],{},[306,485,308],{},": Removes cuffs or zipties from a target player.",[303,488,489,389,491,352],{},[306,490,388],{},[38,492,392],{},[30,494,496],{"className":32,"code":495,"language":35,"meta":36,"style":36},"local success, reason = exports[\"sky_policejob\"]:uncuffPlayer(sourceId, targetId)\n",[38,497,498],{"__ignoreMap":36},[41,499,500,502,504,506,508,510,512,514,516,519],{"class":43,"line":44},[41,501,411],{"class":51},[41,503,414],{"class":47},[41,505,417],{"class":51},[41,507,420],{"class":47},[41,509,52],{"class":51},[41,511,425],{"class":55},[41,513,52],{"class":51},[41,515,61],{"class":47},[41,517,518],{"class":64},"uncuffPlayer",[41,520,521],{"class":47},"(sourceId, targetId)\n",[293,523,525],{"id":524},"cutziptiessourceid-targetid-options",[38,526,527],{},"cutZipties(sourceId, targetId, options?)",[300,529,530,535],{},[303,531,532,534],{},[306,533,308],{},": Cuts zipties from a target player.",[303,536,537,389,539,352],{},[306,538,388],{},[38,540,392],{},[30,542,544],{"className":32,"code":543,"language":35,"meta":36,"style":36},"local success, reason = exports[\"sky_policejob\"]:cutZipties(sourceId, targetId)\n",[38,545,546],{"__ignoreMap":36},[41,547,548,550,552,554,556,558,560,562,564,567],{"class":43,"line":44},[41,549,411],{"class":51},[41,551,414],{"class":47},[41,553,417],{"class":51},[41,555,420],{"class":47},[41,557,52],{"class":51},[41,559,425],{"class":55},[41,561,52],{"class":51},[41,563,61],{"class":47},[41,565,566],{"class":64},"cutZipties",[41,568,521],{"class":47},[293,570,572],{"id":571},"isplayercuffedtargetid",[38,573,574],{},"isPlayerCuffed(targetId)",[300,576,577,582],{},[303,578,579,581],{},[306,580,308],{},": Reports whether the target player is currently restrained.",[303,583,584,389,586,352],{},[306,585,388],{},[38,587,588],{},"boolean",[30,590,592],{"className":32,"code":591,"language":35,"meta":36,"style":36},"local cuffed = exports[\"sky_policejob\"]:isPlayerCuffed(targetId)\n",[38,593,594],{"__ignoreMap":36},[41,595,596,598,601,603,605,607,609,611,613,616],{"class":43,"line":44},[41,597,411],{"class":51},[41,599,600],{"class":47}," cuffed ",[41,602,417],{"class":51},[41,604,420],{"class":47},[41,606,52],{"class":51},[41,608,425],{"class":55},[41,610,52],{"class":51},[41,612,61],{"class":47},[41,614,615],{"class":64},"isPlayerCuffed",[41,617,618],{"class":47},"(targetId)\n",[19,620,622],{"id":621},"escort","Escort",[293,624,626],{"id":625},"escorttogglesourceid-targetid",[38,627,628],{},"escortToggle(sourceId, targetId)",[300,630,631,636],{},[303,632,633,635],{},[306,634,308],{},": Starts or stops escorting the target player.",[303,637,638,389,640,352],{},[306,639,388],{},[38,641,392],{},[30,643,645],{"className":32,"code":644,"language":35,"meta":36,"style":36},"local success, reason = exports[\"sky_policejob\"]:escortToggle(sourceId, targetId)\n",[38,646,647],{"__ignoreMap":36},[41,648,649,651,653,655,657,659,661,663,665,668],{"class":43,"line":44},[41,650,411],{"class":51},[41,652,414],{"class":47},[41,654,417],{"class":51},[41,656,420],{"class":47},[41,658,52],{"class":51},[41,660,425],{"class":55},[41,662,52],{"class":51},[41,664,61],{"class":47},[41,666,667],{"class":64},"escortToggle",[41,669,521],{"class":47},[293,671,673],{"id":672},"escortputinvehiclesourceid-targetid-netid-seat",[38,674,675],{},"escortPutInVehicle(sourceId, targetId, netId?, seat?)",[300,677,678,687],{},[303,679,680,682,683,686],{},[306,681,308],{},": Places the escorted player into a vehicle. Without ",[38,684,685],{},"netId"," the closest valid vehicle is used.",[303,688,689,389,691,352],{},[306,690,388],{},[38,692,392],{},[30,694,696],{"className":32,"code":695,"language":35,"meta":36,"style":36},"local success, reason = exports[\"sky_policejob\"]:escortPutInVehicle(sourceId, targetId)\n",[38,697,698],{"__ignoreMap":36},[41,699,700,702,704,706,708,710,712,714,716,719],{"class":43,"line":44},[41,701,411],{"class":51},[41,703,414],{"class":47},[41,705,417],{"class":51},[41,707,420],{"class":47},[41,709,52],{"class":51},[41,711,425],{"class":55},[41,713,52],{"class":51},[41,715,61],{"class":47},[41,717,718],{"class":64},"escortPutInVehicle",[41,720,521],{"class":47},[293,722,724],{"id":723},"escorttakeoutvehiclesourceid-targetid",[38,725,726],{},"escortTakeOutVehicle(sourceId, targetId)",[300,728,729,734],{},[303,730,731,733],{},[306,732,308],{},": Takes the escorted player out of a vehicle.",[303,735,736,389,738,352],{},[306,737,388],{},[38,739,392],{},[30,741,743],{"className":32,"code":742,"language":35,"meta":36,"style":36},"local success, reason = exports[\"sky_policejob\"]:escortTakeOutVehicle(sourceId, targetId)\n",[38,744,745],{"__ignoreMap":36},[41,746,747,749,751,753,755,757,759,761,763,766],{"class":43,"line":44},[41,748,411],{"class":51},[41,750,414],{"class":47},[41,752,417],{"class":51},[41,754,420],{"class":47},[41,756,52],{"class":51},[41,758,425],{"class":55},[41,760,52],{"class":51},[41,762,61],{"class":47},[41,764,765],{"class":64},"escortTakeOutVehicle",[41,767,521],{"class":47},[19,769,771],{"id":770},"jail","Jail",[293,773,775],{"id":774},"isplayerinprisonplayerid",[38,776,777],{},"isPlayerInPrison(playerId)",[300,779,780,785],{},[303,781,782,784],{},[306,783,308],{},": Reports whether the player is currently serving a jail sentence.",[303,786,787,389,789,352],{},[306,788,388],{},[38,790,588],{},[30,792,794],{"className":32,"code":793,"language":35,"meta":36,"style":36},"local imprisoned = exports[\"sky_policejob\"]:isPlayerInPrison(playerId)\n",[38,795,796],{"__ignoreMap":36},[41,797,798,800,803,805,807,809,811,813,815,818],{"class":43,"line":44},[41,799,411],{"class":51},[41,801,802],{"class":47}," imprisoned ",[41,804,417],{"class":51},[41,806,420],{"class":47},[41,808,52],{"class":51},[41,810,425],{"class":55},[41,812,52],{"class":51},[41,814,61],{"class":47},[41,816,817],{"class":64},"isPlayerInPrison",[41,819,820],{"class":47},"(playerId)\n",[19,822,824],{"id":823},"devices-and-tracking","Devices and tracking",[293,826,828],{"id":827},"getcctvcamerasjobname",[38,829,830],{},"GetCctvCameras(jobName?)",[300,832,833,838],{},[303,834,835,837],{},[306,836,308],{},": Returns the deployed CCTV cameras, optionally filtered to one police job.",[303,839,840,389,842,845],{},[306,841,388],{},[38,843,844],{},"table"," â€” camera records.",[30,847,849],{"className":32,"code":848,"language":35,"meta":36,"style":36},"local cameras = exports[\"sky_policejob\"]:GetCctvCameras(\"police\")\n",[38,850,851],{"__ignoreMap":36},[41,852,853,855,858,860,862,864,866,868,870,873,875,877,879,881],{"class":43,"line":44},[41,854,411],{"class":51},[41,856,857],{"class":47}," cameras ",[41,859,417],{"class":51},[41,861,420],{"class":47},[41,863,52],{"class":51},[41,865,425],{"class":55},[41,867,52],{"class":51},[41,869,61],{"class":47},[41,871,872],{"class":64},"GetCctvCameras",[41,874,110],{"class":47},[41,876,52],{"class":51},[41,878,130],{"class":55},[41,880,52],{"class":51},[41,882,154],{"class":47},[293,884,886],{"id":885},"getspeedcamcameras",[38,887,888],{},"GetSpeedcamCameras()",[300,890,891,896],{},[303,892,893,895],{},[306,894,308],{},": Returns the deployed speed cameras.",[303,897,898,389,900,845],{},[306,899,388],{},[38,901,844],{},[30,903,905],{"className":32,"code":904,"language":35,"meta":36,"style":36},"local speedcams = exports[\"sky_policejob\"]:GetSpeedcamCameras()\n",[38,906,907],{"__ignoreMap":36},[41,908,909,911,914,916,918,920,922,924,926,929],{"class":43,"line":44},[41,910,411],{"class":51},[41,912,913],{"class":47}," speedcams ",[41,915,417],{"class":51},[41,917,420],{"class":47},[41,919,52],{"class":51},[41,921,425],{"class":55},[41,923,52],{"class":51},[41,925,61],{"class":47},[41,927,928],{"class":64},"GetSpeedcamCameras",[41,930,931],{"class":47},"()\n",[293,933,935],{"id":934},"getmaptrackers",[38,936,937],{},"GetMapTrackers()",[300,939,940,945],{},[303,941,942,944],{},[306,943,308],{},": Returns the currently broadcast GPS trackers and ankle monitors (the data shown on the police map).",[303,946,947,389,949,951],{},[306,948,388],{},[38,950,844],{}," â€” tracker records.",[30,953,955],{"className":32,"code":954,"language":35,"meta":36,"style":36},"local trackers = exports[\"sky_policejob\"]:GetMapTrackers()\n",[38,956,957],{"__ignoreMap":36},[41,958,959,961,964,966,968,970,972,974,976,979],{"class":43,"line":44},[41,960,411],{"class":51},[41,962,963],{"class":47}," trackers ",[41,965,417],{"class":51},[41,967,420],{"class":47},[41,969,52],{"class":51},[41,971,425],{"class":55},[41,973,52],{"class":51},[41,975,61],{"class":47},[41,977,978],{"class":64},"GetMapTrackers",[41,980,931],{"class":47},[293,982,984],{"id":983},"getwheelclamponvehiclevehicleornetid-plate",[38,985,986],{},"GetWheelClampOnVehicle(vehicleOrNetId, plate?)",[300,988,989,994],{},[303,990,991,993],{},[306,992,308],{},": Returns the wheel clamp attached to a vehicle, resolved by entity/net ID or plate.",[303,995,996,389,998,393,1001,1004,1005,1008],{},[306,997,388],{},[38,999,1000],{},"table | nil",[38,1002,1003],{},"{ attached = true, netId, plate, wheelBone }"," or ",[38,1006,1007],{},"nil"," when no clamp is attached.",[30,1010,1012],{"className":32,"code":1011,"language":35,"meta":36,"style":36},"local clamp = exports[\"sky_policejob\"]:GetWheelClampOnVehicle(netId)\nif clamp then\n    print(clamp.plate, clamp.wheelBone)\nend\n",[38,1013,1014,1039,1050,1070],{"__ignoreMap":36},[41,1015,1016,1018,1021,1023,1025,1027,1029,1031,1033,1036],{"class":43,"line":44},[41,1017,411],{"class":51},[41,1019,1020],{"class":47}," clamp ",[41,1022,417],{"class":51},[41,1024,420],{"class":47},[41,1026,52],{"class":51},[41,1028,425],{"class":55},[41,1030,52],{"class":51},[41,1032,61],{"class":47},[41,1034,1035],{"class":64},"GetWheelClampOnVehicle",[41,1037,1038],{"class":47},"(netId)\n",[41,1040,1041,1045,1047],{"class":43,"line":71},[41,1042,1044],{"class":1043},"s7zQu","if",[41,1046,1020],{"class":47},[41,1048,1049],{"class":1043},"then\n",[41,1051,1052,1055,1058,1062,1065,1068],{"class":43,"line":89},[41,1053,1054],{"class":64},"    print",[41,1056,1057],{"class":47},"(clamp.",[41,1059,1061],{"class":1060},"sBMFI","plate",[41,1063,1064],{"class":47},", clamp.",[41,1066,1067],{"class":1060},"wheelBone",[41,1069,154],{"class":47},[41,1071,1072],{"class":43,"line":104},[41,1073,1074],{"class":1043},"end\n",[19,1076,1078],{"id":1077},"usable-items","Usable items",[293,1080,1082],{"id":1081},"useitemsource-itemname-payload",[38,1083,1084],{},"useItem(source, itemName, payload?)",[300,1086,1087,1102],{},[303,1088,1089,1091,1092,1095,1096,1099,1100,352],{},[306,1090,308],{},": Triggers a registered Police-specific usable-item handler for a player. Use this when your inventory or another resource wants to run a Police item such as ",[38,1093,1094],{},"gps_tracker"," without going through ",[38,1097,1098],{},"RegisterUsableItem",". Shared restraint items belong to ",[38,1101,56],{},[303,1103,1104,389,1106,393,1108,1110],{},[306,1105,388],{},[38,1107,588],{},[38,1109,396],{}," when a handler ran successfully; prints an English debug message when no handler is registered for the item.",[30,1112,1114],{"className":32,"code":1113,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:useItem(source, \"gps_tracker\")\n",[38,1115,1116],{"__ignoreMap":36},[41,1117,1118,1120,1122,1124,1126,1128,1131,1134,1136,1138,1140],{"class":43,"line":44},[41,1119,48],{"class":47},[41,1121,52],{"class":51},[41,1123,425],{"class":55},[41,1125,52],{"class":51},[41,1127,61],{"class":47},[41,1129,1130],{"class":64},"useItem",[41,1132,1133],{"class":47},"(source, ",[41,1135,52],{"class":51},[41,1137,1094],{"class":55},[41,1139,52],{"class":51},[41,1141,154],{"class":47},[19,1143,1145],{"id":1144},"manual-tablet-registry-exports","Manual tablet registry exports",[10,1147,1148,1149,1152,1153,1156],{},"When ",[38,1150,1151],{},"Config.PoliceTablet.autoFillFromDatabase.citizens = false"," and/or ",[38,1154,1155],{},"Config.PoliceTablet.autoFillFromDatabase.vehicles = false",", other scripts can manage the manual tablet registry entries through server exports.",[10,1158,1159],{},"If the matching autofill setting is still enabled, these exports return:",[30,1161,1163],{"className":32,"code":1162,"language":35,"meta":36,"style":36},"{\n    success = false,\n    error = \"auto_fill_enabled\"\n}\n",[38,1164,1165,1170,1181,1197],{"__ignoreMap":36},[41,1166,1167],{"class":43,"line":44},[41,1168,1169],{"class":47},"{\n",[41,1171,1172,1175,1177,1179],{"class":43,"line":71},[41,1173,1174],{"class":47},"    success ",[41,1176,417],{"class":51},[41,1178,455],{"class":51},[41,1180,458],{"class":47},[41,1182,1183,1186,1188,1191,1194],{"class":43,"line":89},[41,1184,1185],{"class":47},"    error ",[41,1187,417],{"class":51},[41,1189,1190],{"class":51}," \"",[41,1192,1193],{"class":55},"auto_fill_enabled",[41,1195,1196],{"class":51},"\"\n",[41,1198,1199],{"class":43,"line":104},[41,1200,1201],{"class":47},"}\n",[293,1203,1205],{"id":1204},"citizens","Citizens",[10,1207,1208],{},"Create a manual citizen profile entry.",[30,1210,1212],{"className":32,"code":1211,"filename":158,"language":35,"meta":36,"style":36},"local result = exports[\"sky_policejob\"]:RegisterCitizen({\n    identifier = \"char1:abcd\",\n    name = \"Max Mustermann\",\n    gender = \"male\",\n    dob = \"1999-04-15\",\n    job = \"Unemployed\",\n    tags = { \"Wanted\" },\n    notes = {\n        { title = \"Note\", text = \"Manual record\" }\n    },\n    fingerprint = \"FP-12345\",\n    dna = \"DNA-12345\"\n})\n",[38,1213,1214,1239,1255,1271,1287,1303,1319,1340,1351,1380,1386,1403,1418],{"__ignoreMap":36},[41,1215,1216,1218,1221,1223,1225,1227,1229,1231,1233,1236],{"class":43,"line":44},[41,1217,411],{"class":51},[41,1219,1220],{"class":47}," result ",[41,1222,417],{"class":51},[41,1224,420],{"class":47},[41,1226,52],{"class":51},[41,1228,425],{"class":55},[41,1230,52],{"class":51},[41,1232,61],{"class":47},[41,1234,1235],{"class":64},"RegisterCitizen",[41,1237,1238],{"class":47},"({\n",[41,1240,1241,1244,1246,1248,1251,1253],{"class":43,"line":71},[41,1242,1243],{"class":47},"    identifier ",[41,1245,417],{"class":51},[41,1247,1190],{"class":51},[41,1249,1250],{"class":55},"char1:abcd",[41,1252,52],{"class":51},[41,1254,458],{"class":47},[41,1256,1257,1260,1262,1264,1267,1269],{"class":43,"line":89},[41,1258,1259],{"class":47},"    name ",[41,1261,417],{"class":51},[41,1263,1190],{"class":51},[41,1265,1266],{"class":55},"Max Mustermann",[41,1268,52],{"class":51},[41,1270,458],{"class":47},[41,1272,1273,1276,1278,1280,1283,1285],{"class":43,"line":104},[41,1274,1275],{"class":47},"    gender ",[41,1277,417],{"class":51},[41,1279,1190],{"class":51},[41,1281,1282],{"class":55},"male",[41,1284,52],{"class":51},[41,1286,458],{"class":47},[41,1288,1289,1292,1294,1296,1299,1301],{"class":43,"line":122},[41,1290,1291],{"class":47},"    dob ",[41,1293,417],{"class":51},[41,1295,1190],{"class":51},[41,1297,1298],{"class":55},"1999-04-15",[41,1300,52],{"class":51},[41,1302,458],{"class":47},[41,1304,1305,1308,1310,1312,1315,1317],{"class":43,"line":151},[41,1306,1307],{"class":47},"    job ",[41,1309,417],{"class":51},[41,1311,1190],{"class":51},[41,1313,1314],{"class":55},"Unemployed",[41,1316,52],{"class":51},[41,1318,458],{"class":47},[41,1320,1322,1325,1327,1330,1332,1335,1337],{"class":43,"line":1321},7,[41,1323,1324],{"class":47},"    tags ",[41,1326,417],{"class":51},[41,1328,1329],{"class":47}," { ",[41,1331,52],{"class":51},[41,1333,1334],{"class":55},"Wanted",[41,1336,142],{"class":51},[41,1338,1339],{"class":47},"},\n",[41,1341,1343,1346,1348],{"class":43,"line":1342},8,[41,1344,1345],{"class":47},"    notes ",[41,1347,417],{"class":51},[41,1349,1350],{"class":47}," {\n",[41,1352,1354,1357,1359,1361,1364,1366,1369,1371,1373,1376,1378],{"class":43,"line":1353},9,[41,1355,1356],{"class":47},"        { title ",[41,1358,417],{"class":51},[41,1360,1190],{"class":51},[41,1362,1363],{"class":55},"Note",[41,1365,52],{"class":51},[41,1367,1368],{"class":47},", text ",[41,1370,417],{"class":51},[41,1372,1190],{"class":51},[41,1374,1375],{"class":55},"Manual record",[41,1377,142],{"class":51},[41,1379,1201],{"class":47},[41,1381,1383],{"class":43,"line":1382},10,[41,1384,1385],{"class":47},"    },\n",[41,1387,1389,1392,1394,1396,1399,1401],{"class":43,"line":1388},11,[41,1390,1391],{"class":47},"    fingerprint ",[41,1393,417],{"class":51},[41,1395,1190],{"class":51},[41,1397,1398],{"class":55},"FP-12345",[41,1400,52],{"class":51},[41,1402,458],{"class":47},[41,1404,1406,1409,1411,1413,1416],{"class":43,"line":1405},12,[41,1407,1408],{"class":47},"    dna ",[41,1410,417],{"class":51},[41,1412,1190],{"class":51},[41,1414,1415],{"class":55},"DNA-12345",[41,1417,1196],{"class":51},[41,1419,1421],{"class":43,"line":1420},13,[41,1422,473],{"class":47},[257,1424],{},[10,1426,1427],{},"Update an existing manual citizen profile entry.",[30,1429,1431],{"className":32,"code":1430,"filename":158,"language":35,"meta":36,"style":36},"local result = exports[\"sky_policejob\"]:UpdateCitizen({\n    identifier = \"char1:abcd\",\n    name = \"Max Mustermann\",\n    image_url = \"https://example.com/citizen.png\",\n    tags = { \"Wanted\", \"VIP\" }\n})\n",[38,1432,1433,1456,1470,1484,1500,1525],{"__ignoreMap":36},[41,1434,1435,1437,1439,1441,1443,1445,1447,1449,1451,1454],{"class":43,"line":44},[41,1436,411],{"class":51},[41,1438,1220],{"class":47},[41,1440,417],{"class":51},[41,1442,420],{"class":47},[41,1444,52],{"class":51},[41,1446,425],{"class":55},[41,1448,52],{"class":51},[41,1450,61],{"class":47},[41,1452,1453],{"class":64},"UpdateCitizen",[41,1455,1238],{"class":47},[41,1457,1458,1460,1462,1464,1466,1468],{"class":43,"line":71},[41,1459,1243],{"class":47},[41,1461,417],{"class":51},[41,1463,1190],{"class":51},[41,1465,1250],{"class":55},[41,1467,52],{"class":51},[41,1469,458],{"class":47},[41,1471,1472,1474,1476,1478,1480,1482],{"class":43,"line":89},[41,1473,1259],{"class":47},[41,1475,417],{"class":51},[41,1477,1190],{"class":51},[41,1479,1266],{"class":55},[41,1481,52],{"class":51},[41,1483,458],{"class":47},[41,1485,1486,1489,1491,1493,1496,1498],{"class":43,"line":104},[41,1487,1488],{"class":47},"    image_url ",[41,1490,417],{"class":51},[41,1492,1190],{"class":51},[41,1494,1495],{"class":55},"https://example.com/citizen.png",[41,1497,52],{"class":51},[41,1499,458],{"class":47},[41,1501,1502,1504,1506,1508,1510,1512,1514,1516,1518,1521,1523],{"class":43,"line":122},[41,1503,1324],{"class":47},[41,1505,417],{"class":51},[41,1507,1329],{"class":47},[41,1509,52],{"class":51},[41,1511,1334],{"class":55},[41,1513,52],{"class":51},[41,1515,82],{"class":47},[41,1517,52],{"class":51},[41,1519,1520],{"class":55},"VIP",[41,1522,142],{"class":51},[41,1524,1201],{"class":47},[41,1526,1527],{"class":43,"line":151},[41,1528,473],{"class":47},[257,1530],{},[10,1532,1533],{},"Read or delete a manual citizen profile entry.",[30,1535,1537],{"className":32,"code":1536,"filename":158,"language":35,"meta":36,"style":36},"local citizen = exports[\"sky_policejob\"]:GetCitizen(\"char1:abcd\")\nlocal deleted = exports[\"sky_policejob\"]:DeleteCitizen(\"char1:abcd\")\n",[38,1538,1539,1571],{"__ignoreMap":36},[41,1540,1541,1543,1546,1548,1550,1552,1554,1556,1558,1561,1563,1565,1567,1569],{"class":43,"line":44},[41,1542,411],{"class":51},[41,1544,1545],{"class":47}," citizen ",[41,1547,417],{"class":51},[41,1549,420],{"class":47},[41,1551,52],{"class":51},[41,1553,425],{"class":55},[41,1555,52],{"class":51},[41,1557,61],{"class":47},[41,1559,1560],{"class":64},"GetCitizen",[41,1562,110],{"class":47},[41,1564,52],{"class":51},[41,1566,1250],{"class":55},[41,1568,52],{"class":51},[41,1570,154],{"class":47},[41,1572,1573,1575,1578,1580,1582,1584,1586,1588,1590,1593,1595,1597,1599,1601],{"class":43,"line":71},[41,1574,411],{"class":51},[41,1576,1577],{"class":47}," deleted ",[41,1579,417],{"class":51},[41,1581,420],{"class":47},[41,1583,52],{"class":51},[41,1585,425],{"class":55},[41,1587,52],{"class":51},[41,1589,61],{"class":47},[41,1591,1592],{"class":64},"DeleteCitizen",[41,1594,110],{"class":47},[41,1596,52],{"class":51},[41,1598,1250],{"class":55},[41,1600,52],{"class":51},[41,1602,154],{"class":47},[257,1604],{},[10,1606,1607],{},"Supported citizen payload fields:",[300,1609,1610,1615,1620,1625,1630,1635,1643,1648,1653,1658,1663],{},[303,1611,1612],{},[38,1613,1614],{},"identifier",[303,1616,1617],{},[38,1618,1619],{},"name",[303,1621,1622],{},[38,1623,1624],{},"gender",[303,1626,1627],{},[38,1628,1629],{},"dob",[303,1631,1632],{},[38,1633,1634],{},"job",[303,1636,1637,1004,1640],{},[38,1638,1639],{},"image_url",[38,1641,1642],{},"url",[303,1644,1645],{},[38,1646,1647],{},"image_id",[303,1649,1650],{},[38,1651,1652],{},"tags",[303,1654,1655],{},[38,1656,1657],{},"notes",[303,1659,1660],{},[38,1661,1662],{},"fingerprint",[303,1664,1665],{},[38,1666,1667],{},"dna",[293,1669,1671],{"id":1670},"vehicles","Vehicles",[10,1673,1674],{},"Create a manual vehicle profile entry.",[30,1676,1678],{"className":32,"code":1677,"filename":158,"language":35,"meta":36,"style":36},"local result = exports[\"sky_policejob\"]:RegisterVehicle({\n    plate = \"B-EMS-12\",\n    model = \"ambulance\",\n    owner_name = \"Sky Medical\",\n    owner_identifier = \"society:ambulance\",\n    color = {\n        primary = \"white\",\n        secondary = \"red\"\n    }\n})\n",[38,1679,1680,1703,1719,1735,1751,1767,1776,1792,1806,1811],{"__ignoreMap":36},[41,1681,1682,1684,1686,1688,1690,1692,1694,1696,1698,1701],{"class":43,"line":44},[41,1683,411],{"class":51},[41,1685,1220],{"class":47},[41,1687,417],{"class":51},[41,1689,420],{"class":47},[41,1691,52],{"class":51},[41,1693,425],{"class":55},[41,1695,52],{"class":51},[41,1697,61],{"class":47},[41,1699,1700],{"class":64},"RegisterVehicle",[41,1702,1238],{"class":47},[41,1704,1705,1708,1710,1712,1715,1717],{"class":43,"line":71},[41,1706,1707],{"class":47},"    plate ",[41,1709,417],{"class":51},[41,1711,1190],{"class":51},[41,1713,1714],{"class":55},"B-EMS-12",[41,1716,52],{"class":51},[41,1718,458],{"class":47},[41,1720,1721,1724,1726,1728,1731,1733],{"class":43,"line":89},[41,1722,1723],{"class":47},"    model ",[41,1725,417],{"class":51},[41,1727,1190],{"class":51},[41,1729,1730],{"class":55},"ambulance",[41,1732,52],{"class":51},[41,1734,458],{"class":47},[41,1736,1737,1740,1742,1744,1747,1749],{"class":43,"line":104},[41,1738,1739],{"class":47},"    owner_name ",[41,1741,417],{"class":51},[41,1743,1190],{"class":51},[41,1745,1746],{"class":55},"Sky Medical",[41,1748,52],{"class":51},[41,1750,458],{"class":47},[41,1752,1753,1756,1758,1760,1763,1765],{"class":43,"line":122},[41,1754,1755],{"class":47},"    owner_identifier ",[41,1757,417],{"class":51},[41,1759,1190],{"class":51},[41,1761,1762],{"class":55},"society:ambulance",[41,1764,52],{"class":51},[41,1766,458],{"class":47},[41,1768,1769,1772,1774],{"class":43,"line":151},[41,1770,1771],{"class":47},"    color ",[41,1773,417],{"class":51},[41,1775,1350],{"class":47},[41,1777,1778,1781,1783,1785,1788,1790],{"class":43,"line":1321},[41,1779,1780],{"class":47},"        primary ",[41,1782,417],{"class":51},[41,1784,1190],{"class":51},[41,1786,1787],{"class":55},"white",[41,1789,52],{"class":51},[41,1791,458],{"class":47},[41,1793,1794,1797,1799,1801,1804],{"class":43,"line":1342},[41,1795,1796],{"class":47},"        secondary ",[41,1798,417],{"class":51},[41,1800,1190],{"class":51},[41,1802,1803],{"class":55},"red",[41,1805,1196],{"class":51},[41,1807,1808],{"class":43,"line":1353},[41,1809,1810],{"class":47},"    }\n",[41,1812,1813],{"class":43,"line":1382},[41,1814,473],{"class":47},[257,1816],{},[10,1818,1819],{},"Update an existing manual vehicle profile entry.",[30,1821,1823],{"className":32,"code":1822,"filename":158,"language":35,"meta":36,"style":36},"local result = exports[\"sky_policejob\"]:UpdateVehicle({\n    plate = \"B-EMS-12\",\n    tags = { \"Fleet\" },\n    cases = { \"CASE-1024\" },\n    notes = {\n        { title = \"Storage\", text = \"Assigned to EMS fleet\" }\n    }\n})\n",[38,1824,1825,1848,1862,1879,1897,1905,1931,1935],{"__ignoreMap":36},[41,1826,1827,1829,1831,1833,1835,1837,1839,1841,1843,1846],{"class":43,"line":44},[41,1828,411],{"class":51},[41,1830,1220],{"class":47},[41,1832,417],{"class":51},[41,1834,420],{"class":47},[41,1836,52],{"class":51},[41,1838,425],{"class":55},[41,1840,52],{"class":51},[41,1842,61],{"class":47},[41,1844,1845],{"class":64},"UpdateVehicle",[41,1847,1238],{"class":47},[41,1849,1850,1852,1854,1856,1858,1860],{"class":43,"line":71},[41,1851,1707],{"class":47},[41,1853,417],{"class":51},[41,1855,1190],{"class":51},[41,1857,1714],{"class":55},[41,1859,52],{"class":51},[41,1861,458],{"class":47},[41,1863,1864,1866,1868,1870,1872,1875,1877],{"class":43,"line":89},[41,1865,1324],{"class":47},[41,1867,417],{"class":51},[41,1869,1329],{"class":47},[41,1871,52],{"class":51},[41,1873,1874],{"class":55},"Fleet",[41,1876,142],{"class":51},[41,1878,1339],{"class":47},[41,1880,1881,1884,1886,1888,1890,1893,1895],{"class":43,"line":104},[41,1882,1883],{"class":47},"    cases ",[41,1885,417],{"class":51},[41,1887,1329],{"class":47},[41,1889,52],{"class":51},[41,1891,1892],{"class":55},"CASE-1024",[41,1894,142],{"class":51},[41,1896,1339],{"class":47},[41,1898,1899,1901,1903],{"class":43,"line":122},[41,1900,1345],{"class":47},[41,1902,417],{"class":51},[41,1904,1350],{"class":47},[41,1906,1907,1909,1911,1913,1916,1918,1920,1922,1924,1927,1929],{"class":43,"line":151},[41,1908,1356],{"class":47},[41,1910,417],{"class":51},[41,1912,1190],{"class":51},[41,1914,1915],{"class":55},"Storage",[41,1917,52],{"class":51},[41,1919,1368],{"class":47},[41,1921,417],{"class":51},[41,1923,1190],{"class":51},[41,1925,1926],{"class":55},"Assigned to EMS fleet",[41,1928,142],{"class":51},[41,1930,1201],{"class":47},[41,1932,1933],{"class":43,"line":1321},[41,1934,1810],{"class":47},[41,1936,1937],{"class":43,"line":1342},[41,1938,473],{"class":47},[257,1940],{},[10,1942,1943],{},"Read or delete a manual vehicle profile entry.",[30,1945,1947],{"className":32,"code":1946,"filename":158,"language":35,"meta":36,"style":36},"local vehicle = exports[\"sky_policejob\"]:GetVehicle(\"B-EMS-12\")\nlocal deleted = exports[\"sky_policejob\"]:DeleteVehicle(\"B-EMS-12\")\n",[38,1948,1949,1981],{"__ignoreMap":36},[41,1950,1951,1953,1956,1958,1960,1962,1964,1966,1968,1971,1973,1975,1977,1979],{"class":43,"line":44},[41,1952,411],{"class":51},[41,1954,1955],{"class":47}," vehicle ",[41,1957,417],{"class":51},[41,1959,420],{"class":47},[41,1961,52],{"class":51},[41,1963,425],{"class":55},[41,1965,52],{"class":51},[41,1967,61],{"class":47},[41,1969,1970],{"class":64},"GetVehicle",[41,1972,110],{"class":47},[41,1974,52],{"class":51},[41,1976,1714],{"class":55},[41,1978,52],{"class":51},[41,1980,154],{"class":47},[41,1982,1983,1985,1987,1989,1991,1993,1995,1997,1999,2002,2004,2006,2008,2010],{"class":43,"line":71},[41,1984,411],{"class":51},[41,1986,1577],{"class":47},[41,1988,417],{"class":51},[41,1990,420],{"class":47},[41,1992,52],{"class":51},[41,1994,425],{"class":55},[41,1996,52],{"class":51},[41,1998,61],{"class":47},[41,2000,2001],{"class":64},"DeleteVehicle",[41,2003,110],{"class":47},[41,2005,52],{"class":51},[41,2007,1714],{"class":55},[41,2009,52],{"class":51},[41,2011,154],{"class":47},[257,2013],{},[10,2015,2016],{},"Supported vehicle payload fields:",[300,2018,2019,2023,2028,2036,2044,2049,2055,2059,2063,2067],{},[303,2020,2021],{},[38,2022,1061],{},[303,2024,2025],{},[38,2026,2027],{},"model",[303,2029,2030,1004,2033],{},[38,2031,2032],{},"ownerName",[38,2034,2035],{},"owner_name",[303,2037,2038,1004,2041],{},[38,2039,2040],{},"ownerIdentifier",[38,2042,2043],{},"owner_identifier",[303,2045,2046],{},[38,2047,2048],{},"color",[303,2050,2051,1004,2053],{},[38,2052,1639],{},[38,2054,1642],{},[303,2056,2057],{},[38,2058,1647],{},[303,2060,2061],{},[38,2062,1652],{},[303,2064,2065],{},[38,2066,1657],{},[303,2068,2069],{},[38,2070,2071],{},"cases",[293,2073,2075],{"id":2074},"weapons","Weapons",[10,2077,2078],{},"Create or update a weapon entry in the weapon registry used by the tablet and the weapon checks.",[30,2080,2082],{"className":32,"code":2081,"filename":158,"language":35,"meta":36,"style":36},"local result = exports[\"sky_policejob\"]:RegisterWeapon({\n    serialNumber = \"SN-4815-1623\",\n    model = \"WEAPON_PISTOL\",\n    weaponType = \"Pistol\",\n    manufacturer = \"Hawk & Little\",\n    caliber = \"9mm\",\n    ownerIdentifier = \"char1:abcd\",\n    ownerName = \"Max Mustermann\",\n    registrationStatus = \"valid\",\n    expiresAt = \"2027-01-01\"\n})\n\nif result.success then\n    print(result.data.weapon.serial_number)\nend\n",[38,2083,2084,2107,2123,2138,2154,2170,2186,2201,2216,2232,2246,2250,2256,2269,2292],{"__ignoreMap":36},[41,2085,2086,2088,2090,2092,2094,2096,2098,2100,2102,2105],{"class":43,"line":44},[41,2087,411],{"class":51},[41,2089,1220],{"class":47},[41,2091,417],{"class":51},[41,2093,420],{"class":47},[41,2095,52],{"class":51},[41,2097,425],{"class":55},[41,2099,52],{"class":51},[41,2101,61],{"class":47},[41,2103,2104],{"class":64},"RegisterWeapon",[41,2106,1238],{"class":47},[41,2108,2109,2112,2114,2116,2119,2121],{"class":43,"line":71},[41,2110,2111],{"class":47},"    serialNumber ",[41,2113,417],{"class":51},[41,2115,1190],{"class":51},[41,2117,2118],{"class":55},"SN-4815-1623",[41,2120,52],{"class":51},[41,2122,458],{"class":47},[41,2124,2125,2127,2129,2131,2134,2136],{"class":43,"line":89},[41,2126,1723],{"class":47},[41,2128,417],{"class":51},[41,2130,1190],{"class":51},[41,2132,2133],{"class":55},"WEAPON_PISTOL",[41,2135,52],{"class":51},[41,2137,458],{"class":47},[41,2139,2140,2143,2145,2147,2150,2152],{"class":43,"line":104},[41,2141,2142],{"class":47},"    weaponType ",[41,2144,417],{"class":51},[41,2146,1190],{"class":51},[41,2148,2149],{"class":55},"Pistol",[41,2151,52],{"class":51},[41,2153,458],{"class":47},[41,2155,2156,2159,2161,2163,2166,2168],{"class":43,"line":122},[41,2157,2158],{"class":47},"    manufacturer ",[41,2160,417],{"class":51},[41,2162,1190],{"class":51},[41,2164,2165],{"class":55},"Hawk & Little",[41,2167,52],{"class":51},[41,2169,458],{"class":47},[41,2171,2172,2175,2177,2179,2182,2184],{"class":43,"line":151},[41,2173,2174],{"class":47},"    caliber ",[41,2176,417],{"class":51},[41,2178,1190],{"class":51},[41,2180,2181],{"class":55},"9mm",[41,2183,52],{"class":51},[41,2185,458],{"class":47},[41,2187,2188,2191,2193,2195,2197,2199],{"class":43,"line":1321},[41,2189,2190],{"class":47},"    ownerIdentifier ",[41,2192,417],{"class":51},[41,2194,1190],{"class":51},[41,2196,1250],{"class":55},[41,2198,52],{"class":51},[41,2200,458],{"class":47},[41,2202,2203,2206,2208,2210,2212,2214],{"class":43,"line":1342},[41,2204,2205],{"class":47},"    ownerName ",[41,2207,417],{"class":51},[41,2209,1190],{"class":51},[41,2211,1266],{"class":55},[41,2213,52],{"class":51},[41,2215,458],{"class":47},[41,2217,2218,2221,2223,2225,2228,2230],{"class":43,"line":1353},[41,2219,2220],{"class":47},"    registrationStatus ",[41,2222,417],{"class":51},[41,2224,1190],{"class":51},[41,2226,2227],{"class":55},"valid",[41,2229,52],{"class":51},[41,2231,458],{"class":47},[41,2233,2234,2237,2239,2241,2244],{"class":43,"line":1382},[41,2235,2236],{"class":47},"    expiresAt ",[41,2238,417],{"class":51},[41,2240,1190],{"class":51},[41,2242,2243],{"class":55},"2027-01-01",[41,2245,1196],{"class":51},[41,2247,2248],{"class":43,"line":1388},[41,2249,473],{"class":47},[41,2251,2252],{"class":43,"line":1405},[41,2253,2255],{"emptyLinePlaceholder":2254},true,"\n",[41,2257,2258,2260,2263,2266],{"class":43,"line":1420},[41,2259,1044],{"class":1043},[41,2261,2262],{"class":47}," result.",[41,2264,2265],{"class":1060},"success",[41,2267,2268],{"class":1043}," then\n",[41,2270,2272,2274,2277,2280,2282,2285,2287,2290],{"class":43,"line":2271},14,[41,2273,1054],{"class":64},[41,2275,2276],{"class":47},"(result.",[41,2278,2279],{"class":1060},"data",[41,2281,352],{"class":47},[41,2283,2284],{"class":1060},"weapon",[41,2286,352],{"class":47},[41,2288,2289],{"class":1060},"serial_number",[41,2291,154],{"class":47},[41,2293,2295],{"class":43,"line":2294},15,[41,2296,1074],{"class":1043},[10,2298,2299],{},"Supported weapon payload fields:",[300,2301,2302,2310,2314,2322,2327,2332,2338,2344,2367,2379],{},[303,2303,2304,1004,2307,2309],{},[38,2305,2306],{},"serialNumber",[38,2308,2289],{}," (required)",[303,2311,2312,2309],{},[38,2313,2027],{},[303,2315,2316,1004,2319],{},[38,2317,2318],{},"weaponType",[38,2320,2321],{},"weapon_type",[303,2323,2324],{},[38,2325,2326],{},"manufacturer",[303,2328,2329],{},[38,2330,2331],{},"caliber",[303,2333,2334,1004,2336],{},[38,2335,2040],{},[38,2337,2043],{},[303,2339,2340,1004,2342],{},[38,2341,2032],{},[38,2343,2035],{},[303,2345,2346,1004,2349,393,2352,82,2354,82,2357,82,2360,2363,2364],{},[38,2347,2348],{},"registrationStatus",[38,2350,2351],{},"registration_status",[38,2353,2227],{},[38,2355,2356],{},"expired",[38,2358,2359],{},"revoked",[38,2361,2362],{},"lost_stolen",", or ",[38,2365,2366],{},"evidence_hold",[303,2368,2369,1004,2372,323,2375,2378],{},[38,2370,2371],{},"registeredAt",[38,2373,2374],{},"registered_at",[38,2376,2377],{},"YYYY-MM-DD",")",[303,2380,2381,1004,2384,323,2387,2378],{},[38,2382,2383],{},"expiresAt",[38,2385,2386],{},"expires_at",[38,2388,2377],{},[19,2390,2392],{"id":2391},"salary","Salary",[10,2394,2395,2396,2398],{},"Pause or resume salary payouts for police employees. These exports are provided by ",[38,2397,56],{}," and work for all job types.",[293,2400,2402],{"id":2401},"pauseplayersalaryplayerid",[38,2403,2404],{},"pausePlayerSalary(playerId)",[300,2406,2407,2412],{},[303,2408,2409,2411],{},[306,2410,308],{},": Pauses salary payouts for the given player.",[303,2413,2414,389,2416,393,2418,2420],{},[306,2415,388],{},[38,2417,588],{},[38,2419,396],{}," on success.",[293,2422,2424],{"id":2423},"resumeplayersalaryplayerid",[38,2425,2426],{},"resumePlayerSalary(playerId)",[300,2428,2429,2434],{},[303,2430,2431,2433],{},[306,2432,308],{},": Resumes salary payouts for the given player.",[303,2435,2436,389,2438,393,2440,2420],{},[306,2437,388],{},[38,2439,588],{},[38,2441,396],{},[293,2443,2445],{"id":2444},"isplayersalarypausedplayerid",[38,2446,2447],{},"isPlayerSalaryPaused(playerId)",[300,2449,2450,2455],{},[303,2451,2452,2454],{},[306,2453,308],{},": Checks whether salary payouts are currently paused.",[303,2456,2457,389,2459,393,2461,2463],{},[306,2458,388],{},[38,2460,588],{},[38,2462,396],{}," if paused.",[30,2465,2467],{"className":32,"code":2466,"language":35,"meta":36,"style":36},"exports[\"sky_jobs_base\"]:pausePlayerSalary(playerId)\nexports[\"sky_jobs_base\"]:resumePlayerSalary(playerId)\nlocal paused = exports[\"sky_jobs_base\"]:isPlayerSalaryPaused(playerId)\n",[38,2468,2469,2486,2503],{"__ignoreMap":36},[41,2470,2471,2473,2475,2477,2479,2481,2484],{"class":43,"line":44},[41,2472,48],{"class":47},[41,2474,52],{"class":51},[41,2476,56],{"class":55},[41,2478,52],{"class":51},[41,2480,61],{"class":47},[41,2482,2483],{"class":64},"pausePlayerSalary",[41,2485,820],{"class":47},[41,2487,2488,2490,2492,2494,2496,2498,2501],{"class":43,"line":71},[41,2489,48],{"class":47},[41,2491,52],{"class":51},[41,2493,56],{"class":55},[41,2495,52],{"class":51},[41,2497,61],{"class":47},[41,2499,2500],{"class":64},"resumePlayerSalary",[41,2502,820],{"class":47},[41,2504,2505,2507,2510,2512,2514,2516,2518,2520,2522,2525],{"class":43,"line":89},[41,2506,411],{"class":51},[41,2508,2509],{"class":47}," paused ",[41,2511,417],{"class":51},[41,2513,420],{"class":47},[41,2515,52],{"class":51},[41,2517,56],{"class":55},[41,2519,52],{"class":51},[41,2521,61],{"class":47},[41,2523,2524],{"class":64},"isPlayerSalaryPaused",[41,2526,820],{"class":47},[2528,2529,2532],"callout",{"color":2530,"icon":2531},"info","i-lucide-info",[10,2533,279,2534,2538],{},[281,2535,2537],{"href":2536},"/docs/base/jobs-base/server-exports#salary","Sky Jobs Base Server Exports"," for full documentation and usage examples.",[14,2540,2542],{"id":2541},"advanced-speed-camera","Advanced Speed Camera",[19,2544,2546],{"id":2545},"read-deployed-speed-cameras","Read deployed speed cameras",[293,2548,2550],{"id":2549},"getspeedcamcameras-1",[38,2551,888],{},[10,2553,2554],{},"Returns the current server-owned camera catalogue. This is a server export and cannot be called\ndirectly by a FiveM client.",[30,2556,2558],{"className":32,"code":2557,"filename":158,"language":35,"meta":36,"style":36},"local cameras = exports[\"sky_policejob\"]:GetSpeedcamCameras()\n\nfor _, camera in ipairs(cameras) do\n    print(camera.id, camera.label, camera.status, camera.limit)\nend\n",[38,2559,2560,2582,2586,2606,2634],{"__ignoreMap":36},[41,2561,2562,2564,2566,2568,2570,2572,2574,2576,2578,2580],{"class":43,"line":44},[41,2563,411],{"class":51},[41,2565,857],{"class":47},[41,2567,417],{"class":51},[41,2569,420],{"class":47},[41,2571,52],{"class":51},[41,2573,425],{"class":55},[41,2575,52],{"class":51},[41,2577,61],{"class":47},[41,2579,928],{"class":64},[41,2581,931],{"class":47},[41,2583,2584],{"class":43,"line":71},[41,2585,2255],{"emptyLinePlaceholder":2254},[41,2587,2588,2591,2594,2597,2600,2603],{"class":43,"line":89},[41,2589,2590],{"class":1043},"for",[41,2592,2593],{"class":47}," _, camera ",[41,2595,2596],{"class":1043},"in",[41,2598,2599],{"class":64}," ipairs",[41,2601,2602],{"class":47},"(cameras) ",[41,2604,2605],{"class":1043},"do\n",[41,2607,2608,2610,2613,2616,2619,2622,2624,2627,2629,2632],{"class":43,"line":104},[41,2609,1054],{"class":64},[41,2611,2612],{"class":47},"(camera.",[41,2614,2615],{"class":1060},"id",[41,2617,2618],{"class":47},", camera.",[41,2620,2621],{"class":1060},"label",[41,2623,2618],{"class":47},[41,2625,2626],{"class":1060},"status",[41,2628,2618],{"class":47},[41,2630,2631],{"class":1060},"limit",[41,2633,154],{"class":47},[41,2635,2636],{"class":43,"line":122},[41,2637,1074],{"class":1043},[10,2639,2640],{},"Each entry contains:",[844,2642,2643,2659],{},[2644,2645,2646],"thead",{},[2647,2648,2649,2653,2656],"tr",{},[2650,2651,2652],"th",{},"Field",[2650,2654,2655],{},"Type",[2650,2657,2658],{},"Description",[2660,2661,2662,2680,2693,2710,2731,2745,2758,2772,2786,2800],"tbody",{},[2647,2663,2664,2669,2674],{},[2665,2666,2667],"td",{},[38,2668,2615],{},[2665,2670,2671],{},[38,2672,2673],{},"string",[2665,2675,2676,2677],{},"Display ID such as ",[38,2678,2679],{},"SP-004",[2647,2681,2682,2686,2690],{},[2665,2683,2684],{},[38,2685,2621],{},[2665,2687,2688],{},[38,2689,2673],{},[2665,2691,2692],{},"Configured camera name",[2647,2694,2695,2700,2704],{},[2665,2696,2697],{},[38,2698,2699],{},"type",[2665,2701,2702],{},[38,2703,2673],{},[2665,2705,2706,2707],{},"Always ",[38,2708,2709],{},"speedcam",[2647,2711,2712,2716,2720],{},[2665,2713,2714],{},[38,2715,2626],{},[2665,2717,2718],{},[38,2719,2673],{},[2665,2721,2722,82,2725,2363,2728],{},[38,2723,2724],{},"online",[38,2726,2727],{},"maintenance",[38,2729,2730],{},"offline",[2647,2732,2733,2738,2742],{},[2665,2734,2735],{},[38,2736,2737],{},"durability",[2665,2739,2740],{},[38,2741,326],{},[2665,2743,2744],{},"Current server-owned durability",[2647,2746,2747,2751,2755],{},[2665,2748,2749],{},[38,2750,2631],{},[2665,2752,2753],{},[38,2754,326],{},[2665,2756,2757],{},"Configured speed limit",[2647,2759,2760,2765,2769],{},[2665,2761,2762],{},[38,2763,2764],{},"tolerance",[2665,2766,2767],{},[38,2768,326],{},[2665,2770,2771],{},"Configured tolerance",[2647,2773,2774,2779,2783],{},[2665,2775,2776],{},[38,2777,2778],{},"target",[2665,2780,2781],{},[38,2782,326],{},[2665,2784,2785],{},"Internal numeric camera ID used by supported camera views",[2647,2787,2788,2793,2797],{},[2665,2789,2790],{},[38,2791,2792],{},"coords",[2665,2794,2795],{},[38,2796,844],{},[2665,2798,2799],{},"Server-stored world coordinates",[2647,2801,2802,2807,2811],{},[2665,2803,2804],{},[38,2805,2806],{},"heading",[2665,2808,2809],{},[38,2810,326],{},[2665,2812,2813],{},"Server-stored camera heading",[10,2815,2816],{},"Treat the returned table as a snapshot. Changing it does not change the server cache or database.",[19,2818,2820],{"id":2819},"review-mutations-are-intentionally-private","Review mutations are intentionally private",[10,2822,2823],{},"Advanced review approval and discard are not public exports. The built-in path validates the acting\nofficer's current police job, duty, Boss Menu permission, review ownership, evidence, offence, fine,\nbilling adapter, target player, and review status immediately before mutation.",[2528,2825,2827],{"color":2265,"icon":2826},"i-lucide-shield-check",[10,2828,2829],{},"Do not proxy a raw client event into a server export. If an integration exposes camera information to\na client, filter the returned fields and authorize the requesting player first. Review IDs, owner\nrecords, evidence, and billing actions must remain server-side.",[10,2831,2832,2833,2836],{},"See ",[281,2834,2542],{"href":2835},"/docs/jobs/policejob/features/advanced-speed-camera"," for the complete\nreview and exploit-protection workflow.",[14,2838,2840],{"id":2839},"client-exports","Client Exports",[19,2842,262],{"id":2843},"restraints-1",[10,2845,2846,2847,2849,2850,2852,2853,2855],{},"These exports use the shared ",[38,2848,56],{}," interaction system. The local player's job must be\nregistered on the server and have the required capability. Police jobs from ",[38,2851,271],{}," are\nregistered automatically; other job resources must use the server-side ",[38,2854,275],{},"\nexport first. Calling a client export alone does not whitelist a job.",[10,2857,279,2858,2862,2863,2866],{},[281,2859,2861],{"href":2860},"/docs/base/jobs-base/client-exports#player-interactions","Sky Jobs Base client exports"," and\n",[281,2864,2865],{"href":283},"server whitelist documentation","\nfor the preferred shared API.",[10,2868,2869],{},"Police keeps compatibility forwards for cuffs, zipties, and escort. Use the direct Jobs Base exports for leg restraints and head bags.",[293,2871,2873],{"id":2872},"cuffplayercufftype",[38,2874,2875],{},"cuffPlayer(cuffType?)",[300,2877,2878,2883,2899],{},[303,2879,2880,2882],{},[306,2881,308],{},": Applies cuffs or zipties to the nearest valid player as an officer.",[303,2884,2885,315,2887],{},[306,2886,314],{},[300,2888,2889],{},[303,2890,2891,323,2893,344,2895,348,2897,352],{},[38,2892,340],{},[38,2894,343],{},[38,2896,347],{},[38,2898,351],{},[303,2900,2901,389,2903,352],{},[306,2902,388],{},[38,2904,392],{},[30,2906,2908],{"className":32,"code":2907,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:cuffPlayer()\n",[38,2909,2910],{"__ignoreMap":36},[41,2911,2912,2914,2916,2918,2920,2922,2924],{"class":43,"line":44},[41,2913,48],{"class":47},[41,2915,52],{"class":51},[41,2917,425],{"class":55},[41,2919,52],{"class":51},[41,2921,61],{"class":47},[41,2923,432],{"class":64},[41,2925,931],{"class":47},[293,2927,2929],{"id":2928},"uncuffplayer",[38,2930,2931],{},"uncuffPlayer()",[300,2933,2934,2939],{},[303,2935,2936,2938],{},[306,2937,308],{},": Removes cuffs from the nearest player as an officer.",[303,2940,2941,389,2943,352],{},[306,2942,388],{},[38,2944,392],{},[30,2946,2948],{"className":32,"code":2947,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:uncuffPlayer()\n",[38,2949,2950],{"__ignoreMap":36},[41,2951,2952,2954,2956,2958,2960,2962,2964],{"class":43,"line":44},[41,2953,48],{"class":47},[41,2955,52],{"class":51},[41,2957,425],{"class":55},[41,2959,52],{"class":51},[41,2961,61],{"class":47},[41,2963,518],{"class":64},[41,2965,931],{"class":47},[293,2967,2969],{"id":2968},"cutzipties",[38,2970,2971],{},"cutZipties()",[300,2973,2974,2979],{},[303,2975,2976,2978],{},[306,2977,308],{},": Cuts zipties on the nearest player as an officer.",[303,2980,2981,389,2983,352],{},[306,2982,388],{},[38,2984,392],{},[30,2986,2988],{"className":32,"code":2987,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:cutZipties()\n",[38,2989,2990],{"__ignoreMap":36},[41,2991,2992,2994,2996,2998,3000,3002,3004],{"class":43,"line":44},[41,2993,48],{"class":47},[41,2995,52],{"class":51},[41,2997,425],{"class":55},[41,2999,52],{"class":51},[41,3001,61],{"class":47},[41,3003,566],{"class":64},[41,3005,931],{"class":47},[293,3007,3009,3012,3013,3012,3016],{"id":3008},"usecuffplayercufftype-useuncuffplayer-usecutzipties",[38,3010,3011],{},"useCuffPlayer(cuffType?)"," / ",[38,3014,3015],{},"useUncuffPlayer()",[38,3017,3018],{},"useCutZipties()",[300,3020,3021,3034],{},[303,3022,3023,3025,3026,82,3028,3030,3031,3033],{},[306,3024,308],{},": Compatibility aliases for ",[38,3027,432],{},[38,3029,518],{},", and ",[38,3032,566],{},". They use the same server-side job whitelist and do not bypass access or item checks.",[303,3035,3036,389,3038,352],{},[306,3037,388],{},[38,3039,392],{},[30,3041,3043],{"className":32,"code":3042,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:useCuffPlayer(\"cuffs\") -- or \"zipties\"\nexports[\"sky_policejob\"]:useUncuffPlayer()\nexports[\"sky_policejob\"]:useCutZipties()\n",[38,3044,3045,3074,3091],{"__ignoreMap":36},[41,3046,3047,3049,3051,3053,3055,3057,3060,3062,3064,3066,3068,3071],{"class":43,"line":44},[41,3048,48],{"class":47},[41,3050,52],{"class":51},[41,3052,425],{"class":55},[41,3054,52],{"class":51},[41,3056,61],{"class":47},[41,3058,3059],{"class":64},"useCuffPlayer",[41,3061,110],{"class":47},[41,3063,52],{"class":51},[41,3065,440],{"class":55},[41,3067,52],{"class":51},[41,3069,3070],{"class":47},") ",[41,3072,3073],{"class":85},"-- or \"zipties\"\n",[41,3075,3076,3078,3080,3082,3084,3086,3089],{"class":43,"line":71},[41,3077,48],{"class":47},[41,3079,52],{"class":51},[41,3081,425],{"class":55},[41,3083,52],{"class":51},[41,3085,61],{"class":47},[41,3087,3088],{"class":64},"useUncuffPlayer",[41,3090,931],{"class":47},[41,3092,3093,3095,3097,3099,3101,3103,3106],{"class":43,"line":89},[41,3094,48],{"class":47},[41,3096,52],{"class":51},[41,3098,425],{"class":55},[41,3100,52],{"class":51},[41,3102,61],{"class":47},[41,3104,3105],{"class":64},"useCutZipties",[41,3107,931],{"class":47},[293,3109,3111,3012,3114],{"id":3110},"usehandcuffsitem-useziptiesitem",[38,3112,3113],{},"useHandcuffsItem()",[38,3115,3116],{},"useZiptiesItem()",[300,3118,3119,3124],{},[303,3120,3121,3123],{},[306,3122,308],{},": Runs the full handcuffs/zipties item flow (the same path as using the inventory item), including the item checks.",[303,3125,3126,389,3128,352],{},[306,3127,388],{},[38,3129,588],{},[30,3131,3133],{"className":32,"code":3132,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:useHandcuffsItem()\nexports[\"sky_policejob\"]:useZiptiesItem()\n",[38,3134,3135,3152],{"__ignoreMap":36},[41,3136,3137,3139,3141,3143,3145,3147,3150],{"class":43,"line":44},[41,3138,48],{"class":47},[41,3140,52],{"class":51},[41,3142,425],{"class":55},[41,3144,52],{"class":51},[41,3146,61],{"class":47},[41,3148,3149],{"class":64},"useHandcuffsItem",[41,3151,931],{"class":47},[41,3153,3154,3156,3158,3160,3162,3164,3167],{"class":43,"line":71},[41,3155,48],{"class":47},[41,3157,52],{"class":51},[41,3159,425],{"class":55},[41,3161,52],{"class":51},[41,3163,61],{"class":47},[41,3165,3166],{"class":64},"useZiptiesItem",[41,3168,931],{"class":47},[293,3170,3172],{"id":3171},"isplayercuffedserverid",[38,3173,3174],{},"isPlayerCuffed(serverId)",[300,3176,3177,3182],{},[303,3178,3179,3181],{},[306,3180,308],{},": Checks the locally known cuff state for a player.",[303,3183,3184,389,3186,352],{},[306,3185,388],{},[38,3187,588],{},[30,3189,3191],{"className":32,"code":3190,"language":35,"meta":36,"style":36},"local cuffed = exports[\"sky_policejob\"]:isPlayerCuffed(serverId)\n",[38,3192,3193],{"__ignoreMap":36},[41,3194,3195,3197,3199,3201,3203,3205,3207,3209,3211,3213],{"class":43,"line":44},[41,3196,411],{"class":51},[41,3198,600],{"class":47},[41,3200,417],{"class":51},[41,3202,420],{"class":47},[41,3204,52],{"class":51},[41,3206,425],{"class":55},[41,3208,52],{"class":51},[41,3210,61],{"class":47},[41,3212,615],{"class":64},[41,3214,3215],{"class":47},"(serverId)\n",[19,3217,622],{"id":3218},"escort-1",[293,3220,3222],{"id":3221},"escorttoggle",[38,3223,3224],{},"escortToggle()",[300,3226,3227,3232],{},[303,3228,3229,3231],{},[306,3230,308],{},": Starts or stops escorting the nearest player.",[303,3233,3234,389,3236,352],{},[306,3235,388],{},[38,3237,392],{},[30,3239,3241],{"className":32,"code":3240,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:escortToggle()\n",[38,3242,3243],{"__ignoreMap":36},[41,3244,3245,3247,3249,3251,3253,3255,3257],{"class":43,"line":44},[41,3246,48],{"class":47},[41,3248,52],{"class":51},[41,3250,425],{"class":55},[41,3252,52],{"class":51},[41,3254,61],{"class":47},[41,3256,667],{"class":64},[41,3258,931],{"class":47},[293,3260,3262],{"id":3261},"escortputinvehicle",[38,3263,3264],{},"escortPutInVehicle()",[300,3266,3267,3272],{},[303,3268,3269,3271],{},[306,3270,308],{},": Puts the escorted player into the closest vehicle.",[303,3273,3274,389,3276,352],{},[306,3275,388],{},[38,3277,392],{},[30,3279,3281],{"className":32,"code":3280,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:escortPutInVehicle()\n",[38,3282,3283],{"__ignoreMap":36},[41,3284,3285,3287,3289,3291,3293,3295,3297],{"class":43,"line":44},[41,3286,48],{"class":47},[41,3288,52],{"class":51},[41,3290,425],{"class":55},[41,3292,52],{"class":51},[41,3294,61],{"class":47},[41,3296,718],{"class":64},[41,3298,931],{"class":47},[293,3300,3302],{"id":3301},"escorttakeoutvehicle",[38,3303,3304],{},"escortTakeOutVehicle()",[300,3306,3307,3311],{},[303,3308,3309,733],{},[306,3310,308],{},[303,3312,3313,389,3315,352],{},[306,3314,388],{},[38,3316,392],{},[30,3318,3320],{"className":32,"code":3319,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:escortTakeOutVehicle()\n",[38,3321,3322],{"__ignoreMap":36},[41,3323,3324,3326,3328,3330,3332,3334,3336],{"class":43,"line":44},[41,3325,48],{"class":47},[41,3327,52],{"class":51},[41,3329,425],{"class":55},[41,3331,52],{"class":51},[41,3333,61],{"class":47},[41,3335,765],{"class":64},[41,3337,931],{"class":47},[19,3339,771],{"id":3340},"jail-1",[293,3342,3344],{"id":3343},"openjailmenu",[38,3345,3346],{},"openJailMenu()",[300,3348,3349],{},[303,3350,3351,3353],{},[306,3352,308],{},": Opens the menu to put someone in jail.",[30,3355,3357],{"className":32,"code":3356,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:openJailMenu()\n",[38,3358,3359],{"__ignoreMap":36},[41,3360,3361,3363,3365,3367,3369,3371,3374],{"class":43,"line":44},[41,3362,48],{"class":47},[41,3364,52],{"class":51},[41,3366,425],{"class":55},[41,3368,52],{"class":51},[41,3370,61],{"class":47},[41,3372,3373],{"class":64},"openJailMenu",[41,3375,931],{"class":47},[19,3377,3379],{"id":3378},"radial-menu-actions","Radial menu actions",[10,3381,3382],{},"Other resources (e.g. a custom radial menu or keybind resource) can read and trigger the police radial actions instead of using the built-in radial menu. In the built-in menu, currently available actions are grouped into localized person and vehicle submenus.",[10,3384,3385,3386,82,3389,82,3392,82,3395,82,3398,82,3401,82,3404,82,3407,82,3409,82,3412,82,3415,82,3418,82,3421,82,3424,82,3427,82,3430,82,3433,82,3436,82,3439,82,3442,82,3445,82,3448,352],{},"Available action IDs: ",[38,3387,3388],{},"handcuff",[38,3390,3391],{},"unhandcuff",[38,3393,3394],{},"ziptie",[38,3396,3397],{},"cut_zipties",[38,3399,3400],{},"leg_restraints",[38,3402,3403],{},"ankle_monitor",[38,3405,3406],{},"head_bag",[38,3408,621],{},[38,3410,3411],{},"escort_vehicle",[38,3413,3414],{},"escort_take_out",[38,3416,3417],{},"tackle",[38,3419,3420],{},"tackle_cuff",[38,3422,3423],{},"tackle_release",[38,3425,3426],{},"player_search",[38,3428,3429],{},"carry_patient",[38,3431,3432],{},"impound",[38,3434,3435],{},"park_vehicle",[38,3437,3438],{},"wheel_clamp",[38,3440,3441],{},"wheel_clamp_remove",[38,3443,3444],{},"camera_disassemble",[38,3446,3447],{},"billing",[38,3449,3450],{},"tablet",[293,3452,3454],{"id":3453},"getradialactions",[38,3455,3456],{},"getRadialActions()",[300,3458,3459,3464],{},[303,3460,3461,3463],{},[306,3462,308],{},": Returns every radial action currently offered to the local player, including its availability state.",[303,3465,3466,389,3468,3470,3471,82,3473,82,3475,3478],{},[306,3467,388],{},[38,3469,844],{}," â€” array of action records (",[38,3472,2615],{},[38,3474,2621],{},[38,3476,3477],{},"disabled",", â€¦). Empty when the radial system is disabled.",[30,3480,3482],{"className":32,"code":3481,"language":35,"meta":36,"style":36},"local actions = exports[\"sky_policejob\"]:getRadialActions()\n",[38,3483,3484],{"__ignoreMap":36},[41,3485,3486,3488,3491,3493,3495,3497,3499,3501,3503,3506],{"class":43,"line":44},[41,3487,411],{"class":51},[41,3489,3490],{"class":47}," actions ",[41,3492,417],{"class":51},[41,3494,420],{"class":47},[41,3496,52],{"class":51},[41,3498,425],{"class":55},[41,3500,52],{"class":51},[41,3502,61],{"class":47},[41,3504,3505],{"class":64},"getRadialActions",[41,3507,931],{"class":47},[293,3509,3511],{"id":3510},"getradialactionactionid",[38,3512,3513],{},"getRadialAction(actionId)",[300,3515,3516,3521],{},[303,3517,3518,3520],{},[306,3519,308],{},": Returns a single radial action record by ID.",[303,3522,3523,389,3525,352],{},[306,3524,388],{},[38,3526,1000],{},[30,3528,3530],{"className":32,"code":3529,"language":35,"meta":36,"style":36},"local action = exports[\"sky_policejob\"]:getRadialAction(\"handcuff\")\n",[38,3531,3532],{"__ignoreMap":36},[41,3533,3534,3536,3539,3541,3543,3545,3547,3549,3551,3554,3556,3558,3560,3562],{"class":43,"line":44},[41,3535,411],{"class":51},[41,3537,3538],{"class":47}," action ",[41,3540,417],{"class":51},[41,3542,420],{"class":47},[41,3544,52],{"class":51},[41,3546,425],{"class":55},[41,3548,52],{"class":51},[41,3550,61],{"class":47},[41,3552,3553],{"class":64},"getRadialAction",[41,3555,110],{"class":47},[41,3557,52],{"class":51},[41,3559,3388],{"class":55},[41,3561,52],{"class":51},[41,3563,154],{"class":47},[293,3565,3567],{"id":3566},"getradialactionreport",[38,3568,3569],{},"getRadialActionReport()",[300,3571,3572,3577],{},[303,3573,3574,3576],{},[306,3575,308],{},": Returns all actions plus a per-ID availability map â€” useful to build an external menu in one call.",[303,3578,3579,389,3581,393,3583,352],{},[306,3580,388],{},[38,3582,844],{},[38,3584,3585],{},"{ actions = { ... }, availability = { [actionId] = { available, disabledReasonKey, disabledReason } } }",[30,3587,3589],{"className":32,"code":3588,"language":35,"meta":36,"style":36},"local report = exports[\"sky_policejob\"]:getRadialActionReport()\nif report.availability[\"handcuff\"] and report.availability[\"handcuff\"].available then\n    -- show the handcuff option\nend\n",[38,3590,3591,3615,3660,3665],{"__ignoreMap":36},[41,3592,3593,3595,3598,3600,3602,3604,3606,3608,3610,3613],{"class":43,"line":44},[41,3594,411],{"class":51},[41,3596,3597],{"class":47}," report ",[41,3599,417],{"class":51},[41,3601,420],{"class":47},[41,3603,52],{"class":51},[41,3605,425],{"class":55},[41,3607,52],{"class":51},[41,3609,61],{"class":47},[41,3611,3612],{"class":64},"getRadialActionReport",[41,3614,931],{"class":47},[41,3616,3617,3619,3622,3625,3628,3630,3632,3634,3637,3640,3642,3644,3646,3648,3650,3652,3655,3658],{"class":43,"line":71},[41,3618,1044],{"class":1043},[41,3620,3621],{"class":47}," report.",[41,3623,3624],{"class":1060},"availability",[41,3626,3627],{"class":47},"[",[41,3629,52],{"class":51},[41,3631,3388],{"class":55},[41,3633,52],{"class":51},[41,3635,3636],{"class":47},"] ",[41,3638,3639],{"class":51},"and",[41,3641,3621],{"class":47},[41,3643,3624],{"class":1060},[41,3645,3627],{"class":47},[41,3647,52],{"class":51},[41,3649,3388],{"class":55},[41,3651,52],{"class":51},[41,3653,3654],{"class":47},"].",[41,3656,3657],{"class":1060},"available",[41,3659,2268],{"class":1043},[41,3661,3662],{"class":43,"line":89},[41,3663,3664],{"class":85},"    -- show the handcuff option\n",[41,3666,3667],{"class":43,"line":104},[41,3668,1074],{"class":1043},[293,3670,3672],{"id":3671},"isradialmenuactionavailableactionid",[38,3673,3674],{},"isRadialMenuActionAvailable(actionId)",[300,3676,3677,3682],{},[303,3678,3679,3681],{},[306,3680,308],{},": Checks whether one radial action is currently available.",[303,3683,3684,389,3686,352],{},[306,3685,388],{},[38,3687,588],{},[30,3689,3691],{"className":32,"code":3690,"language":35,"meta":36,"style":36},"local available = exports[\"sky_policejob\"]:isRadialMenuActionAvailable(\"impound\")\n",[38,3692,3693],{"__ignoreMap":36},[41,3694,3695,3697,3700,3702,3704,3706,3708,3710,3712,3715,3717,3719,3721,3723],{"class":43,"line":44},[41,3696,411],{"class":51},[41,3698,3699],{"class":47}," available ",[41,3701,417],{"class":51},[41,3703,420],{"class":47},[41,3705,52],{"class":51},[41,3707,425],{"class":55},[41,3709,52],{"class":51},[41,3711,61],{"class":47},[41,3713,3714],{"class":64},"isRadialMenuActionAvailable",[41,3716,110],{"class":47},[41,3718,52],{"class":51},[41,3720,3432],{"class":55},[41,3722,52],{"class":51},[41,3724,154],{"class":47},[293,3726,3728],{"id":3727},"triggerradialmenuactionactionid",[38,3729,3730],{},"triggerRadialMenuAction(actionId)",[300,3732,3733,3738],{},[303,3734,3735,3737],{},[306,3736,308],{},": Executes a radial action for the local player.",[303,3739,3740,389,3742,393,3745,397,3747,3749,3750,3753],{},[306,3741,388],{},[38,3743,3744],{},"boolean, table?",[38,3746,396],{},[38,3748,400],{}," and a reason (",[38,3751,3752],{},"{ key, fallback }",").",[30,3755,3757],{"className":32,"code":3756,"language":35,"meta":36,"style":36},"local success, reason = exports[\"sky_policejob\"]:triggerRadialMenuAction(\"player_search\")\n",[38,3758,3759],{"__ignoreMap":36},[41,3760,3761,3763,3765,3767,3769,3771,3773,3775,3777,3780,3782,3784,3786,3788],{"class":43,"line":44},[41,3762,411],{"class":51},[41,3764,414],{"class":47},[41,3766,417],{"class":51},[41,3768,420],{"class":47},[41,3770,52],{"class":51},[41,3772,425],{"class":55},[41,3774,52],{"class":51},[41,3776,61],{"class":47},[41,3778,3779],{"class":64},"triggerRadialMenuAction",[41,3781,110],{"class":47},[41,3783,52],{"class":51},[41,3785,3426],{"class":55},[41,3787,52],{"class":51},[41,3789,154],{"class":47},[19,3791,1078],{"id":3792},"usable-items-1",[293,3794,3796],{"id":3795},"useitemitemname-payload",[38,3797,3798],{},"useItem(itemName, payload?)",[300,3800,3801,3806],{},[303,3802,3803,3805],{},[306,3804,308],{},": Triggers a registered client-side police usable-item handler for the local player.",[303,3807,3808,389,3810,393,3812,1110],{},[306,3809,388],{},[38,3811,588],{},[38,3813,396],{},[30,3815,3817],{"className":32,"code":3816,"language":35,"meta":36,"style":36},"exports[\"sky_policejob\"]:useItem(\"bodycam\")\n",[38,3818,3819],{"__ignoreMap":36},[41,3820,3821,3823,3825,3827,3829,3831,3833,3835,3837,3840,3842],{"class":43,"line":44},[41,3822,48],{"class":47},[41,3824,52],{"class":51},[41,3826,425],{"class":55},[41,3828,52],{"class":51},[41,3830,61],{"class":47},[41,3832,1130],{"class":64},[41,3834,110],{"class":47},[41,3836,52],{"class":51},[41,3838,3839],{"class":55},"bodycam",[41,3841,52],{"class":51},[41,3843,154],{"class":47},[19,3845,3847],{"id":3846},"advanced-speed-camera-boundary","Advanced Speed Camera boundary",[293,3849,3851],{"id":3850},"no-client-side-review-mutation-export","No client-side review mutation export",[10,3853,3854],{},"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.",[293,3856,3858],{"id":3857},"detect-the-open-review-app","Detect the open review app",[10,3860,3861],{},"An integration that only needs presentation state can use the shared Jobs Base tablet export.",[30,3863,3865],{"className":32,"code":3864,"filename":34,"language":35,"meta":36,"style":36},"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",[38,3866,3867,3891,3895,3925,3940],{"__ignoreMap":36},[41,3868,3869,3871,3874,3876,3878,3880,3882,3884,3886,3889],{"class":43,"line":44},[41,3870,411],{"class":51},[41,3872,3873],{"class":47}," tablet ",[41,3875,417],{"class":51},[41,3877,420],{"class":47},[41,3879,52],{"class":51},[41,3881,56],{"class":55},[41,3883,52],{"class":51},[41,3885,61],{"class":47},[41,3887,3888],{"class":64},"GetTabletState",[41,3890,931],{"class":47},[41,3892,3893],{"class":43,"line":71},[41,3894,2255],{"emptyLinePlaceholder":2254},[41,3896,3897,3899,3902,3905,3908,3910,3913,3916,3918,3921,3923],{"class":43,"line":89},[41,3898,1044],{"class":1043},[41,3900,3901],{"class":47}," tablet.",[41,3903,3904],{"class":1060},"open",[41,3906,3907],{"class":51}," and",[41,3909,3901],{"class":47},[41,3911,3912],{"class":1060},"appKey",[41,3914,3915],{"class":51}," ==",[41,3917,1190],{"class":51},[41,3919,3920],{"class":55},"speedcam_reviews",[41,3922,142],{"class":51},[41,3924,1049],{"class":1043},[41,3926,3927,3929,3931,3933,3936,3938],{"class":43,"line":104},[41,3928,1054],{"class":64},[41,3930,110],{"class":47},[41,3932,52],{"class":51},[41,3934,3935],{"class":55},"Speed Camera Reviews is open",[41,3937,52],{"class":51},[41,3939,154],{"class":47},[41,3941,3942],{"class":43,"line":122},[41,3943,1074],{"class":1043},[10,3945,3946,3947,3951,3952,3954],{},"For deployed camera state, use the read-only\n",[281,3948,3950],{"href":3949},"/docs/jobs/policejob/reference/events#advanced-speed-camera","client events",". For authoritative\ncamera data, call ",[38,3953,888],{}," from a server script.",[2528,3956,3959],{"color":3957,"icon":3958},"warning","i-lucide-shield-alert",[10,3960,3961],{},"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.",[14,3963,3965],{"id":3964},"support","Support",[10,3967,3968],{},"Need help? Our support team is always ready to assist.",[3970,3971],"u-button",{"color":3972,"icon":3973,"label":3974,"target":3975,"to":3976,"variant":3977},"neutral","i-simple-icons-discord","Join Discord","_blank","https://discord.gg/sky-systems","subtle",[3979,3980,3981],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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);}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}",{"title":36,"searchDepth":44,"depth":71,"links":3983},[3984,3994,3998,4006],{"id":16,"depth":71,"text":17,"children":3985},[3986,3987,3988,3989,3990,3991,3992,3993],{"id":21,"depth":89,"text":22},{"id":261,"depth":89,"text":262},{"id":621,"depth":89,"text":622},{"id":770,"depth":89,"text":771},{"id":823,"depth":89,"text":824},{"id":1077,"depth":89,"text":1078},{"id":1144,"depth":89,"text":1145},{"id":2391,"depth":89,"text":2392},{"id":2541,"depth":71,"text":2542,"children":3995},[3996,3997],{"id":2545,"depth":89,"text":2546},{"id":2819,"depth":89,"text":2820},{"id":2839,"depth":71,"text":2840,"children":3999},[4000,4001,4002,4003,4004,4005],{"id":2843,"depth":89,"text":262},{"id":3218,"depth":89,"text":622},{"id":3340,"depth":89,"text":771},{"id":3378,"depth":89,"text":3379},{"id":3792,"depth":89,"text":1078},{"id":3846,"depth":89,"text":3847},{"id":3964,"depth":71,"text":3965},"Client and server exports provided by the Sky Police Job resource, including the safe Advanced Speed Camera boundary.","md",null,{},{"icon":4012},"i-lucide-server-cog","/docs/jobs/policejob/reference/exports",{"title":5,"description":4007},{"loc":4013},"1.docs/0.jobs/1.policejob/4.reference/3.exports","Ik0M2J6N_wT61YDIhd7oDlMzoT07z7Adz0Va6aWN1U4",[4019,4024],{"title":4020,"path":4021,"stem":4022,"description":4023,"children":-1},"Commands","/docs/jobs/policejob/reference/commands","1.docs/0.jobs/1.policejob/4.reference/2.commands","Command reference for the Sky Policejob resource.",{"title":4025,"path":4026,"stem":4027,"description":4028,"icon":4029,"children":-1},"Events","/docs/jobs/policejob/reference/events","1.docs/0.jobs/1.policejob/4.reference/4.events","Supported Police Job client events and read-only Advanced Speed Camera state events.","i-lucide-radio-tower",[],1786395269505]