# Customers
Manage system customers. Accessible for administrators and agents with appropriate permission.
# Customer Object
| Name | Type | Comment |
|---|---|---|
| id | integer | Unique customer identifier. |
| first_name | string | Customer's first name. |
| last_name | string | Customer's last name, |
| string | Customer's email. | |
| company | string | Customer's company name. |
| avatar | string | A link to user's avatar. |
| status | integer | User status identifier. |
| envato_username | string | Customer's Envato username, if Envato account is connected. |
| created_at | datetime | Agent creation timestamp. |
| updated_at | datetime | Agent update timestamp. |
| last_login_at | datetime | Timestamp for the customer's last login. |
The status attribute can take one of the following values:
| Status | Value |
|---|---|
| Active | 1 |
| Unconfirmed | 2 |
| Banned | 3 |
# Note Object
| Name | Type | Comment |
|---|---|---|
| id | integer | Unique customer identifier. |
| text | string | A note text. |
| created_at | datetime | Agent creation timestamp. |
| updated_at | datetime | Agent update timestamp. |
# Paginate Customers
GET
/customers# Request
curl --location --request GET 'https://yoursubdomain.support-hub.io/api/customers' \
--header 'Accept: aplication/json'# Example Response
{
"data": [
{
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"company": "Acme Corp.",
"avatar": "https://api.adorable.io/avatars/285/abott@adorable.png",
"status": 1,
"envato_username": null,
"created_at": "2019-09-23 09:11:24",
"updated_at": "2019-09-23 09:11:24",
"last_login_at": "2019-09-23 09:11:24"
},
//...
],
"links": {
//...
},
"meta": {
//...
}
}
# Available includes
If provided, the available includes will be part of the response for each customer object.
tickets-countA number of tickets created by the customer.
notes-countA number of notes created by the customer.
# Partial filters
first_name, last_name, email, company
# Exact filters
status
# View a Customer
GET
/customers/{id}# Example Request
curl --location --request GET 'https://yoursubdomain.support-hub.io/api/customers/{id}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json'# Example Response
{
"data": {
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"company": null,
"avatar": "https://api.adorable.io/avatars/285/abott@adorable.png",
"status": 1,
"created_at": "2019-09-23 09:11:24",
"updated_at": "2019-09-23 09:11:24",
"last_login_at": "2019-09-23 09:11:24"
}
}
# Available includes
Same as for when paginating the customers.
# Create a Customer
POST
/customers# Parameters
| Parameter | Type | Required | Validation |
|---|---|---|---|
| first_name | string | Yes | Any string that is max 250 characters long. |
| last_name | string | Yes | Any string that is max 250 characters long. |
| string | Yes | Unique email address. | |
| company | string | No | Company name, if applicable. |
| password | string | Yes | Any string that is min 6 characters long. |
| password_confirmation | string | Yes | The same as password field. |
# Headers
| Accept | application/json |
| Content-Type | application/json |
# Example Request
curl --location --request POST 'https://yoursubdomain.support-hub.io/api/customers' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
"first_name": "John",
"last_name": "Doe",
"email": "john.d@example.com",
"company": "Acme Corp.",
"password": "123123",
"password_confirmation": "123123"
}'# Example Response
Status: 201 Created
{
"data": {
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"company": "Acme Corp.",
"avatar": "https://api.adorable.io/avatars/285/abott@adorable.png",
"status": 1,
"created_at": "2019-09-23 09:11:24",
"updated_at": "2019-09-23 09:11:24",
"last_login_at": null
}
}
# Update a Customer
PATCH
/customers/{id}# Parameters
| Parameter | Type | Required | Validation |
|---|---|---|---|
| first_name | string | No | Any string that is max 250 characters long. |
| last_name | string | No | Any string that is max 250 characters long. |
| string | No | Unique email address. | |
| company | string | No | Company name, if applicable. |
| new_password | string | No | Any string that is min 6 characters long. |
| new_password_confirmation | string | Only if new_password field is present | The same as new_password field. |
# Headers
| Accept | application/json |
| Content-Type | application/json |
# Example Request
curl --location --request POST 'https://yoursubdomain.support-hub.io/api/customers/{id}' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
"first_name": "Alice"
}'# Example Response
Status: 200 OK
{
"data": {
"id": 1,
"first_name": "Alice",
"last_name": "Doe",
"email": "john.doe@example.com",
"avatar": "https://api.adorable.io/avatars/285/abott@adorable.png",
"status": 1,
"created_at": "2019-09-23 09:11:24",
"updated_at": "2019-09-23 09:11:24",
"last_login_at": "2019-09-23 09:11:24"
}
}
# Delete a Customer
DELETE
/customers/{id}# Example Request
curl --location --request DELETE 'https://yoursubdomain.support-hub.io/api/customers'# Example Response
Status: 200 OK
{
"success": true
}
# View Notification Settings
GET
/customers/{id}/notifications# Example Request
curl --location --request GET 'https://yoursubdomain.support-hub.io/api/customers/{id}/notifications' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json'# Example Response
Status: 200 OK
{
"data": {
"new_ticket": false,
"new_comment": true,
"ticket_reassigned": true
}
}
# Update Notification Settings
PATCH
/customers/{id}/notifications# Example Request
curl --location --request GET 'https://yoursubdomain.support-hub.io/api/customers/{id}/permissions' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
"new_ticket": false
}'# Example Response
Status: 200 OK
{
"data": {
"new_ticket": false,
"new_comment": true,
"ticket_reassigned": true
}
}
# Paginate Notes
GET
/customers/{id}/notes# Request
curl --location --request GET 'https://yoursubdomain.support-hub.io/api/customers/{id}/notes' \
--header 'Accept: aplication/json'# Example Response
{
"data": [
{
"id": 1,
"text": "This is some random note about the customer...",
"created_at": "2019-09-23 09:11:24",
"updated_at": "2019-09-23 09:11:24",
},
//...
],
"links": {
//...
},
"meta": {
//...
}
}
# Available includes
If provided, the available includes will be part of the response for each customer object.
creatorAn agent who created the note.
userCustomer for which the note was created.
# Partial filters
text
# Exact filters
creator_id
# Create a Note
POST
/customers/{id}/notes# Parameters
| Parameter | Type | Required | Validation |
|---|---|---|---|
| note | string | Yes | Any string/HTML. |
# Headers
| Accept | application/json |
| Content-Type | application/json |
# Example Request
curl --location --request POST 'https://yoursubdomain.support-hub.io/api/customers' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
"note": "This is a customer note."
}'# Example Response
Status: 201 Created
{
"data": {
"id": 123,
"text": "This is a customer note."
"created_at": "2019-09-23 09:11:24",
"updated_at": "2019-09-23 09:11:24",
}
}
# Delete a Note
DELETE
/customers/{customer_id}/notes/{note_id}# Example Request
curl --location --request DELETE 'https://yoursubdomain.support-hub.io/api/customers/{customer_id}/notes/{note_id}'# Example Response
Status: 200 OK
{
"success": true
}
← Agents Attachments →