-
-
Notifications
You must be signed in to change notification settings - Fork 311
v2 API
For pr7 API, go here: https://github.com/NamelessMC/Nameless/wiki/v2-API/8af96b241e0c6a8767c98bc8d190d1847b3ae725
In order to use the API, the API key must be verified. This is done by passing the API key within the URL, as follows:
example_site.com/api/v2/API_KEY/action
where API_KEY
is the API key used, and action
is the specified action.
All UUIDs returned by the API are without dashes. The API accepts UUIDs both with and without dashes as parameters.
The API will also return whether there was an error or not, with the error
field (either true or false). If true, there will also be a message
field containing the error message.
No parameters required. Returns in json format:
-
version
- string: NamelessMC version, e.g.2.0.0-pr8
-
version_update
- array:- update - whether there is an update available, true or false
- version - the version for the available update (not present if no update available)
- urgent - whether the update is urgent (ie a security fix), true or false (not present if no update available)
-
language
- Default language -
modules
- array: list of enabled modules
Any suggestions?
Returns all announcements in json. No parameters required. You can optionally add an id
GET parameter so that only announcements the user should see will be returned
{
"announcements" : [
{
"content" : "This is an example announcement",
"display" : ["Home", "Forums"],
"permissions" : ["Guests", "Standard", "Moderator"]
},
{
"content" : "This message will be displayed on join by the plugin",
"display" : ["Plugin", "Vote"],
"permissions" : ["Guests", "Standard", "Moderator"]
}
],
"error": false
}
The register
action will register a specified user. POST body is a JSON object with
-
username
- Forum username -
uuid
- Minecraft UUID (optional. If Minecraft integration is enabled, the website should get the UUID) -
email
- the email address of the user (must be unique)
If there is an issue with the POST request, the API will display an error containing information about the issue. Otherwise, an email will be sent to the user, asking them to visit the website to complete registration.
TODO: Add error code when minecraft integration is enabled and username is not a minecraft username?
The register method response, if email verification is disabled, is as follows:
{
"message": "Please click on the following link to complete registration:",
"link": "http://example.com/complete_signup/?c=CODE",
"error": false
}
The register method response, if email verification is enabled, is as follows:
{
"message": "Please check your emails to complete registration.",
"error": false
}
The userInfo
action will retrieve information about a specified user. Possible GET parameters (choose one):
-
id
- NamelessMC id -
username
- NamelessMC username -
uuid
- Minecraft UUID (only if Minecraft integration is enabled) -
discord_id
- Discord user ID
The output is a JSON object containing:
-
exists
- Whether an account with the provided username or uuid exists. If this is false, all other fields will be missing. -
username
- the Minecraft username of the user -
displayname
- the custom displayname of the user on the website -
uuid
- the Minecraft UUID of the user (without dashes) -
registered_timestamp
- UNIX timestamp of when the user registered last_online_timestamp
-
banned
- whether the user is banned from the website or not (boolean) -
language
- User language, e.g. EnglishUK. -
validated
- (boolean) -
discord_id
- Discord ID, not present if user is not linked with discord -
groups
- Json array of group objects (see below for format)
in 2.1, validated
will be replaced by
- `verified` - (boolean)
- `verification`
- `email` - boolean
- `minecraft` - boolean
- `discord` - boolean
- ...
If ranks are linked with minecraft ranks or discord roles, those will show up as well.
id
- id of group OR name
name of group. Specify multiple times to include multiple groups. When not specified, all groups are listed.
Returns a list of all website groups. New keys may be added later and linked groups like minecraft
, discord
, may be left out. Staff boolean may be missing as well, in that case assume false.
Always ordered by order
, ascending
"groups": [
{
"id": 2,
"name": "Developer",
"minecraft": "Developer",
"staff": true,
"order": 3
},
{
"id": 4,
"name": "VIP",
"order": 20
}
]
-
user
- the NamelessMC ID of the user -
groups
- json array of website group IDs to add to this user
-
user
- the NamelessMC ID of the user -
groups
- json array of website group IDs to remove from this user
The createReport
action will create a report about a given user. The required POST body is a JSON object with the following keys:
-
reporter
- NamelessMC user ID of the user creating the report -
reported
- NamelessMC user ID of the user being reported. -
content
- the reason for the report's creation (max 255 characters)
Errors:
19 - Report content too long
16 - reporter
or reported
invalid
21 - reporter
is banned
26 - reporter
== reported
23 - unable to create report
The getNotifications
action will return a list of alerts a user has. Specify the Nameless ID using the id
GET parameter.
The method will return error 16 if the user does not exist on the website, otherwise it will return a JSON array with notifications:
Available types:
-
message
- A new private message for the user -
like
- Someone has liked a post by the user (coming soon) -
profile_post
- Someone has left a comment on the user's profile -
profile_post_reply
- Someone has replied to a comment on a profile -
thread-reply
- Someone has posted in a thread the user is watching (coming soon) -
follow
- Someone has followed the user (coming soon) - Please note that modules may add their own notification types, so your application should be able to handle unknown notification types.
{
"notifications": [
"0": {
"message" : "Samerton has liked your post",
"url" : "https://example.com/forum/view_topic/?tid=5?post_id=813
"type" : "like",
},
"1": {
"message" : "Partydragen has left a comment on your profile"
"url" : "https://example.com/profile/Derkades/354"
"type" : "profile-comment"
}
"2": {
"message" : "Very important"
"url" : "https://example.com/something"
"type" : "message"
}
],
"error": false
}
The serverInfo
action is used by the Minecraft plugin to send server information to the website.
The post body is a JSON object:
{
"max-memory" : 954728448,
"free-memory" : 344910960,
"allocated-memory" : 515899392,
"tps" : 20,
"server-id" : 3,
"groups" : [
"Admin",
"Developer",
"Visitor"
],
"players" : {
"09948878fe2044e3a07242c39869dd1f" : {
"ip" : "127.0.0.1",
"name" : "Derkades",
"groups" : ["Admin", "Builder"],
"playtime" : 30 (minutes),
"balance" : 200,
"location" : {
"world" : "world",
"x" : -80,
"y" : 64,
"z" : -116
}
"placeholders" : {
"player_level" : "13"
}
}
"2f778755502c4fb7ae96493d6429e8f3" : {
"ip" : "127.0.0.1",
"name" : "Samerton",
"groups" : ["Developer"],
"balance" : 56,47,
"location" : {
"world" : "world",
"x" : -541,
"y" : 82,
"z" : 851
}
"placeholders" : {
"player_level" : "13"
}
}
}
}
Only the server-id
field is required, all others are optional. Specifying name
for every player is required.
Keep in mind that the requests by the plugin, while they are sent every 10 seconds by default, may be sent more or less frequently.
The updateUsername
action will update the website username of a user with a given NamelessMC ID. The required JSON object is as follows:
-
user
- NamelessMC id -
username
- new username for user
-
user
- NamelessMC ID -
code
- code to validate user with
The listUsers
action provides a list of registered users. No parameters required. Example response:
{
"users": [
{
"id": 1,
"username": "Samerton",
"uuid": "2f778755502c4fb7ae96493d6429e8f3",
"banned": false,
"verified": true
},
{
"id": 2,
"username": "Notch",
"uuid": "069a79f444e94726a5befca90e38aaf5",
"banned": false,
"verified": true
},
],
"error": false
}
uuid
may be left out if Minecraft integration is disabled.
Possible filter parameters:
-
banned
(boolean) -
verified
(boolean)
Post body is json object with a key "roles" and value is another json array of objects. Each object has an id
and name
key for the discord role ID and name, respectively.
Updates discord bot settings. Not all parameters below have to be present, it is possible to only change one setting by specifying one parameter.
-
url
- New Discord bot URL -
guild_id
- New Discord server ID to be associated with your website (as a string) -
bot_username
Username#1234 of this bot -
bot_id
Discord user ID of the bot (as a string)
errors:
- 31 if not at least one setting is specified
Link a discord account with the website. Post body is verification token in plain text.
-
token
- Discord verification token -
discord_id
- Discord ID (AS A STRING) -
discord_username
- Discord username
Error codes?
-
users
array of json objects:-
id
discord user id -
name
discord username
-
Error codes?
GET param user
(NamelessMC ID). Response roles
json array of role ids
Error codes?
POST body JSON object:
-
user
- NamelessMC id -
roles
- Json array of discord role ids
Error codes?
-
user
- NamelessMC id -
roles
- discord role ids
-
user
- NamelessMC id -
roles
- discord role id. Website will not return an error if the user never had this role ID.
Whenever an error is returned, a code and a message will be returned. The message can be in a variety of languages, depending on the active translation on the website, so the code corresponds to a certain type of error. The error codes and their meaning are listed below.
0 - Unknown error
1 - Invalid API key
2 - Invalid language file
3 - Invalid API method
4 - No unique site ID available
5 - Unable to check for updates
6 - Invalid POST / GET contents
7 - Invalid email address
8 - Invalid username
9 - Invalid UUID
10 - Email already exists
11 - Username already exists
12 - UUID already exists
13 - Unable to create account
14 - Unable to send registration email, please contact an admin to activate your account
15 - cURL error
16 - Unable to find user
17 - Unable to find group
18 - Unable to update user's group
19 - Report content is greater than 255 characters
20 - (not used)
21 - User creating report has been banned from website
22 - User already has an open report regarding the reported player
23 - Unable to create report
24 - Unable to update (Discord or website) username
25 - Unable to update server info
26 - Cannot report youself
27 - Invalid server ID
28 - Invalid validation code
29 - Unable to set user's Discord ID
30 - Unable to set Discord bot URL endpoint
31 - (not used)
32 - User already active
33 - Unable to set Discord Guild ID
34 - Discord integration is disabled
The createTopic
action is used to create a new topic on the website, in a specified forum.
If you need further help, feel free to join our Discord server for support 😃