[{"data":1,"prerenderedAt":858},["ShallowReactive",2],{"/docs/jobs/policejob/setup/installation":3,"/docs/jobs/policejob/setup/installation-surround":847,"/docs/jobs/policejob/setup/installation-implemented-suggestions":857},{"id":4,"title":5,"body":6,"description":837,"extension":838,"head":839,"implementedSuggestions":839,"meta":840,"navigation":841,"path":842,"schemaOrg":839,"seo":843,"sitemap":844,"stem":845,"__hash__":846},"docs/1.docs/0.jobs/1.policejob/2.setup/1.installation.md","Installation",{"type":7,"value":8,"toc":830},"minimark",[9,14,18,33,36,40,744,748,770,789,793,811,814,817,826],[10,11,13],"h2",{"id":12},"requirements","Requirements",[15,16,17],"p",{},"Before installing Sky Police Job, update both required resources from the same CFX Portal account:",[19,20,21,28],"ul",{},[22,23,24],"li",{},[25,26,27],"code",{},"sky_base",[22,29,30],{},[25,31,32],{},"sky_jobs_base",[15,34,35],{},"Keep both dependencies up to date when updating the police resource. Start your framework, inventory and targeting resources before the Sky resources.",[10,37,39],{"id":38},"install-the-resource","Install the resource",[41,42,43,48,55,59,66,101,105,115,127,131,142,163,252,258,261,265,271,460,464,476,479,541,548,570,573,630,647,651,662,672,676,688,692,702,712,716,732,736],"steps",{},[44,45,47],"h3",{"id":46},"deploy-the-files","Deploy the files",[15,49,50,51,54],{},"Place the ",[25,52,53],{},"sky_policejob"," resource in your server resources directory. Do not rename its resource folder.",[44,56,58],{"id":57},"configure-the-start-order","Configure the start order",[15,60,61,62,65],{},"Add the resource to ",[25,63,64],{},"server.cfg"," after its dependencies:",[67,68,73],"pre",{"className":69,"code":70,"filename":64,"language":71,"meta":72,"style":72},"language-cfg shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Framework, SQL, inventory, target and configured integrations first\nensure sky_base\nensure sky_jobs_base\nensure sky_policejob\n","cfg","",[25,74,75,83,89,95],{"__ignoreMap":72},[76,77,80],"span",{"class":78,"line":79},"line",1,[76,81,82],{},"# Framework, SQL, inventory, target and configured integrations first\n",[76,84,86],{"class":78,"line":85},2,[76,87,88],{},"ensure sky_base\n",[76,90,92],{"class":78,"line":91},3,[76,93,94],{},"ensure sky_jobs_base\n",[76,96,98],{"class":78,"line":97},4,[76,99,100],{},"ensure sky_policejob\n",[44,102,104],{"id":103},"prepare-the-database","Prepare the database",[15,106,107,110,111,114],{},[25,108,109],{},"Config.AutoExecuteQuery"," is enabled by default in ",[25,112,113],{},"config/config.lua",". With this option enabled, the resource creates and updates its database tables automatically.",[15,116,117,118,121,122,126],{},"Import the included ",[25,119,120],{},"import.sql"," manually ",[123,124,125],"strong",{},"only"," if you disable automatic queries.",[44,128,130],{"id":129},"set-up-media-uploads","Set up media uploads",[15,132,133,134,141],{},"Images & videos in the tablet are uploaded to ",[135,136,140],"a",{"href":137,"rel":138},"https://fivemanage.com",[139],"nofollow","FiveManage",". The capture runs directly in the tablet UI — no extra server resource is required.",[143,144,145,156],"ol",{},[22,146,147,148,151,152,155],{},"Create an account at ",[135,149,140],{"href":137,"rel":150},[139]," and generate a ",[123,153,154],{},"Media API Key"," from your dashboard.",[22,157,158,159,162],{},"Enter your Media API Key in ",[25,160,161],{},"sky_jobs_base/config/webhooks.lua",":",[67,164,168],{"className":165,"code":166,"filename":161,"language":167,"meta":72,"style":72},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Webhooks = {\n    fivemanage = {\n        apiKey = \"your_media_api_key_here\",\n        baseUrl = \"https://api.fivemanage.com/api/v3/file\",\n        timeoutMs = 10000\n    }\n}\n","lua",[25,169,170,183,192,212,228,240,246],{"__ignoreMap":72},[76,171,172,176,180],{"class":78,"line":79},[76,173,175],{"class":174},"sTEyZ","Webhooks ",[76,177,179],{"class":178},"sMK4o","=",[76,181,182],{"class":174}," {\n",[76,184,185,188,190],{"class":78,"line":85},[76,186,187],{"class":174},"    fivemanage ",[76,189,179],{"class":178},[76,191,182],{"class":174},[76,193,194,197,199,202,206,209],{"class":78,"line":91},[76,195,196],{"class":174},"        apiKey ",[76,198,179],{"class":178},[76,200,201],{"class":178}," \"",[76,203,205],{"class":204},"sfazB","your_media_api_key_here",[76,207,208],{"class":178},"\"",[76,210,211],{"class":174},",\n",[76,213,214,217,219,221,224,226],{"class":78,"line":97},[76,215,216],{"class":174},"        baseUrl ",[76,218,179],{"class":178},[76,220,201],{"class":178},[76,222,223],{"class":204},"https://api.fivemanage.com/api/v3/file",[76,225,208],{"class":178},[76,227,211],{"class":174},[76,229,231,234,236],{"class":78,"line":230},5,[76,232,233],{"class":174},"        timeoutMs ",[76,235,179],{"class":178},[76,237,239],{"class":238},"sbssI"," 10000\n",[76,241,243],{"class":78,"line":242},6,[76,244,245],{"class":174},"    }\n",[76,247,249],{"class":78,"line":248},7,[76,250,251],{"class":174},"}\n",[253,254,255],"warning",{},[15,256,257],{},"Saving images & videos will break if you restart the script while your server runs. Make sure you test after doing a full server restart.",[259,260],"br",{},[44,262,264],{"id":263},"use-a-metadata-capable-inventory","Use a metadata-capable inventory",[15,266,267,268,270],{},"The evidence system stores sample details on the item metadata. ",[25,269,27],{}," detects the running inventory automatically and supports:",[272,273,274,290],"table",{},[275,276,277],"thead",{},[278,279,280,284,287],"tr",{},[281,282,283],"th",{},"Inventory",[281,285,286],{},"Support",[281,288,289],{},"Our recommendation",[291,292,293,307,319,330,342,353,364,375,386,397,408,419,430,440,451],"tbody",{},[278,294,295,301,304],{},[296,297,298],"td",{},[25,299,300],{},"ox_inventory",[296,302,303],{},"Full",[296,305,306],{},"⭐ Recommended — most complete metadata integration and the best-tested combination",[278,308,309,314,316],{},[296,310,311],{},[25,312,313],{},"qs-inventory",[296,315,303],{},[296,317,318],{},"Good choice",[278,320,321,326,328],{},[296,322,323],{},[25,324,325],{},"qb-inventory",[296,327,303],{},[296,329,318],{},[278,331,332,337,339],{},[296,333,334],{},[25,335,336],{},"ps-inventory",[296,338,303],{},[296,340,341],{},"—",[278,343,344,349,351],{},[296,345,346],{},[25,347,348],{},"core_inventory",[296,350,303],{},[296,352,341],{},[278,354,355,360,362],{},[296,356,357],{},[25,358,359],{},"codem-inventory",[296,361,303],{},[296,363,341],{},[278,365,366,371,373],{},[296,367,368],{},[25,369,370],{},"tgiann-inventory",[296,372,303],{},[296,374,341],{},[278,376,377,382,384],{},[296,378,379],{},[25,380,381],{},"origen_inventory",[296,383,303],{},[296,385,341],{},[278,387,388,393,395],{},[296,389,390],{},[25,391,392],{},"jaksam_inventory",[296,394,303],{},[296,396,341],{},[278,398,399,404,406],{},[296,400,401],{},[25,402,403],{},"ak47_inventory",[296,405,303],{},[296,407,341],{},[278,409,410,415,417],{},[296,411,412],{},[25,413,414],{},"jpr-inventory",[296,416,303],{},[296,418,341],{},[278,420,421,426,428],{},[296,422,423],{},[25,424,425],{},"one_inventory",[296,427,303],{},[296,429,341],{},[278,431,432,435,437],{},[296,433,434],{},"QBCore / Qbox built-in inventory",[296,436,303],{},[296,438,439],{},"Fine if you stay on the framework default",[278,441,442,445,448],{},[296,443,444],{},"ESX built-in inventory",[296,446,447],{},"Partial — no item metadata; collected evidence items lose their sample data",[296,449,450],{},"Not recommended — switch to a metadata-capable inventory",[278,452,453,456,458],{},[296,454,455],{},"vRP built-in inventory",[296,457,447],{},[296,459,450],{},[44,461,463],{"id":462},"add-police-items","Add police items",[15,465,466,467,470,471,475],{},"Add the following items to your inventory script. Use the preview images inside ",[25,468,469],{},"sky_policejob/config/inventory"," so they match the UI. For ready-to-copy definitions see the ",[135,472,474],{"href":473},"../reference/inventories","Inventory Items"," page.",[15,477,478],{},"Equipment & tools:",[19,480,481,486,491,496,501,506,511,516,521,526,531,536],{},[22,482,483],{},[25,484,485],{},"cctvcam",[22,487,488],{},[25,489,490],{},"bodycam",[22,492,493],{},[25,494,495],{},"speedcam",[22,497,498],{},[25,499,500],{},"gps_tracker",[22,502,503],{},[25,504,505],{},"ankle_monitor",[22,507,508],{},[25,509,510],{},"wheelclamp",[22,512,513],{},[25,514,515],{},"welder",[22,517,518],{},[25,519,520],{},"fixtool",[22,522,523],{},[25,524,525],{},"cleaning_alcohol",[22,527,528],{},[25,529,530],{},"code_list",[22,532,533],{},[25,534,535],{},"wire_cutter",[22,537,538],{},[25,539,540],{},"cigarette",[15,542,543,544,547],{},"Restraints (required for the cuffing / transport flow — without them ",[25,545,546],{},"RegisterUsableItem"," silently does nothing):",[19,549,550,555,560,565],{},[22,551,552],{},[25,553,554],{},"handcuffs",[22,556,557],{},[25,558,559],{},"zipties",[22,561,562],{},[25,563,564],{},"legcuffs",[22,566,567],{},[25,568,569],{},"headbag",[15,571,572],{},"Evidence field kit:",[19,574,575,580,585,590,595,600,605,610,615,620,625],{},[22,576,577],{},[25,578,579],{},"saliva_kit",[22,581,582],{},[25,583,584],{},"blood_kit",[22,586,587],{},[25,588,589],{},"gsr_test",[22,591,592],{},[25,593,594],{},"collected_fingerprint",[22,596,597],{},[25,598,599],{},"collected_gsr_test",[22,601,602],{},[25,603,604],{},"fingerprint_kit",[22,606,607],{},[25,608,609],{},"fingerprint_scanner",[22,611,612],{},[25,613,614],{},"hydrogen_peroxide",[22,616,617],{},[25,618,619],{},"collected_saliva",[22,621,622],{},[25,623,624],{},"collected_casing",[22,626,627],{},[25,628,629],{},"collected_blood",[15,631,632,633,636,637,640,641,643,644,646],{},"Optional equipment must be registered when its corresponding requirement is enabled: ",[25,634,635],{},"plate_scanner"," for ",[25,638,639],{},"Config.LicensePlateScanner.requireScannerItem",", and ",[25,642,490],{}," for the shared bodycam requirement in ",[25,645,32],{},".",[44,648,650],{"id":649},"disable-duplicate-salaries","Disable duplicate salaries",[15,652,653,654,657,658,661],{},"Sky Jobs Base pays salaries for configured jobs. Set the framework salary values for every police grade to ",[25,655,656],{},"0"," (for example in the ",[25,659,660],{},"job_grades"," table) — leaving both salary systems active produces duplicate payments.",[15,663,664,665,668,669,646],{},"If you prefer to keep your framework or an external payroll system instead, disable the built-in payroll by setting ",[25,666,667],{},"Config.Salary.enabled = false"," in ",[25,670,671],{},"sky_jobs_base/config/config.lua",[44,673,675],{"id":674},"configure-administrator-access","Configure administrator access",[15,677,678,679,683,684,475],{},"Install the global ",[135,680,682],{"href":681},"/docs/installation#permissions-bootstrap","permissions bootstrap",", assign your administrator group, and review the ",[135,685,687],{"href":686},"./permissions","Permissions",[44,689,691],{"id":690},"grant-boss-permissions","Grant boss permissions",[15,693,694,695,698,699,646],{},"Run ",[25,696,697],{},"/setboss"," once for the highest police grade after a fresh installation or after clearing ",[25,700,701],{},"sky_job_permissions",[15,703,704,705,708,709,646],{},"For example, a police job whose highest grade is ",[25,706,707],{},"5"," should be configured with ",[25,710,711],{},"/setboss police 5",[44,713,715],{"id":714},"configure-the-job","Configure the job",[15,717,718,719,722,723,726,727,731],{},"Restart the server, run ",[25,720,721],{},"/jobconfig",", and select ",[123,724,725],{},"Police Jobs",". Configure jobs and enabled systems before placing station points. See the ",[135,728,730],{"href":729},"./configuration","Configuration"," page for the full workflow.",[44,733,735],{"id":734},"build-the-stations","Build the stations",[15,737,738,739,743],{},"Stations, jails, and social work zones are placed through the Job Configurator. Follow the ",[135,740,742],{"href":741},"./station-setup","Station Setup"," page to place the duty terminal, storage, and enforcement points. Vehicle impounding uses the configured garage integration instead of Police Job impound lots.",[10,745,747],{"id":746},"first-start-checklist","First-start checklist",[19,749,750,753,758,761,764,767],{},[22,751,752],{},"The server console shows no missing dependency or database errors.",[22,754,755,757],{},[25,756,721],{}," lists Police Jobs.",[22,759,760],{},"The police job and its highest grade exist in the framework.",[22,762,763],{},"Required items exist in the selected metadata-capable inventory.",[22,765,766],{},"The police tablet shows the expected applications.",[22,768,769],{},"A test officer can go on duty, restrain a suspect, and complete a jail sentence.",[771,772,775],"callout",{"color":773,"icon":774},"info","i-lucide-info",[15,776,777,778,780,781,784,785,788],{},"Most day-to-day settings are managed through ",[25,779,721],{}," when ",[25,782,783],{},"Config.UseJobConfigurator"," is enabled. Static and advanced settings remain in the open ",[25,786,787],{},"config"," directory.",[10,790,792],{"id":791},"next-steps","Next steps",[19,794,795,799,803,807],{},[22,796,797],{},[135,798,730],{"href":729},[22,800,801],{},[135,802,742],{"href":741},[22,804,805],{},[135,806,687],{"href":686},[22,808,809],{},[135,810,474],{"href":473},[10,812,286],{"id":813},"support",[15,815,816],{},"Need help? Our support team is always ready to assist.",[818,819],"u-button",{"color":820,"icon":821,"label":822,"target":823,"to":824,"variant":825},"neutral","i-simple-icons-discord","Join Discord","_blank","https://discord.gg/sky-systems","subtle",[827,828,829],"style",{},"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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":72,"searchDepth":79,"depth":85,"links":831},[832,833,834,835,836],{"id":12,"depth":85,"text":13},{"id":38,"depth":85,"text":39},{"id":746,"depth":85,"text":747},{"id":791,"depth":85,"text":792},{"id":813,"depth":85,"text":286},"Install Sky Police Job, prepare its dependencies and database, and complete the first server setup.","md",null,{},true,"/docs/jobs/policejob/setup/installation",{"title":5,"description":837},{"loc":842},"1.docs/0.jobs/1.policejob/2.setup/1.installation","nNrct_7wTcE_1V9Pb8HM2ztQivNoojPRNH9dAFU_9-U",[848,853],{"title":849,"path":850,"stem":851,"description":852,"children":-1},"Overview","/docs/jobs/policejob/overview","1.docs/0.jobs/1.policejob/1.overview","Start here for an overview of Sky Police Job, its main systems, setup path, and documentation sections.",{"title":730,"path":854,"stem":855,"description":856,"children":-1},"/docs/jobs/policejob/setup/configuration","1.docs/0.jobs/1.policejob/2.setup/2.configuration","Understand the Job Configurator, how to create a police job, feature toggles, and the safe configuration workflow.",[],1785073560422]