diff --git a/endpoints.http b/endpoints.http
index aab693a..ce4c2d3 100644
--- a/endpoints.http
+++ b/endpoints.http
@@ -3,40 +3,74 @@
@password=admin
@email=admin@example.com
@userType=admin
+@accessToken=someValueXyzXyz
-GET {{baseUrl}}/budget/:id/add HTTP/1.1
-
-###
-# Get all users (raw)
-GET {{baseUrl}}/admin/users HTTP/1.1
+# Get all user IDs
+GET {{baseUrl}}/admin/allUserIds HTTP/1.1
Authorization: Bearer {{accessToken}}
###
-# Get a user (raw)
-GET {{baseUrl}}/admin/user/:id HTTP/1.1
+# Monitor all users
+POST {{baseUrl}}/admin/monitorAllUsers HTTP/1.1
Authorization: Bearer {{accessToken}}
###
-DELETE {{baseUrl}}/admin/user/:id HTTP/1.1
-
-###
-GET {{baseUrl}}/alarm/:id HTTP/1.1
+# Get the alarm for a monitored user, if one is set
+GET {{baseUrl}}/user/:id/alarm HTTP/1.1
+Authorization: Bearer {{accessToken}}
###
-PUT {{baseUrl}}/alarm/:id HTTP/1.1
+# Clear the alarm for a monitored user
+DELETE {{baseUrl}}/user/:id/alarm HTTP/1.1
+Authorization: Bearer {{accessToken}}
###
+# Get a list of all alarms for monitored users
GET {{baseUrl}}/alarms HTTP/1.1
+Authorization: Bearer {{accessToken}}
###
+# Get the current user's alarm
GET {{baseUrl}}/alarm/@me HTTP/1.1
+Authorization: Bearer {{accessToken}}
###
+# Raise an alarm (enum: one of "fall" or "toilet")
PUT {{baseUrl}}/alarm/@me HTTP/1.1
+Authorization: Bearer {{accessToken}}
+Content-Type: application/json
+
+{
+ "reason": "fall"
+}
+
###
+# Clear alarm
DELETE {{baseUrl}}/alarm/@me HTTP/1.1
+Authorization: Bearer {{accessToken}}
+
+###
+# Get assigned users
+GET {{baseUrl}}/monitor/assignedUsers HTTP/1.1
+Authorization: Bearer {{accessToken}}
+
+###
+# Add an assigned user by ID
+PATCH {{baseUrl}}/monitor/assignedUsers HTTP/1.1
+Authorization: Bearer {{accessToken}}
+Content-Type: application/json
+
+{
+ "userId": "abcdef"
+}
+
+
+###
+# Remove an assigned user by ID
+DELETE {{baseUrl}}/monitor/assignedUsers HTTP/1.1
+Authorization: Bearer {{accessToken}}
###
# Delete account
@@ -51,13 +85,27 @@ Content-Type: application/json
###
-GET {{baseUrl}}/budget/:id HTTP/1.1
+# Get the budget for a monitored user
+GET {{baseUrl}}/user/:id/budget HTTP/1.1
+Authorization: Bearer {{accessToken}}
###
-GET {{baseUrl}}/budget/@me HTTP/1.1
+# Add budget for a monitored user
+PATCH {{baseUrl}}/user/:id/budget HTTP/1.1
+Authorization: Bearer {{accessToken}}
+Content-Type: application/json
+
+{
+ "venue": "Monitor 123",
+ "reason": "Just short for a coke to deal with diabetes",
+ "amount": 0.15
+}
+
###
+# Get all devices registered to the user
GET {{baseUrl}}/auth/devices HTTP/1.1
+Authorization: Bearer {{accessToken}}
###
# Get the index page (empty)
@@ -76,11 +124,32 @@ Content-Type: application/json
###
-# Log out from a device (TODO)
+# Log out from a device
POST {{baseUrl}}/auth/logout HTTP/1.1
Authorization: Bearer {{accessToken}}
###
+# Get user device by ID
+GET {{baseUrl}}/auth/devices/:id HTTP/1.1
+Authorization: Bearer {{accessToken}}
+
+###
+# Delete user device by ID
+DELETE {{baseUrl}}/auth/devices/:id HTTP/1.1
+Authorization: Bearer {{accessToken}}
+
+###
+# Update user device by ID
+PATCH {{baseUrl}}/auth/devices/:id HTTP/1.1
+Authorization: Bearer {{accessToken}}
+Content-Type: application/json
+
+{
+ "name": "New Device Name"
+}
+
+
+###
# Create a new user
POST {{baseUrl}}/auth/register HTTP/1.1
Content-Type: application/json
@@ -98,7 +167,25 @@ Content-Type: application/json
GET {{baseUrl}}/status HTTP/1.1
###
+GET {{baseUrl}}/budget/@me HTTP/1.1
+Authorization: Bearer {{accessToken}}
+
+###
+# Spend part of budget
+PATCH {{baseUrl}}/budget/@me HTTP/1.1
+Authorization: Bearer {{accessToken}}
+Content-Type: application/json
+
+{
+ "venue": "The Store",
+ "reason": "Bought a coke",
+ "amount": 0.85
+}
+
+
+###
# Get current user
GET {{baseUrl}}/auth/whoami HTTP/1.1
+Authorization: Bearer {{accessToken}}
###
diff --git a/src/api/routes.js b/src/api/routes.js
index 279b1ef..e2765a3 100644
--- a/src/api/routes.js
+++ b/src/api/routes.js
@@ -15,6 +15,7 @@ function logHttpHeader() {
logPrefixed('@password=admin');
logPrefixed('@email=admin@example.com');
logPrefixed('@userType=admin');
+ logPrefixed('@accessToken=someValueXyzXyz');
logPrefixed('');
logPrefixed('');
}
diff --git a/src/api/routes/adminRoutes.js b/src/api/routes/adminRoutes.js
index a5902ee..4baa5e4 100644
--- a/src/api/routes/adminRoutes.js
+++ b/src/api/routes/adminRoutes.js
@@ -16,6 +16,9 @@ export const adminGetUserIdsRoute = {
path: '/admin/allUserIds',
methods: {
get: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireAdmin],
description: 'Get all user IDs',
async method(req, res) {
@@ -42,6 +45,9 @@ export const adminMonitorAllRoute = {
path: '/admin/monitorAllUsers',
methods: {
post: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireAdmin],
description: 'Monitor all users',
async method(req, res) {
diff --git a/src/api/routes/alarmRoutes.js b/src/api/routes/alarmRoutes.js
index 635d230..b0147ab 100644
--- a/src/api/routes/alarmRoutes.js
+++ b/src/api/routes/alarmRoutes.js
@@ -15,6 +15,9 @@ export const alarmByUserRoute = {
path: '/user/:id/alarm',
methods: {
get: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireMonitor],
description: 'Get the alarm for a monitored user, if one is set',
async method(req, res) {
@@ -23,6 +26,9 @@ export const alarmByUserRoute = {
}
}),
delete: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireMonitor],
description: 'Clear the alarm for a monitored user',
async method(req, res) {
@@ -44,6 +50,9 @@ export const alarmListRoute = {
path: '/alarms',
methods: {
get: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireMonitor],
description: 'Get a list of all alarms for monitored users',
async method(req, res) {
@@ -77,6 +86,9 @@ export const alarmRoute = {
path: '/alarm/@me',
methods: {
get: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireUser],
description: "Get the current user's alarm",
async method(req, res) {
@@ -84,8 +96,14 @@ export const alarmRoute = {
}
}),
put: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
+ exampleBody: {
+ reason: 'fall'
+ },
middlewares: [requireUser],
- description: 'Raise an alarm',
+ description: 'Raise an alarm (enum: one of "fall" or "toilet")',
async method(req, res) {
req.user.alarm = await AlarmDto.create(req.body);
await req.user.save();
@@ -93,6 +111,9 @@ export const alarmRoute = {
}
}),
delete: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireUser],
description: 'Clear alarm',
async method(req, res) {
diff --git a/src/api/routes/assignedUserRoutes.js b/src/api/routes/assignedUserRoutes.js
index dac9b13..e870cd8 100644
--- a/src/api/routes/assignedUserRoutes.js
+++ b/src/api/routes/assignedUserRoutes.js
@@ -10,6 +10,9 @@ export const assignedUserRoute = {
path: '/monitor/assignedUsers',
methods: {
get: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireMonitor],
description: 'Get assigned users',
async method(req, res) {
@@ -17,7 +20,13 @@ export const assignedUserRoute = {
}
}),
patch: {
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireMonitor],
+ exampleBody: {
+ userId: 'abcdef'
+ },
description: 'Add an assigned user by ID',
async method(req, res) {
if (!req.body.userId) {
@@ -41,6 +50,9 @@ export const assignedUserRoute = {
}
},
delete: {
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireMonitor],
description: 'Remove an assigned user by ID',
async method(req, res) {
diff --git a/src/api/routes/auth/accountRoutes.js b/src/api/routes/auth/accountRoutes.js
index fb6dcfa..f0d0102 100644
--- a/src/api/routes/auth/accountRoutes.js
+++ b/src/api/routes/auth/accountRoutes.js
@@ -107,6 +107,9 @@ export const whoAmI = {
methods: {
get: new RouteMethod({
description: 'Get current user',
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireAuth],
async method(req, res) {
const data = await WhoAmIDto.create({
diff --git a/src/api/routes/auth/deviceRoutes.js b/src/api/routes/auth/deviceRoutes.js
index 023d02d..41802b8 100644
--- a/src/api/routes/auth/deviceRoutes.js
+++ b/src/api/routes/auth/deviceRoutes.js
@@ -14,6 +14,9 @@ export const getDevicesRoute = {
path: '/auth/devices',
methods: {
get: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireAuth],
description: 'Get all devices registered to the user',
async method(req, res) {
@@ -30,6 +33,9 @@ export const manageDeviceRoute = {
path: '/auth/devices/:id',
methods: {
get: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireAuth],
description: 'Get user device by ID',
async method(req, res) {
@@ -49,6 +55,9 @@ export const manageDeviceRoute = {
}
}),
delete: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireAuth],
description: 'Delete user device by ID',
async method(req, res) {
@@ -70,6 +79,12 @@ export const manageDeviceRoute = {
}
}),
patch: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
+ exampleBody: {
+ name: 'New Device Name'
+ },
middlewares: [requireAuth],
description: 'Update user device by ID',
async method(req, res) {
diff --git a/src/api/routes/budgetRoutes.js b/src/api/routes/budgetRoutes.js
index 13b4c50..e522442 100644
--- a/src/api/routes/budgetRoutes.js
+++ b/src/api/routes/budgetRoutes.js
@@ -16,8 +16,8 @@ import Joi from 'joi';
const budgetModifySchema = new Joi.object({
venue: Joi.string().required().max(100),
reason: Joi.string().required().max(500),
- amount: Joi.number().required().min(0)
- // createdAt: Joi.forbidden()
+ amount: Joi.number().required().min(0),
+ createdAt: Joi.forbidden()
});
/**
@@ -27,6 +27,9 @@ export const getBudgetByUserRoute = {
path: '/user/:id/budget',
methods: {
get: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireMonitor],
description: 'Get the budget for a monitored user',
async method(req, res) {
@@ -43,6 +46,14 @@ export const getBudgetByUserRoute = {
}
}),
patch: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
+ exampleBody: {
+ venue: 'Monitor 123',
+ reason: 'Just short for a coke to deal with diabetes',
+ amount: 0.15
+ },
middlewares: [requireMonitor],
description: 'Add budget for a monitored user',
async method(req, res) {
@@ -80,12 +91,23 @@ export const userBudgetRoute = {
path: '/budget/@me',
methods: {
get: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
middlewares: [requireUser],
async method(req, res) {
res.send({ currentBalance: req.user.balance });
}
}),
patch: new RouteMethod({
+ exampleHeaders: {
+ Authorization: 'Bearer {{accessToken}}'
+ },
+ exampleBody: {
+ venue: 'The Store',
+ reason: 'Bought a coke',
+ amount: 0.85
+ },
middlewares: [requireUser],
description: 'Spend part of budget',
async method(req, res) {
|