API de restaurante

This commit is contained in:
2021-05-02 19:15:35 -04:00
parent b20d95cb81
commit 1632a2e51f
6 changed files with 313 additions and 13 deletions

View File

@@ -9,12 +9,13 @@ administrar sus restaurantes.
Esta API tendrá los siguientes endpoints
| Funcionalidad | Endpoint |
| --------------- | ----------------- |
| Usuario | `/api/v1/users/` |
| Bodega | `/api/v1/bodega/` |
| Venta | `/api/v1/venta/` |
| Administración | `/api/v1/admin/` |
| Funcionalidad | Endpoint |
| --------------- | ----------------------- |
| Usuario | `/api/v1/users/` |
| Restaurante | `/api/v1/restaurantes/` |
| Bodega | `/api/v1/bodega/` |
| Venta | `/api/v1/venta/` |
| Administración | `/api/v1/admin/` |
## Autorización
@@ -193,7 +194,7 @@ para el modelo.
### Actualizar
Para actualizar un usuario se debe enviar un `POST` a la
Para actualizar un usuario se debe enviar un `PUT` a la
ruta `/api/v1/users/{id}` donde `{id}` es el ID del usuario a buscar, este ID
puede ser el UUID del usuario o el ID entregado por Auth0, y en el cuerpo se
debe indicar los campos a actualizar.
@@ -355,3 +356,146 @@ ejemplo, donde se eliminó del restaurante `4e47a419-9398-47ff-82e9-b78851e71226
]
}
```
## Restaurantes
La API de restaurantes permite manipular los restaurantes de la aplicacion,
donde las siguientes acciones estan disponibles
### Obtener todos
Para obtener la lista completa de restaurantes se debe enviar un `GET` a la
ruta `/api/v1/restaurantes`, estos datos seran paginados, por lo que
opcionalmente se recibe el parámetro `page` para definir la página a obtener y
el parámetro `per_page` para definir cuantos elementos obtener por página.
La respuesta de la API tiene la siguiente forma
```json
{
"pagination": {
"per_page": 15,
"from": 1,
"to": 2,
"total": 2,
"current_page": 1,
"last_page": 1,
"links": {
"first": "http:\/\/localhost:8080\/api\/v1\/restaurantes?page=1&per_page=15",
"prev": null,
"current": "http:\/\/localhost:8080\/api\/v1\/restaurantes?page=1&per_page=15",
"next": null,
"last": "http:\/\/localhost:8080\/api\/v1\/restaurantes?page=1&per_page=15"
}
},
"data": [
{
"id": "eb41e807-24ef-4620-aa5e-3aa9cf920ddf",
"nombre": "Todo Rico Restaurant",
"created_at": "2021-05-01T04:46:11.593213Z",
"updated_at": "2021-05-01T04:46:11.593213Z",
"deleted_at": null
},
{
"id": "e7d1ce9c-fed1-4a01-ab91-0069d92eeea3",
"nombre": "Confiteria Central",
"created_at": "2021-05-02T16:40:56.000000Z",
"updated_at": "2021-05-02T16:52:26.000000Z",
"deleted_at": null
}
]
}
```
La respuesta contendrá una serie de datos indicando el estado de la paginación,
además de una serie de links indicando a donde llamar para obtener la primera,
anterior, actual, siguiente y última página.
Estos links pueden ser null en caso que no sea posible utilizarlo, por ejemplo
si hay 3 páginas y la página actual es la 3, el link `next` será nulo, ya que no
hay una cuarta página.
### Obtener Restaurante
Para obtener un restaurante se debe hacer un `GET` a la
ruta `/api/v1/restaurantes/{id}`
donde `{id}` es el ID del restaurante a buscar.
Si el ID de restaurante existe, la siguiente sera la respuesta de la API
```json
{
"id": "eb41e807-24ef-4620-aa5e-3aa9cf920ddf",
"nombre": "Todo Rico Restaurant",
"created_at": "2021-05-01T04:46:11.593213Z",
"updated_at": "2021-05-01T04:46:11.593213Z",
"deleted_at": null
}
```
En caso que el ID no exista, la siguiente sera la respuesta de error
```json
{
"error": "restaurant_not_found",
"message": "El restaurant con id eb41e807-24ef-4620-aa5e-3aa9cf920dde no existe"
}
```
### Crear
Para crear un nuevo restaurant se debe enviar un `POST` a la
ruta `/api/v1/restaurantes` con un payload como el del siguiente ejemplo
```json
{
"nombre": "Unified Restaurant"
}
```
Esto creará un restaurante con nombre "Unified Restaurant" y la API responderá
con el usuario creado.
```json
{
"id": "eb41e807-24ef-4620-aa5e-3aa9cf920ddf",
"nombre": "Todo Rico Restaurant",
"created_at": "2021-05-01T04:46:11.593213Z",
"updated_at": "2021-05-01T04:46:11.593213Z",
"deleted_at": null
}
```
### Actualizar
Para actualizar un restaurant se debe enviar un `PUT` a la
ruta `/api/v1/restaurantes/{id}` donde `{id}` es el id del restaurante a editar
El siguiente payload va a cambiar el nombre del restaurante
```json
{
"nombre": "Unified Restaurant 2: Electric Boongaloo"
}
```
Una vez modificado el dato, la API responderá con el restaurant actualizado
```json
{
"id": "6a2855cc-cc04-4bc1-ac97-e8f632918303",
"nombre": "Unified Restaurant 2: Electric Boongaloo",
"created_at": "2021-05-02T17:13:01.000000Z",
"updated_at": "2021-05-02T23:13:10.000000Z",
"deleted_at": null
}
```
### Eliminar
Para eliminar un restaurant se envía un `DELETE` a la
ruta `/api/v1/restaurantes/{id}` donde `{id}` es el ID del restaurante a
eliminar.
Al eliminar un restaurant, solo se marca como eliminado y se mostrara en ninguna
otra llamada, además de esto todas sus asociaciones son dejadas tal cual.