User
A user is a human being with a Helix TeamHub account. A user can log into Helix TeamHub.
Attributes
id
A URL-friendly identifier (the username). Must start with a word character ([a-zA-Z0-9_]).
- Type:
string
- Unique:
true
- Required:
true
- Minimum length:
1
- Maximum length:
100
- Allowed characters:
a-z
,A-Z
,0-9
,-
,_
,+
,.
designer (Helix DAM only)
Whether the user is a designer and has access to the Helix DAM web UI.
- Type:
boolean
- Default:
false
The user's email address.
- Type:
string
- Unique:
true
- Required:
true
registration_email
You may use the optional registration_email
address when creating a new user whose email
address does not yet exist. The registration email will be sent to this address instead of the user's email
address.
- Type:
string
first_name
The user's first name.
- Type:
string
- Maximum length:
32
last_name
The user's last name.
- Type:
string
- Maximum length:
32
display_name
The display_name is automatically generated from user's attributes. Primarily both first_name and last_name are used. In case either one of them is absent, will the present one be used by itself. As a last resort, the email attribute is used.
- Type:
string
password
A new password for the user (can be in plaintext or already hashed). You can omit the password attribute from the request if you do not want to set or update it. Users created without password attribute will get a link to set the initial password within the registration email, unless LDAP only authentication method is used in the Helix TeamHub instance. Validations depend on instance specific configurations.
- Type:
string
- Default minimum length:
8
- Default maximum length:
100
pre_hash
The hash algorithm if the value of the password attribute has already been hashed externally. This is mainly used for users that are synchronized from external systems. For example, passwords stored in LDAP directories are already digested.
- Type:
string
- Default:
null
- Allowed algorithms:
ldap_sha1
,ldap_md5
,null
password_changed_at
Timestamp of the last password change when password expiration is enabled.
- Type:
timestamp
password_expires_at
Timestamp when the password will expire when password expiration is enabled.
- Type:
timestamp
password_expired
Current password expiration status when password expiration is enabled.
- Type:
boolean
password_never_expires
Whether or not the password will never expire for an account. Allows disabling password expiration for an account when password expiration is enabled. Only company admins can update the value.
- Type:
boolean
- Default:
false
synchronized_fields
An array of attributes in User API, which are actively being updated from external source, such as LDAP or AD.
- Type:
string
- Default:
[]
company_admin
Whether or not the user has admin privileges for the company.
- Type:
boolean
- Default:
false
instance_admin
Whether or not the user has admin privileges for the instance.
- Type:
boolean
- Default:
false
description
A free form profile description of the user.
- Type:
string
- Default:
""
- Maximum length:
512
phone
The user's phone number.
- Type:
string
- Default:
""
- Maximum length:
32
- Allowed characters:
0-9
,+
,-
title
The user's title in the company, for example "Software Engineer".
- Type:
string
- Default:
""
- Maximum length:
60
locale
The user's locale.
- Type:
string
- Default:
en
- Allowed values:
en
,zh
source
The identifier of the external source where the user is synchronized from.
- Type:
string
- Default:
""
- Maximum length:
500
last_login_at
Timestamp of the last time the user logged in to Helix TeamHub. If the user has never logged in, the response is null.
- Type:
timestamp
login_count
The number of times the user has logged in to Helix TeamHub.
- Type: integer
helix_auth_method
Helix authentication method used by the user. Valid responses when the user has Helix authentication, "perforce" or "ldap". If the user is not using Helix authentication, an empty string is returned.
- Type: string
- Default: "perforce" if Helix authentication is configured
avatar
The avatar of the user, as a child object.
- Type:
object
- Default:
{}
The avatar objects contains URLs to the avatar image in several sizes:
"avatar": {
"large": "system/uploads/4f85e344-6156-418f-baf0-d4b65c9df148-100x100.jpg",
"medium": "system/uploads/4f85e344-6156-418f-baf0-d4b65c9df148-60x60.jpg",
"small": "system/uploads/4f85e344-6156-418f-baf0-d4b65c9df148-30x30.jpg"
}
Searchable attributes
Users can be searched by their id
, email
, and display_name
attributes.
See the search documentation for instructions how to do this.
Child objects
The following child objects can be attached to the users returned, to eliminate the need for requesting them separately:
Object | Attribute |
---|---|
Project | projects
|
Repository | repositories
|
For example, to get all of the user's projects in full, attach include=projects
to your GET request.
See the child object API documentation for a description of the possible operations.
Operations
GET /users
Returns all the users in the company, with optional limit and offset parameters, as a metadata-results object.
Example request
curl -X GET \
-H "Accept: application/vnd.hth.v1" \
-H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
https://helixteamhub.cloud/api/users
Example response
{
"metadata": {
"more_results": false,
"next_offset": 2,
"count": 2
},
"results": [
{
"api_status": 200,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "norris",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"type": "user",
"email": "chuck.norris@company.com",
"short_name": "cnorris",
"first_name": "Chuck",
"last_name": "Norris",
"display_name": "Chuck Norris",
"company_admin": true,
"instance_admin": true,
"description": "Walker Texas Ranger",
"phone": "",
"title": "Executive Executor",
"avatar": {
"api_status": 200,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "YYYYYY-YYYY-YYYY-YYYY-YYYYYYYY",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"large": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-100x100.jpg",
"medium": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-60x60.jpg",
"small": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-30x30.jpg"
},
"synchronized_fields": [
"short_name"
],
"locale": "en",
"source": ""
"last_login_at": "2019-10-24T14:03:53Z",
"login_count": 1,
"password_given": true,
"password_changed_at": null,
"password_expires_at": null,
"password_expired": false,
"password_never_expires": false,
"helix_auth_method": ""
},
{
"api_status": 200,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "ckent",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"type": "user",
"email": "clark.kent@company.com",
"short_name": "ckent",
"first_name": "Clark",
"last_name": "Kent",
"display_name": "Clark Kent",
"company_admin": false,
"instance_admin": false,
"description": "",
"phone": "+358 1234 567",
"title": "Software engineer",
"avatar":{
"api_status": 200,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "YYYYYY-YYYY-YYYY-YYYY-YYYYYYYY",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"large": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-100x100.jpg",
"medium": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-60x60.jpg",
"small": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-30x30.jpg"
},
"synchronized_fields": [
"short_name"
],
"locale": "en",
"source": "external"
"last_login_at": "2019-10-24T14:03:54Z",
"login_count": 2,
"password_given": true,
"password_changed_at": null,
"password_expires_at": null,
"password_expired": false,
"password_never_expires": false,
"helix_auth_method": ""
}
]
}
GET /users/:id
Returns a single user.
Example request
curl -X GET \
-H "Accept: application/vnd.hth.v1" \
-H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
https://helixteamhub.cloud/api/users/norris
Example response
{
"api_status": 200,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "norris",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"type": "user",
"email": "chuck.norris@company.com",
"short_name": "cnorris",
"first_name": "Chuck",
"last_name": "Norris",
"display_name": "Chuck Norris",
"company_admin": true,
"instance_admin": true,
"description": "Walker Texas Ranger",
"phone": "",
"title": "Executive Executor",
"avatar": {
"api_status": 200,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "YYYYYY-YYYY-YYYY-YYYY-YYYYYYYY",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"large": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-100x100.jpg",
"medium": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-60x60.jpg",
"small": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-30x30.jpg"
},
"synchronized_fields": [
"short_name"
],
"locale": "en",
"source": ""
"last_login_at": "2019-10-24T14:03:53Z",
"login_count": 1,
"password_given": true,
"password_changed_at": null,
"password_expires_at": null,
"password_expired": false,
"password_never_expires": false,
"helix_auth_method": ""
}
GET /users/:id/projects
Returns a list of projects the user belongs to.
Example request
curl -X GET \
-H "Accept: application/vnd.hth.v1" \
-H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
https://helixteamhub.cloud/api/users/norris/projects
Example response
{
"metadata": {
"more_results": false,
"next_offset": 2,
"count": 2
},
"results":[
{
"api_status"200,
"api_timestamp":"2020-09-15T09:03:37Z",
"id":"atomic_atom",
"created_at":"2020-09-10T13:07:42Z",
"updated_at":"2020-09-10T13:07:42Z",
"uuid":"6f3bf15f-486f-4710-ae8c-610d1335688f",
"short_name":"atomic_atom",
"name":"Atomic Atom",
"description":"",
"color":"blue",
"visibility":"members",
"labels":[
],
"properties":{
},
"default_repository_authorization_enabled":false,
"automatic_depot_creation":false,
"depot":null,
"hook_events":[
"repository"
],
"has_wiki":false
},
{
<other projects the user is a member of, formatted as above>
}
]
}
POST /users
Creates a new user to the company and returns the created user object. A matching user is first searched from the directory (by email
and id
) when LDAP authentication is enabled. The user must be found from the directory when LDAP only authentication is used, otherwise a 404 response is returned.
Example request
curl -X POST \
-H "Accept: application/vnd.hth.v1" \
-H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
-H "Content-Type: application/json" \
-d '{ "first_name": "Clark", "last_name": "Kent", "id":"ckent", "email": "clark.kent@company.com", "password": "Clar!Ken7" }' \
https://helixteamhub.cloud/api/users
Example response
{
"api_status": 201,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "ckent",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"type": "user",
"email": "clark.kent@company.com",
"short_name": "ckent",
"first_name": "Clark",
"last_name": "Kent",
"display_name": "Clark Kent",
"company_admin": false,
"instance_admin": false,
"description": "",
"phone": "",
"title": "",
"avatar":{
"api_status": 201,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "",
"created_at": "",
"updated_at": "",
"large": "",
"medium": "",
"small": ""
},
"synchronized_fields": [],
"locale": "en",
"source": "external"
"last_login_at": null,
"login_count": 0,
"password_given": true,
"password_changed_at": null,
"password_expires_at": null,
"password_expired": false,
"password_never_expires": false,
"helix_auth_method": ""
}
PUT /users/:id
Updates a the information of a single user. Returns the updated user object.
Example request
curl -X PUT \
-H "Accept: application/vnd.hth.v1" \
-H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
-H "Content-Type: application/json" \
-d '{ "description": "Retired" }' \
https://helixteamhub.cloud/api/users/norris
Example response
{
"api_status": 200,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "norris",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"type": "user",
"email": "chuck.norris@company.com",
"short_name": "cnorris",
"first_name": "Chuck",
"last_name": "Norris",
"display_name": "Chuck Norris",
"company_admin": true,
"instance_admin": true,
"description": "Retired",
"phone": "",
"title": "Executive Executor",
"avatar": {
"api_status": 200,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "YYYYYY-YYYY-YYYY-YYYY-YYYYYYYY",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"large": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-100x100.jpg",
"medium": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-60x60.jpg",
"small": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-30x30.jpg"
},
"synchronized_fields": [
"short_name"
],
"locale": "en",
"source": ""
"last_login_at": "2019-10-24T14:03:53Z",
"login_count": 1,
"password_given": true,
"password_changed_at": null,
"password_expires_at": null,
"password_expired": false,
"password_never_expires": false,
"helix_auth_method": ""
}
DELETE /users/:id
Deletes a user. Returns the deleted user object.
Example request
curl -X DELETE \
-H "Accept: application/vnd.hth.v1" \
-H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
https://helixteamhub.cloud/api/users/norris
Example response
{
"api_status": 200,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "norris",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"uuid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"type": "user",
"email": "chuck.norris@company.com",
"short_name": "cnorris",
"first_name": "Chuck",
"last_name": "Norris",
"display_name": "Chuck Norris",
"company_admin": true,
"instance_admin": true,
"description": "Walker Texas Ranger",
"phone": "",
"title": "Executive Executor",
"avatar": {
"api_status": 200,
"api_timestamp": "2019-10-24T14:03:48Z",
"id": "YYYYYY-YYYY-YYYY-YYYY-YYYYYYYY",
"created_at": "2019-10-24T14:03:48Z",
"updated_at": "2019-10-24T14:03:48Z",
"large": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-100x100.jpg",
"medium": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-60x60.jpg",
"small": "system/uploads/d2641ea3-ba02-43a6-8566-bff3493c6bbc-30x30.jpg"
},
"synchronized_fields": [
"short_name"
],
"locale": "en",
"source": ""
"last_login_at": "2019-10-24T14:03:53Z",
"login_count": 1,
"password_given": true,
"password_changed_at": null,
"password_expires_at": null,
"password_expired": false,
"password_never_expires": false,
"helix_auth_method": ""
}
GET /users/count
Returns an object containing the amounts of total, active, and inactive users in the company.
Example request
curl -X GET \
-H "Accept: application/vnd.hth.v1" \
-H "Authorization: hth.company_key='$COMPANY_KEY',account_key='$ACCOUNT_KEY'" \
https://helixteamhub.cloud/api/users/count
Example response
{
"api_status": 200,
"api_timestamp": "2020-01-24T15:38:00Z",
"count": 175,
"active": 119,
"inactive": 56
}