> For the complete documentation index, see [llms.txt](https://mango-5m.gitbook.io/mango5m-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mango-5m.gitbook.io/mango5m-docs/resources/mango-prison/developer-guide/server-exports.md).

# Server Exports

The full server (and client) export reference.

`target` accepts a **server id** (online) or a **character identifier** (works offline) unless noted.

## Sentences

```lua
exports.mango_prison:JailPlayer(target, minutes, opts)   -- opts { reason, officer, cell }
exports.mango_prison:ReleasePlayer(target, reason)
exports.mango_prison:IsPlayerInPrison(target)            -- boolean
exports.mango_prison:GetRemainingSentence(target)        -- seconds (0 if not jailed)
exports.mango_prison:SetRemainingSentence(target, seconds)
exports.mango_prison:AddSentence(target, minutes, reason)
exports.mango_prison:ReduceSentence(target, minutes, reason)
```

## Cells, solitary & property

```lua
exports.mango_prison:GetPrisonerCell(target)             -- 'A3' or nil
exports.mango_prison:MovePrisoner(target, cellId)
exports.mango_prison:SendToSolitary(target, minutes)
exports.mango_prison:TakePlayerProperty(src)
exports.mango_prison:ReturnPlayerProperty(src)
```

## Lockdowns, doors & announcements

```lua
exports.mango_prison:StartLockdown(scope)   -- 'prison' | 'block:7' | 'cell:7-3' | 'yard' | 'medical' | 'visitation'
exports.mango_prison:EndLockdown(scope)
exports.mango_prison:IsLockdownActive(scope)             -- nil scope = "anything?"

exports.mango_prison:SetRiot(true)                       -- seals every cell gate
exports.mango_prison:IsRiotActive()                      -- boolean

exports.mango_prison:SetCellLocked('7-3', true)          -- false unlocks, and
                                                         -- overrides a lockCells slot
exports.mango_prison:IsCellLocked('7-3')                 -- effective state
exports.mango_prison:IsVisitationOpen()                  -- inside a visiting-hours window?

exports.mango_prison:SendAnnouncement({ text = 'Meal time.', sound = 'chime' })
exports.mango_prison:StartHeadcount()
```

## Behaviour & visitation

```lua
exports.mango_prison:GetBehaviour(target)                -- 0-100 or nil
exports.mango_prison:SetBehaviour(target, value)
exports.mango_prison:AddBehaviour(target, delta, reason)
exports.mango_prison:StartVisitation(visitorSrc, inmateIdentifier)
exports.mango_prison:CancelVisitation(inmateIdentifier)
exports.mango_prison:SetVisitationBan(target, reason)    -- reason required
exports.mango_prison:ClearVisitationBan(target)
```

## Queries

```lua
exports.mango_prison:GetPrisoners()          -- array of inmate summaries
exports.mango_prison:GetInmate(identifierOrNumber)
exports.mango_prison:GetPrisonStats()        -- { total, online, lockdowns }
```

## Client exports

```lua
exports.mango_prison:IsInPrison()            -- boolean
exports.mango_prison:GetPrisonData()         -- { number, cellId, status } or nil
exports.mango_prison:GetCurrentZone()        -- 'yard' | 'canteen' | ... | nil
```
