- Endpoint:
POST /players
- Description: Creates a new player.
- Parameters:
name
(Optional): Player's name (if not provided, it will be assigned as "Anonymous").email
(Required): Player's email address.password
(Required): Player's password (minimum 8 characters).
- Successful Response:
- Status Code: 201 (Created)
- Content:
{ "message": "Player registered successfully" }
- Error Response:
- Status Code: 422 (Unprocessable Entity)
- Content:
{ "message": { "email": ["The email field is required."] } }
- Endpoint:
POST /login
- Description: Logs in with player's credentials.
- Parameters:
email
(Required): Registered player's email.password
(Required): Player's password.
- Successful Response:
- Status Code: 200 (Success)
- Content:
{ "message": "Login successful", "auth_token": "authentication_token" }
- Error Response:
- Status Code: 401 (Unauthorized)
- Content:
{ "message": "Invalid credentials" }
- Endpoint:
POST /logout
- Description: Logs out the authenticated player.
- Parameters:
token
authentication token
- Successful Response:
- Status Code: 200 (Success)
- Content:
{ "message": "Logged out successfully" }
- Endpoint:
PUT /players/{id}
- Description: Modifies the player's name.
- Parameters:
name
(Required): New player's name.token
authentication token
- Successful Response:
- Status Code: 200 (Success)
- Content:
{ "message": "Player's name updated successfully" }
- Endpoint:
POST /players/{id}/games
- Description: A specific player rolls the dice.
- Parameters:
token
authentication token
- Successful Response:
- Status Code: 201 (Created)
- Content:
{ "message": "Dice roll registered successfully" }
- Endpoint:
GET /players/{id}/games
- Description: Returns the list of dice rolls by a player.
- Parameters:
token
authentication token
- Successful Response:
- Status Code: 200 (Success)
- Content:
{ "games": [ { "id": 1, "dice1": 4, "dice2": 3, "win": true }, ... ] }
- Endpoint:
DELETE /players/{id}/games
- Description: Deletes all dice rolls of the player.
- Parameters:
token
authentication token - Successful Response:
- Status Code: 200 (Success)
- Content:
{ "message": "All dice rolls deleted successfully" }
- Endpoint:
GET /players
- Description: Returns the list of all players in the system with their average success rate.
- Parameters:
- (None)
- Successful Response:
- Status Code: 200 (Success)
- Content:
{ "players": [ { "id": 1, "name": "Player 1", "email": "player1@example.com", "success_rate": 70.5 }, ... ] }
- Endpoint:
GET /players/ranking/winner
- Description: Returns the player with the highest success rate.
- Parameters:
- (None)
- Successful Response:
- Status Code: 200 (Success)
- Content:
{ "winner": { "id": 1, "name": "Top Player", "rank, "success_rate": 80.2 } }
-
Endpoint:
GET /players/ranking/loser
-
Description: Returns the player with the lowest success rate.
-
Parameters:
- (None)
-
Successful Response:
- Status Code: 200 (Success)
-
Endpoint:
GET /players/ranking/
-
Description: Returns the success rate of all played games.
-
Parameters:
- (None)
-
Successful Response:
- Status Code: 200 (Success)
- composer install
- composer require laravel/passport
- php artisan passport:install
- cp .env.example .env
- php artisan key:generate
- php artisan migrate --seed
- php artisan serve
Esta API permite a los jugadores registrar tiradas de dados y calcular su tasa de éxito. También incluye autenticación a través de Laravel Passport y gestión de roles con Spatie Permission.
- Endpoint:
POST /players
- Descripción: Crea un nuevo jugador/a.
- Parámetros:
name
(Opcional): Nombre del jugador (si no se proporciona, se asigna como "Anónimo").email
(Obligatorio): Correo electrónico del jugador.password
(Obligatorio): Contraseña del jugador (mínimo 8 caracteres).
- Respuesta Exitosa:
- Código de Estado: 201 (Creado)
- Contenido:
{ "message": "Jugador/a registrado/a exitosamente" }
- Respuesta de Error:
- Código de Estado: 422 (Entidad no procesable)
- Contenido:
{ "message": { "email": ["El campo de correo electrónico es obligatorio."] } }
- Endpoint:
POST /login
- Descripción: Inicia sesión con las credenciales del jugador.
- Parámetros:
email
(Obligatorio): Correo electrónico del jugador registrado.password
(Obligatorio): Contraseña del jugador.
- Respuesta Exitosa:
- Código de Estado: 200 (Éxito)
- Contenido:
{ "message": "Inicio de sesión exitoso", "auth_token": "token_de_autenticacion" }
- Respuesta de Error:
- Código de Estado: 401 (No autorizado)
- Contenido:
{ "message": "Credenciales inválidas" }
- Endpoint:
POST /logout
- Descripción: Cierra la sesión del jugador autenticado.
- Parámetros:
token
token de autenticacion
- Respuesta Exitosa:
- Código de Estado: 200 (Éxito)
- Contenido:
{ "message": "Sesión cerrada exitosamente" }
- Endpoint:
PUT /players/{id}
- Descripción: Modifica el nombre del jugador/a.
- Parámetros:
name
(Obligatorio): Nuevo nombre del jugador.token
token de autenticacion
- Respuesta Exitosa:
- Código de Estado: 200 (Éxito)
- Contenido:
{ "message": "Nombre del jugador actualizado exitosamente" }
- Endpoint:
POST /players/{id}/games
- Descripción: Un jugador/a específico realiza un tirón de los dados.
- Parámetros:
token
token de autenticacion
- Respuesta Exitosa:
- Código de Estado: 201 (Creado)
- Contenido:
{ "message": "Tirada de dados registrada exitosamente" }
- Endpoint:
GET /players/{id}/games
- Descripción: Devuelve el listado de tiradas de dados por un jugador/a.
- Parámetros:
token
token de autenticacion
- Respuesta Exitosa:
- Código de Estado: 200 (Éxito)
- Contenido:
{ "games": [ { "id": 1, "dice1": 4, "dice2": 3, "win": true }, ... ] }
- Endpoint:
DELETE /players/{id}/games
- Descripción: Elimina todas las tiradas de dados del jugador/a.
- Parámetros:
token
token de autenticacion - Respuesta Exitosa:
- Código de Estado: 200 (Éxito)
- Contenido:
{ "message": "Todas las tiradas de dados eliminadas exitosamente" }
- Endpoint:
GET /players
- Descripción: Devuelve el listado de todos los jugadores/as del sistema con su porcentaje medio de éxitos.
- Parámetros:
- (Ninguno)
- Respuesta Exitosa:
- Código de Estado: 200 (Éxito)
- Contenido:
{ "players": [ { "id": 1, "name": "Jugador 1", "email": "jugador1@example.com", "success_rate": 70.5 }, ... ] }
- Endpoint:
GET /players/ranking/winner
- Descripción: Devuelve al jugador/a con mejor porcentaje de éxito.
- Parámetros:
- (Ninguno)
- Respuesta Exitosa:
- Código de Estado: 200 (Éxito)
- Contenido:
{ "winner": { "id": 1, "name": "Mejor Jugador", "rank, "success_rate": 80.2 } }
-
Endpoint:
GET /players/ranking/loser
-
Descripción: Devuelve al jugador/a con peor porcentaje de éxito.
-
Parámetros:
- (Ninguno)
-
Respuesta Exitosa:
- Código de Estado: 200 (Éxito)
- Contenido:
{ "loser": { "id": 2, "name": "Peor Jugador", "email": "peorjugador@example.com", "success_rate": 40.1 } }
-
Endpoint:
GET /players/ranking/
-
Descripción: Devuelve el porcentaje de exito de todos los juegos jugados.
-
Parámetros:
- (Ninguno)
-
Respuesta Exitosa:
- Código de Estado: 200 (Éxito)
git clone https://github.com/elpupas/diceGameAPI.git
# Instala las dependencias de PHP utilizando Composer
composer install
# Instala Laravel Passport
composer require laravel/passport
# Publica las migraciones y los archivos de configuración de Passport
php artisan passport:install
# Copia el archivo de entorno
cp .env.example .env
# Genera una nueva clave de aplicación
php artisan key:generate
# Configura tu base de datos en el archivo .env
# Ejecuta las migraciones y los seeders
php artisan migrate --seed
# Inicia el servidor
php artisan serve