NodeJS Backend para la App móvil Mesas AVE.
Mesas AVE es una App móvil para potenciar la economía colaborativa compartiendo mesa en trenes de tipo AVE Renfe.
A continuación se describen todos los servicios que ofrece el API.
http://mesasave.herokuapp.com/api/v1
Servicio | Descripción | Requiere Authorization |
---|---|---|
GET stations | Obtiene todas las estaciones | No |
GET stations/[id] | Obtiene una estación | No |
GET tables | Obtiene todas las mesas | No |
GET tables/[id] | Obtiene una mesa | No |
POST tables | Crea una mesa | Sí |
PUT tables/[id] | Actualiza una mesa | Sí |
DELETE tables/[id] | Elimina una mesa | Sí |
GET users | Obtiene todos los usuarios | No |
GET users/[id] | Obtiene un usuario | No |
POST users | Crea un usuario | No |
PUT users/[id] | Actualiza un usuario | Sí |
POST users/[id]/rememberPassword | Envía un correo con la contraseña | No |
POST users/login | Comprueba los credenciales | Sí |
stations
: Estaciones por las que pasan los trenes AVE.tables
: Cada una de las mesas con 4 asientos que se encuentran en los trenes AVE.availablePlaces
: Asientos libres de una mesa.fromDateTime
: Fecha y hora de salida de una mesa.toDateTime
: Fecha y hora de llegada de una mesa._fromStation
: Estación de origen de una mesa._toStation
: Estación destino de una mesa.<base64>
: Codificación de las credenciales de un usuario. Por ejemplo, para un usuario con email="Aladin" y password="open sesame" el base64 sería aplicar la codificación base64 a la cadena "Aladin:open sesame", es decir, QWxhZGRpbjpvcGVuIHNlc2FtZQ==querystring
: cadena para filtrar los resultados devueltos por un servicio. Siguen el formato estándar: ?parámetro1=valor1&parámetro2=valor2
Description: Obtiene todas las estaciones.
URL: http://mesasave.herokuapp.com/api/v1/stations
Method: GET
Request body:
""
Reponse body:
[
{
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
},
{
"_id": "560803afe4b018f3e291fff9",
"name": "Alicante"
}
]
Description: Obtiene una estación.
URL: http://mesasave.herokuapp.com/api/v1/stations/[id]
Method: GET
Request body:
""
Reponse body:
{
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
}
Description: Obtiene todas las mesas. Se pueden aplicar filtros mediante Query string. La Query string es opcional.
Para obtener las 100 primeras mesas con 3 plazas disponibles ordenadas por el parámetro fromDatetime
de forma descencente sería:
http://www.mesasave.herokuapp.com/api/v1/tables?availablePlaces=3&skip=0&limit=100&sort=-fromDatetime
.
Si quisiéramos la misma búsqueda pero por orden ascendente habría que cambiar -fromDatetime
por fromDatetime
.
El parámetro fromDatetime admite 1 o 2 valores dependiendo de si se quieren obtener las mesas de un día en concreto o las mesas entre un rango de fechas.
Para obtener todas las mesas de una fecha en concreto:
http://www.mesasave.herokuapp.com/api/v1/tables?fromDatetime=yyyy-MM-ddTHH:mm:ss.mmmZ
.
Para obtener todas las mesas entre un rango de fechas:
http://www.mesasave.herokuapp.com/api/v1/tables?fromDatetime=yyyy-MM-ddTHH:mm:ss.mmmZ&fromDatetime=yyyy-MM-ddTHH:mm:ss.mmmZ
.
URL: http://mesasave.herokuapp.com/api/v1/tables[querystring]
Method: GET
Request body:
""
Reponse body:
[
{
"_id": "550803afe4b018f3e291fff9",
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 3,
"_fromStation": {
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
},
"_toStation": {
"_id": "560803afe4b018f3e291fff9",
"name": "Alicante"
},
"_user": {
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
}
},
{
...another object
}
]
Description: Obtiene una mesa.
URL: http://mesasave.herokuapp.com/api/v1/tables/[id]
Method: GET
Request body:
""
Reponse body:
{
"_id" : "550803afe4b018f3e291fff9",
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 3,
"_fromStation": {
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
},
"_toStation": {
"_id": "560803afe4b018f3e291fff9",
"name": "Alicante"
},
"_user": {
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
}
}
Description: Crea una mesa.
URL: http://mesasave.herokuapp.com/api/v1/tables
Method: POST
Content-type: application/json
Authorization: Basic <base64>
// <base64> = base64("email:password")
Request body:
{
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 3,
"_fromStation": "550803afe4b018f3e291fff9",
"_toStation": "560803afe4b018f3e291fff9",
"_user": "500803afe4b018f3e291fff9"
}
Reponse body:
{
"_id" : "550803afe4b018f3e291fff9",
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 3,
"_fromStation": {
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
},
"_toStation": {
"_id": "560803afe4b018f3e291fff9",
"name": "Alicante"
},
"_user": {
"id": 500803afe4b018f3e291fff9"
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
}
}
Description: Actualiza una mesa. Los parámetros que no se envíen no se actualizarán.
URL: http://mesasave.herokuapp.com/api/v1/tables/[id]
Method: PUT
Content-type: application/json
Authorization: Basic <base64>
// <base64> = base64("email:password")
Request body:
{
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 2,
"_fromStation": "550803afe4b018f3e291fff9",
"_toStation": "560803afe4b018f3e291fff9",
"_user": "500803afe4b018f3e291fff9"
}
Reponse body:
{
"_id" : "550803afe4b018f3e291fff9",
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 2,
"_fromStation": {
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
},
"_toStation": {
"_id": "560803afe4b018f3e291fff9",
"name": "Alicante"
},
"_user": {
"id": 500803afe4b018f3e291fff9"
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
}
}
Description: Elimina una mesa.
URL: http://mesasave.herokuapp.com/api/v1/tables/[id]
Method: DELETE
Request body:
""
Reponse body:
""
Description: Obtiene todos los usuarios.
URL: http://mesasave.herokuapp.com/api/v1/users
Method: GET
Request body:
""
Reponse body:
[
{
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
},
{
...another object
}
]
Description: Obtiene un usuario.
URL: http://mesasave.herokuapp.com/api/v1/users/[id]
Method: GET
Request body:
{
"_id" : "500803afe4b018f3e291fff9"
}
Reponse body:
{
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
}
Description: Crea un usuario. Todos los campos son obligatorios.
URL: http://mesasave.herokuapp.com/api/v1/users
Method: POST
Content-type: application/json
Request body:
{
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123",
"password": "1234"
}
Reponse body:
{
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123",
"password": "1234"
}
Description: Actualiza un usuario. Los parámetros que no se envíen no se actualizarán. Si se quiere cambiar el campo "password" hay que enviar también los parámetros "newPassword" y "repeatNewPassword" y ambos deben coincidir.
URL: http://mesasave.herokuapp.com/api/v1/users/[id]
Method: PUT
Content-type: application/json
Authorization: Basic <base64>
// <base64> = base64("email:password")
Request body:
{
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123",
"password": "1234",
"newPassword": "4321",
"repeatNewPassword": "4321",
}
Reponse body:
{
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123",
"password": "1234" // este parámetro sólo aparecerá si se ha actualizado el campo "password"
}
Description: Envía un correo con la contraseña del usuario.
URL: http://mesasave.herokuapp.com/api/v1/users/[id]/rememberPassword
Method: POST
Request body:
""
Reponse body:
""
Description: Comprueba si unos credenciales (email/password) son correctos.
URL: http://mesasave.herokuapp.com/api/v1/users/login
Method: POST
Authorization: Basic <base64>
// <base64> = base64("email:password")
Request body:
""
Reponse body:
{
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123",
"password": "1234"
}