State management for the purpose of arbitrary session data storage.
Sliding expiry: defaultTtlSec setting in ./config/default.json file. Get/Put/Patch will extend the sliding expiry.
Secured by x-auth-key Http Header.
Initial implementation compares xAuthKeys from ./config/default.json file
Header ->
x-auth-key: 4a060c73-aced-4819-9318-12fba2dafd58
POST: /v1
BODY:
{
"xSessionToken": "Wl5DA4rBbDNcuYpuJxwQ8xrLC98LPKaS7wcjm9", <--Optional when consumer wants to dictate session token
"AccountId": "6309c3e7-4637-4a7d-b20e-c0cf3f628d0f",
"ttlSec": 36000 <--Optional, if omitted default value is used
}
Status: 200
BODY:
{
"AccountId": "6309c3e7-4637-4a7d-b20e-c0cf3f628d0f",
"xSessionToken": "1c6d3006-9ca4-4115-80ee-9fc9225f3001",
"expiresOn": "2015-05-18T17:15:51.628Z",
"ttlSec": 3600
}
Secured by x-session-token Http Header. Returns full content of the session.
Header -> x-session-token: Id from the create session response
GET: /v1/1c6d3006-9ca4-4115-80ee-9fc9225f3001
Status: 200
BODY:
{
"AccountId": "6309c3e7-4637-4a7d-b20e-c0cf3f628d0f",
"xSessionToken": "1c6d3006-9ca4-4115-80ee-9fc9225f3001",
"expiresOn": "2015-05-18T17:15:51.628Z",
"ttlSec": 3600
}
Status: 401
BODY:
{
"code": "401",
"message": "Invalid xSessionToken: 12a3e5bb-607c-4f68-a6c6-f2ecd024c9ed"
}
Returns confirmation session is alive.
GET: /v1/6309c3e7-4637-4a7d-b20e-c0cf3f628d0f/validate
Status: 200
BODY:
{
"isValid": true,
"expiresOn": "2015-05-18T17:21:13.127Z",
"ttlSec":86400
}
Status: 401
BODY:
{
"code": "401",
"message": "Invalid xSessionToken: 12a3e5bb-607c-4f68-a6c6-f2ecd024c9ed"
}
Replaces content of session with the request body.
PUT: /v1/6309c3e7-4637-4a7d-b20e-c0cf3f628d0f
BODY:
{
"NewValue":"6309c3e7-4637-4a7d-b20e-c0cf3f628d0f"
}
Status: 200
BODY:
{
"AccountId": "6309c3e7-4637-4a7d-b20e-c0cf3f628d0f",
"xSessionToken": "1c6d3006-9ca4-4115-80ee-9fc9225f3001",
"Expires": "2015-05-18T17:15:51.628Z",
"Ttl": 3600,
"NewValue":"6309c3e7-4637-4a7d-b20e-c0cf3f628d0f"
}
Status: 401 BODY:
{
"code": "401",
"message": "Invalid xSessionToken: 12a3e5bb-607c-4f68-a6c6-f2ecd024c9ed"
}
Adds to the content of session based on request body.
PATCH: /v1/6309c3e7-4637-4a7d-b20e-c0cf3f628d0f
BODY:
{
"NewField":"dummy"
}
Status: 200
BODY:
{
"AccountId": "6309c3e7-4637-4a7d-b20e-c0cf3f628d0f",
"xSessionToken": "1c6d3006-9ca4-4115-80ee-9fc9225f3001",
"Expires": "2015-05-18T17:15:51.628Z",
"Ttl":86400,
"NewField":"dummy"
}
Status: 401
BODY:
{
"code": "401",
"message": "Invalid xSessionToken: 12a3e5bb-607c-4f68-a6c6-f2ecd024c9ed"
}
Terminates the session.
DELETE: /v1/6309c3e7-4637-4a7d-b20e-c0cf3f628d0f
Status: 200
BODY:
{
"deleted": true
}
Status: 404
BODY:
{
"deleted": false
}
http://state-service-dev-ms.end-points.io/ (give it a min to warm up when it is slow) https://state-service-dev-ms.herokuapp.com/ (give it a min to warm up when it is slow)