User objects

Each pointercrate user is represented by a User object.

If the display name is not null, it will replace a user's username wherever his name is displayed. Right now, that is only relevant to users with LIST_HELPER permissions or higher.

Field Type Description
id int The user's ID
name string The user's name
permissions bitmask The user's access permissions
display_name string The user's display name. This can be null.
youtube_channel string The user's linked youtube channel. This can be null

Example object:

{
       "display_name": "stadust",
       "id": 2,
       "name": "stardust1971",
       "permissions": 0,
       "youtube_channel": null
     }

Record objects

Each record on the list is represented by a Record object. The following assumptions can be made about these:

  • The progress value lies within demon.requirement and 100
  • Every video value is unique
  • Every combination of demon, player and status values is unique
  • Every video value is in one of the formats listed here
Field Type Description
id integer The record's id
progress integer The progress achieved by the record's holder
video URL The record's video. Can be null
status RecordStatus The record's status.
player Player The record holder
demon Demon The demon the record was made on
submitter Submitter The internal ID of the person that submitted the record

Enum RecordStatus

Value Description
APPROVED The record has been approved and is displayed on the list
REJECTED The record has been rejected
SUBMITTED The record has been submitted and is awaiting review

Example object:

{
       "demon": {
         "name": "Cadrega City",
         "position": 34,
         "state": "MAIN"
       },
       "id": 2,
       "player": {
         "banned": false,
         "id": 5,
         "name": "AeonAir"
       },
       "progress": 100,
       "status": "APPROVED",
       "submitter": {
         "banned": false,
         "id": 2
       },
       "video": null
     }

Demon objects

Each demon on the list is represented by a Demon object. The following assumptions can be made about these:

  • The requirement value lies between 0 and 100.
  • There are no holes in the positioning and the position value is greater than 0
  • Every video value, if provided, is in one of the formats listed here

Note that although on the website the record requirement for demons on the extended list is always displayed as 100%, Demon objects still save their requirement from when they were on the main list.

Short Form

When retrieving demons via GET /demons/, or as the field of another object, only a shorter representation of each demon is provided.

Field Type Description
name string The name of the demon
position integer The position of the demon
state ListState The section of the list the demon is in

Long Form

Field Type Description
name string The name of the demon
position integer The position of the demon
state ListState The section of the list the demon is in
requirement integer The minimum percentage a record on this demon has to be, to be accepted
video URL The verification video. Can be null
notes string Extra notes added to the demon by the list mods
verifier Player The demon's verifier
publisher Player The demon's publisher
creators List[Player] The demon's creators

Enum ListState

Value Description
MAIN The demon is in the main section of the list
EXTENDED The demon is in the extended section of the list
LEGACY The demon is in the legacy section of the list

Example object:

{
       creators": [
         {
           "banned": false,
           "id": 2,
           "name": "Pennutoh"
         }
       ],
       "name": "Cadrega City",
       "notes": "Pennutoh is amazing",
       "position": 34,
       "publisher": {
         "banned": false,
         "id": 2,
         "name": "Pennutoh"
       },
       "requirement": 54,
       "state": "MAIN",
       "verifier": {
         "banned": false,
         "id": 3,
         "name": "Sunix"
       },
       "video": "https://www.youtube.com/watch?v=cHEGAqOgddA"
     }

Player objects

Each player on the list is represented by a Player object. The following assumptions can be made about these:

  • If a player is banned, he does not have any approved or submitted records on the list

Note that it is not possible to retrieve a player's demonlist score via the API.

Short Form

When retrieving players via GET /players/, or as the field of another object, only a shorter representation of each player is provided.

Field Type Description
id integer The player's id
name string The player's name
banned boolean Value indicating whether the player is banned

Long Form

Field Type Description
id integer The player's id
name string The player's name
banned boolean Value indicating whether the player is banned
created List[Demon] A list of demons the player created
beaten List[Demon] A list of demons the player has beaten
published List[Demon] A list of demons the player has published
verified List[Demon] A list of demons the player has verified

Example object:

{
       "banned": false,
       "beaten": [],
       "created": [
         {
           "name": "Cadrega City",
           "position": 34,
           "state": "MAIN"
         }
       ],
       "id": 2,
       "name": "Pennutoh",
       "published": [
         {
           "name": "Cadrega City",
           "position": 34,
           "state": "MAIN"
         }
       ],
       "verified": []
     }

Submitter objects

Everyone who submits a record gets assigned an incremental submitter id, internally used to keep track of who has been banned from submitting records.

Field Type Description
id int The submitter's ID
banned boolean Value indicating whether the submitter is banned

Example object

{
       "banned": false,
       "id": 2
     }

Error objects

In case of a client or a (not completely fatal) server error, the API will provide an Error object with some information about what went wrong.

Although each HTTP response comes with a status code, you can still calculate the status code from the error code by performing integer division by 100

Field Type Description
message string A short message describing the error
code integer The error code
data object A JSON object containing additional data relevant to the error.

Example object:

{
       "code": 42217,
       "data": {
         "existing": 13
       },
       "message": "This records has already been submitted"
     }