Nord Staff Integration Nord Staff Integration Automatic admin-access bridge plus shared item/provider APIs. Applies to: Nord Inventory v2.0.0 Nord Staff Integration Admin access bridge Nord Inventory now exposes the exact access-export pattern detected automatically by current nord_staff builds: exports['nord_inventory']:HasAdminAccess(playerId) exports['nord_inventory']:GiveAdminAccess(playerId) exports['nord_inventory']:RemoveAdminAccess(playerId) No change is required in nord_staff. When Dar acesso is used, Nord Inventory grants the configured role and all server-side Admin Studio permission checks use it immediately. License-based grants are persisted automatically in nord_inventory_admin_access, so they survive resource/server restarts. Removing access removes only the Staff-managed grant; ACE and static license roles are never changed. Configure the bridge in config/admin.lua: Config.AdminAccess.NordStaffBridge = { Enabled = true, Role = 'admin', -- developer | admin | owner AllowedResources = { 'nord_staff' } } Nord Inventory exposes a canonical API intended for Nord Staff and other admin resources. The integration never uses a visible item label as the spawn ID. Canonical identity Every external item object follows: { name = 'ammo-rifle2', -- internal/spawn name id = 'ammo-rifle2', internalName = 'ammo-rifle2', label = 'Rifle Ammo Mk II', -- visible text only title = 'Rifle Ammo Mk II' } name is always the real Nord Inventory identifier. Recommended Nord Staff exports Integration information local info = exports['nord_inventory']:GetIntegrationInfo() Resolve any incoming item value local internal = exports['nord_inventory']:ResolveItemName('mg_ammo') -- ammo-rifle2 The resolver accepts canonical IDs, configured aliases, and unique labels. Aliases are owner-editable in: config/items.lua under Config.ExternalItemAliases. Item catalogue local items = exports['nord_inventory']:GetItemCatalog() Each entry includes canonical item identity plus image, imageUrl and imageFile. Item image local url = exports['nord_inventory']:GetItemImage('bandage') local file = exports['nord_inventory']:GetItemImage('bandage', 'file') local data = exports['nord_inventory']:GetItemImage('bandage', 'data') Local item URLs use: https://cfx-nui-nord_inventory/web/images/items/ Remote HTTP/HTTPS item images are returned unchanged. Inventory snapshot local snapshot = exports['nord_inventory']:GetInventorySnapshot(playerId) The snapshot is a slot-sorted array designed for Staff/Admin UIs. Every item uses the canonical internal name. Add / remove exports['nord_inventory']:AddItem(playerId, internalName, amount, metadata, slot) exports['nord_inventory']:RemoveItem(playerId, internalName, amount, metadata, slot) The Nord Staff bridge resolves the item through Nord before either operation. Why this fixes Staff spawn errors Older bridges commonly mixed: name = item.label id = item.name That makes a Staff UI send a display title instead of the spawn identifier. The new contract keeps visible text in label/ title and reserves name for the canonical Nord ID.