API | ||
README.org |
Squad Whitelist Management
Discord Bot
Commands
-
/link
- Example:
/link 7312312312395
-
Links user's discord ID with their provided steam64
- If linked to another discord id, reject
- Use the user's discord username for their username in the API
- Example:
-
/group-link
- Example:
/group-link @Odin {group-uuid}
-
Links a Group on the API with a given discord ID for the role
- If the Discord ID already exists, inform about it but allow
- Example:
-
/list-groups
- Example:
/list-groups
-
Outputs:
-
Groups with Associated Discord Role
- Example:
@Odin | https://my-api.com/org/asgard/group-uuid
- Example:
-
- Example:
Events
-
on-member-update
-
For each member, look at the change in discord roles
- If they had a role added to them that's a linked group, add them to the Group
- If they don't have a linked Steam64, ping them in a channel to do so
-
-
on-startup
- Hit up API for all members of linked roles
- Check if the members are in those roles and modify as needed
Data
-
Org
- Tags
-
Single Owner
- All permissions Managers have
-
Org Perms
- Toggle the active state
- Delete
- Rename
- Add and remove org managers
- Transfer ownership (member must be a manager of the org)
-
Managers
-
Group Perms
- Delete
- Create
- Rename
- Toggle active state
- Manage group users
- Manage group moderators
- Manage group tags
- Manage group names
-
Tag Perms
- Delete
- Create
- Rename
-
-
Groups
-
Group: whitelist-{group-id}
- Notes
-
Members
-
Group Perms
- Manage Users (Add or Remove Users)
- Manage Moderators (Allow other users to manage the group)
-
Manage Remote Import (Allowed to set a remote import)
- This does not use the perms from the remote import, only pulls the members from the remote import list
- Can specify a group in the remote (only pull members in that remote admin list)
- Owner (All group perms)
-
-
Tags
- Must be a tag that exists in the Org (reference a tag table)
-
Game Perms
-
Squad
- Reserve
- Demos
- Kick
- Ban
- Etc.
-
-
Users
-
Table Name:
users
Key Type Constraints Description id
DECIMAL
PRIMARY KEY
Steam64 discord_id
DECIMAL
UNIQUE
superuser
BOOLEAN
NOT NULL DEFAULT false
Organizations
-
Table Name:
orgs
Key Type Constraints Description id
UUID4
PRIMARY KEY
name
VARCHAR(32)
UNIQUE NOT NULL
owner_id
UUID4
REFERENCES users(id)
discord_server_id
DECIMAL
active
BOOLEAN
NOT NULL DEFAULT true
Org Managers
-
Table Name:
org_managers
Key Type Constraints Description id
UUID4
PRIMARY KEY
user_id
DECIMAL
REFERENCES users(id) ON DELETE CASCADE
org_id
UUID4
REFERENCES orgs(id) ON DELETE CASCADE
active
BOOLEAN
NOT NULL DEFAULT true
Additional Constraints:
UNIQUE(user_id, org_id)
Tags
-
Table Name:
org_tags
Key Type Constraints Description id
UUID4
PRIMARY KEY
name
VARCHAR(32)
UNIQUE (name, org_id) NOT NULL
org_id
UUID4
REFERENCES orgs(id)
Groups
-
Table Name:
org_groups
Key Type Constraints Description id
UUID4
PRIMARY KEY
name
VARCHAR(32)
NOT NULL UNIQUE(name,org_id)
org_id
UUID4
REFERENCES orgs(id) ON DELETE CASCADE
active
BOOLEAN
NOT NULL DEFAULT true
-
Additional Constraints
UNIQUE (name, org_id)
Group Tags
-
Table Name:
org_group_tags
Key Type Constraints Description id
UUID4
PRIMARY KEY
group_id
UUID4
REFERENCES org_groups(id) ON DELETE CASCADE
tag_id
UUID4
REFERENCES org_tags(id) ON DELETE CASCADE
-
Additional Constraints
UNIQUE (group_id, tag_id)
Group Notes
-
Table Name:
org_group_notes
Key Type Constraints Description id
UUID4
PRIMARY KEY
group_id
UUID4
UNIQUE REFERENCES org_groups(id) ON DELETE CASCADE
note
VARCHAR(512)
NOT NULL
Group Members
-
Table Name:
org_group_members
Key Type Constraints Description id
UUID4
PRIMARY KEY
user_id
DECIMAL
REFERENCES users(id) ON DELETE CASCADE
group_id
UUID4
REFERENCES org_groups(id) ON DELETE CASCADE
owner
BOOLEAN
NOT NULL DEFAULT false
-
Additional Constraints
UNIQUE (user_id, group_id)
Group Squad Details
-
Table Name:
org_group_squad_details
Key Type Constraints Description id
UUID4
PRIMARY KEY
group_id
UUID4
REFERENCES org_groups(id) UNIQUE ON DELETE CASCADE
remote_admin_list
VARCHAR(256)
remote_admin_list_group
VARCHAR(32)
perm_changemap
BOOLEAN
NOT NULL DEFAULT false
Allowed to change the current map perm_pause
BOOLEAN
NOT NULL DEFAULT false
Allowed to pause server gameplay perm_cheat
BOOLEAN
NOT NULL DEFAULT false
Allowed to use server cheat commands perm_private
BOOLEAN
NOT NULL DEFAULT false
Allowed to password protect the server perm_balance
BOOLEAN
NOT NULL DEFAULT false
Allowed to ignore team balance perm_chat
BOOLEAN
NOT NULL DEFAULT false
Allowed to access admin chat and make server broadcasts perm_kick
BOOLEAN
NOT NULL DEFAULT false
Allowed to kick players perm_ban
BOOLEAN
NOT NULL DEFAULT false
Allowed to ban players perm_config
BOOLEAN
NOT NULL DEFAULT false
Allowed to change server config perm_cameraman
BOOLEAN
NOT NULL DEFAULT false
Allowed to admin spectate mode perm_immune
BOOLEAN
NOT NULL DEFAULT false
Allowed to cannot be kicked / banned perm_manageserver
BOOLEAN
NOT NULL DEFAULT false
Allowed to shutdown server perm_featuretest
BOOLEAN
NOT NULL DEFAULT false
Allowed to any features added for testing by dev team perm_reserve
BOOLEAN
NOT NULL DEFAULT false
Allowed to reserve slot perm_demos
BOOLEAN
NOT NULL DEFAULT false
Allowed to record Demos on the server side via admin commands perm_clientdemos
BOOLEAN
NOT NULL DEFAULT false
Allowed to record Demos on the client side via commands or the replay UI perm_debug
BOOLEAN
NOT NULL DEFAULT false
Allowed to Show admin stats command and other debugging info perm_teamchange
BOOLEAN
NOT NULL DEFAULT false
Allowed to no timer limits on team change perm_forceteamchange
BOOLEAN
NOT NULL DEFAULT false
Allowed to can issue the ForceTeamChange command perm_canseeadminchat
BOOLEAN
NOT NULL DEFAULT false
Allowed to this group can see the admin chat and teamkill/admin-join notifications