> ## Documentation Index
> Fetch the complete documentation index at: https://docs.redutzu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Server exports

> Exports you can call from your own server scripts.

Call these from a server script, such as `exports['redutzu-mdt']:Open(source)`.Most exports take an optional `source` as their last argument:- **With `source`**, the export acts as that officer. It checks their permissions and department access like the MDT does, and logs them as the author.
- **Without `source`**, it runs as an automated action with no checks.Exports that change data return `ok` (or the new id), then an `errKey` translation key and its `params` when they fail.> [!NOTE]
>
> Some exports have their own page: [`RegisterHook` and `RemoveHook`](https://docs.redutzu.com/redutzu-mdt/api-reference/hooks), and [`CanAccessRecord`](https://docs.redutzu.com/redutzu-mdt/guides/departments).## MDT### OpenOpen the MDT for a player from the server.```lua theme={null}
exports['redutzu-mdt']:Open(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetRegisteredPagesList the custom pages registered with `RegisterPage`.```lua theme={null}
local registeredPages = exports['redutzu-mdt']:GetRegisteredPages()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Officers### GetOfficerGet a connected officer.```lua theme={null}
local officer = exports['redutzu-mdt']:GetOfficer(key)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetOfficerListList connected officers.```lua theme={null}
local officerList = exports['redutzu-mdt']:GetOfficerList(job, onDuty)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetOfficerCountCount connected officers.```lua theme={null}
local officerCount = exports['redutzu-mdt']:GetOfficerCount(job, onDuty)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### IsOfficerOnDutyCheck whether an officer is on duty.```lua theme={null}
local isOfficerOnDuty = exports['redutzu-mdt']:IsOfficerOnDuty(key)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetOfficerDutyPut an officer on or off duty.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:SetOfficerDuty(source, duty)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetOfficerStatusChange an officer's status.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:SetOfficerStatus(source, status, automatic)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetNextCallsignGet the first free callsign for a rank. It follows the rank's format from `Config.Callsign.Rules`, or `<grade>-###` when no rule covers it.```lua theme={null}
local nextCallsign = exports['redutzu-mdt']:GetNextCallsign(identifier, job, grade)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Units### GetUnitsList a department's units. Permanent units come first, then by name.```lua theme={null}
local units = exports['redutzu-mdt']:GetUnits(job)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetUnitGet a unit.```lua theme={null}
local unit = exports['redutzu-mdt']:GetUnit(id)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetOfficerUnitGet the unit an officer is in.```lua theme={null}
local officerUnit = exports['redutzu-mdt']:GetOfficerUnit(key)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetUnitStatusChange a unit's status, and every on-duty member's with it.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:SetUnitStatus(id, status, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Employees### SearchEmployeesGet one page of a department's employees, the same list the **Employees** page shows.```lua theme={null}
local results = exports['redutzu-mdt']:SearchEmployees(query, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetEmployeeGet an employee's full profile, as shown on the **Overview** tab.```lua theme={null}
local detail = exports['redutzu-mdt']:GetEmployee(key, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetLeaderboardRank a department by hours on duty, highest first. Returns up to 50 employees.```lua theme={null}
local leaderboard = exports['redutzu-mdt']:GetLeaderboard(job, period, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetEmployeeShiftsGet the shifts an employee started in a time range, newest first.```lua theme={null}
local employeeShifts = exports['redutzu-mdt']:GetEmployeeShifts(identifier, from, to, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetEmployeeRecordsGet the incidents, evidence, warrants and BOLOs an employee filed or was listed on in a time range, newest first.```lua theme={null}
local employeeRecords = exports['redutzu-mdt']:GetEmployeeRecords(identifier, from, to, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetEmployeeRankHistoryGet an employee's hires, promotions and demotions, oldest first.```lua theme={null}
local employeeRankHistory = exports['redutzu-mdt']:GetEmployeeRankHistory(identifier, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RecruitEmployeeHire an online, unemployed citizen into a department.```lua theme={null}
local ok, reason, params = exports['redutzu-mdt']:RecruitEmployee(identifier, job, grade, callsign, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetEmployeeGradePromote or demote an employee within their department.```lua theme={null}
local ok, reason = exports['redutzu-mdt']:SetEmployeeGrade(identifier, grade, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetEmployeeCallsignChange an employee's callsign.```lua theme={null}
local ok, reason, params = exports['redutzu-mdt']:SetEmployeeCallsign(identifier, callsign, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetEmployeeBadgeChange an employee's badge number. Badge numbers are unique within a department.```lua theme={null}
local ok, reason = exports['redutzu-mdt']:SetEmployeeBadge(identifier, badge, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### FireEmployeeFire an employee. They're moved to the `unemployed` job.```lua theme={null}
local ok, reason = exports['redutzu-mdt']:FireEmployee(identifier, fireReason, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Strikes### GetEmployeeStrikesGet an employee's strikes in their current department, newest first.```lua theme={null}
local employeeStrikes = exports['redutzu-mdt']:GetEmployeeStrikes(identifier, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetStrikeGet one strike.```lua theme={null}
local strike = exports['redutzu-mdt']:GetStrike(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AddStrikeGive an employee a strike. They get a notification.```lua theme={null}
local strike, errKey = exports['redutzu-mdt']:AddStrike(identifier, reason, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RemoveStrikeRemove a strike.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:RemoveStrike(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Reviews### GetEmployeeReviewsGet the reviews written about an employee, newest first. Returns up to 100.```lua theme={null}
local employeeReviews = exports['redutzu-mdt']:GetEmployeeReviews(identifier, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetReviewGet one review.```lua theme={null}
local review = exports['redutzu-mdt']:GetReview(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateReviewWrite a review about an employee.```lua theme={null}
local id, errKey = exports['redutzu-mdt']:CreateReview(identifier, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateReviewEdit a review. Fields you leave out keep their value.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdateReview(reviewId, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteReviewDelete a review.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteReview(reviewId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## HR notes### GetEmployeeHRNotesGet an employee's HR notes with their follow-ups, newest first. Returns up to 100.```lua theme={null}
local employeeHRNotes = exports['redutzu-mdt']:GetEmployeeHRNotes(identifier, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetHRNoteGet one HR note with its follow-ups.```lua theme={null}
local hRNote = exports['redutzu-mdt']:GetHRNote(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateHRNoteAdd an HR note to an employee.```lua theme={null}
local id, errKey = exports['redutzu-mdt']:CreateHRNote(identifier, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateHRNoteEdit an HR note or change its status. Fields you leave out keep their value.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdateHRNote(noteId, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteHRNoteDelete an HR note and its follow-ups.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteHRNote(noteId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Certifications### GetCertificationTypesList a department's certification types.```lua theme={null}
local certificationTypes = exports['redutzu-mdt']:GetCertificationTypes(job, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetCertificationTypeGet one certification type.```lua theme={null}
local certificationType = exports['redutzu-mdt']:GetCertificationType(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateCertificationTypeCreate a certification type.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:CreateCertificationType(job, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateCertificationTypeEdit a certification type.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdateCertificationType(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteCertificationTypeDelete a certification type. Every employee holding it loses it.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteCertificationType(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetEmployeeCertificationsGet the certifications an employee holds, in the order they got them.```lua theme={null}
local employeeCertifications = exports['redutzu-mdt']:GetEmployeeCertifications(identifier, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GrantCertificationGive an employee a certification. Granting one they already hold still succeeds.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:GrantCertification(identifier, certificationTypeId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RevokeCertificationTake a certification from an employee.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:RevokeCertification(identifier, certificationTypeId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Achievements### GetAchievementsList a department's achievements.```lua theme={null}
local achievements = exports['redutzu-mdt']:GetAchievements(job, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetAchievementGet one achievement.```lua theme={null}
local achievement = exports['redutzu-mdt']:GetAchievement(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateAchievementCreate an achievement.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:CreateAchievement(job, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateAchievementEdit an achievement.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdateAchievement(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteAchievementDelete an achievement.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteAchievement(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Department### HasAccessCheck whether a player can use the MDT, and optionally whether they have a permission.```lua theme={null}
local allowed, error = exports['redutzu-mdt']:HasAccess(source, permission, options)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetJobPermissionsGet a department's permissions, grouped by the grade that unlocks them.```lua theme={null}
local jobPermissions = exports['redutzu-mdt']:GetJobPermissions(job)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetPermissionRankSet the lowest grade that unlocks one or more permissions, or take them away from every grade.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:SetPermissionRank(job, permissions, grade, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### ReloadPermissionsRead `config/permissions.json` again and refresh every client. Use it after editing the file by hand.```lua theme={null}
exports['redutzu-mdt']:ReloadPermissions(job)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AdjustSocietyFundsMove money between an officer and their department's society account.```lua theme={null}
local ok, reason, params = exports['redutzu-mdt']:AdjustSocietyFunds(source, txType, amount, reason)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetOperationsAnalyticsGet the stats shown on **Management** for a department and time range: records, charges, shifts and finances.```lua theme={null}
local operationsAnalytics = exports['redutzu-mdt']:GetOperationsAnalytics(filters, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetAdminSettingChange a setting from the admin panel.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:SetAdminSetting(key, value, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### ResetAdminSettingReset an admin panel setting to its value in the config files.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:ResetAdminSetting(key, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Dispatch### CreateDispatchCallSend a dispatch call to officers, from a robbery script or any other resource.```lua theme={null}
local result, errKey = exports['redutzu-mdt']:CreateDispatchCall(payload, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetDispatchCallGet an open call.```lua theme={null}
local call = exports['redutzu-mdt']:GetDispatchCall(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetDispatchCallsList open calls.```lua theme={null}
local dispatchCalls = exports['redutzu-mdt']:GetDispatchCalls(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AttachUnitToDispatchCallAttach a callsign to a call.```lua theme={null}
local call, errKey = exports['redutzu-mdt']:AttachUnitToDispatchCall(id, callsign, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DetachUnitFromDispatchCallRemove a callsign from a call.```lua theme={null}
local call, errKey = exports['redutzu-mdt']:DetachUnitFromDispatchCall(id, callsign, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AcknowledgeDispatchCallMark a call as seen by an officer. Calling it again removes the mark.```lua theme={null}
local call, errKey = exports['redutzu-mdt']:AcknowledgeDispatchCall(source, id)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AddDispatchCallNoteAdd a note to a call's timeline.```lua theme={null}
local call, errKey = exports['redutzu-mdt']:AddDispatchCallNote(id, note, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### BumpDispatchCallPriorityRaise a call's priority one step. A `high` call stays `high`.```lua theme={null}
local call, errKey = exports['redutzu-mdt']:BumpDispatchCallPriority(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### ResolveDispatchCallClose a call and move it to the history.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:ResolveDispatchCall(id, cause, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetDispatchAnalyticsGet the dispatch stats shown on **Management**: calls taken, response times and work per officer and unit.```lua theme={null}
local dispatchAnalytics = exports['redutzu-mdt']:GetDispatchAnalytics(filters, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Radio codes### GetRadioCodesList every radio code, in the order shown in the MDT.```lua theme={null}
local radioCodes = exports['redutzu-mdt']:GetRadioCodes()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetRadioCodeGet one radio code.```lua theme={null}
local radioCode = exports['redutzu-mdt']:GetRadioCode(id)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateRadioCodeAdd a radio code to the end of the list.```lua theme={null}
local id, errKey = exports['redutzu-mdt']:CreateRadioCode(data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateRadioCodeEdit a radio code.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdateRadioCode(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteRadioCodeDelete a radio code.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteRadioCode(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Notifications### SendNotificationSend a notification to one or more officers. It shows in their MDT notification list.```lua theme={null}
local sent = exports['redutzu-mdt']:SendNotification(identifiers, notification)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Chat### SendChatMessagePost a text message as an officer.```lua theme={null}
local result = exports['redutzu-mdt']:SendChatMessage(source, channel, content, options)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SendChatLocationPost a map location as an officer.```lua theme={null}
local result = exports['redutzu-mdt']:SendChatLocation(source, channel, location, options)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SendChatImagePost an image that's already hosted.```lua theme={null}
local result = exports['redutzu-mdt']:SendChatImage(source, channel, image, options)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### ShareChatRecordPost a card that links to a record, such as a citizen or an incident.```lua theme={null}
local result = exports['redutzu-mdt']:ShareChatRecord(source, channel, record, options)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### PostChatSystemMessagePost a message from the system instead of an officer.```lua theme={null}
local result = exports['redutzu-mdt']:PostChatSystemMessage(channel, key, data, content)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### EditChatMessageChange the text of a message.```lua theme={null}
local result = exports['redutzu-mdt']:EditChatMessage(messageId, content, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteChatMessageDelete a message.```lua theme={null}
local result = exports['redutzu-mdt']:DeleteChatMessage(messageId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateChatLocationMove a location message, or stop a live share.```lua theme={null}
local result = exports['redutzu-mdt']:UpdateChatLocation(messageId, location, live, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### ReactChatMessageAdd an emoji reaction as an officer. Calling it again with the same emoji removes it.```lua theme={null}
local result = exports['redutzu-mdt']:ReactChatMessage(source, messageId, emoji)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateChatPollPost a poll as an officer.```lua theme={null}
local result = exports['redutzu-mdt']:CreateChatPoll(source, channel, question, optionLabels)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### VoteChatPollVote in a poll as an officer. Voting for the same option again removes the vote.```lua theme={null}
local result = exports['redutzu-mdt']:VoteChatPoll(source, messageId, optionId)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### PinChatMessagePin a message to the top of its channel. With `source`, the officer needs `chat.pin`.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:PinChatMessage(messageId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UnpinChatMessageUnpin a message. With `source`, the officer needs `chat.pin`.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:UnpinChatMessage(messageId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetChatPinnedMessagesGet the pinned messages of a channel.```lua theme={null}
local chatPinnedMessages = exports['redutzu-mdt']:GetChatPinnedMessages(channel, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### MarkChatReadMark a channel as read for an officer.```lua theme={null}
local result = exports['redutzu-mdt']:MarkChatRead(source, channel, messageId)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### MarkChatUnreadMark a channel unread for an officer, starting at a message.```lua theme={null}
local result = exports['redutzu-mdt']:MarkChatUnread(source, messageId)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetChatUnreadGet an officer's unread counts.```lua theme={null}
local entries = exports['redutzu-mdt']:GetChatUnread(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetChatChannelGet a channel or a DM.```lua theme={null}
local chatChannel = exports['redutzu-mdt']:GetChatChannel(channel, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetChatMessagesGet one page of a channel's messages, oldest first.```lua theme={null}
local chatMessages = exports['redutzu-mdt']:GetChatMessages(channel, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetChatMessageGet one message.```lua theme={null}
local chatMessage = exports['redutzu-mdt']:GetChatMessage(messageId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### OpenChatDmOpen a direct message with another officer, creating it if needed.```lua theme={null}
local result = exports['redutzu-mdt']:OpenChatDm(source, targetIdentifier)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetChatDmsList an officer's DMs.```lua theme={null}
local channels = exports['redutzu-mdt']:GetChatDms(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### IsChatMessageAuthorCheck whether an officer wrote a message.```lua theme={null}
local isChatMessageAuthor = exports['redutzu-mdt']:IsChatMessageAuthor(source, messageId)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Collaboration### IsCollabEnabledCheck whether collaboration is turned on.```lua theme={null}
local enabled, reason = exports['redutzu-mdt']:IsCollabEnabled()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateCollabRoomCreate a room. With `source`, that officer owns it.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:CreateCollabRoom(options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetCollabRoomGet a room.```lua theme={null}
local collabRoom = exports['redutzu-mdt']:GetCollabRoom(docId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetCollabRoomsList the rooms an officer can see.```lua theme={null}
local collabRooms = exports['redutzu-mdt']:GetCollabRooms(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### JoinCollabRoomAdd an officer to a room.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:JoinCollabRoom(source, docId)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### LeaveCollabRoomRemove an officer from a room.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:LeaveCollabRoom(source, docId)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### InviteCollabMemberInvite an officer to a room. Unanswered invites expire after `Config.Collaboration.Invites.Expiry` seconds.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:InviteCollabMember(docId, target, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### KickCollabMemberRemove a member, and optionally ban them from rejoining.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:KickCollabMember(docId, targetSource, permanent, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### TransferCollabOwnershipGive a room to another member.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:TransferCollabOwnership(docId, targetSource, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CloseCollabRoomClose a room for everyone.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:CloseCollabRoom(docId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### IsCollabMemberCheck whether an officer is in a room.```lua theme={null}
local isCollabMember = exports['redutzu-mdt']:IsCollabMember(source, docId)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### IsCollabRoomOwnerCheck whether an officer owns a room.```lua theme={null}
local isCollabRoomOwner = exports['redutzu-mdt']:IsCollabRoomOwner(source, docId)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Citizens### SearchCitizensGet one page of citizens, the same list the **Citizens** page shows.```lua theme={null}
local results = exports['redutzu-mdt']:SearchCitizens(query, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetCitizenGet a citizen's profile with everything on their page.```lua theme={null}
local citizen = exports['redutzu-mdt']:GetCitizen(identifier, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateCitizenChange a citizen's photo or profile fields.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:UpdateCitizen(identifier, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RegisterCitizenCreate or update a citizen's profile, for servers that don't fill it from the framework.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:RegisterCitizen(identifier, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetCitizenAlertsGet a citizen's active warrants and BOLOs, license state and tags, such as for an ID check.```lua theme={null}
local citizenAlerts = exports['redutzu-mdt']:GetCitizenAlerts(identifier, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetLicensePointsGet a citizen's license points.```lua theme={null}
local licensePoints = exports['redutzu-mdt']:GetLicensePoints(identifier, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AddLicensePointsAdd or remove license points. Reaching the threshold suspends the license.```lua theme={null}
local result, errKey = exports['redutzu-mdt']:AddLicensePoints(identifier, points, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### IssuePenaltyCharge a citizen with penal articles: fines, jail, community service and points.```lua theme={null}
local id, errKey = exports['redutzu-mdt']:IssuePenalty(target, charges, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Prisoners### GetPrisonersList everyone serving a sentence.```lua theme={null}
local prisoners, errKey = exports['redutzu-mdt']:GetPrisoners(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetCitizenPrisonStatusCheck whether a citizen is in jail, and their remaining time.```lua theme={null}
local citizenPrisonStatus, errKey = exports['redutzu-mdt']:GetCitizenPrisonStatus(identifier, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetCitizenPrisonHistoryGet a citizen's sentences, newest first.```lua theme={null}
local citizenPrisonHistory, errKey = exports['redutzu-mdt']:GetCitizenPrisonHistory(identifier, offset, limit, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### ReleasePrisonerRelease a prisoner early.```lua theme={null}
local released, errKey = exports['redutzu-mdt']:ReleasePrisoner(identifier, reason, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetPrisonerSentenceChange a prisoner's remaining time.```lua theme={null}
local changed, errKey = exports['redutzu-mdt']:SetPrisonerSentence(identifier, time, reason, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Vehicles### SearchVehiclesGet one page of vehicles, the same list the **Vehicles** page shows.```lua theme={null}
local results = exports['redutzu-mdt']:SearchVehicles(query, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetVehicleGet a vehicle with everything on its page.```lua theme={null}
local vehicle = exports['redutzu-mdt']:GetVehicle(plate, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateVehicleChange a vehicle's status, photo or registration fields.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:UpdateVehicle(plate, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RegisterVehicleCreate or update a vehicle record, for servers that don't fill it from the framework.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:RegisterVehicle(plate, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetVehicleModificationsList a vehicle's recorded modifications.```lua theme={null}
local vehicleModifications = exports['redutzu-mdt']:GetVehicleModifications(plate, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AddVehicleModificationRecord a modification on a vehicle.```lua theme={null}
local id, errKey, params = exports['redutzu-mdt']:AddVehicleModification(plate, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RemoveVehicleModificationRemove a recorded modification.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:RemoveVehicleModification(plate, modificationId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Properties### SearchPropertiesGet one page of properties, the same list the **Properties** page shows.```lua theme={null}
local results = exports['redutzu-mdt']:SearchProperties(query, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetPropertyGet a property with everything on its page.```lua theme={null}
local property = exports['redutzu-mdt']:GetProperty(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Weapons### SearchWeaponsGet one page of weapons, the same list the **Weapons** page shows.```lua theme={null}
local results = exports['redutzu-mdt']:SearchWeapons(query, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetWeaponGet a weapon with everything on its page.```lua theme={null}
local weapon = exports['redutzu-mdt']:GetWeapon(serial, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateWeaponRegister a weapon. Without a serial, one is generated.```lua theme={null}
local serial, errKey, params = exports['redutzu-mdt']:CreateWeapon(data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateWeaponChange a weapon's status.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdateWeapon(serial, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GenerateWeaponSerialNumberGenerate a free weapon serial number.```lua theme={null}
local serial = exports['redutzu-mdt']:GenerateWeaponSerialNumber()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Penal code### GetPenalCodeGet the full penal code, with its categories and articles.```lua theme={null}
local penalCode = exports['redutzu-mdt']:GetPenalCode()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetPenalCategoryGet a penal code category with its articles.```lua theme={null}
local penalCategory = exports['redutzu-mdt']:GetPenalCategory(id)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdatePenalCategoryEdit a penal code category.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdatePenalCategory(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeletePenalCategoryDelete a penal code category. It must have no articles.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeletePenalCategory(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetPenalArticleGet one penal code article.```lua theme={null}
local penalArticle = exports['redutzu-mdt']:GetPenalArticle(id)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdatePenalArticleEdit a penal code article.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdatePenalArticle(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeletePenalArticleDelete a penal code article.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeletePenalArticle(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Incidents### SearchIncidentsGet one page of incidents, the same list the **Incidents** page shows.```lua theme={null}
local results = exports['redutzu-mdt']:SearchIncidents(query, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetIncidentGet an incident with everything on its page.```lua theme={null}
local incident = exports['redutzu-mdt']:GetIncident(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateIncidentCreate an incident with its people, vehicles, weapons, evidence and charges.```lua theme={null}
local id, errKey, params = exports['redutzu-mdt']:CreateIncident(data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateIncidentChange an incident's status or description.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdateIncident(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteIncidentDelete an incident.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteIncident(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Warrants### SearchWarrantsGet one page of warrants, the same list the **Warrants** page shows.```lua theme={null}
local results = exports['redutzu-mdt']:SearchWarrants(query, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetWarrantGet a warrant with everything on its page.```lua theme={null}
local warrant = exports['redutzu-mdt']:GetWarrant(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateWarrantCreate a search or arrest warrant.```lua theme={null}
local id, errKey, params = exports['redutzu-mdt']:CreateWarrant(data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateWarrantChange a warrant's reason or status. A served warrant's reason can't change.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:UpdateWarrant(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### ServeWarrantMark a warrant as served.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:ServeWarrant(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteWarrantDelete a warrant.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteWarrant(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Operation plans### GetOperationPlansList operation plans.```lua theme={null}
local operationPlans = exports['redutzu-mdt']:GetOperationPlans(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetOperationPlanGet one operation plan.```lua theme={null}
local operationPlan = exports['redutzu-mdt']:GetOperationPlan(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateOperationPlanCreate an operation plan, optionally linked to a warrant.```lua theme={null}
local id, errKey, params = exports['redutzu-mdt']:CreateOperationPlan(data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateOperationPlanEdit an operation plan. Fields you leave out keep their value.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:UpdateOperationPlan(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteOperationPlanDelete an operation plan.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteOperationPlan(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetOperationPlanMissionStart or end an operation plan's mission.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:SetOperationPlanMission(id, action, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AcknowledgeOperationPlanMark an operation plan as read by an officer.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:AcknowledgeOperationPlan(source, id)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## BOLOs### SearchBolosGet one page of BOLOs, the same list the **BOLOs** page shows.```lua theme={null}
local results = exports['redutzu-mdt']:SearchBolos(query, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetBoloGet a BOLO with everything on its page.```lua theme={null}
local bolo = exports['redutzu-mdt']:GetBolo(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateBoloCreate a BOLO. It needs at least one citizen or vehicle.```lua theme={null}
local id, errKey, params = exports['redutzu-mdt']:CreateBolo(data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateBoloChange a BOLO's status.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdateBolo(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AttachBoloSubjectAdd a citizen or vehicle to a BOLO.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:AttachBoloSubject(id, kind, value, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DetachBoloSubjectRemove a citizen or vehicle from a BOLO.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DetachBoloSubject(id, kind, value, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### MarkBoloLocatedMark a BOLO as located.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:MarkBoloLocated(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteBoloDelete a BOLO.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteBolo(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Evidence### SearchEvidencesGet one page of evidence, the same list the **Evidence** page shows.```lua theme={null}
local results = exports['redutzu-mdt']:SearchEvidences(query, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetEvidenceGet an evidence record with everything on its page.```lua theme={null}
local evidence = exports['redutzu-mdt']:GetEvidence(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateEvidenceLog a new evidence record with its people, vehicles, weapons, reports, tags and photos.```lua theme={null}
local id, errKey, params = exports['redutzu-mdt']:CreateEvidence(data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateEvidenceChange an evidence record's status or description. Fields you leave out keep their value.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdateEvidence(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteEvidencePermanently delete an evidence record with its links, tags, photos, notes, analyses and activity log. This can't be undone.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteEvidence(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### TransferEvidenceCustodyCheck evidence out to an officer, or return it to storage. Every transfer is written to the record's activity log.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:TransferEvidenceCustody(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RequestEvidenceAnalysisAsk the lab to analyze evidence, such as for fingerprints, DNA or ballistics.```lua theme={null}
local analysisId, errKey, params = exports['redutzu-mdt']:RequestEvidenceAnalysis(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CompleteEvidenceAnalysisRecord the result of a pending analysis. A result can only be recorded once.```lua theme={null}
local ok, errKey, params = exports['redutzu-mdt']:CompleteEvidenceAnalysis(analysisId, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetEvidenceAnalysisGet one analysis.```lua theme={null}
local evidenceAnalysis = exports['redutzu-mdt']:GetEvidenceAnalysis(analysisId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Tags### GetTagsList every tag.```lua theme={null}
local tags = exports['redutzu-mdt']:GetTags(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetTagGet one tag.```lua theme={null}
local tag = exports['redutzu-mdt']:GetTag(id)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### CreateTagCreate a tag.```lua theme={null}
local id, errKey = exports['redutzu-mdt']:CreateTag(data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### UpdateTagEdit a tag.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:UpdateTag(id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### DeleteTagDelete a tag and remove it from every record.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:DeleteTag(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetEntityTagsGet the tags on a record.```lua theme={null}
local entityTags = exports['redutzu-mdt']:GetEntityTags(entityType, entityId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AddEntityTagAdd a tag to a record. A record holds up to `Config.MaxTags` tags.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:AddEntityTag(entityType, entityId, tagId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RemoveEntityTagRemove a tag from a record.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:RemoveEntityTag(entityType, entityId, tagId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Notes and images### GetEntityNotesGet a record's notes.```lua theme={null}
local entityNotes = exports['redutzu-mdt']:GetEntityNotes(entityType, entityId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AddEntityNoteAdd a note to a record.```lua theme={null}
local id, errKey = exports['redutzu-mdt']:AddEntityNote(entityType, entityId, note, expiresAt, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RemoveEntityNoteRemove a note from a record.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:RemoveEntityNote(entityType, entityId, noteId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetEntityImagesGet a record's images.```lua theme={null}
local entityImages = exports['redutzu-mdt']:GetEntityImages(entityType, entityId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### AddEntityImageAdd an image that's already hosted to a record.```lua theme={null}
local id, errKey = exports['redutzu-mdt']:AddEntityImage(entityType, entityId, url, label, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RemoveEntityImageRemove an image from a record.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:RemoveEntityImage(entityType, entityId, imageId, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Record access### SetRecordAccessChange which departments can see a record.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:SetRecordAccess(entityType, id, data, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetRecordLinksGet the graph of records linked to a record, as shown on its **Links** tab.```lua theme={null}
local recordLinks = exports['redutzu-mdt']:GetRecordLinks(kind, id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Logs### GetActionLogGet one page of the action log shown on **Logs**.```lua theme={null}
local actionLog = exports['redutzu-mdt']:GetActionLog(filters, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### LogActionWrite an entry to the action log.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:LogAction(action, messageKey, params, metadata, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetActivityLogGet a record's activity log.```lua theme={null}
local activityLog = exports['redutzu-mdt']:GetActivityLog(entityType, entityId, options, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### LogActivityAdd an entry to a record's activity log.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:LogActivity(entityType, entityId, kind, messageKey, params, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Cameras### GetCamerasList every camera.```lua theme={null}
local cameras = exports['redutzu-mdt']:GetCameras(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetCameraGet one camera.```lua theme={null}
local camera = exports['redutzu-mdt']:GetCamera(id, source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### RepairCameraBring a camera back online, however it went down. Use it for your own repair job or minigame instead of the built-in repair kit.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:RepairCamera(id)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetOfficerBodycamTurn an officer's bodycam on or off. Officers watching it are disconnected when it goes off.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:SetOfficerBodycam(source, active)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### IsBodycamEnabledCheck whether an officer's bodycam is on.```lua theme={null}
local isBodycamEnabled = exports['redutzu-mdt']:IsBodycamEnabled(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### SetDashcamTurn the dashcam of the vehicle an officer is in on or off.```lua theme={null}
local ok, errKey = exports['redutzu-mdt']:SetDashcam(source, active)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### IsDashcamEnabledCheck whether the vehicle an officer is in has its dashcam on.```lua theme={null}
local isDashcamEnabled = exports['redutzu-mdt']:IsDashcamEnabled(source)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Radar### GetPlateAlertCheck whether a plate, or its owner, is wanted. This only reads and doesn't notify anyone.```lua theme={null}
local plateAlert = exports['redutzu-mdt']:GetPlateAlert(plate)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### ReportPlateScanReport a plate an officer's radar or ALPR just read. When it's flagged, the officer gets an alert. A high enough priority also creates a dispatch call.```lua theme={null}
local alert = exports['redutzu-mdt']:ReportPlateScan(source, plate)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

## Suspects and props### ToggleSuspectCuffCuff or uncuff a player through your configured `Config.Police.Provider`. Uncuffing also releases an escort or carry.```lua theme={null}
local result, errKey = exports['redutzu-mdt']:ToggleSuspectCuff(source, target)
```

\<table><thead><tr><th>Parameter</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>

### GetOfficerPropsList the officer props placed right now, such as cones and barriers.```lua theme={null}
local officerProps = exports['redutzu-mdt']:GetOfficerProps()
```

\<table><thead><tr><th>Return</th>
            \<th>Type</th>
            \<th>Description</th></tr></thead>
        \<tbody /></table>



This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.