Users - Huddle/huddle-apis GitHub Wiki
Summary
The Membership Users API is a representation of a given User within Huddle
Status
Operation |
---|
Retrieving a User |
Updating User Profile |
Creating a User |
Updating User Status |
Operations
Retrieving a User
Request:
GET /users/123 HTTP/1.1
Accept: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty
Response:
HTTP/1.1 200 OK
Content-Type: application/vnd.huddle.data+json
{
"firstName": "Joe",
"lastName": "Bloggs",
"email": "[email protected]",
"company": "Huddle",
"role": "Document Writer",
"aboutMe": "Some interesting information about me",
"secondaryEmail": "[email protected]",
"address": "Joe's Desk, Joes's Office, Joe's town...",
"phone": "01234 567890",
"mobile": "07712 345678",
"status": "Active",
"links": [
{ "rel" : "self", "href": "/users/123" },
{ "rel" : "update", "href": "/users/123/editable" }
{ "rel" : "update-status", "href": "/users/123/status" }
]
}
NB Any fields with null values will be omitted in the response body. For example:
{
"firstName": "Joe",
"lastName": "Bloggs",
"email": "[email protected]",
"company": "Huddle",
"status": "Active",
"links": [
{ "rel" : "self", "href": "/users/123" },
{ "rel" : "update", "href": "/users/123/editable" }
]
}
Response Properties:
Name | Description |
---|---|
user | The User resource |
Response Link Relations:
Name | Description | Methods |
---|---|---|
self | The URI of this User resource | GET |
update | If you have permission, the URI to get editable fields to Update a User Profile | GET |
update | If you have permission, the URI to Update a User Profile | PUT |
Other Responses:
Name | Response |
---|---|
Invalid authorization token | 401 Unauthorized |
Insufficient permissions to view User | 403 Forbidden |
User does not exist | 404 Not Found |
Updating a User
Updating a User Profile has two stages.
Retrieve editable User Profile fields
Retrieve Example
The following example requests User Profile editable fields for User with Id 123.
Request:
GET /users/123/editable HTTP/1.1
Accept: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty
Response:
HTTP/1.1 200 OK
Content-Type: application/vnd.huddle.data+json
{
"firstName": "Joe",
"lastName": "Bloggs",
"email": "[email protected]",
"company": "Huddle",
"role": "Document Writer",
"aboutMe": "Some interesting information about me",
"secondaryEmail": "[email protected]",
"address": "Joe's Desk, Joes's Office, Joe's town...",
"phone": "01234 567890",
"mobile": "07712 345678",
"links": [
{ "rel" : "self", "href": "/users/123/editable" },
{ "rel" : "parent", "href": "/users/123" },
{ "rel" : "update", "href": "/users/123/editable" }
]
}
Response Properties:
Name | Description |
---|---|
user | The editable fields for the user, and their current values |
Response Link Relations:
Name | Description | Methods |
---|---|---|
self | The URI of editable fields for this User's Profile | GET |
parent | The URI of this User resource | GET |
update | If you have permission, the URI to Update a User Profile | PUT |
Other Responses:
Name | Response |
---|---|
Email address can't be changed | 400 Bad request |
First name, last name, or Email not supplied | 400 Bad Request |
Invalid authorization token | 401 Unauthorized |
Insufficient permissions to view User | 403 Forbidden |
User does not exist | 404 Not Found |
Users email is already in use | 409 Conflict |
Update a User Profile
Update Example
The following examples updates a User Profile for User with Id 123.
Request:
PUT /users/123/editable HTTP/1.1
Accept: application/vnd.huddle.data+json
Content-Type: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty
{
"firstName": "Joe",
"lastName": "Bloggs",
"email": "[email protected]",
"company": "Huddle - Development",
"role": "Document Writer",
"aboutMe": "Some interesting information about me",
"secondaryEmail": "[email protected]",
"address": "Joe's Desk, Joes's Office, Joe's town...",
"phone": "01234 567890",
"mobile": "07712 345678"
}
Response:
HTTP/1.1 200 OK
Content-Type: application/vnd.huddle.data+json
Content-Location: /users/123
{
"firstName": "Joe",
"lastName": "Bloggs",
"email": "[email protected]",
"company": "Huddle",
"role": "Document Writer",
"aboutMe": "Some interesting information about me",
"secondaryEmail": "[email protected]",
"address": "Joe's Desk, Joes's Office, Joe's town...",
"phone": "01234 567890",
"mobile": "07712 345678",
"status": "Active",
"links": [
{ "rel" : "self", "href": "/users/123" },
{ "rel" : "update", "href": "/users/123/editable" }
]
}
Example where user's email address change means that domain whitelisting would be affected.
Response:
HTTP/1.1 400 Bad Request
Content-Type: application/vnd.huddle.data+json
Content-Location: /users/123
{
"errors": [
{ "email" : "self", "message": "Existing email address is part of a workspace whitelist. It cannot be changed." }
]
}
Response Properties:
Name | Description |
---|---|
user | The User resource |
Response Link Relations:
Name | Description | Methods |
---|---|---|
self | The URI of this User resource | GET |
update | If you have permission, the URI to get editable fields to Update a User Profile | GET |
update | If you have permission, the URI to Update a User Profile | PUT |
Other Responses:
Name | Response |
---|---|
Email address cannot be changed | 400 Bad Request |
Empty required fields | 400 Bad Request |
Invalid authorization token | 401 Unauthorized |
Insufficient permissions to update User | 403 Forbidden |
User does not exist | 404 Not Found |
Email already in use | 409 Conflict |
Creating a User
Only Huddle support can create a user. An email address (that will be the user's username) and a password are required, all other fields are optional.
Example request:
POST /users HTTP/1.1
Content-Type: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty
{
"email": "[email protected]",
"password": "4jbef5£$nfhjvd",
"firstName": "Joe",
"lastName": "Bloggs",
"company": "Huddle",
"role": "Document Writer",
"aboutMe": "Some interesting information about me",
"secondaryEmail": "[email protected]",
"address": "Joe's Desk, Joes's Office, Joe's town...",
"phone": "01234 567890",
"mobile": "07712 345678"
}
Example response:
HTTP/1.1 201 Created
Content-Type: application/vnd.huddle.data+json
{
"firstName": "Joe",
"lastName": "Bloggs",
"email": "[email protected]",
"company": "Huddle",
"role": "Document Writer",
"aboutMe": "Some interesting information about me",
"secondaryEmail": "[email protected]",
"address": "Joe's Desk, Joes's Office, Joe's town...",
"phone": "01234 567890",
"mobile": "07712 345678",
"status": "Active",
"links": [
{ "rel" : "self", "href": "/users/123" },
{ "rel" : "update", "href": "/users/123/editable" }
]
}
NB As with user retrieval, any fields with null values will be omitted in the response body.
Response Properties:
Name | Description |
---|---|
user | The User resource |
Response Link Relations:
Name | Description | Methods |
---|---|---|
self | The URI of this User resource | GET |
update | If you have permission, the URI to get editable fields to Update a User Profile | GET |
update | If you have permission, the URI to Update a User Profile | PUT |
Other Responses:
Name | Response |
---|---|
Missing required fields or invalid fields | 400 Bad Request |
Invalid authorization token | 401 Unauthorized |
Insufficient permissions to create User (only Huddle administrators can create a user) | 403 Forbidden |
Email already in use | 409 Conflict |
Updating User Status
Allows user status to be set to active or suspended.
Request:
POST /users/123/status HTTP/1.1
Accept: application/json
Authorization: Bearer frootymcnooty/vonbootycherooty
{
"status": "suspended"
}
Status | Description |
---|---|
active | Set user status to active |
suspended | Set user status to suspended (not active) |
Response:
HTTP/1.1 204 No Content
Content-Location: /users/123
Other Responses:
Name | Response |
---|---|
Status not recognised | 400 Bad Request |
Invalid authorization token | 401 Unauthorized |
Insufficient permissions to update user | 403 Forbidden |
User does not exist | 404 Not Found |