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) {
});