A microservice to share expenses between friends WIP. Class project for the infrastructure subject
Para interactura con la API se utilizarán llamadas HTTP
y la información se codificará como JSON
.
En esta documentación se especifica el proposito de cada endpoint
y, de ser
necesario, los campos que acepta en la petición y el tipo de los mismos.
A continuación se listan algunos objetos que se usan en las peticiones y que se repiten a lo largo de la aplicación.
Representa a un deudor en una cuenta
{
"name" : String (required),
"paid_amount": Float (required),
"fraction": Float (required),
"paid": Bool (required),
}
Objeto que se asigna a una cuenta
{
"date": u32 (required),
"price": Float (required),
"name": String (required)
}
Cuenta que representa una asociación entre items
y debtors
{
"name": String (required),
"debtors": [Debtor] (required),
"items": [Item] (required)
}
Se necesitan crear eventos.
POST /events/
Toma:
Account
Devuelve
OK
: Devuelve los datos de la entrada creadaBAD_REQUEST
: Si la entrada no es válidaSe necesita listar la información de un evento
GET /events/{event_id}
Toma:
Devuelve
OK
: Devuelve los datos del eventoNOT_FOUND
: Si el evento no se encuentra en el sistemaDebe poder añadirse un deudor a una lista
PUT /events/{event_id}
Toma:
Account
Devuelve
OK
: Devuelve los datos de la entrada actualizadaBAD_REQUEST
: Si la entrada no es válidaHacer un pago
PATCH /events/pay
Toma:
Entrada JSON con
name
(required)(String
): Nombre de la persona que realiza el pago.amount
(required)(Float
): Cantidad que se paga.id
(required)(String
): Id de la cuenta en la que se hace el pago.Devuelve
OK
: Devuelve los datos de la entrada actualizadaNOT_FOUND
: Si la entrada no hay un evento con dicho idUn usuario debe poder conseguir todos los eventos en los que participa
GET /users/{user_id}
Toma:
Devuelve
OK
: Devuelve los datos del evento o una lista vacía si no tiene o no
existe el usuarioCon las funcionalidades anteriormente descritas se cubren las historias de usuario a nivel de API: