Saltar al contenido principal

Documentación de la API de MuscleMate

MUSCLEMATE

Musclemate, Grupo 3, Sprint 2

Historial de Versiones

VersiónFechaAutorDescripción
v1.02024-03-25Alejandro SosaCreación del documento

Este archivo va a servir como guia para el uso de la API de el backend de MuscleMate, indicando todos los endpoints accesibles así como los campos necesarios a incluir en la request, en caso de que sean necesarios.

Por cada endpoint se indicará mediante corchetes el método a través de el cual se puede acceder así como cualquier permiso que sea necesario para acceder a este (generalmente estar logeado como admin o owner).

Users

Estos endpoints permiten acceder a toda la información de los usuarios:

	users/
  • GET Admin : Permite listar todos los usuarios registrados en la base de datos, incluyendo Owners, Clients y Gym.
	users/create/
  • POST Admin : Permite la creación de un nuevo usuario. Requiere:
    • username
    • password
	users/update/<str:username>/
  • PUT Admin : Permite editar los datos de un usuario, por ejemplo, su contraseña. Requiere:
    • username
    • password
	 users/delete/<str:username>/
  • DELETE Admin : Permite eliminar un usuario dado su username.

Clients

Estos endpoints permiten acceder a toda la información de los clientes, una sub-clase de usuario.

	clients/
  • GET Gym, Owner: Permite el listado de todos los clientes de la base de datos.
	clients/<int:gymId>/
  • GET Gym, Owner: Permite el listado de todos los clientes asignados a el gym indicado en la URL. En el caso de Owner, permitirá la petición si es dueño de el gimnasio indicado.
	clients/detail/<int:pk>/
  • GET Gym, Owner, Client: Permite obtener información de el cliente especificado en la URL. Aceptará la petición sí:
    • Eres dueño o gimnasio
    • El cliente pedido es el mismo que el que está logeado.
	clients/create/
  • POST Gym, Owner: Permite la creación de un nuevo usuario así como un cliente asociado. Requiere: - name - lastName - zipCode - phoneNumber - email - address - city - register True, False - username - password - gym Gym Con campos opcionales: - birth - gender Male, Female, Other
	clients/update/<ind:pk>/
  • PUT Owner, Gym, User: Permite la edición de los datos de un cliente en la base de datos. Aceptará la petición si: - Eres dueño o gimnasio - El cliente pedido es el mismo que el que está logeado Requiere: - name - lastName - zipCode - phoneNumber - email - address - city - register True, False - user (User) - gym (Gym) Con campos opcionales: - birth - gender Male, Female, Other
	clients/delete/<int:pk>/
  • DELETE Owner: Permite eliminar a un usuario de la base de datos así como su usuario asociado dada su clave primaria.

Owners

Estos endpoints permiten acceder a toda la información de los dueños, una sub-clase de usuario.

	owners/
  • GET: Permite obtener un listado de todos los dueños de la base de datos.
	owners/detail/<int:pk>/
  • GET: Permite obtener información de el dueño especificado en la URL.
	owners/create/
  • POST: Permite crear un nuevo dueño así como su usuario asociado. Requiere:
    • name
    • lastName
    • email
    • phoneNumber
    • address
    • username
    • password
	owners/update/<int:pk>/
  • PUT: Permite actualizar los datos de un dueño en la base de datos. Requiere:
    • name
    • lastName
    • email
    • phoneNumber
    • address
    • userCustom (User)
	owners/delete/<int:pk>/
  • DELETE: Permite eliminar un dueño de la base de datos así como su usuario asociado dada su clave privada.

Gym

Estos endpoints permiten acceder a toda la información de los gimnasios.

	gyms/
  • GET Owner: Permite obtener un listado de todos los gimnasios de la base de datos asociados a el dueño logeado.
	gyms/detail/<int:id>/
  • GET Owner, Client: Permite obtener información de el gimnasio especificado en la URL, permitirá el acceso solo si eres el dueño de el gimnasio o cliente de este.
	gyms/create/
  • POST Admin, Owner: Permite crear un nuevo gimnasio así como su usuario asociado. Requiere:
    • name
    • address
    • zip_code
    • descripcion
    • phone_number
    • email
    • owner Owner
    • username
    • password
	gyms/update/<int:id>/
  • PUT Owner: Permite actualizar los datos de un gimnasio en la base de datos. Aceptará la petición solo si está realizada por el dueño de el gimnasio indicado en la URL. Requiere:
    • name
    • address
    • zip_code
    • descripcion
    • phone_number
    • email
    • owner (Owner)
    • userCustom (User)
	gyms/delete/<int:id>/
  • DELETE Owner: Permite eliminar un gimnasio de la base de datos así como su usuario asociado dado su id. Aceptará la petición solo si está realizada por el dueño de el gimnasio indicado.

Equipment

Estos endpoints permiten acceder a toda la información de los equipamientos de cada gimnasio.

	equipments/
  • GET Owner, Client, Gym: Permite obtener un listado de, dependiendo de la clase de usuario logeado:
    • client: equipamientos asociados a el gimnasio en el que se encuentre inscrito.
    • gym: equipamientos asociados a el propio gimnasio.
    • owner: equipamientos asociados a todos los gimnasios asociados a el dueño.
	equipments/detail/<int:pk>/
  • GET Owner, Client, Gym: Permite obtener información de el equipamiento indicado en la URL. Aceptará la petición sí:
    • client: El equipamiento está asignado a el gimnasio en el que está inscrito.
    • gym: El equipamiento está asignado a el propio gimnasio.
    • owner: El equipamiento está asignado a algún gimnasio asociado a el dueño.
	equipments/create/
  • POST Owner: Permite la introducción de un nuevo equipamiento a la base de datos. Permitirá la petición solo si el gimnasio indicado en esta es propiedad de el dueño logeado. Requiere:
    • name
    • brand
    • serial_number
    • description
    • muscular_group Arms, Legs, Core, Chest, Back, Shoulders, Other
    • gym (Gym)
	equipments/update/<int:pk>/
  • PUT Owner: Permite la edición de los datos de un equipamiento en la base de datos. Aceptará la petición si el equipamiento está asignado a el dueño logeado. Requiere:
    • name
    • brand
    • serial_number
    • description
    • muscular_group Arms, Legs, Core, Chest, Back, Shoulders, Other
    • gym (Gym)
	equipments/delete/<int:pk>/
  • DELETE Owner: Permite eliminar un equipamiento de la base de datos. Aceptará la petición si el equipamiento está asignado a el dueño logeado.
	equipments/time/<int:pk>/
  • GET: Permite obtener el tiempo total de todas las series realizadas sobre una máquina específica indicada en la URL.

Assesment

Estos endpoints permiten acceder a toda la información de las reviews de cada equipamiento de el gimnasio.

	assesments/
  • GET Gym, Owner: Permite obtener un listado de todas las reviews de la base de datos.
	assesments/client/<int:clientId>/
  • GET: Permite obtener un listado de las reviews de el cliente indicado en la URL.
	assesments/detail/<int:pk>/
  • GET: Permite obtener información de la review indicada en la URL.
	assesments/create/
  • POST Client: Permite la introducción de una nueva review a la base de datos. Permitirá la petición solo si el cliente logeado no ha realizado todavía un assesment de la máquina indicada y la máquina indicada es de el gimnasio en el que el cliente está inscrito. Requiere:
    • stars
    • equipment Equipment
    • client (Client)
	assesments/update/<int:pk>/
  • PUT Client: Permite la modificación de una review de la base de datos. Permitirá la petición solo si el assesment fue realizado por el cliente que realiza la petición y este está todavóa suscrito a el gimnasio. Requiere:
    • stars
    • equipment (Equipment)
    • client (Client)
	assesments/delete/<int:pk>/
  • DELETE Client: Permite la eliminación de una review de la base de datos. Permitirá la petición solo si el assesment fue realizado por el cliente que realiza la petición y este está todavía suscrito a el gimnasio.

Ticket

Estos endpoints permiten acceder a toda la información de los tickets de cada equipamiento de el gimnasio.

	tickets/
  • GET Owner, Gym: Permite obtener un listado de todos los tickets de la base de datos. Se devolverán:
    • owner: Los tickets relacionados con todos los gimnasios asociados a el dueño.
    • gym: Los tickets relacionados con el propio gimnasio.
	tickets/detail/<int:pk>/
  • GET Client, Owner, Gym: Permite obtener los detalles de el ticket indicado en la URL. Devolverá el ticket si:
    • client: El cliente asociado a el ticket es cliente logeado.
    • owner: El cliente asociado a el ticket está relacionado con uno de los gimnasios asociados a el dueño.
    • gym: El cliente asociado a el ticket está relacionado con el propio gimnasio.
	tickets/byEquipment/<int:equipmentId>/
  • GET Owner, Gym: Permite obtener un listado de los tickets relacionados con el equipamiento indicado en la URL. Aceptará la petición si:
    • owner: El equipamiento indicado está relacionado con alguno de los gimnasios asociados a el dueño.
    • gym: El equipamiento indicado está relacionado con el propio gimnasio.
	tickets/byClient/<int:clientId>/
  • GET Client, Owner, Gym: Permite obtener un listado de los tickets relacionados con el cliente indicado en la URL. Aceptará la petición si:
    • client: El cliente logeado es el cliente indicado.
    • owner: El cliente indicado está relacionado con uno de los gimnasios asociados a el dueño.
    • gym: El cliente indicado está relacionado con el propio gimnasio.
	tickets/create/
  • POST Client: Permite la introducción de un nuevo ticket a la base de datos. Requiere:
    • label
    • description
    • equipment
	tickets/update/<int:pk>/
  • PUT Client, Owner, Gym: Permite la actualización un ticket de la base de datos. Aceptará la petición si:

    • client: El cliente asociado con el ticket indicado es el cliente logeado.
    • owner: El cliente asociado con el ticket indicado está relacionado con uno de los gimnasios asociados a el dueño.
    • gym: El cliente asociado con el ticket indicado está relacionado con el propio gimnasio.

    Requiere:

    • label
    • description
    • equipment
    • status True, False
	tickets/delete/<int:pk>/
  • DELETE: Permite la eliminación de un ticket de la base de datos. Aceptará la petición si:
    • client: El cliente asociado con el ticket indicado es el cliente logeado.
    • owner: El cliente asociado con el ticket indicado está relacionado con uno de los gimnasios asociados a el dueño.
    • gym: El cliente asociado con el ticket indicado está relacionado con el propio gimnasio.

Routine

Estos endpoints permiten acceder a toda la información de las rutinas de cada cliente.

	routines/
  • GET Gym, Owner: Permite obtener un listado de las rutinas almacenadas en la base de datos.
	routines/client/<int:clientId>/
  • GET Client, Gym, Owner: Permite obtener un listado de las rutinas asignadas a un cliente concreto. Se aceptará la petición sí:
    • client: solo se aceptará si el cliente pedido es el mismo que el logeado.
    • owner o gym: se aceptará directamente.
	routines/detail/<int:pk>/
  • GET Clent: Permite obtener detalles de la rutina indicada en la URL. Solo aceptará la petición si la rutina está asignada a el cliente logeado.
	routines/create/
  • POST Client: Permite introducir una nueva rutina a la base de datos. Solo aceptará la petición si el cliente asignado a la rutina es el mismo que el logeado. Requiere:
    • name
    • client (Client)
	routines/update/<int:pk>/
  • PUT Client: Permite la mofificación de la rutina indicada en la URL. Solo aceptará la petición si la rutina indicada está asignada a el cliente logeado. Requiere:
    • name
    • client (Client)
	routines/delete/<int:pk>/
  • DELETE Client: Permite la eliminación de la rutina indicada en la URL. Solo aceptará la petición si la rutina indicada está asignada a el cilente logeado.

Workout

Estos endpoints permiten acceder a toda la información de los ejercicios de cada rutina.

	workouts/
  • GET Client, Admin : Permite obtener un listado de todos los ejercicios de la base de datos. Si estás logeado como cliente accederás a los ejercicios de dicho cliente. Si estás logeado como admin, a todos.
	workouts/detail/<int:pk>/
  • GET Client: Permite obtener los detalles de el ejercicio indicado en la URL. Solo aceptará la petición si estás logeado como el cliente relacionado con el ejercicio indicado.
	workouts/byEquipment/<int:equipmentId>/
  • GET Client: Permite obtener un listado de todos los ejercicios relacionados con el equipamiento indicado en la URL. Solo aceptará la petición si estás logeado como cliente.
	workouts/byClient/<int:clientId>/
  • GET Owner, Gym: Permite obtener un listado de todos los ejercicios relacionados con el cliente indicado en la URL. Solo aceptará la petición si estás logeado como dueño o gimnasio.
	workouts/byRoutine/<int:routineId>/
  • GET Client: Permite obtener un listado de todos los ejercicios relacionados con la rutina indicada en la URL. Solo aceptará la petición si estás logeado como cliente.
	workouts/create/
  • POST Client: Permite la creación de un nuevo ejercicio en la base de datos. Solo aceptará la petición si estás logeado como cliente. Requiere:
    • name
    • client (Client)
    • routine (List(Routine))
    • equipment (List(Equipment))
	workouts/update/<int:pk>/
  • PUT Client: Permite la actualización de el ejercicio indicado en la URL. Solo aceptará la petición si el cliente logeado está relacionado con el ejercicio indicado. Requiere:
    • name
    • client (Client)
    • routine (List(Routine))
    • equipment (List(Equipment))
	workouts/delete/<int:pk>/
  • DELETE Client: Permite la eliminación de el ejercicio indicado en la URL. Solo aceptará la petición si el cliente logeado está relacionado con el ejercicio indicado.

Serie

Estos endpoints permiten acceder a toda la información de las series de cada ejercicio.

	series/
  • GET Gym, Owner: Permite listar todas las series de la base de datos.
	series/detail/<int:pk>/
  • GET Client: Permite obtener los detalles de la serie indicada en la URL. Solo aceptará la petición si estas logeado como el cliente asociado a el ejercicio asociado a la serie.
	series/create/
  • POST Client: Permite crear una nueva serie en la base de datos. Solo aceptará la petición si el ejercicio indicado en el cuerpo está relacionado con el cliente logeado. Requiere:
    • reps
    • weight
    • date
    • duration
    • workout (Workout)
	series/update/<int:pk>/
  • PUT Client: Permite actualizar la serie indicada en la URL. Solo aceptará la petición si el ejercicio indicado en el cuerpo está relacionado con el cliente logeado. Requiere:
    • reps
    • weight
    • date
    • duration
    • workout (Workout)
	series/delete/<int:pk>/
  • DELETE Client: Permite la eliminación de la serie indicada en la URL. Solo aceptará la petición si el ejercicio de la serie indicada está relacionado con el cliente logeado.
	series/workout/<int:pk>/
  • GET Client: Permite el listado de todas las series relacionadas con el ejercicio indicado en la URL. Solo aceptará la petición si el ejercicio indicado está relacionado con el cliente logeado.

Event

Estos endpoints permiten acceder a toda la información de los eventos de cada gimnasio.

	events/
  • GET Gym, Owner: Permite listar todos los eventos de la base de datos.
	events/detail/<int:pk>/
  • GET Gym, Owner, Client: Permite obtener los detalles de el evento indicado en la URL. Solo aceptará la petición si el dueño, cliente o gimnasio logeado está relacionado con el gimnasio relacionado con el evento indicado.
	events/gym/<int:gymId>/
  • GET Gym, Owner, Client: Permite obtener todos los eventos relacionados con el gimnasio indicado en la URL. Solo aceptará la petición si el gimnasio indicado está relacionado con el cliente, gimnasio o dueño logeado.
	events/client/<int:clientId>/
  • GET Gym, Owner, Client: Permite obtener todos los eventos a los que va a asistir el cliente indicado en la URL (existe una reserva a su nombre). Solo aceptará la petición si el gimnasio relacionado con el cliente indicado está relacionado con el cliente, gimnasio o dueño logeado.
	events/create/
  • POST Gym, Owner: Permite crear un nuevo evento en la base de datos. Solo aceptará la petición si el gimnasio indicado en el cuerpo está relacionado con el cliente, gimnasio o dueño logeado. Requiere:
    • name
    • description
    • capacity
    • attendees
    • instructor
    • date
    • duration
    • gym (Gym)
	events/update/<int:pk>/
  • PUT Gym, Owner: Permite editar la información de el evento indicado en la URL. Solo aceptará la petición si el evento indicado está relacionado con el gimnasio o cliente indicado. Requiere:
    • name
    • description
    • capacity
    • attendees
    • instructor
    • date
    • duration
    • gym (Gym)
	events/delete/<int:pk>/
  • DELETE Gym, Owner: Permite la eliminación de un evento de la base de datos. Solo aceptará la petición si el evento indicado en la URL está relacionado con el gimnasio o dueño logeado.

Reservation

Estos endpoints permiten acceder a toda la información de las reservas de cada evento.

	reservations/all/
  • GET: Permite listar todas las reservas de la base de datos.
	reservations/client/<int:clientId>/
  • GET Gym, Owner, Client: Permite listar todas las reservas relacionadas con el cliente indicado en la URL. Solo aceptará la petición si el gimnasio relacionado con el cliente indicado está relacionado con el gimnasio, dueño o cliente logeado.
	reservations/event/<int:eventId>/
  • GET Gym, Owner, Client: Permite listar todas las reservas relacionadas con el evento indicado en la URL. Solo aceptará la petición si el gimnasio relacionado con el evento indicado está relacionado con el gimnasio, dueño o cliente logeado.
	reservations/detail/<int:pk>/
  • GET Gym, Owner, Client: Permite obtener los detalles de la reserva indicada en la URL. Solo aceptará la petición si el gimnasio relacionado con la reserva indicada está relacionado con el gimnasio, dueño o cliente logeado.
	reservations/create/
  • POST Gym, Owner, Client: Permite introducir una nueva reserva a la base de datos. Solo aceptará la petición si:

    • El gimnasio indicado en el cuerpo está relacionado con el gimnasio, dueño o cliente logeado.
    • El evento no está completo todavía (capacidad > atendientes)
    • No existe una reserva todavía para el cliente indicado en el evento indicado.

    Requiere:

    • cliente (Client)
    • event (Event)
	reservations/update/<int:pk>/
  • PUT Gym, Owner, Client: Permite la mofificación de la reserva indicada en la URL. Solo aceptará la petición si el gimnasio relacionado con la reserva indicada está relacionado con el gimnasio, dueño o cliente logeado. Requiere:
    • cliente (Client)
    • event (Event)
	reservation/delete/<int:pk>/
  • DELETE Gym, Owner, Client: Permite la eliminación de una reserva de la base de datos. Solo aceptará la petición si el gimnasio relacionado con la reserva indicada en la URL está relacionado con el gimnasio, dueño o cliente logeado.