Permissions
Every API key carries an explicit allow-list of actions it can perform. Calls to actions outside that list are rejected with 403 PERMISSION_DENIED. Permissions are evaluated server-side and changes take effect immediately on the next request — no caching, no propagation delay.
Key types
| Type | Source | Allowed actions | Lifecycle |
|---|---|---|---|
| plugin | Auto-minted when you create a Server in the dashboard. Lives in the plugin config.json. | Locked to the 12 actions the Rust / Oxide plugin actually calls (see below). The set cannot be edited. | Cannot be deleted directly — only removed when its Server is deleted. Regenerate rotates the key in place. |
| bot | Auto-minted for the official SimpleLinks bot the first time it hits a platform endpoint. | * (full platform scope). Not callable from your code; documented for completeness. | Managed by the platform. Not deletable or rotatable from the dashboard. |
| custom | Created manually on the API Keys page. Standard / Pro plans only. | Any subset of the five groups below, or specific individual actions via the Advanced picker. | Freely regenerate (old key dies immediately) or delete. |
Permission groups
Five logical bundles cover every action. Granting a group is equivalent to granting every action listed under it. Custom keys can mix groups and individual actions.
Resolve Steam IDs, Discord IDs, names, Nitro status, group membership. Never mutates state. Safe for analytics dashboards and read-only integrations.
findBySteam, findByDiscord, discordCheck, isLinkedSteamBulk, steamChecks, nitroChecks, groupChecks, getSteam, getSteamBulk, getDiscord, count, listAllLinked, listNitro
Mutate linked-user fields: Discord roles, Nitro flag, cached Steam name, Oxide / Carbon group lists. Grants the ability to change what your guild members see in-game.
update, updateNitro, updateNitroBulk, updateSteam, updateOxideGroups, updateOxideGroupsBulk
Power the nickname / role / Oxide-group sync loops. Read what is pending, write back what was applied. The plugin polls these endpoints on a timer.
pendingNicknames, confirmNicknameSync, listAllNicknames, pendingRoles, confirmRoleSync, setOxideGroupFromDiscord, getPendingOxideChanges, getPendingOxideChangesBulk
Unlink users and clear queued sync work. Destructive — grant carefully. Combine with sync when running a full reconciliation loop end-to-end.
remove, clearPendingOxideChanges, clearPendingOxideChangesBulk
Read the resolved Org / Guild / Server configuration. Used by plugins on startup to learn role mappings, sync flags, and Steam group.
getConfig
Plugin key allow-list
The auto-minted Plugin key is locked to exactly the 12 actions the Rust / Oxide plugin needs. This is the minimum surface required for full Steam ↔ Discord ↔ Oxide sync. Any other action returns 403 PERMISSION_DENIED.
- config:
getConfig - lookup:
steamChecks,isLinkedSteamBulk,nitroChecks,groupChecks - update:
updateSteam,updateOxideGroups,updateOxideGroupsBulk - sync:
getPendingOxideChanges,getPendingOxideChangesBulk - cleanup:
clearPendingOxideChanges,clearPendingOxideChangesBulk
Denied-call response
{
"error": "PERMISSION_DENIED",
"action": "remove"
}
HTTP status: 403. The body always names the exact action that was rejected so you can fix the picker or the calling code without guessing.
Changing a Custom key's permissions
Permissions are fixed at create time. To change them, Regenerate the key (the old key dies immediately) and pick the new groups in the modal. The new key is shown to you once.