Profiles¶
Register a new User¶
username, email, first_name
Are required fields. username
may
contain alphanumeric, _, @, +, . and - characters
POST /api/v1/profiles
Example¶
{
"username": "demo",
"first_name": "Demo",
"last_name": "User",
"email": "demo@localhost.com",
"city": "Kisumu",
"country": "KE",
...
}
List User Profiles¶
GET /api/v1/profiles
Example¶
curl -X GET https://api.ona.io/api/v1/profiles
To retrieve a specific list of user profiles, an authenicated user should use users
query param whose value
should be a comma-separated list of usernames as seen in the example below. A couple of things to note:
- Anonymous users will get an empty result.
- Authenticated users without the
users
query param will get their own profiles.
Example¶
curl -X GET https://api.ona.io/api/v1/profiles?users=alice,bob,charlene
Response¶
[
{
"url": "https://api.ona.io/api/v1/profiles/demo",
"username": "demo",
"first_name": "Demo",
"last_name": "User",
"email": "demo@localhost.com",
"city": "",
"country": "",
"organization": "",
"website": "",
"twitter": "",
"gravatar": "https://secure.gravatar.com/avatar/xxxxxx",
"require_auth": false,
"user": "https://api.ona.io/api/v1/users/demo",
"metadata": {},
"joined_on": "2014-11-10T14:22:20.394Z"
},
...
]
Retrieve User Profile Information¶
GET /api/v1/profiles/{username}
GET /api/v1/profiles/{pk}
Example¶
curl -X GET https://api.ona.io/api/v1/profiles/demo
Response¶
{
"url": "https://api.ona.io/api/v1/profiles/demo",
"username": "demo",
"first_name": "Demo",
"last_name": "User",
"email": "demo@localhost.com",
"city": "",
"country": "",
"organization": "",
"website": "",
"twitter": "",
"gravatar": "https://secure.gravatar.com/avatar/xxxxxx",
"require_auth": false,
"user": "https://api.ona.io/api/v1/users/demo",
"metadata": {},
"joined_on": "2014-11-10T14:22:20.394Z"
}
Partial updates of User Profile Information¶
Properties of the UserProfile can be updated using PATCH
http
method. Payload required is for properties that are to be changed in
JSON, for example, {"country": "KE"}
will set the country to KE
.
PATCH /api/v1/profiles/{username}
Example¶
curl -X PATCH -d ‘{"country": "KE"}’ https://api.ona.io/api/v1/profiles/demo -H "Content-Type: application/json"
Response¶
{
"url": "https://api.ona.io/api/v1/profiles/demo",
"username": "demo",
"first_name": "Demo",
"last_name": "User",
"email": "demo@localhost.com",
"city": "",
"country": "KE",
"organization": "",
"website": "",
"twitter": "",
"gravatar": "https://secure.gravatar.com/avatar/xxxxxx",
"require_auth": false,
"user": "https://api.ona.io/api/v1/users/demo",
"metadata": {},
"joined_on": "2014-11-10T14:22:20.394Z"
}
Partial update for email requires password confirmation¶
Example¶
curl -X PATCH -d ‘{"email": "updated@email.com", "password": "password"}’ https://api.ona.io/api/v1/profiles/demo -H "Content-Type: application/json"
Partial update of the metadata profile property¶
This functionality allows for the updating of a key/value object of the
metadata property without overwriting the whole metadata property. For
example, if a user’s metadata was
{"metadata": {"a": "Aaah", "b": "Baah"}}
and we only wanted to
update b
with value Beeh
, we would use this endpoing and add an
overwrite
param with value false
.
PATCH /api/v1/profiles/{username}
Example¶
curl -X PATCH -d ‘{"metadata": {"b": "Beeh"}, "overwrite": "false"}’ https://api.ona.io/api/v1/profiles/demo -H "Content-Type: application/json"
Response¶
{
"url": "https://api.ona.io/api/v1/profiles/demo",
"username": "demo",
"first_name": "Demo",
"last_name": "User",
"email": "demo@localhost.com",
"city": "",
"country": "KE",
"organization": "",
"website": "",
"twitter": "",
"gravatar": "https://secure.gravatar.com/avatar/xxxxxx",
"require_auth": false,
"user": "https://api.ona.io/api/v1/users/demo"
"metadata": {"a": "Aaah", "b": "Beeh"},
"joined_on": "2014-11-10T14:22:20.394Z"
}