Skip to content

Permissions

Permissions follow the pattern action:resource (for example create:inbound-order). Users receive permissions through the roles assigned to them.

When an endpoint is protected, the system looks for a role permission whose value exactly matches the required action:resource string, or the single super-permission *:*.

This has two important consequences that differ from many RBAC systems:

  • There is no manage expansion. A manage:warehouse permission does not grant create:warehouse, read:warehouse, etc. Each action must be granted explicitly.
  • There are no partial wildcards. read:* or *:warehouse are not honoured. The only wildcard that works is the exact string *:*, which grants everything.

So in practice you grant the four concrete actions you need, or you grant *:* for a full administrator.

Only four actions are enforced, plus the *:* super-permission.

ActionDescription
createCreate new records
readView records
updateModify existing records (includes workflow steps such as start-receiving, reserve, complete)
deleteRemove records
*:*Full access to everything (super-administrator)

A manage action and a scan action exist in the permission catalogue and can be assigned to a role, but no endpoint currently checks for them — they grant nothing on their own. Don’t rely on them.

These are the resources that are actually enforced by an endpoint, and which actions are available for each. (Some entities exist in the system but have no permission check — see the note below.)

ResourceActions enforcedDescription
warehousecreate, read, update, deleteWarehouse entities
warehouse-itemreadItem enrollments per warehouse (create/update/delete are not permission-checked)
itemcreate, read, update, deleteGlobal item catalog
categorycreate, read, update, deleteItem categories
zonecreate, read, update, deleteWarehouse zones
aislecreate, read, update, deleteAisles
rackcreate, read, update, deleteRacks
shelfcreate, read, update, deleteShelves
bincreate, read, update, deleteStorage bins
lotcreate, read, updateLots / batches (no delete)
inbound-ordercreate, read, update, deleteInbound (receiving) orders — lines are managed through the order
outbound-ordercreate, read, update, deleteOutbound (dispatch) orders — lines are managed through the order
transfer-ordercreate, read, update, deleteInternal transfer orders — lines are managed through the order
stock-countcreate, read, update, deleteStock count sessions
inventory-transactioncreate, read, update, deleteInventory transaction ledger
serialized-unitreadSerialized / RFID unit records
usercreate, read, update, deleteUser accounts
rolecreate, read, update, deleteRoles
permissioncreate, read, update, deletePermission records
role-permissioncreate, read, update, deleteRole-permission assignments
audit-logreadAudit log entries

Unguarded operations. Stock adjustments (stock-adjustment) and the create/update/delete of warehouse-item enrollments currently have no permission check — any authenticated user can perform them. Order lines (inbound-line, outbound-line, transfer-line) are not checked individually; they are created and edited through their parent order, so the order permission is what matters.

create:inbound-order
read:inbound-order
update:inbound-order
read:warehouse-item
read:bin
read:lot

(update:inbound-order covers start-receiving, recording receipts, and completing the order.)

create:outbound-order
read:outbound-order
update:outbound-order
read:warehouse-item
read:bin

(update:outbound-order covers reserving and completing the order.)

create:transfer-order
read:transfer-order
update:transfer-order
read:warehouse-item
read:bin

(update:transfer-order covers completing the transfer.)

create:stock-count
read:stock-count
update:stock-count
read:warehouse-item
read:bin

(update:stock-count covers recording counts and completing the session.)

Grant the concrete actions explicitly — manage:* does nothing.

create:warehouse-item
read:warehouse-item
update:warehouse-item
create:category
read:category
update:category
delete:category
create:stock-count
read:stock-count
update:stock-count
delete:stock-count
read:inventory-transaction
read:audit-log
create:zone
read:zone
update:zone
delete:zone
create:bin
read:bin
update:bin
delete:bin
create:rack
read:rack
update:rack
delete:rack
create:shelf
read:shelf
update:shelf
delete:shelf
create:aisle
read:aisle
update:aisle
delete:aisle
*:*