Skip to content

Manuel développeur

Alexandre Maquet edited this page May 2, 2024 · 3 revisions

Statut des tournois

Les tournois possèdes différents statuts en fonction de leur état. Ces statuts sont représentés par un code :

  • 0 : Le tournoi est actuellement fermé. C'est le statut par défaut à la création d'un nouveau tournoi
  • 1 : Le tournoi est ouvert aux inscriptions des joueurs
  • 2 : Le tournoi est en cours de jeu. Les inscriptions sont fermés, la feuille de tournoi est affichée en direct et les administrateurs peuvent renseigner les résultats des matchs
  • 3 : Le tournoi est terminé. Les résultats du tournoi sont figés

Routes

Indications

  • 🔒 : route restreinte d'accès à un utilisateur connecté uniquement. Nécessite de passer en paramètre dans le header le champ suivant :
    Authorization: Token {Token_du_compte}

  • : idem, mais restreinte exclusivement aux comptes administrateurs

  • {Tournament_ID} : remplacer par l'ID du tournoi ciblé par la route

  • -> : réponse de la route en cas de succès


Utilisateurs

  • [POST] ~/api/user/register/
    Enregistre un nouveau utilisateur. Nécessite de passer dans le body username, password1 et password2.
    -> 204 NO CONTENT

  • [POST] ~/api/user/login/
    Connecte l'utilisateur. nécessite de passer dans le body username et password.
    -> 200 OK + un token dans le body identifiant la session de l'utilisateur. Il est important de conserver ce token

  • 🔒 [POST] ~/api/user/logout/
    Déconnecte l'utilisateur associé au token
    -> 200 OK + détruit le token

  • 🔒 [GET] ~/api/user/
    Retourne des informations sur l'utilisateur
    -> 200 OK + retourne les infos sur l'utilisateur. Exemple de réponse :

{
    "user_info": {
        "username": "bob", //le nom d'utilisateur
        "isAdmin": true,   //indique si l'utilisateur est un administrateur
        "tournaments": [   //tableau contenant les tournois auquel l'utilisateur est inscrit
            1,
            4
        ]
    }
}

Tournois

  • [GET] /api/tournaments/{Tournament_ID}/
    Retourne les informations d'un tournoi
    -> 200 OK + retourne dans le body les informations du tournoi. Exemple de réponse :
{
    "url": "http://127.0.0.1:8000/api/tournaments/24/",        //l'URL du tournoi
    "id": 24,                                                  //l'ID du tournoi
    "name": "Lorem",                                           //le nom du tournoi
    "description": "Lorem Ipsum...",                           //la description du tournoi
    "state": 3,                                                //l'état actuel du tournoi
    "challonge_image_url": "https://challonge.com/Lorem.svg",  //l'URL de l'image live de la feuille du tournoi
    "players": [                                               //tableau contenant les IDs des joueurs inscrits au tournoi
        1,
        2,
        8
    ]
}
  • [GET] /api/tournaments/
    Retourne tous les tournois
    -> 200 OK + retourne un tableau contenant les infos de tous les tournois

  • ⛔ [POST] /api/tournaments/
    Crée un nouveau tournoi. Voir ci-dessous pour les informations à passer dans le body de la requête
    -> 201 CREATED + retourne les informations du tournoi créé

{
    "name": "lorem",              //le nom du tournoi
    "description": "lorem ipsum" //la description du tournoi
}
  • ⛔ [PUT] /api/tournaments/{Tournament_ID}/
    Update un tournoi. Voir ci-dessous pour les informations à passer dans le body de la requête
    -> 200 OK + retourne les informations du tournoi mis à jour
{
    "name": "lorem",              //le nouveau nom du tournoi
    "description": "lorem ipsum" //la nouvelle description du tournoi
}
  • ⛔ [DELETE] /api/tournaments/{Tournament_ID}/
    Supprime le tournoi
    -> 204 NO CONTENT

  • ⛔ [POST] /api/tournaments/{Tournament_ID}/open_registration/
    Change l'état du tournoi de 0: fermé vers 1: ouvert aux inscriptions pour ouvrir les inscriptions
    -> 204 NO CONTENT

  • ⛔ [POST] /api/tournaments/{Tournament_ID}/start/
    Change l'état du tournoi de 1: ouvert aux inscriptions vers 2: en cours pour démarrer le tournoi et génère la feuille de match
    ⚠️ nécessite au minimum 2 participants inscrits au tournoi
    -> 204 NO CONTENT

  • ⛔ [POST] /api/tournaments/{Tournament_ID}/finish/
    Change l'état du tournoi de 2: en cours vers 3: terminé pour conclure le tournoi
    ⚠️ nécessite que tous les scores des matchs aient été renseignés
    -> 204 NO CONTENT

  • ⛔ [POST] /api/tournaments/{Tournament_ID}/matches/
    Renvoie la liste de tous les matchs du tournoi. Voir la structure d'un match plus bas
    ⚠️ nécessite que le tournoi ait été démarré (état 2: en cours)
    -> 200 OK

{
        "id": 364056331,         //id du match
        "round": 1,              //round du match dans le tournoi
        "scores_csv": "1-24",    //score (vide ("") si pas encore de score)
        "state": "complete",     //état du match (open, pending, complete)
        "player1_id": 229951344, //id du joueur1 (null si pas encore défini, par exemple le match de finale au début du tournoi
        "player2_id": 229951345, //id du joueur2 (idem que joueur1)
        "winner_id": 229951345,  //id du joueur ayant gagné le match (null si pas encore de gagnant)
        "player1_name": "test2", //nom du j1
        "player2_name": "test3"  //nom du j2
}
  • ⛔ [POST] /api/tournaments/{Tournament_ID}/scores/
    Met à jour le score d'un match. Le gagnant d'un match est défini comme étant le joueur ayant le plus de points. En cas d'égalité, le joueur 1 est le gagnant. Informations à transmettre dans le body ci-dessous
    ⚠️ nécessite que le tournoi ait été démarré (état 2: en cours)
    -> 204 NO CONTENT
{
    "match_id": "363962268",   //id du match (string)
    "player1_id": "229895714", //id du j1 (string)
    "player2_id": "229895715", //id du j2 (string)
    "score_p1": 10,            //score du j1 (int, >= 0)
    "score_p2": 5              //score du j2 (int, >= 0)
}

Inscription aux tournois

  • 🔒 [POST] /api/tournaments/{Tournament_ID}/register/
    Inscrit l'utilisateur au tournoi
    -> 204 NO CONTENT

  • 🔒 [POST] /api/tournaments/{Tournament_ID}/unregister/
    Désinscrit l'utilisateur du tournoi
    -> 204 NO CONTENT

Clone this wiki locally