REST API version 1: Difference between revisions

From Lifeguide Wiki
Jump to navigation Jump to search
(Added Intervention User Data)
(Added notes and the message API endpoints.)
Line 1: Line 1:
LifeGuide provides a REST API to manage parts of an intervention. This API is a work-in-progress and so will not be complete.
LifeGuide provides a REST API to manage parts of an intervention. This API is a work-in-progress and so will not be complete. The API follows the GitHub API specification where possible.


__TOC__
__TOC__


= Intervention Users (participants) =
= REST API endpoints =


== List Intervention Users ==
== Intervention Users (participants) ==
 
=== List Intervention Users ===


Example cURL command:
Example cURL command:
Line 33: Line 35:
</pre>
</pre>


== Create an Intervention User ==
=== Create an Intervention User ===


Example cURL command:
Example cURL command:
Line 55: Line 57:
</pre>
</pre>


== Delete an Intervention User ==
=== Delete an Intervention User ===


Example cURL command:
Example cURL command:
Line 75: Line 77:
</pre>
</pre>


= Intervention User Data =
== Intervention User Data ==


== List Intervention User Data ==
=== List Intervention User Data ===


Example cURL command:
Example cURL command:
Line 106: Line 108:
</pre>
</pre>


== Read Intervention User Data ==
=== Read Intervention User Data ===


Example cURL command:
Example cURL command:
Line 128: Line 130:
   "variable1": "value1"
   "variable1": "value1"
}
}
</pre>
== Messages ==
=== List of Messages ===
Example cURL command:
<pre>
curl -i -X GET \
    --header "Authorization: Token cOrNDlXtHTH17lFYUF5ixo8e5w7myXxM" \
    "https://beta.lifeguideonline.org/api/v1/messagebox/mailto:person@example.com/message"
</pre>
Example response:
<pre>
[
  {
    "uri": "https://beta.lifeguideonline.org/api/v1/messagebox/mailto:person@example.com/message/14"
    "id": 14,
    "body": "Content",
    "groupId": "group1",
    "dateToSend": "2018-05-16T23:11:42Z",
    "address": "mailto:person@example.com",
    "subject": "Subject",
    "sentDate": "2018-05-16T23:15:00Z",
  },
 
  ...
]
</pre>
=== Delete a Message ===
Example cURL command:
<pre>
curl -i -X DELETE \
    --header "Authorization: Token cOrNDlXtHTH17lFYUF5ixo8e5w7myXxM" \
    "https://beta.lifeguideonline.org/api/v1/messagebox/mailto:person@example.com/message/14"
</pre>
Example response:
<pre>
HTTP/1.1 204 No Content
Date: Mon, 01 Jan 2018 00:00:00 GMT
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 0
</pre>
= Notes =
== Pagination ==
For endpoints that support pagination, the following query arguments are used to control pagination:
<table>
  <tr>
    <th>Parameter</th>
    <th>Description</th>
  </tr>
  <tr>
    <td><tt>page</tt></td>
    <td>The page of results to return. This starts at 1.</td>
  </tr>
  <tr>
    <td><tt>per_page</tt></td>
    <td>The number of results per page. Default is 100.</td>
  </tr>
</table>
The total number of results is returned in the <tt>X-Total</tt> header of the response.
== Dates ==
Dates are expressed without timezones. The following ISO-8601 format is used:
<pre>
2018-05-16T23:15:00Z
</pre>
</pre>

Revision as of 15:40, 31 May 2018

LifeGuide provides a REST API to manage parts of an intervention. This API is a work-in-progress and so will not be complete. The API follows the GitHub API specification where possible.

REST API endpoints

Intervention Users (participants)

List Intervention Users

Example cURL command:

curl -i -X GET \
    --header "Authorization: Token cOrNDlXtHTH17lFYUF5ixo8e5w7myXxM" \
    "https://beta.lifeguideonline.org/api/v1/intervention_user?per_page=5"

Example response:

HTTP/1.1 200 OK
Date: Mon, 01 Jan 2018 00:00:00 GMT
Server: Apache-Coyote/1.1
X-Total: 13
Link: <https://beta.lifeguideonline.org/api/v1/intervention_user?page=2&per_page=5>; rel="next"
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked

[{ "id": 1, "enabled": true, "username": "username1", "uri": "https://beta.lifeguideonline.org/api/v1/intervention_user/1"},
 { "id": 2, "enabled": true, "username": "username2", "uri": "https://beta.lifeguideonline.org/api/v1/intervention_user/2"},
 { "id": 3, "enabled": true, "username": "username3", "uri": "https://beta.lifeguideonline.org/api/v1/intervention_user/3"},
 { "id": 4, "enabled": true, "username": "username4", "uri": "https://beta.lifeguideonline.org/api/v1/intervention_user/4"},
 { "id": 5, "enabled": true, "username": "username5", "uri": "https://beta.lifeguideonline.org/api/v1/intervention_user/5"}]

Create an Intervention User

Example cURL command:

curl -i -X POST \
    --header "Content-Type: application/json" \
    --header "Authorization: Token cOrNDlXtHTH17lFYUF5ixo8e5w7myXxM" \
    --data '{"username"="john.smith","password"="123456"}' \
    "https://beta.lifeguideonline.org/api/v1/intervention_user"

Example response:

HTTP/1.1 201 Created
Date: Mon, 01 Jan 2018 00:00:00 GMT
Server: Apache-Coyote/1.1
Content-Location: https://beta.lifeguideonline.org/api/v1/intervention_user/20
Content-Type: text/html;charset=utf-8
Transfer-Encoding: chunked

Delete an Intervention User

Example cURL command:

curl -i -X DELETE \
    --header "Authorization: Token cOrNDlXtHTH17lFYUF5ixo8e5w7myXxM" \
    "https://beta.lifeguideonline.org/api/v1/intervention_user/20"

Example response:

HTTP/1.1 204 No Content
Date: Mon, 01 Jan 2018 00:00:00 GMT
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 0

Intervention User Data

List Intervention User Data

Example cURL command:

curl -i -X GET \
    --header "Authorization: Token cOrNDlXtHTH17lFYUF5ixo8e5w7myXxM" \
    "https://beta.lifeguideonline.org/api/v1/intervention_user/2/data"

Example response:

HTTP/1.1 200 OK
Date: Mon, 01 Jan 2018 00:00:00 GMT
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked

{
  "variable1": "value1",
  "variable2": "value2",
  "variable3": "value3",
  "variable4": 4,
  "variable5": 5,
  "variable6": 6
}

Read Intervention User Data

Example cURL command:

curl -i -X GET \
    --header "Authorization: Token cOrNDlXtHTH17lFYUF5ixo8e5w7myXxM" \
    "https://beta.lifeguideonline.org/api/v1/intervention_user/2/data/variable1"

Example response:

HTTP/1.1 200 OK
Date: Mon, 01 Jan 2018 00:00:00 GMT
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked

{
  "variable1": "value1"
}

Messages

List of Messages

Example cURL command:

curl -i -X GET \
    --header "Authorization: Token cOrNDlXtHTH17lFYUF5ixo8e5w7myXxM" \
    "https://beta.lifeguideonline.org/api/v1/messagebox/mailto:person@example.com/message"

Example response:

[
  {
    "uri": "https://beta.lifeguideonline.org/api/v1/messagebox/mailto:person@example.com/message/14"
    "id": 14,
    "body": "Content",
    "groupId": "group1",
    "dateToSend": "2018-05-16T23:11:42Z",
    "address": "mailto:person@example.com",
    "subject": "Subject",
    "sentDate": "2018-05-16T23:15:00Z",
  },
  
  ...
]

Delete a Message

Example cURL command:

curl -i -X DELETE \
    --header "Authorization: Token cOrNDlXtHTH17lFYUF5ixo8e5w7myXxM" \
    "https://beta.lifeguideonline.org/api/v1/messagebox/mailto:person@example.com/message/14"

Example response:

HTTP/1.1 204 No Content
Date: Mon, 01 Jan 2018 00:00:00 GMT
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 0

Notes

Pagination

For endpoints that support pagination, the following query arguments are used to control pagination:

Parameter Description
page The page of results to return. This starts at 1.
per_page The number of results per page. Default is 100.

The total number of results is returned in the X-Total header of the response.

Dates

Dates are expressed without timezones. The following ISO-8601 format is used:

2018-05-16T23:15:00Z