Skip to content

Latest commit

 

History

History
155 lines (121 loc) · 4.15 KB

README.md

File metadata and controls

155 lines (121 loc) · 4.15 KB

Todos

Any specific types are in reference to golangs default types.

  • tournament:

       {
           "id": "int",
           "name": "string",
           "description": "string",
           "start_time": "time.Time",
           "end_time": "time.Time",
           "rounds": [
                "round",
                "round",
                "round",
           ],
           "staffs": [
                "staff",
                "staff",
                "staff",
           ],
           "registration_start_time": "time.Time",
           "registartion_end_time": "time.Time",
           "registrations": [
                "user"
           ]
       }
  • round:

       {
           "id": "int",
           "name": "string",
           "description": "string",
           "start_time": "time.Time",
           "end_time": "time.Time",
           "download_path": "Download path to file of this round",
        }
  • staff:

       {
           "id": "int",
           "User": "User",
           "role": "string",
       }
  • rating:

       {
           "id": "int",
           "scores": [
               "score",
               "score",
               "score",
           ]
        }
  • score:

       {
           "id": "int",
           "judge_id": "int",
           "score": "int",
           "category": "string",
        }
  • beatmap:

       {
           "id": "int",
           "hash": "string",
           "to_use": "bool",
        }

User Spec

  • [GET] /oauth: Redirect user to oauth of the server, e.g. https://localhost/oauth/ripple redirects to ripple's oauth page.

    • Valid server: ripple
  • [GET] /oauth/{server}/logout: Logout user for the server.

    • Valid server: ripple
  • [GET] /api/v1/tournaments: Get all tournaments.

  • [GET] /api/v1/tournament/{id}: Get tournament by id.

  • [GET] /api/v1/me: Get personal data, including all tournament data, beatmaps and tokens. Literally everything.

  • [GET] /api/v1/self: Get personal data, including all tournament data, beatmaps and tokens. Literally everything.

  • [POST] /api/v1/{tournament}/registration: Signup for a tournament.

  • [DELETE] /api/v1/{tournament}/registration: Unsignup for a tournament.

  • [GET] /api/v1/{tournament}/rounds/{round_name}/beatmaps: Receive uploaded maps, or judgable maps for judges.

  • [DELETE] /api/v1/{tournament}/rounds/{round_name}/beatmaps/{beatmap_id}: Delete my uploaded map.

  • [POST] /api/v1/{tournament}/rounds/{round_name}/beatmaps: Upload a beatmap.

    • Required fields:
      • file: .osu file
    • This will replace the oldest available file if the limit of 5 submissions is reached

Admin Spec

All of the below endpoints require admin privileges. This will be enforced by middlewares.

If you're not an admin, you won't be able to access these endpoints. If you believe you are missing an admin privilege, please contact the tournament host.

  • [POST] /api/v1/tournaments: Create a tournament

    • Required fields:
      • same fields as tournament
    • Returns:
      • tournament
  • [PUT] /api/v1/tournaments/{id}: in-place replace an tournament by id

    • Required fields:
      • same fields as tournament
  • [DELETE] /api/v1/tournaments/{id}: Delete a tournament

  • [POST] /api/v1/tournaments/{id}/rounds/create: Create a round in the tournament

    • Required fields:
      • same fields as round
    • Returns:
      • round
  • [POST] /api/v1/tournaments/{id}/round/{round_name}/activate: Start a round

  • [POST] /api/v1/tournaments/{id}/staff: Add a staff member

    • Required fields:
      • user_id: Internal user id of the user
      • role: "admin", "judge" or "mod"
  • [DELETE] /api/v1/tournaments/{id}/staff: Remove a staff member

    • Required fields: One of the following:
      • ripple_id: Ripple id of the staff member
  • [POST] /api/v1/tournaments/{id}/round/{round_id}/map/rating: Judge a map

    • Required fields:
      • map_id: Map entry id
      • scores: Scores of the map