MCC Island API - Docs

MCC Island API is a GraphQL API that provides access to public data from the MCC Island Minecraft server.

An API key is required. These can be generated on the Noxcrew Gateway website.
Any application using this API should send requests using an identifiable user-agent string, preferably including a way to contact you.
Ratelimits are enforced on a per-user basis, with the ratelimit being shown in the response headers (prefixed with X-Ratelimit).

API Endpoints
https://api.mccisland.net/graphql
Headers
X-API-Key: <YOUR_API_KEY_HERE>

Queries

nextRotation

Description

Returns when this rotation will next rotate.

If the rotation is due the exact time this method is called, this method will return the next time that it will rotate.

Response

Returns a DateTime!

Arguments
Name Description
rotation - Rotation!

Example

Query
query nextRotation($rotation: Rotation!) {
  nextRotation(rotation: $rotation)
}
Variables
{"rotation": "DAILY"}
Response
{
  "data": {
    "nextRotation": "1996-12-19T16:39:57-08:00"
  }
}

player

Description

Given a UUID, returns a Player if they have logged in to MCC Island.

Response

Returns a Player

Arguments
Name Description
uuid - UUID!

Example

Query
query player($uuid: UUID!) {
  player(uuid: $uuid) {
    uuid
    username
    ranks
    crownLevel {
      ...CrownLevelFragment
    }
    status {
      ...StatusFragment
    }
    collections {
      ...CollectionsFragment
    }
    social {
      ...SocialFragment
    }
    statistics {
      ...StatisticsFragment
    }
  }
}
Variables
{
  "uuid": "6a085b2c-19fb-4986-b453-231aa942bbec"
}
Response
{
  "data": {
    "player": {
      "uuid": "6a085b2c-19fb-4986-b453-231aa942bbec",
      "username": "LadyAgnes",
      "ranks": ["CHAMP"],
      "crownLevel": CrownLevel,
      "status": Status,
      "collections": Collections,
      "social": Social,
      "statistics": Statistics
    }
  }
}

playerByUsername

Description

Given a username, returns a Player object if they have logged into MCC Island with this username.

This method may not return a player that has this username if they have not logged in recently enough for us to verify that the player still owns this username.

Response

Returns a Player

Arguments
Name Description
username - String!

Example

Query
query playerByUsername($username: String!) {
  playerByUsername(username: $username) {
    uuid
    username
    ranks
    crownLevel {
      ...CrownLevelFragment
    }
    status {
      ...StatusFragment
    }
    collections {
      ...CollectionsFragment
    }
    social {
      ...SocialFragment
    }
    statistics {
      ...StatisticsFragment
    }
  }
}
Variables
{"username": "LadyAgnes"}
Response
{
  "data": {
    "playerByUsername": {
      "uuid": "6a085b2c-19fb-4986-b453-231aa942bbec",
      "username": "LadyAgnes",
      "ranks": ["CHAMP"],
      "crownLevel": CrownLevel,
      "status": Status,
      "collections": Collections,
      "social": Social,
      "statistics": Statistics
    }
  }
}

previousRotation

Description

Returns when this rotation last rotated.

If the rotation is due the exact time this method is called, this method will return the current time.

Response

Returns a DateTime!

Arguments
Name Description
rotation - Rotation!

Example

Query
query previousRotation($rotation: Rotation!) {
  previousRotation(rotation: $rotation)
}
Variables
{"rotation": "DAILY"}
Response
{
  "data": {
    "previousRotation": "1996-12-19T16:39:57-08:00"
  }
}

statistic

Description

Returns a statistic by it's name.

Response

Returns a Statistic

Arguments
Name Description
key - String!

Example

Query
query statistic($key: String!) {
  statistic(key: $key) {
    key
    forLeaderboard
    rotations
    leaderboard {
      ...LeaderboardEntryFragment
    }
  }
}
Variables
{"key": "games_played"}
Response
{
  "data": {
    "statistic": {
      "key": "games_played",
      "forLeaderboard": true,
      "rotations": ["DAILY"],
      "leaderboard": [LeaderboardEntry]
    }
  }
}

statistics

Description

Returns a list of all known statistics.

Response

Returns [Statistic!]!

Example

Query
query statistics {
  statistics {
    key
    forLeaderboard
    rotations
    leaderboard {
      ...LeaderboardEntryFragment
    }
  }
}
Response
{
  "data": {
    "statistics": [
      {
        "key": "games_played",
        "forLeaderboard": true,
        "rotations": ["DAILY"],
        "leaderboard": [LeaderboardEntry]
      }
    ]
  }
}

Types

Boolean

Description

The Boolean scalar type represents true or false.

Example
true

Collections

Description

Collections data.

Fields
Field Name Description
currency - Currency! The player's earned currency.
Example
{"currency": Currency}

CrownLevel

Description

A Crown Level and associated trophy data.

Fields
Field Name Description
level - Int! The overall Crown Level.
nextEvolutionLevel - Int The next level that the crown will evolve, if any.
nextLevelProgress - ProgressionData The progress the player is making towards their next level, if any.
trophies - TrophyData! The amount of trophies the player has.
Arguments
category - TrophyCategory
Example
{
  "level": 123,
  "nextEvolutionLevel": 987,
  "nextLevelProgress": ProgressionData,
  "trophies": TrophyData
}

Currency

Description

A player's earned currency.

Fields
Field Name Description
coins - Int! The number of coins the player currently has.
gems - Int! The number of gems the player currently has.
royalReputation - Int! The amount of Royal Reputation the player currently has.
silver - Int! The amount of silver the player currently has.
materialDust - Int! The amount of material dust the player currently has.
Example
{
  "coins": 987,
  "gems": 987,
  "royalReputation": 123,
  "silver": 987,
  "materialDust": 123
}

DateTime

Description

An RFC-3339 compliant date time.

Example
"1996-12-19T16:39:57-08:00"

Game

Description

A game.

Values
Enum Value Description

HOLE_IN_THE_WALL

Hole in the Wall.

TGTTOS

To Get To The Other Side (TGTTOS).

BATTLE_BOX

Battle Box.

SKY_BATTLE

Sky Battle.

PARKOUR_WARRIOR

Parkour Warrior.

DYNABALL

Dynaball.

ROCKET_SPLEEF

Rocket Spleef.
Example
"HOLE_IN_THE_WALL"

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
987

LeaderboardEntry

Description

An entry in a leaderboard.

Fields
Field Name Description
player - Player

The player who has this entry.

This will be null if the player does not have the statistics enabled for the API. However, for Crown Level or Trophy count leaderboards, the player will not be null.

rank - Int! The rank for this entry.
value - Int! The value for this entry.
Example
{"player": Player, "rank": 987, "value": 987}

Party

Description

A player's status within a party.

Fields
Field Name Description
active - Boolean! Whether the player is in an active party.
leader - Player The leader of the party, populated if the party exists.
members - [Player!] The members of the party, populated if the party exists.
Example
{
  "active": false,
  "leader": Player,
  "members": [Player]
}

Player

Description

A player who has logged in to MCC Island.

Fields
Field Name Description
uuid - UUID! The player's Minecraft UUID in dashed format.
username - String The player's username, if known.
ranks - [Rank!]! The ranks which the user is associated with, if any.
crownLevel - CrownLevel! The player's Crown Level and associated trophy data.
status - Status

The current status of the player.

This method is conditional on the player having the in-game "status" API setting enabled.

collections - Collections

Collections data for the player.

This method is conditional on the player having the in-game "collections" API setting enabled.

social - Social

Social data for the player.

This method is conditional on the player having the in-game "social" API setting enabled.

statistics - Statistics

Statistics data for the player.

This method is conditional on the player having the in-game "statistics" API setting enabled.

Example
{
  "uuid": "6a085b2c-19fb-4986-b453-231aa942bbec",
  "username": "LadyAgnes",
  "ranks": ["CHAMP"],
  "crownLevel": CrownLevel,
  "status": Status,
  "collections": Collections,
  "social": Social,
  "statistics": Statistics
}

ProgressionData

Description

Data for types that track some form of progression.

Fields
Field Name Description
obtained - Int! The amount obtained.
obtainable - Int! The amount that can be obtained.
Example
{"obtained": 123, "obtainable": 987}

Rank

Description

A rank.

Values
Enum Value Description

CHAMP

The Champ rank.

GRAND_CHAMP

The Grand Champ rank.

GRAND_CHAMP_ROYALE

The Grand Champ Royale rank.

CREATOR

The Creator rank.

CONTESTANT

The Contestant rank.

MODERATOR

The Moderator rank.

NOXCREW

The Noxcrew rank.
Example
"CHAMP"

Rotation

Description

A rotation period.

Each period resets at 10AM UTC.

Values
Enum Value Description

DAILY

A daily rotation that resets.

WEEKLY

A weekly rotation that resets on Tuesdays.

MONTHLY

A monthly rotation that resets on the first day of every month.

YEARLY

A yearly rotation that resets on the first day of every year.

LIFETIME

A lifetime rotation; a rotation period used to indicate something never rotates.
Example
"DAILY"

Server

Description

A server on the network.

Fields
Field Name Description
category - ServerCategory! The category of the server.
subType - String! The sub-type of the server that can hold additional information about the server.
associatedGame - Game The game associated with this server, if any.
Example
{"category": "GAME", "subType": "daily", "associatedGame": "PARKOUR_WARRIOR"}

ServerCategory

Description

The category of a server.

Values
Enum Value Description

LOBBY

A lobby server.

GAME

A game server.

LIMBO

A limbo server.

QUEUE

A queue server
Example
"LOBBY"

Social

Description

Social data.

Fields
Field Name Description
friends - [Player!]! A list of the player's friends.
party - Party! The player's party.
Example
{
  "friends": [Player],
  "party": Party
}

Statistic

Description

A statistic.

Fields
Field Name Description
key - String! The key of the statistic.
forLeaderboard - Boolean! If this statistic generates leaderboards.
rotations - [Rotation!]!

The rotations for which this statistic is tracked.

These are the rotations that can be used to generate leaderboards or fetch rotation values. Note that the YEARLY rotation never generates leaderboards, even if it is returned in this list.

leaderboard - [LeaderboardEntry!]

Returns the leaderboard for this statistic in a given rotation.

If this statistic does not generate leaderboards, or the statistic is not tracked for the provided rotation, this will return null.

Arguments
rotation - Rotation!
amount - Int!
Example
{
  "key": "games_played",
  "forLeaderboard": false,
  "rotations": ["DAILY"],
  "leaderboard": [LeaderboardEntry]
}

StatisticValueResult

Description

The result of fetching a value of a statistic.

Fields
Field Name Description
statistic - Statistic! The statistic.
value - Int! The value.
Example
{"statistic": Statistic, "value": 987}

Statistics

Description

Statistic-related data.

Fields
Field Name Description
value - StatisticValueResult Returns the raw value stored for this statistic. This value is not backed by a rotation and will be removed. Use rotationValue instead.
Arguments
statisticKey - String!
rotationValue - Int

Returns the value stored for the given statistic in a rotation.

The returned number will be null if the statistic does not track in the provided rotation, or if the statistic doesn't exist.

Arguments
statisticKey - String!
rotation - Rotation!
Example
{"value": StatisticValueResult, "rotationValue": 123}

Status

Description

A player's current status.

Fields
Field Name Description
online - Boolean! Whether the player is online or not.
server - Server The player's current server, populated if they are online.
firstJoin - DateTime When the player first joined MCC Island, if known.
lastJoin - DateTime When the player most recently joined MCC Island, if known.
Example
{
  "online": false,
  "server": Server,
  "firstJoin": "1996-12-19T16:39:57-08:00",
  "lastJoin": "1996-12-19T16:39:57-08:00"
}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"abc123"

TrophyCategory

Description

The categories for trophies.

Values
Enum Value Description

STYLE

Style trophies.

SKILL

Skill trophies.
Example
"STYLE"

TrophyData

Description

Data on the amount of trophies a user has/can have.

Fields
Field Name Description
obtained - Int! The amount of trophies obtained.
obtainable - Int! The maximum amount of trophies that can be obtained.
bonus - Int! The amount of bonus trophies.
Example
{"obtained": 987, "obtainable": 123, "bonus": 987}

UUID

Description

A player's UUID.

Example
"6a085b2c-19fb-4986-b453-231aa942bbec"