---
# System prepended metadata

title: Key Trader

---

# Key Trader
Key trader allows users in your community donate keys they don't want and lets another user enjoy the key. At it's core Key Trader allows wasted keys to no longer go unused.

Key Trader is a honor based, community, key trading service. It does not prevent malicious actors from misbehaving, but it does provide systems to help police your community. 

## Protections
* Access control based on Discord roles
* Access control based on statistics about the user
* Donation and Claiming rate throttling
* Service wide user tracking
* Keys belong to a single community
* Users are unable to donate keys that they have claimed
* Different key levels, eg specifying that a key is more valuable and locking it behind a higher Recipient level.
* Discord Bot with configurable alerts for donation and claiming

## User Roles
Key Trader has the following user roles:
* Admin
* Donor/Recipient
* Recipient
* Donor
* Viewer
* Blocked

### Admin
Admins have the highest control of the community, but do not have the ability to donate and claim keys. 

#### Community Settings
Admins have control over the various settings of the Community.
##### Discord Community
Admins are able to select which Discord server belongs to the community.
##### Mapping Roles
Admins are able to control which Discord roles map to which Key Trader roles.

#### User Control
##### User Throttling
Admins are able to individually throttle users donation/claim rates. As well as change the throttle rates for the different levels of each user type.
##### Blacklisting Users
Admins are able to selectively blacklist users which is recorded against their Key Trader account. This by itself is not enough to ban a user from the site, but will be publicly available to anyone with a Key Trader account. This allows communities to make the best decisions on who to allow into the community.

#### Viewing Community Statistics
Admins are able to view user statistics in their community and various statistics about the community.


### Donor/Recipient
Donor/Recipient are able to donate and claim keys.


### Recipient
Recipients are allowed to claim keys, but not donate.


### Donor
Donors are allowed to donate keys, but claim.


### Viewer
Viewers are allowed to view what keys are available, but are unable to donate or claim keys.


### Blocked
Blocked users are not allowed to view, donate, or claim keys in the community. This is the default role if a mapped Discord role is not set for the user. It does not impact their status on the site.

## User Experience
### Donating
Users will select the game that the key belongs to through a search feature. After selecting the corresponding game, they will prompted to enter the key they wish to donate. Prior to officially submitting, a preview will be displayed to the user. Users can add optional metadata to the donation such as their username, a message, a hidden message that is displayed upon claiming, and more.

### Claiming
Users browse for games by looking through a list of games donated by their community. They are able to search via game name, usernames, key level, and more. After finding a game they wish to claim, they are given a prompt to confirm their claim. After claiming, the key is added to their account and displayed along with any hidden messages.

### Account Management
Users are able to view their account info, the keys and metadata of keys they have claimed or donated, any marks against their account, and their own personal user statistics. Public user statistics are visible if the community that generated them allow statistics to be show. This prevents data leakage from a community and also provides a means of official statistics viewing.

### Viewing A User's Profile
A user's profile contains their username, a description about them (if they added one) and any visible user statistics. 

## Discord Bot
The Discord Bot can be enabled or disabled. It can send a message to a channel or individual user(s). It also provides commands for users in Discord to get various infomation about the community in Key Trader. Admins in Key Trader are responsible for configuring the bot.

# Misc Technical Design decisions
* Key Trader Permissions and user accounts will be tracked separately from discord's. This means the service uses discord to get and configure the permissions, but in the event that Discord is no longer a company or we wish to bring other services to Key Trader, it will require minimal rework
* Key Trader primarily supports steam keys and will perform steam lookups, but will separate the key's information from steam in order to provide for minimal rework when supporting other services in the future
