#API Endpoints
- POST /translate: translates a user request into a an intent with fields
- POST /request: submits a request for processing
- GET /request?status=: gets requests from storage
- PUT /request/id/: modifies a request (e.g. change its state)
- POST /account: registers a user
- PUT /account: updates a user
- POST /authenticate: authenticates a user
{ "request":"Make a reservation tomorrow at 8pm at House of Prime Rib" }
200 OK
{
"result": {
"intent": "RESTAURANT_RESERVATION",
"missingFields": [
{
"friendlyString": "For how many people?",
"name": "partySize",
"type": "Integer",
}
],
"validatedFields": [
{
"friendlyString": "Where?",
"name": "restaurant",
"type": "String",
"value": "House of Prime Rib"
},
{
"friendlyString": "When?",
"name": "dateTime",
"type": "String",
"value": "2014-11-04T04:00:00+0000"
}
],
"confirmation": "We'll make a reservation at $restaurant for $partySize people at $dateTime."
},
"error": null
}
{
"intent": "RESTAURANT_RESERVATION",
"dateTime": "2014-11-04T04:00:00+0000",
"partySize": 3,
"restaurant": "House of Prime Rib"
}
200 OK
{
"result": {
"request": {
"id": "REQUEST1946742199",
"intent": "RESTAURANT_RESERVATION",
"requesterId": "USER1633233668",
"status": "QUEUED",
"created": "2014-11-03T05:03:02+0000",
"dateTime": "2014-11-04T04:00:00+0000",
"partySize": 3,
"restaurant": "House of Prime Rib"
}
},
"error": null
}
400 bad request
{
"result": null,
"error": {
"code": 400,
"message": "Valid party size must be specified"
}
}
Gets all requests where the status is one of the enum QUEUED, PROCESSING, or DONE
{
"result": {
"requests": [
{
"id": "REQUEST1946742199",
"intent": "RESTAURANT_RESERVATION",
"requesterId": "USER1633233668",
"status": "QUEUED",
"created": "2014-11-03T05:03:02+0000",
"dateTime": "2014-11-04T04:00:00+0000",
"partySize": 3,
"restaurant": "House of Prime Rib"
}
]
},
"error": null
}
{
"status": "DONE"
}
200 OK
{
"result": {
"request": {
"id": "REQUEST1946742199",
"intent": "RESTAURANT_RESERVATION",
"requesterId": "USER1633233668",
"status": "DONE",
"created": "2014-11-03T05:03:02+0000",
"dateTime": "2014-11-04T04:00:00+0000",
"partySize": 3,
"restaurant": "House of Prime Rib"
}
},
"error": null
}
{
"email": "allenwoot@gmail.com",
"number": "6363366066",
"firstName": "Allen",
"lastName": "Wu",
"password": "super_secure_password",
"userType": "USER",
"deviceToken": "203f9j0293jf092j3"
}
200 OK
{
"result": {
"user": {
"authToken": "AUTHVVNFUjE4Mjk4ODMyMjRAMTQxNDk4OTI4NjcxNg==",
"email": "allenwoot@gmail.com",
"firstName": "Allen",
"id": "USER1829883224",
"lastName": "Wu",
"number": "6363366066",
"password": "super_secure_password",
"userType": "USER",
"deviceToken": "203f9j0293jf092j3"
}
},
"error": null
}
400 BAD REQUEST
{
"result": null,
"error": {
"code": 400,
"message": "Missing field {email}"
}
}
{
"email": "allenwoot@gmail.com",
"password": "doge"
}
200 OK
{
"result": {
"user": {
"authToken": "AUTHVVNFUjE2MzMyMzM2NjhAMTQxNDk4OTk0NDY1OA==",
"email": "allenwoot@gmail.com",
"firstName": "Allen",
"id": "USER1633233668",
"lastName": "Wu",
"number": "6363366066",
"password": "super_secure_password",
"userType": "USER",
"deviceToken": "203f9j0293jf092j3"
}
},
"error": null
}
403 FORBIDDEN
{
"result": null,
"error": {
"code": 403,
"message": "Authentication failed"
}
}
An authentication token must be passed with every request (with the exception of post account and post authenticate), as a header keyed with "Auth-Token".
401 UNAUTHORIZED
{
"result": null,
"error": {
"code": 401,
"message": "Invalid or expired auth token"
}
}