API keys
An API key is required for all requests.
If an API key is not provided the following error is given:
{ "errors": { "status": 401, "source": "/products", "title": "Valid API key", "detail": "No valid API key provided." } }
Register and login
Register
POST /register
Required parameters:
api_key email password
Result:
{ "data": { "message": "User successfully registered." } }
Login
POST /login
Required parameters:
api_key email password
Result:
{ "data": { "type": "success", "message": "User logged in", "user": { "api_key": "...", "email": "unknown@example.com" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ey..." } }
N.B. The access token expires after 24 hours.
Users
Get all users
GET /users?api_key=[API_KEY]
Result:
{ "data": [ { "user_id": 1, "email": "test@test.se" } ] }
Get specific user
GET /users/1?api_key=[API_KEY]
Result:
{ "data": { "user_id": 1, "email": "test@test.se" } }
User data
To use the following route, you need a valid JSON Web Token (JWT) set in the HTTP-header.
The 'x-access-token' header should contain the JWT.
Get all data for authenticated user
GET /data?api_key=[API_KEY]
User data has the following attributes:
id artefact api_key
In the following examples the artefact entity is used to store JSON-data. But any type of data can be stored for instance URLs, likes, upvotes or anything that can be stored as text.
Result:
{ data: [ { id: 1, email: 'test@example.com', artefact: '{"latitude":56.18185835,"longitude":15.5911037,"place":"BTH"}' } ] }
Create data for authenticated user
POST /data
Required params:
artefact api_key
Result:
{ data: { id: 1, email: 'test@example.com', artefact: '{"latitude":56.18185835,"longitude":15.5911037,"place":"BTH"}' } }
Update data for authenticated user
PUT /data
Required params:
id artefact api_key
Result:
204 No Content
Delete data for authenticated user
DELETE /data
Required params:
id api_key
Result:
204 No Content
Code Examples
JavaScript fetch
POST /register
var user = {
email: "test@test.se",
password: "test1234",
api_key: [API_KEY]
};
fetch("https://auth.emilfolino.se/register", {
body: JSON.stringify(user),
headers: {
'content-type': 'application/json'
},
method: 'POST'
})
.then(function (response) {
return response.json();
}).then(function(result) {
});
POST /login
var user = {
email: "test@test.se",
password: "test1234",
api_key: [API_KEY]
};
fetch("https://auth.emilfolino.se/login", {
body: JSON.stringify(user),
headers: {
'content-type': 'application/json'
},
method: 'POST'
})
.then(function (response) {
return response.json();
}).then(function(result) {
var token = result.data.token;
});
GET /users
fetch("https://auth.emilfolino.se/users?api_key=[API_KEY]")
.then(function (response) {
return response.json();
}).then(function(result) {
var users = result.data;
});
GET /data
fetch("https://auth.emilfolino.se/data?api_key=[API_KEY]", {
headers: {
'x-access-token': [TOKEN]
}
})
.then(function (response) {
return response.json();
}).then(function(result) {
var allData = result.data;
});
POST /data
var data = {
artefact: '{"latitude":56.18185835,"longitude":15.5911037,"place":"BTH"}',
api_key: [API_KEY]
};
fetch("https://auth.emilfolino.se/data", {
body: JSON.stringify(data),
headers: {
'content-type': 'application/json',
'x-access-token': [TOKEN]
},
method: 'POST'
})
.then(function (response) {
return response.json();
}).then(function(result) {
});
Mithril
POST /register
var user = {
email: "test@test.se",
password: "test1234",
api_key: [API_KEY]
};
m.request({
url: "https://auth.emilfolino.se/register",
body: user,
method: 'POST'
}).then(function(result) {
});
POST /login
var user = {
email: "test@test.se",
password: "test1234",
api_key: [API_KEY]
};
m.request({
url: "https://auth.emilfolino.se/login",
body: user,
method: 'POST'
}).then(function(result) {
var token = result.data.token;
});
GET /users
m.request({
method: "GET",
url: "https://auth.emilfolino.se/users?api_key=[API_KEY]"
}).then(function(result) {
var users = result.data;
});
GET /data
m.request({
method: "GET",
url: "https://auth.emilfolino.se/data?api_key=[API_KEY]",
headers: {
'x-access-token': [TOKEN]
}
}).then(function(result) {
var allData = result.data;
});
POST /data
var data = {
artefact: '{"latitude":56.18185835,"longitude":15.5911037,"place":"BTH"}',
api_key: [API_KEY]
};
m.request({
url: "https://auth.emilfolino.se/data",
body: data,
method: 'POST',
headers: {
'x-access-token': [TOKEN]
}
}).then(function(result) {
});