API v3
Welcome to the Huggy API. With it, you can manage all agents, contacts and serve your customers, send and receive messages. This API allows you to programmatically perform actions on your company account.
Our API natively supports the format:
REST
The system should make a request for the URL https://api.huggy.app/v3, sending the parameters by GET, POST, PUT or DELETE. For each request, the response will be a JSON object, which is detailed throughout this documentation.
Authentication
Authentication through Huggy Panel
For the API activation, you must have to activate the default company app in Developers section in Huggy platform and do the authentication through a authorization structure for get the API, OAuth2.0
. The Authentication through Huggy Panel the app activation gives automatic access for the oauth credentials, that are a client_id and a client_secret, that will be used to extract your account token.
App sections
Basic Informations
In this section, you can put a Name
and a Description
for the app, both can be updated at any time.
OAuth 2.0 Authentication
In this section you can set up a callback URL. You also can view the client_id
and the client_secret
, that was generated automatically when you created the app in Huggy platform.
Redirect URL
callback url
- Consists in a url that the Huggy platform will return to your app the requested authorization.
OAuth credentials
client_id
- It’s the way that the Huggy API will be identify your app.
client_secret
- It’s known and used only by the app and the authorization server.
- It’s known and used only by the app and the authorization server.
Authentication Steps
Steps 1:
- Create an app in Huggy platform
Huggy
Steps 2:
- Override the parameters
redirect_uri
andclient_id
in the url below.https://auth.huggy.app/oauth/authorize?scope=install_app%20read_agent_profile&response_type=code&redirect_uri={url_de_callback}&client_id={client_id}
1- scope: It's the API scope access (resources);
- response_type: It’s the expected answer. The code sent for the callback url;
- redirect_uri: It’s the callback url configured in the app;
- client_id: It’s the app’s id;
Steps 3:
- Logged in Huggy platform, you have to access the informed uri with the described information on the previous step. If all steps are completed, so the authorization interface will be shown.
Steps 4:
- Grant app usage permission
Steps 5:
- After clicking in “Authorize”, we will send the code to the callback url.
https://nomedoapp.org/auth/callback?code=def50200a66869346ba8d24820a1ed96e267d3518a65d27efe179ab73f1c8e50a0ba7f860b763534eaeec5c895ca7efaf49aa7b5160ab33545c18c59d8672e9d0ae8f98a0b81aaae9b741c8536839dbbb4d2864d08f11d5faeea10bec7a4eba32b3e07c343e6031c280f73d97d1dfd92ec0bfe3a84e6ffb62d18991b21c5825c1ef4c4e2dd0c92550d70aa11184b6f1e7004c09f54826ca47cf42c1065efd0e680e8857909d64e991258e41981858d08bc5e9e70866ec7ab67e500a7af3d84835cbc7a6ca33fc38e782050b62e5af3b280368315bf3dd3c234bffa986426a6eed2efa922e932d9579721e6dc1c3a5e74d949773a3eaaaa596be289d129cb81b62690ba32166b2d54c0725ad510g99f7df41c9edc701e1d60ffed375319dee886287030e6d3f4d0983b4211a4b74d82ff3349f5027eee16bca259e4b5ba88123a4e68e5ce4fad77e3ecd558036271bw566ebe4b5cc0baa1e05bb6c0c5a1d0420ab2bcc3e96396b9b58dc63a345732dcc8246dba3ac5c687eb6981882d37fc84e2e9bc88e8a88f795b6cb7f2dc89d97c0c31b37d207c3b45571e2bc39afb412929485f7a84f485daaae4a7
Note: The code that was sent to the callback url must be used only once. If you need to generate the access_token again, all the steps, starting with step 2, needs to be repeated.
Steps 6:
- To extract the
access_token
and therefresh_token
, you have to send a request with the following parameters:
Practical solution
Check out a practical solution that allows you to perform the authentication process using a customized and intuitive interface.
Request parameters
Parameter | Type | Example | Description |
---|---|---|---|
grant_type | string | authorization_code | It’s informs to the token terminal that the app is using the OAuth Authorization Code |
redirect_uri | string | https://appname.org/auth/callback | Callback url used to receive the token |
client_id | string | APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767 | Client app’s id |
client_secret | string | 52f9fc0d-daa5-4238-bg36-2rb63db54eeb | It’s known and used only by the app and the authorization server |
code | string | def50200fb4b3a43e7647589... | Code sent to callback url. Ensures client authenticity and token access control |
Exemplo: authorization_code
It’s informs to the token terminal that the app is using the OAuth Authorization Code
Exemplo: https://appname.org/auth/callback
Callback url used to receive the token
Exemplo: APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767
Client app’s id
Exemplo: 52f9fc0d-daa5-4238-bg36-2rb63db54eeb
It’s known and used only by the app and the authorization server
Exemplo: def50200fb4b3a43e7647589...
Code sent to callback url. Ensures client authenticity and token access control
Request Example
{
"grant_type": "authorization_code",
"redirect_uri": "https://appname.org/auth/callback",
"client_id": "APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767",
"client_secret": "52f9fc0d-daa5-4238-bg36-2rb63db54eeb",
"code": "def50200fb4b3a43e7b4d2513ae2db4c14a444cbded99f2fbb29e6f0d3d10bfad6c452548252c01ee4060c2ac6c689dab0d8f37664e682d6e275d5c065dad88c219d2bff4d872f2df440736f0919d1420ad05cecd588749a6a375b51790f706fe16e1685100f433d7fbbe464296dd491f0b767e5c934723162fb58aa22f835a2ed37ca60f8dfec57fce7a4bd5d98e3526610796d4b868586f3672636a53b7df771e9c528c51a11a582c5518f72267f94747b7b9bca367add990847dd0d6a07f97f3377c0f80f97736fffde33fb9124524a81c0d27c6877ac6d03b0d00b46f5758c6ba35baadba3766d01cfac5bb0213dc5115cde5645c9a8f0f385893061ff8247c0d222d7f5941795b8332e17b06c0f34c2744056718954eb3d63a60bc5836909c3b314a8ad8ca16d481b126a1971c552153b25aba5087385a3c42c1b60297ba7d86cd81ceab72bb05fe0f5cb767ceb229a7d239c2c2ae8cda7513b6f7230c2ffbc17a82f53297348399ef29527a2a3b138a1da64eae320e0eedb56e11f9c894f057cfd68fc5b0015b8493bd988a810c7b91836e9539df92398bb0c4de66b749747f09f2240a3d24e27"
}
2
3
4
5
6
7
200
Response parameters{
"token_type": "Bearer",
"expires_in": 2592000,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImY4ODUxODBhZGU4N2Q0MGE1NmNkNWE4ODE3YzU0YWIyZDliZDg0NmVlODdkYTIzYTg3YThlNjQyZWY4NjczOGQ5Nzg5NDA2ZjU0NmYyYWVhIn0.eyJhdWQiOiJBUFAtZGFmYjQ3MjctYTFmZS00NmFmLTljZDctNmQ0M2MxYTg3NzY3IiwianRpIjoiZjg4NTE4MGFkZTg3ZDQwYTU2Y2Q1YTg3MTdjNTRhYjJkOWJkODQ2ZWU4N2RhMjNhODdhOGU2mDJlZjg2NzM4ZDk3ODk0MDZmNTQ2ZjJhZWEiLCJpYXQiOjE1NzQ4NTk2OTEsIm5iZiI6MTU3NDg1OTY5MSwiZXhwIjoxNTc3NDUxNjkxLCJzdWIiOiIzNDE0NiIsInNjb3BlcyI6WyJpbnN0YWxsX2FwcCIsInJlYWRfYWdlbnRfcHJvZmlsZSJdfQ.WXSsIOigtQh3GEGoGvfogcNiee6y1ElkvXCdOxJSOQr5LXJU-mZR2gCsBLh_XKXtvuj-9MSKHSq10HgsKacLrmJGryaeBvo1m9Ro9GUrTeNPY2cKOtjaCcxTgjRbTUvWQlNOhPMfxNSQ8-2L5-hKwrhxtjbFPghrtF1ifqRj_w0",
"refresh_token": "def5430200ce65d9ae52cbd8e89191c731d15e6836bda7e6ad80a1ffe7f5bbbe971bae5cef6b881054ea003e55cf9d2cefd8218902ad0822bb137a561f7d1d72bada321e607b8acd396b618c933b2aeb4ae0971b7a12e116050f2583b0bf1d6f3bf90635d1fb2f417756b1963c9a55414a9d3cc63374a9683e07b4d07da1299a2c3ccdb6c1s91040ef6279afd7bc1e4b70f070272dcf7cd39c7f2508b2ffdf5f58101f8fc552ae828f372253d67973a2357560944cff5d5c020f1d5da1fdc045d6e5acc8856571635ac0aca0217bc069b9cb4718219f6acd33c77f1b8a4ddcf1742ba122e879054d096a198aab985d2144949444cc078a5d09fa372e91bcb1568c8b0977ad94614223d04f60b6dc245d2e28922ffdcf8284d1a4dde1874b3715bd92019cdb019dec3ef4f6a2d745c6948aebb271e90ed94d1cfce6d6fda526c52175453cabcbc096cf818bd5a32356007c8c40f93fc4694fcbeb51431dc0dbe2e4b05e8a479101fdb457a4a2e29d076701be5a640d6115e43cd261b52f8939ead61d4a11f2f3dab615dbf09e319619833a287f6de6f75f9dc08385af43689fc41b04f92825f2cb0fddb0289e19980"
}
2
3
4
5
6
Note: The access_token has a six months expiration date.
Update token.
If your token has expired, the update can be done by the access_token
and the refresh_token
, as demonstrated:
Header
Parameter | Type | Description |
---|---|---|
access_token | string | Expired token |
Expired token
Body parameters
Parameter | Type | Exemplo | Description |
---|---|---|---|
grant_type | string | refresh_token | This will inform the token terminal that the application is using the granttype to update an expired Token |
client_id | string | APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767 | Client apllication ID |
client_secret | string | 52f9fc0d-daa5-4238-bg36-2rb63db54eeb | Known and used only by the application and the authorization server |
refresh_token | string | def50200fb4b3a43e7647589... | Update code for an expired token |
Exemplo: refresh_token
This will inform the token terminal that the application is using the grant_type to update an expired Token
Exemplo: APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767
Client apllication ID
Exemplo: 52f9fc0d-daa5-4238-bg36-2rb63db54eeb
Known and used only by the application and the authorization server
Exemplo: def50200fb4b3a43e7647589...
Update code for an expired token
Request example
{
"grant_type": "refresh_token",
"client_id": "APP-2d6ea240-4c53-46e2-85c9-e3ced06e1c5d",
"client_secret": "6c9daa24-ebf3-4f7f-90as-8ca086fae8e8",
"refresh_token": "def50200408af6f3ed19ae9ab90ae2190ae199980dc1487eba8c30043bd7f7275b4beef4eca314ceca7368b7f52519139e9ad6cb5bd69383401fa8c6497559c0797ea4dd46dc0fb794fdefff479d8cce768208dfbdd93692939d6c44a8e6704b816babcd20796759c8bda4047cad7d1de5ba8a2e70742ff86e87963bd58caebc683f8c2d845a20be5b03273ff28819538af334995e5744163b9778404090b228cee51bf27c916eaecfd9c9aedf2bc7bfd8b9f8322b978cc5c18f6437bae1b4439db249609326960db6ef0dc7f4c57098d77d7f46ad95f274442e01a4eca126651efeca03af33c6e6c9c16dbd635867fb66564bede35fb7a4e750234bbbd4b13c450c19cc2d844cc6cee4c20177f4ad6bd159cc1eb2cc6dec0065bd8f324cbb19193e9344d4c1e75833ae2a8b0ba8c64cf46e1bc502a800b120dec82f9522f3667dcd1b9b0dfba5bed2c5e8e4fa6697e959d09b95f93b8347ee1e11b9b2d083a34e3a9d4bb3fda40e6f2e14edb3fc9f32215242f6d91e6197855fec8037237371e0b6ba5168563570e15223c52fbe887263676e98e9045e34b677a9b2fab191f23c6ecc28c210f5f4fcc741d1ceb"
}
2
3
4
5
6
200
Response parameters{
"token_type": "Bearer",
"expires_in": 2505600,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGdiOiJSUPI1NiIsImp0aSI6ImNmZGQwMThmOTMzYTA2ZDIyNDY2NzUzMzk2ODk2MjRkYjAwNTRhMDg4MzlkODk3ZDQ5MjJlMDk3MTP4MTY0MThkNzQ3Y2YxYTQyNmQzNmNmIn0.eyJhdWQiOiJBUFAtNGQ2ZWEyNTAiQGM1My00NmUxLTg1YzstZTNjZWQwNmUyYzVkIiwianRpIjoiY2ZkZDAxOGY5MzNhMDZkMjI0NjY3NTMzOTY4OTYyNGRiMAA1NGEwODgzOWQ4OTdkNDkyMmUwOTcxMDgxNjQxOGQ3NDdjZjFhNDI2ZDM2Y2YiLCJpYXQiOjE1ODEzNDU0NjYsIm5iZiQ6MTU4MTM0NTQ2NiwiZXhwIjoxNTgzODUxMDY2LCJzdWIiOiIzNDE0NiIsInNjb3BlcyI6WyJpbnN0YWxsX2FwcCIsInJEYWRfYWdlbnRfcHJvZmlsSSJdfQ.VL5fgtj4ioZOvvh9QDBD9Uk-DwtezOKfCNTOC0wFDxYIH_3s_l6sZmyAAPAm4yB-XSZMNXeItqeC-JSICt1pSPbf74Dn9i5Nyn_Evi2Owt4V9I_efuLNSCC6XM8u59l5LUfkt5ICTBRDBnkK2ux6zuYsUzCYjMS8U3qW_Z6g0SE",
"refresh_token": "def5020048b980d8104a5f09caaa3ba7eec0acfd84cb026a48623b1b61146d4a175d92c4fbea51d3d2143a2ed2c7b7b7be85c8a4b2a6de1154ecbfe44a3814fce8e7c59c578f38112eebb1c218c0c6e088bef56950ef0d940cc45abad9128deeb1fb2f4fd2ba0b4sd018509da99f43ff4d355ab542503382cd827b6948922ffb1216b349e93eb2d2ecce9bb567bf4960e336776af882824f1d4791ad38da2b1a92c32ca50afceee3b9283a474cb1ed932359f4c77d7908fbd13e275b66f913784f2a155ae0593d119dcfda0dcc44d7fa2240ac15817cb95c1303d8d36f1a39602f1162d87e749b0f8a188c9b21314737a7cada2d51299e5d27f9ee95f250b35e20de728711cebd6bde748246629ea40f8402a7586ba54db349f61a42e7cea417617ff0d7fda0deb1c6f9afcd2bae45d526518cd7f52e62a22ba0530e3afd50b0d8896653d2c0bf0b2d525e200613f5b45bd432s6e4cdcefa5730b7d570641fe3e46f3f0705361737684000fc337880cae515983b0d718046c99c7348be65c9a478cf1d7a0de0f05f9f9baac79e0f5b9a7aa7f66a0272705dead82d475ac2ea687453f26d46bb771b9cb19ca36ecc"
}
2
3
4
5
6
Note: The updated Token has a validity period of 1 year.
Headers
All requests must also include the following headers:
- Content-Type: application/json
- Accept: application/json
- Authorization: Bearer xxxxxxx
Language
By default, when not informed the Accept-Language
, all requests will be answered in english. For get the response at a preferred language, in the header of your request, enter:
- Accept-Language: en
- Accept-Language: pt-br
- Accept-Language: es
Request
By default, all calls in API define that the request is being made directly at the main company. That is: the first company an agent was linked to.
If a request are being made at a secondary company, it must assume the URI model https://api.huggy.app/v3/companies/{companyID}/resource...
Response
Some requests successful can be answered with a status 200 or 204 without a body returning, such as requests that are using POST and DELETE methods.
Pagination
The request parameter is available to all endpoint that list a resource content being accessed.
This list is limited to 20 results and the remaining resource, if exists, can be accessed with a search parameter ?page=1
in one request url. This page start in 0
(first page). If the requested page does not exist, a empty list []
will be returned in the request body.
Usual server responses:
- 200 OK - The request was successful.
- 201 Created - The request was successful and a resource was created.
- 204 Modified - The request was successful and a resource was modified.
- 400 Bad Request - The request could not be understood or was missing required parameters. Check the reason in the body response.
- 401 Unauthorized - Authentication failed or user doesn't have permissions for requested operation. Check the API token, he may be wrong.
- 403 Forbidden - The customer doesn’t have permission to content, the server is reserved to don’t give more answers. Different from code 401, the customer identity is known.
- 404 Not Found - Resource was not found. This could be caused by a non existent ID.
- 423 Locked - The resource being accessed is blocked, not being possible, at the time, to interact with it.
- 501 Request Failed - May be caused by wrong method of request.
Chats
GET/chats
View all chats
This endpoint has some optional parameters to get the data from a chat according to your situation. For this type of request, pass the following attributes followed by the value you want to filter as a parameter in the URL. Example:
Parameter | Type | Description |
---|---|---|
agent | integer | Agent ID |
department | integer | Department ID |
customer | integer | Customer ID |
situation | string | View Values |
status | string | View values |
Agent ID
Department ID
Customer ID
View Values
View values
Filter of chats by channels
The Chats can be filtered by channels with the channel
parameter.
The Channels can be:
- telegram-bot
- messenger
200
Response[
{
"id": 1488,
"agentId": null,
"secondAgentId": null,
"contactId": 24,
"departmentId": null,
"tabulationId": 17044,
"chatTabulation": {
"id": "17044",
"name": "Opa"
},
"lastMessage": {
"text": "Sessão ativa.",
"file": null,
"sendAt": "2020-05-30 13:03:00",
"senderType": "1",
"sender": {
"id": "1",
"name": "Auto",
"mobile": null,
"phone": null,
"email": null,
"photo": "https://cdn.pzw.io/416934ac2aa73059a78594e63c0a03ae.jpg"
}
},
"chatDepartment": null,
"unread": 3,
"channels": [
{
"uuid": "a5dd1655-5cb8-4905-99c6-d77f8ec3570c",
"id": "a5dd1655-5cb8-4905-99c6-d77f8ec3570c",
"name": "MB Sandbox",
"type": "Whatsapp-Enterprise"
}
],
"chatCustomer": {
"id": 24,
"name": "Nicolas Tesla",
"mobile": "557599999999",
"phone": null,
"email": "",
"photo": "https://cdn.pzw.io/af33e7b1321c8eeae152f57635142bba.jpg",
"custom_fields": {
"apelido_customer": "teste",
"empresa_customer": null
}
},
"queueNumber": null,
"situation": "auto",
"createdAt": "2020-05-30 13:02:58",
"updatedAt": "2020-05-30 13:03:02",
"attendedAt": null,
"closedAt": null,
"state": "without_answer",
"channel": "whatsapp-enterprise",
"agents": []
},
{
"id": 1487,
"agentId": 21564,
"secondAgentId": null,
"contactId": 24,
"departmentId": null,
"tabulationId": 17044,
"chatTabulation": {
"id": "17044",
"name": "Opa"
},
"lastMessage": {
"text": "Você possui um atendimento finalizado recentemente. Deseja reabri-lo? Digite o número da opção desejada\n\n1 - Reabrir atendimento\n2 - Novo atendimento",
"file": null,
"sendAt": "2020-05-30 13:02:33",
"senderType": "1",
"sender": {
"id": "1",
"name": "Auto",
"mobile": null,
"phone": null,
"email": null,
"photo": "https://cdn.pzw.io/416934ac2aa73059a78594e64c0a03ae.jpg"
}
},
"chatDepartment": null,
"unread": 0,
"channels": [
{
"uuid": "a5dd1655-5cc8-4905-99c6-d77f8ec3570c",
"id": "a5dd1655-5cb8-4805-99c6-d77f8ec3570c",
"name": "MB Sandbox",
"type": "Whatsapp-Enterprise"
}
],
"chatCustomer": {
"id": 24,
"name": "John Doe",
"mobile": "557583158424",
"phone": null,
"email": "john@teste.com",
"photo": "https://cdn.pzw.io/af33e7b1521c8eeae152f57635142bba.jpg",
"custom_fields": {
"apelido_customer": "Ç",
"empresa_customer": null
}
},
"queueNumber": null,
"situation": "finishing",
"createdAt": "2020-05-30 13:01:58",
"updatedAt": "2020-05-30 13:02:33",
"attendedAt": "2020-05-30 13:02:19",
"closedAt": "2020-05-30 13:02:22",
"state": "without_answer",
"channel": "whatsapp-enterprise",
"agents": [
{
"id": 21564,
"name": "John Doe",
"mobile": "557599999999",
"phone": "557599999999",
"email": "john@doe.com",
"photo": "https://cdn.pzw.io/474393db01f9171f6bf15042e8f587.jpg",
"isActive": true,
"isOnline": true,
"isAvailable": false,
"photo_url": "https://cdn.pzw.io/4743932db30f9171f6bf15042e8f87.jpg"
}
]
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
GET/chats/{id}
View chat details
Get the detailed data of a chat by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
200
Response {
"id": 1488,
"agentId": null,
"secondAgentId": null,
"contactId": 24,
"departmentId": null,
"tabulationId": 17044,
"chatTabulation": {
"id": "17044",
"name": "Opa"
},
"lastMessage": {
"text": "Sessão ativa.",
"file": null,
"sendAt": "2020-05-30 13:03:00",
"senderType": "1",
"sender": {
"id": "1",
"name": "Auto",
"mobile": null,
"phone": null,
"email": null,
"photo": "https://cdn.pzw.io/416934ac2aa73059a78594e63c0a03ae.jpg"
}
},
"chatDepartment": null,
"unread": 3,
"channels": [
{
"uuid": "a5dd1655-5cb8-4905-99c6-d77f8ec3570c",
"id": "a5dd1655-5cb8-4905-99c6-d77f8ec3570c",
"name": "MB Sandbox",
"type": "Whatsapp-Enterprise"
}
],
"chatCustomer": {
"id": 24,
"name": "Nicolas Tesla",
"mobile": "557599999999",
"phone": null,
"email": "",
"photo": "https://cdn.pzw.io/af33e7b1321c8eeae152f57635142bba.jpg",
"custom_fields": {
"apelido_customer": "teste",
"empresa_customer": null
}
},
"queueNumber": null,
"situation": "auto",
"createdAt": "2020-05-30 13:02:58",
"updatedAt": "2020-05-30 13:03:02",
"attendedAt": null,
"closedAt": null,
"state": "without_answer",
"channel": "whatsapp-enterprise",
"agents": []
},
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
GET/chats/{id}/messages
View chats message
Get the detailed data of a chat by its ID
.
This request will return the corresponding chat messages. Therefore, it can return one or more message.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
200
Response[
{
"id": 270954690,
"text": "https://cdn.pzw.io/1ec9d63c92527f8c794093c78e86561f1a.png",
"isInternal": false,
"isEmail": false,
"sender": {
"id": 33980,
"name": "John Doe",
"mobile": "557576767676",
"phone": "557576767676",
"email": "teste@abc.com",
"photo": "https://cdn.pzw.io/b4cae08a6373897658bb99b076bdb9257fd.jpg"
},
"senderType": "agent",
"receiver": {
"id": 1841996,
"name": "John",
"mobile": "999999999",
"phone": "33333333",
"email": "john@doe.com",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg"
},
"receiverType": "widget",
"file": null,
"chat": {
"id": 13122329,
"channel": "widget",
"situation": "in_chat",
"department": false,
"customer": {
"id": 1841996,
"name": "John",
"mobile": "999999999",
"phone": "33333333",
"email": "john@doe.com",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg"
}
},
"sendAt": "2019-10-01 10:43:20",
"readAt": null,
"type": "text"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
messages.type
type
- Used to represent the type of message returned in a payload.
Value | Description |
---|---|
text | Represents a text message |
image | Represents a link to an image |
audio | Represents an audio message |
video | Represents a link to an video |
document | Represents a document sent by chat |
Represents an e-mail address | |
sms | Represents a sms |
internalEvent | Represents the occurrence of the internal event. For example, Agent Y defined department X |
templateMessage | Represents a template message when it is sent in chat |
Represents a text message
Represents a link to an image
Represents an audio message
Represents a link to an video
Represents a document sent by chat
Represents an e-mail address
Represents a sms
Represents the occurrence of the internal event. For example, Agent Y defined department X
Represents a template message when it is sent in chat
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
GET/chats/{id}/tags
View all tags of a chat
View the list of tags added to a chat.
Note: Tags are utilized for sintetize the context of an attendance, so we can map it.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
200
Response[
{
"id": "304430",
"name": "restriction"
},
{
"id": "304431",
"name": "blocked"
}
]
2
3
4
5
6
7
8
9
10
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
GET/chats/{id}/agents
View ID of an agent
Get the name
and ID
of an agent by the chat identifier.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
200
Response[
{
"name": "Charles",
"id": 39704
}
]
2
3
4
5
6
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
GET/chats/{id}/contextVariables
Get context variables
Gets the chat context variables.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
200
Response{
"id": 212592,
"customerId": 187702,
"contextVariables": {
"huggy.time_hello": "Hello",
"huggy.chat.agent.name": null,
"huggy.chat.company.id": 1,
"huggy.chat.channel.type": "Whatsapp-Enterprise",
"huggy.chat.company.created_at": "2015-09-08 17:30:53"
}
}
2
3
4
5
6
7
8
9
10
11
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
POST/chats/{id}/messages
Add a new message in a chat
Add a new message passing key
and value
in the request body.
To send a button message, see the particularities of each channel.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
Body parameters
Parameter | Type | Description | |
---|---|---|---|
text | string | Message sent to a contact | |
file | string | URL sent to a contact containing a file | optional |
option | array | Array containing button option id and title | optional |
isInternal | boolean | Inform if a message is internal | optional |
Message sent to a contact
URL sent to a contact containing a file
Array containing button option id and title
Inform if a message is internal
Request example
{
"text": "Hello, John!",
"file": "https://c.pzw.io/img/avatar-user-boy.jpg",
"isInternal": false
}
2
3
4
5
Allowed file types
- image/jpg
- image/png
- image/gif
- image/bmp
- audio/mp4
- audio/mp3
- audio/wav
- application/pdf
- application/doc
- application/txt
200
Response{
"id": 270959650,
"text": "Hello, John!",
"isInternal": false,
"isEmail": false,
"sender": {
"id": 33980,
"name": "John Doe",
"mobile": "557599999999",
"phone": "557533333333",
"email": "john@doe.com",
"photo": "https://cdn.pzw.io/b4cae08a6473895bc99b076bdb9257fd.jpg"
},
"senderType": "agent",
"receiver": {
"id": 1842023,
"name": "John Doe",
"mobile": null,
"phone": null,
"email": null,
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg"
},
"receiverType": "widget",
"file": "https://c.pzw.io/img/avatar-user-boy.jpg",
"chat": {
"id": 13122720,
"channel": "widget",
"situation": "in_chat",
"department": false,
"customer": {
"id": 1842023,
"name": "John Doe",
"mobile": null,
"phone": null,
"email": null,
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg"
}
},
"sendAt": "2019-10-16 17:44:15",
"readAt": null,
"type": "image"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Sending buttons
Particularities of channels
Channel | Buttons | Message sending | |
---|---|---|---|
Huggy WhatsApp | yes | Use Quick Reply up to 3 items | If greater than 3 and up to 10 use interactive list | If greater than 10 use text | |
Messenger | yes | Use Quick Reply up to 13 items | If greater than 13 use text | |
yes | Use Quick Reply up to 13 items | If greater than 13 use text | ||
TelegramBot | yes | Use Quick Reply up to 1000 items |
Use `Quick Reply` up to 3 items | If greater than 3 and up to 10 use `interactive list` | If greater than 10 use `text`
Use `Quick Reply` up to 13 items | If greater than 13 use `text`
Use `Quick Reply` up to 13 items | If greater than 13 use `text`
Use `Quick Reply` up to 1000 items
Note: Sending messages with buttons is
unavailable
in the Email, VoIP and Internal Chat channels.
Request example for sending buttons
{
"text": "Which option do you want?",
"options": [
{
"id": 1,
"title": "Option 1"
},
{
"id": 2,
"title": "option 2"
},
{
"id": 3,
"title": "option 3"
}
],
"isInternal": false
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
201
Response{
"id": 1266041,
"text": "Which option do you want?\n \n1 - Option 1\n2 - option 2\n3 - option 3\n",
"isInternal": false,
"isEmail": false,
"sender": {
"id": 40419,
"name": "John Doe",
"mobile": null,
"phone": null,
"email": "john@doe.com",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"isActive": true,
"isOnline": true,
"isAvailable": false,
"statusID": "-1",
"statusType": 0
},
"senderType": "agent",
"receiver": {
"id": 214033,
"name": "customer",
"mobile": "5511999999999",
"phone": "551133333333",
"email": null,
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"custom_fields": {
"agente_customer": null,
"canal_principal_customer": null,
"cnpj_customer": null,
"cpf_customer": null,
"custom_cpf_customer": null,
"custom_phone_customer": null,
"custom_email_customer": null,
"date_customer": null,
"email_customer": null,
"empresa_customer": null,
"gerente_de_contas_customer": null,
"grupo_customer": null,
"hora_customer": null,
"instagram_customer": null,
"main_channel_customer": null,
"number_customer": null,
"ramo_customer": null,
"team_leader_customer": null,
"youtube_customer": null
}
},
"receiverType": "whatsapp-enterprise",
"file": null,
"chat": {
"id": 212213,
"channel": "whatsapp-enterprise",
"situation": "in_chat",
"department": false,
"customer": {
"id": 214033,
"name": "customer",
"mobile": "551199999999",
"phone": "551133333333",
"email": null,
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"custom_fields": {
"agente_customer": null,
"canal_principal_customer": null,
"cnpj_customer": null,
"cpf_customer": null,
"custom_cpf_customer": null,
"custom_phone_customer": null,
"custom_email_customer": null,
"date_customer": null,
"email_customer": null,
"empresa_customer": null,
"gerente_de_contas_customer": null,
"grupo_customer": null,
"hora_customer": null,
"instagram_customer": null,
"main_channel_customer": null,
"number_customer": null,
"ramo_customer": null,
"team_leader_customer": null,
"youtube_customer": null
}
},
"workflowID": null,
"workflowStepID": null
},
"sendAt": "2023-09-26 09:07:27",
"readAt": null,
"type": "text",
"canEnableSession": false
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Sending templates
Particularities of providers
Provider | Template Type | Type Support |
---|---|---|
Huggy WhatsApp | Marketing | Authentication | Service | Text | Button |
Other providers | Marketing | Service | Text |
Marketing | Authentication | Service
Text | Button
Marketing | Service
Text
Note: The route with sending templates using buttons will only support the Huggy WhatsApp provider. Other providers will continue to send text-only templates.
Text-Based Message Templates
Attribute | Type | Description |
---|---|---|
template_id | integer | Template ID created on the Huggy platform |
params | Object | Object containing the variables added when creating the template message |
Template ID created on the Huggy platform
Request example
{
"hsm": {
"template_id": 675,
"params":
{
"1": "John Doe",
"2": "Huggy"
}
}
}
2
3
4
5
6
7
8
9
10
Note: To send a template message, Huggy uses a
hsm
(Highly Structured Message) object, which contains the variable parameters added during the creation of the template message.
Headers for message sending
Midia | Type | Property | Description |
---|---|---|---|
text | string | text | Contains text for the message |
image | Object | link | Contains the image link |
document | Object | link; filename | Contains a link to the file and name (optional) |
video | Object | link | Contains the link to the video |
Example of a request with the sending of a template and media
{
"hsm": {
"template_id": 995,
"params":
{
"1": "John Doe",
"2": "Flow"
},
"header": {
"params": [
{
"type": "image",
"image": {
"link": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png"
}
}
]
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Note: In addition to the template variables, a header object is configured containing the header parameters, which are: a
type
property that identifies the type of media sent and an object of the same name with its specific properties. The number of parameters provided in the request must correspond to the number provided when creating the template message.
Example of a request with the sending of dynamic buttons
{
"hsm": {
"template_id": 988,
"header": {
"params": [
{
"type": "image",
"image": {
"link": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png"
}
}
]
},
"buttons": {
"params": [
{
"type": "text",
"text": "automation-flow"
}
]
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Note: If you configured a template message with the sending of dynamic buttons, you needed to inform during the creation of your template message the URL type as
dynamic
, such as providing the domain of the website URL, for example:https://www.huggy.io/
. Therefore, to send a request by API with a dynamic button, alternating between the Huggy solutions session, inform the remaininguri
in thetext
property of yourbuttons
object.
200
Response{
"id": 1300404,
"text": "Hello John Doe! This is the Flow, one of our most powerful solutions.",
"isInternal": false,
"isEmail": false,
"sender": {
"id": 40419,
"name": "Carlos Aguiar",
"mobile": null,
"phone": null,
"email": "",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"isActive": true,
"isOnline": true,
"isAvailable": false,
"statusID": "-1",
"statusType": 0
},
"senderType": "agent",
"receiver": {
"id": 215633,
"name": "John Doe",
"mobile": "5511999999999",
"phone": "551144444444",
"email": null,
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"custom_fields": {
"agente_customer": null,
"canal_principal_customer": null,
"cnpj_customer": null,
"cpf_customer": null,
"custom_cpf_customer": null,
"custom_phone_customer": null,
"custom_email_customer": null,
"date_customer": null,
"email_customer": null,
"empresa_customer": null,
"gerente_de_contas_customer": null,
"grupo_customer": null,
"hora_customer": null,
"instagram_customer": null,
"main_channel_customer": null,
"number_customer": null,
"ramo_customer": null,
"team_leader_customer": null,
"youtube_customer": null
}
},
"receiverType": "whatsapp-enterprise",
"file": "https://panel-testing-panelback-php8-cdn-origin.s3.amazonaws.com/e8111f0b44cdcbc53a7004ec38207d4f.jpeg",
"chat": {
"id": 215463,
"channel": "whatsapp-enterprise",
"situation": "in_chat",
"department": false,
"customer": {
"id": 215633,
"name": "John Doe",
"mobile": "5511999999999",
"phone": "551144444444",
"email": null,
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"custom_fields": {
"agente_customer": null,
"canal_principal_customer": null,
"cnpj_customer": null,
"cpf_customer": null,
"custom_cpf_customer": null,
"custom_phone_customer": null,
"custom_email_customer": null,
"date_customer": null,
"email_customer": null,
"empresa_customer": null,
"gerente_de_contas_customer": null,
"grupo_customer": null,
"hora_customer": null,
"instagram_customer": null,
"main_channel_customer": null,
"number_customer": null,
"ramo_customer": null,
"team_leader_customer": null,
"youtube_customer": null
}
},
"workflowID": null,
"workflowStepID": null
},
"sendAt": "2024-05-16 15:11:34",
"readAt": null,
"type": "templateMessage",
"canEnableSession": false
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
POST/chats/{id}/transfer
Transfer a chat to another agent
Transfer a chat to another agent. The expected response contains a customerID
and the chatID
that the agent has been transferred.
Note: The agent that will receive the transferred chat will see the message sent on the request on his attendance panel.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
Body parametes
Parameter | Type | Description | |
---|---|---|---|
agentId | integer | Agent ID | |
message | string | Message sent to agent at time of transfer | opcional |
Agent ID
Message sent to agent at time of transfer
Request example
{
"agentId": 39607,
"message": "Hello, follow the service of our customer Emanoel"
}
2
3
4
200
Response{
"customerId": "7356074",
"chatId": 17656128
}
2
3
4
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
POST/chats/{id}/flow
Execute flow
Run a Flow from a chat that is not finalized or is not internal. If the chat already has a Flow in process, it will be aborted and the execution of the new Flow will be started.
Parameter | Type | Description | |
---|---|---|---|
id | integer | Chat ID |
Exemplo: Chat ID
Body parameters
Parameter | Type | Description | |
---|---|---|---|
flowId | integer | Flow ID | |
variables | object | Object containing variables | optional |
Exemplo: Flow ID
Exemplo: Object containing variables
optional
Request Example
{
"flowId" : 142714,
"variables": {
"data": "15/10/2019",
"url_event": "https://huggy.io"
}
}
2
3
4
5
6
7
200
ResponseSuccessful request with empty body
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/chats/{id}/agent
Add an agent
Add an agent to a chat
Note: A guest
agent
can not add other agents. If this is requested, a status400
will be returned.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
Body parameters
Parâmetro | Tipo | Descrição |
---|---|---|
agentId | integer | Agent ID |
Agent ID
{
"agentId": 39607
}
2
3
200
ResponseSuccessful request with empty body
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
PUT/chats/{id}/read
Mark messages as read
Mark the chat message as read. An ID
will be required for this.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Exemplo: Chat ID
200
ResponseSuccessful request with empty body
Resposta 403
{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/chats/{id}/tabulation
This action allows you to update the tabulation of a chat. To do this, inform the tabulation ID in the request body.
Parameter | Type | Description |
---|---|---|
id | integer | chat ID |
chat ID
Body parameter
Parameter | Type | Description |
---|---|---|
tabulationId | integer | Tabulation ID |
Tabulation ID
Request example
{
"tabulationId" : 9740
}
2
3
200
ResponseSuccessful request with empty body
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/chats/{id}/tags
Update chat tags
This action allows you to make changes to the tags
of a chat
, updating, modifying their original value.
To do this, enter in the request parameter the chat ID and in the request body the tag values.
Note: Each value will be passed to the tags key as an
array
containing the name of each of the tags separated by comma. The number of tags that can be reviewed may be greater than existing tags for chat. In this case, one or more tags will be linked to the chat in question. This is possible because a change is made in one array that may have its indexes updated or added, if more tags are passed.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
Body parameters
Parameter | Type | Description |
---|---|---|
tags | string | String containing markup tags to chat |
String containing markup tags to chat
{
"tags": "tag4, tag5, tag6"
}
2
3
200
ResponseSuccessful request with empty body
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/chats/{id}/queue
Move to the queue
Move a chat to the queue. If a request will be successful, a message with status 200 will be returned.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
200
ResponseSuccessful request with empty body
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/chats/{id}/department
Assign a department to a chat
Assigns a department to a chat
. To do this, inform a valid chat id in the request parameter and in the request body the department number that the chat will be assigned.
To do this, informe the valid ID
to a chat and informe in the body request the department number with will be assigned.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
Body parameters
Parameter | Type | Description |
---|---|---|
department | integer | Department number you want to assign to chat |
Department number you want to assign to chat
{
"department": 2546
}
2
3
200
ResponseSuccessful request with empty body
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/chats/{id}/close
Close a chat
Close a chat, passing its ID
in the request parameter.
Note: Optionally, you can close a chat using a tabulation and/or a thank you message, sending these parameters in the request body. When the parameter
sendFeedback
is settrue
, a thank you message is sent when a chat is closed, if this message is configured in the Huggy panel.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
Body parameters
Parâmetro | Tipo | Descrição | |
---|---|---|---|
tabulation | integer | Tabulation number | optional |
comment | string | Comment that will be sent | optional |
sendFeedback | boolean | Thank you message | optional |
Tabulation number
Comment that will be sent
Thank you message
{
"tabulation": "12484",
"comment": "comment through of API",
"sendFeedback": true
}
2
3
4
5
200
ResponseSuccessful request with empty body
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/chats/{id}/reopen
Reopen a chat
Reopen a chat by passing its ID
as a parameter in the request.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
200
ResponseSuccessful request with empty body
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/chats/{id}/workflow
Update the chat Workflow step
Update the Workflow step of a chat.
To do this, inform the Workflow step ID
in the request body.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
Body parameter
Parameter | Type | Description | |
---|---|---|---|
stepId | integer | Step ID |
Step ID
Request example
{
"stepId": 4760
}
2
3
200
ResponseSuccessful request with empty body
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/chats/{id}/assignToMe
Assign the chat to the agent
Assign the chat to the company agent
Note: The response payload of this request will return the list of messages included in this service.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
200
Response{
"messages": [],
"chatID": 475,
"emailID": null,
"callStatus": "0",
"callQueue": null,
"callNumber": null,
"page_current": 0,
"formHuggyChat": {},
"contextVariables": []
}
2
3
4
5
6
7
8
9
10
11
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
DELETE/chats/{id}
Delete a chats
Delete a chat by its ID
.
Note: Only an Administrator has permission to delete a chat. A chat can only be deleted when it has the status finished.
Parameter | Type | Description |
---|---|---|
id | integer | Chat ID |
Chat ID
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
Agents
GET/agents
View all agents
Get the information of all registered agents.
Note: This resource has an optional parameter that returns all found records, that is: all records in one or more pages.
Parameter | Type | Description |
---|---|---|
allPages | boolean | Parameter that will return all records if your value to true |
Parameter that will return all records if your value to true
200
Response[
{
"id": 39708,
"name": "Kivya",
"email": "test@test.com",
"photo_url": null,
"phone": "5575999999999"
},
{
"id": 39704,
"name": "Charles",
"email": "test@test.com",
"photo_url": null,
"phone": "5575999999999"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GET/agents/profile
View the agent profile
Get the agent profile data logged into Huggy platform.
Note: The displayed profile corresponds to the user token that is logged into the platform.
200
Response{
"id": 39704,
"roleID": "3",
"companyID": "15333",
"name": "Charles",
"email": "test@test.com",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"createdAt": "2019-05-26 17:48:14"
}
2
3
4
5
6
7
8
9
GET/agents/{id}
View an agent data
Get data from a specific agent. An agent id is required in request parameters.
Parameter | Type | Description |
---|---|---|
allPages | boolean | Agent ID |
Agent ID
Request 200
{
"id": "39708",
"name": "kivya",
"login": "kivya@test.com",
"status": false,
"companyID": "15333",
"photoLink": null,
"gender": "0",
"birthDate": null,
"email": "knsilvestre@test.com",
"createdAt": "2019-05-26 23:34:53",
"updatedAt": "2019-06-06 10:02:43",
"whatsappID": "5488902",
"maxChats": "8",
"perfilID": "3",
"welcomeText": null,
"departmentsAccess": "1",
"viewedUpdates": "1",
"statusID": null,
"pushToken": null,
"osDevice": null,
"signatureEmail": null,
"autoLogin": null,
"autoDistribution": "0",
"lastAutoChatAt": null,
"active": "1",
"layoutType": "1",
"blocked": 0,
"office": null,
"confirmedEmail": "1",
"confirmEmailAlert": "",
"photo_url": null,
"type": 3,
"roleID": "3",
"phone": "557599999999",
"closedAlertInTrial": true,
"closedAlertExpiredTrial": false,
"perfilName": "Administrator",
"photo_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"image_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"number": "557599999999",
"isActive": true,
"isAvailable": false,
"isOnline": false,
"lastSeen": "2019-06-06 10:14:00",
"isGuest": "Guest"
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
GET/agents/{id}/status
View agent status
Get the status of an agent by your ID
Parameter | Type | Description |
---|---|---|
allPages | boolean | Agent ID |
Agent ID
200
Response{
"id": null,
"name": "Unavailable",
"message": null,
"type": 0,
"createdAt": null,
"updatedAt": null,
"agentID": 34146,
"updatedBy": null,
"companyID": null,
"available": false
}
2
3
4
5
6
7
8
9
10
11
12
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
POST/agents
Invite a new agent
To invite a new agent, three required attributes must be passed in the request body, they are: email, maxChats and type. An agent is defined by its profile access, represented by the type attribute that receives a numeric value, where:
Definition | Type | Key | Value |
---|---|---|---|
Agent | integer | type | 1 |
Manager | integer | type | 2 |
Administrator | integer | type | 3 |
type
1
type
2
type
3
Body parameters
Parameter | Type | Decription | |
---|---|---|---|
string | Agent email address | ||
maxChats | integer | Maximum amount definition to a new agent | |
type | integer | Perfil ID of agent access |
Agent email address
Maximum amount definition to a new agent
Perfil ID of agent access
Note: A new agent will be viewed on the Huggy panel only after accepting the invitation sent by email.
Request example
{
"email": "charles@test.com",
"maxChats": 50,
"type": 1
}
2
3
4
5
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
500
Response{
"reason": "Agent already signed in"
}
2
3
PUT/agents/status
Update the agent status
By default, an agent has three status options, making them Available, Unavailable or Paused.
To update the status of an agent, an id
attribute must be passed in the request body with a numeric value that makes the agent Available 0
, Unavailable -1
or Paused -2
.
Parameter | Type | Description |
---|---|---|
id | integer | Agent status ID |
Agent status ID
Body parameters
Parameter | Type | Example | Description |
---|---|---|---|
id | integer | 0 | -1 | -2 | Set agent status |
Exemplo: 0 | -1 | -2
Set agent status
Request example
"id": 0
200
Response{
"statusId": null,
"available": true,
"type": 1
}
2
3
4
5
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
PUT/agents/{id}
Update agent
Update an agent information. Some information is required, such as: name and login.
Parameter | Type | Description |
---|---|---|
id | integer | Agent ID |
Agent ID
Body parameters
Parameter | Type | Description |
---|---|---|
name | string | Agent name |
login | string | Agent email |
phone | string | Agent phone |
Agent name
Agent email
Agent phone
Request example
{
"name": "John Doe",
"login": "john@doe.com",
"phone": 557599999999
}
2
3
4
5
200
ResponseSuccessful request with empty body
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
Contacts
GET/contacts
View all contacts
Gets data from all registered contacts.
Optional parameters can be used in this request, such as:
Parameter | Type | Description |
---|---|---|
string | Contact email | |
phone | string | Contact phone |
Contact email
Contact phone
200
Response[
{
"id": "7662964",
"whatsappID": "5560493",
"name": "Charles",
"companyID": "15333",
"email": "test@test.com",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"groupID": null,
"address": "Ave Genésio Vargas",
"district": "Mantiqueira",
"state": "Minas Gerais",
"city": "Camanducaia",
"zipCode": "44000000",
"gender": "2",
"obs": null,
"birthDate": null,
"lastSeen": "2019-06-09 10:28:34",
"createdAt": "2019-06-09 10:29:34",
"updatedAt": "2019-06-09 10:29:34",
"status": "1",
"lastSync": null,
"syncWhatsapp": "0",
"lastChatID": null,
"tokens": "charles 7588888888 7533333333 test@test.com 7588888888",
"mobile": "7588888888",
"phone": "7533333333",
"talkChatType": 2,
"organizationID": null,
"blocked": "0",
"canAutoUpdatePhoto": "1",
"telegramID": null,
"tokenTelegram": null,
"telegramBotCustomerID": null,
"parentID": null,
"nameEmoji": "Charles",
"photo_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"image_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"channelsSituation": {
"voip": true,
"messenger": false,
"widget": false,
"whatsapp": false,
"email": true,
"sms": true,
"telegramBot": false,
"whatsappApi": false,
"instagram": false
},
"customFields": [],
"custom_fields": [],
"number": "7588888888",
"type": 2,
"isEditable": true,
"messengerId": null,
"groups": [],
"organizations": [],
"organization": false,
"parent": null,
"links": []
},
{
"id": "7662931",
"whatsappID": "2911451",
"name": "Kivya Aguiar",
"companyID": "15333",
"email": "test@test.com",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"groupID": null,
"address": "Ave Genésio Vargas",
"district": "Mantiqueira",
"state": "Minas Gerais",
"city": "Camanducaia",
"zipCode": "44000000",
"gender": "1",
"obs": null,
"birthDate": null,
"lastSeen": "2019-06-09 10:24:31",
"createdAt": "2019-06-09 10:25:31",
"updatedAt": "2019-06-09 10:25:31",
"status": "1",
"lastSync": null,
"syncWhatsapp": "0",
"lastChatID": null,
"tokens": "kivya aguiar 75999999999 7533333333 test@test.com 75999999999",
"mobile": "75999999999",
"phone": "7533333333",
"talkChatType": 2,
"organizationID": null,
"blocked": "0",
"canAutoUpdatePhoto": "1",
"telegramID": null,
"tokenTelegram": null,
"telegramBotCustomerID": null,
"parentID": null,
"nameEmoji": "Kivya Aguiar",
"photo_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"image_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"channelsSituation": {
"voip": true,
"messenger": false,
"widget": false,
"whatsapp": false,
"email": true,
"sms": true,
"telegramBot": false,
"whatsappApi": false,
"instagram": false
},
"customFields": [],
"custom_fields": [],
"number": "75999999999",
"type": 2,
"isEditable": true,
"messengerId": null,
"groups": [],
"organizations": [],
"organization": false,
"parent": null,
"links": []
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
GET/contacts/{id}
View a contact
Get the specific contact data by its ID.
Parameter | Type | Description |
---|---|---|
id | integer | Contact ID |
Contact ID
200
Response{
"id": "4771390",
"whatsappID": null,
"name": "2299951200033583",
"companyID": "11721",
"email": null,
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"groupID": null,
"address": null,
"district": null,
"state": null,
"city": null,
"zipCode": null,
"gender": null,
"obs": null,
"birthDate": null,
"lastSeen": "2019-01-16 15:48:38",
"createdAt": "2019-01-16 15:49:38",
"updatedAt": "2019-01-16 15:49:38",
"status": "1",
"lastSync": null,
"syncWhatsapp": "0",
"lastChatID": null,
"tokens": "2299951200033583",
"mobile": null,
"phone": null,
"talkChatType": 2,
"organizationID": null,
"blocked": "0",
"canAutoUpdatePhoto": "1",
"telegramID": null,
"tokenTelegram": null,
"telegramBotCustomerID": null,
"parentID": null,
"nameEmoji": "2299951200033583",
"photo_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"image_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"channelsSituation": {
"voip": false,
"messenger": false,
"widget": false,
"whatsapp": false,
"email": false,
"sms": false,
"telegramBot": false,
"whatsappApi": false,
"instagram": false
},
"customFields": [],
"custom_fields": [],
"number": null,
"type": 2,
"isEditable": true,
"messengerId": null,
"groups": [],
"organizations": [],
"organization": false,
"parent": null,
"links": []
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
GET/contacts/{id}/timeline
View a contact timeline
Get the contact timeline data by its ID. The timeline is the data of contact creation and all associated events since then.
Parameter | Type | Description |
---|---|---|
id | integer | Contact ID |
Contact ID
200
Response[
{
"id": 8227983,
"icon": "comment",
"text": "Excelente cliente.",
"title": "Comentário",
"time": "09/07/2019 08:02:27",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"name": "Kivya",
"type": "comment.created",
"channel": null,
"department": null,
"duration": null,
"situation": null,
"chatID": null,
"deleted": false
},
{
"id": 8227983,
"icon": "email",
"text": "A call was initiated by the customer through the email channel",
"title": "Chat started",
"time": "07/07/2019 09:12:28",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"name": "Williams",
"type": "chat.created",
"channel": "email",
"department": null,
"duration": null,
"situation": "in_chat",
"chatID": "19378164",
"deleted": false
},
{
"icon": "user",
"text": "Contact Williams was created",
"title": "Contact created",
"time": "07/07/2019 09:12:15",
"photo": "",
"name": ""
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
GET/contacts/{id}/groups
View a contact group
Get the group data that the contact belong.
Parameter | Type | Description |
---|---|---|
id | integer | Contact ID |
Contact ID
200
Response[
{
"id": "1851",
"name": "TOP 5",
"companyID": "15333",
"createdAt": "2019-06-10 12:14:16",
"updatedAt": "2019-06-10 12:14:16",
"status": "1",
"nameEmoji": "TOP 5"
}
]
2
3
4
5
6
7
8
9
10
11
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
GET/contacts/{id}/organizations
View a contact organization
Gets data of a contact organization.
Parameter | Type | Description |
---|---|---|
id | integer | Contact ID |
Contact ID
200
Response[
{
"id": "18693",
"name": "Huggy",
"cnpj": null,
"ie": null,
"address": null,
"state": null,
"city": null,
"country": null,
"district": null,
"zipCode": null,
"createdAt": "2019-06-11 16:08:36",
"updatedAt": "2019-06-11 16:08:36",
"companyID": "12025",
"status": "1",
"description": "Technology",
"observation": null,
"domains": "huggy.io",
"phone": "7533333333",
"photo": null,
"nameEmoji": "Huggy",
"customFields": []
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
GET/contacts/{id}/customFields
View a custom field
Get the contact custom field data.
Parameter | Type | Description |
---|---|---|
id | integer | Contact ID |
Contact ID
200
Response[
{
"id": "487",
"companyID": "12025",
"name": "alternative email",
"description": "second option of email",
"fieldType": "email",
"payload": null,
"entityID": "1",
"validation": "[\"huggy.validations.email\"]",
"createdAt": "2019-06-11 16:41:31",
"updatedAt": "2019-06-11 16:41:31",
"deletedAt": null,
"active": "1",
"status": "1",
"token": "alternative_email_customer",
"inputType": "input",
"value": "alternative@test.com"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
GET/contacts/{id}/linkedContacts
View contact associations
An association defines that a contact can be considered main contact of other contact.
Parameter | Type | Description |
---|---|---|
id | integer | Contact ID |
Contact ID
200
Response[
{
"id": "5081373",
"whatsappID": "3951665",
"name": "Karl Edward",
"companyID": "12025",
"email": "karledward@test.com",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"groupID": null,
"address": "",
"district": "",
"state": null,
"city": "",
"zipCode": "",
"gender": "2",
"obs": null,
"birthDate": null,
"lastSeen": "2019-06-11 17:38:50",
"createdAt": "2019-06-11 17:39:50",
"updatedAt": "2019-06-11 17:39:50",
"status": "1",
"lastSync": null,
"syncWhatsapp": "0",
"lastChatID": null,
"tokens": "karl edward 7588888888 karledward@test.com 7588888888",
"mobile": "7588888888",
"phone": null,
"talkChatType": 2,
"organizationID": null,
"blocked": "0",
"canAutoUpdatePhoto": "1",
"telegramID": null,
"tokenTelegram": null,
"telegramBotCustomerID": null,
"parentID": null,
"nameEmoji": "Karl Edward",
"photo_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"image_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"channelsSituation": {
"voip": true,
"messenger": false,
"widget": false,
"whatsapp": false,
"email": true,
"sms": true,
"telegramBot": false,
"whatsappApi": false,
"instagram": false
},
"customFields": [],
"custom_fields": [],
"number": "7588888888",
"type": 2,
"isEditable": true,
"messengerId": null,
"groups": [],
"organizations": [],
"organization": false,
"parent": null,
"links": [
{
"id": 5081372,
"name": "Charles Edward",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg"
}
]
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
POST/contacts
Create a contact
To create a new contact, name
and email
information are required.
Parameter | Type | Description |
---|---|---|
name | string | Contact name |
string | Contact email |
Contact name
Contact email
Requested example
{
"name": "Charles Edware",
"email": "test@test.com"
}
2
3
4
201
Response{
"id": "7663175",
"whatsappID": null,
"name": "Edward",
"companyID": "15333",
"email": "test@test.com",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"groupID": null,
"address": null,
"district": null,
"state": null,
"city": null,
"zipCode": null,
"gender": null,
"obs": null,
"birthDate": null,
"lastSeen": "2019-06-09 10:56:01",
"createdAt": "2019-06-09 10:57:01",
"updatedAt": null,
"status": 1,
"lastSync": null,
"syncWhatsapp": null,
"lastChatID": null,
"tokens": null,
"mobile": null,
"phone": null,
"talkChatType": 2,
"organizationID": null,
"blocked": null,
"canAutoUpdatePhoto": null,
"telegramID": null,
"tokenTelegram": null,
"telegramBotCustomerID": null,
"parentID": null,
"nameEmoji": "Edward",
"photo_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"image_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"channelsSituation": {
"voip": false,
"messenger": false,
"widget": false,
"whatsapp": false,
"email": true,
"sms": false,
"telegramBot": false,
"whatsappApi": false,
"instagram": false
},
"customFields": [],
"custom_fields": [],
"number": null,
"type": 2,
"isEditable": true,
"messengerId": null,
"groups": [],
"organizations": [],
"organization": false,
"parent": null,
"links": []
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
POST/contacts/{id}/chats
Create a chat from the contact ID.
Create a chat from the contact's ID
passing the uuid
of the desired channel.
Note: If the chat is created from the
subject
property.
Parameter | Type | Description |
---|---|---|
id | integer | Contact ID |
Contact ID
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
channelUuid | string | UUID of the channel where the service will be created | |
subject | string | Email subject | optional |
UUID of the channel where the service will be created
Email subject
Exemplo de requisição
{
"channelUuid": "28b407cd-81a4-3abf-94d6-ca4f948d5d2f",
"subject": "Vacation"
}
2
3
4
201
Resposta{
"id": 214049,
"agentId": 40419,
"secondAgentId": null,
"contactId": 671,
"departmentId": null,
"tabulationId": null,
"chatTabulation": null,
"lastMessage": {
"text": "Agent Igor joined the conversation.",
"file": null,
"sendAt": "2024-01-29 10:45:47",
"senderType": null
},
"chatDepartment": null,
"unread": 0,
"channels": [
{
"uuid": "28c407cd-81a4-4arf-94d6-ca4f948d5d1f",
"id": "27b407cd-81a4-4abf-94d6-ca4f948d5d1f",
"name": "Gupshup",
"type": "Whatsapp-Enterprise"
}
],
"chatCustomer": {
"id": 671,
"name": "John Doe",
"mobile": "5511999999999",
"phone": "5511333333333",
"email": "john@doe.com",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"custom_fields": {
"custom_cpf_customer": null,
"custom_phone_customer": null,
"custom_email_customer": null,
"email_customer": null,
"empresa_customer": null,
"number_customer": null,
"youtube_customer": null,
"cnpj_customer": null,
"cpf_customer": null,
"date_customer": null,
"hora_customer": null,
"instagram_customer": null,
"agente_customer": null,
"canal_principal_customer": null,
"gerente_de_contas_customer": null,
"grupo_customer": null,
"main_channel_customer": null,
"ramo_customer": null,
"team_leader_customer": null
}
},
"workflowID": null,
"workflowStepID": null,
"queueNumber": null,
"situation": "in_chat",
"createdAt": "2024-01-29 10:45:46",
"updatedAt": null,
"attendedAt": null,
"closedAt": null,
"enabledSession": false,
"channel": "whatsapp-enterprise",
"agents": [
{
"id": 40419,
"name": "Igor",
"mobile": null,
"phone": null,
"email": "igor@huggy.io",
"photo": "https://cdn.pzw.io/4743932db30f9171f6bf15042e8f87.jpg",
"isActive": true,
"isOnline": true,
"isAvailable": false,
"statusID": "-1",
"statusType": 0,
"photo_url": "https://cdn.pzw.io/4743932db30f9171f6bf15042e8f87.jpg",
"smallPhotoUrl": "https://cdn.pzw.io/4743932db30f9171f6bf15042e8f87.jpg"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
POST/timeline/createComment/{id}
Create a comment in contact timeline
Create a comment in contact’s timeline by its ID. Comments collaborate for report activities with the customer, building a history of their attendance.
Parameter | Type | Description |
---|---|---|
id | integer | Contact ID |
Contact ID
Body parameters
Parameter | Type | Description |
---|---|---|
comment | string | Comments inserted by agent in contact panel |
Exemplo: Comments inserted by agent in contact panel
Requested example
{
"comment": "waiting for documents"
}
2
3
201
Response{
"id": 7740752,
"icon": "comment",
"text": "In last attendance the customer showed interest in acquiring a plan with hight resources",
"title": "Comments",
"time": "12/06/2019 15:55:27",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"name": "Teste",
"type": "comment.created",
"channel": null,
"department": null,
"duration": null,
"situation": null,
"chatID": null,
"deleted": false
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/contacts/{id}
Update a contact
Update a contact by its ID
Parameter | Type | Description |
---|---|---|
id | integer | Contact ID |
Contact ID
Body parameters
Parameter | Type | Description | |
---|---|---|---|
name | string | Contact name | |
string | Contact email | ||
phone | string | Contact phone | |
mobile | string | Contact mobile | |
address | string | Contact address | optional |
city | string | Contact city | optional |
district | string | Contact district | optional |
state | string | Contact state | optional |
obs | string | Comment done about contact | optional |
Contact name
Contact email
Contact phone
Contact mobile
Contact address
Contact city
Contact district
Contact state
Comment done about contact
Requested example
{
"name": "john Doe",
"email": "john@doe.com",
"mobile": "7599999999",
"phone": "7533333333",
"address": "Port Prince",
"city": "Feira de Santana",
"district": "Santa Mônica I",
"state": "Bahia",
"obs": "This is a field to comments about the contact"
}
2
3
4
5
6
7
8
9
10
11
200
Response{
"id": "5080524",
"whatsappID": null,
"name": "john Doe",
"companyID": "11743",
"email": "john@doe.com",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"groupID": null,
"address": "Port Prince",
"district": "Santa Mônica I",
"state": "Bahia",
"city": "Feira de Santana",
"zipCode": null,
"gender": null,
"obs": "This is a field to comments about the contact",
"birthDate": null,
"lastSeen": null,
"createdAt": null,
"updatedAt": null,
"status": 1,
"lastSync": null,
"syncWhatsapp": null,
"lastChatID": null,
"tokens": null,
"mobile": "7599999999",
"phone": "7533333333",
"talkChatType": 2,
"organizationID": null,
"blocked": null,
"canAutoUpdatePhoto": null,
"telegramID": null,
"tokenTelegram": null,
"telegramBotCustomerID": null,
"parentID": null,
"nameEmoji": "john Doe",
"photo_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"image_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"channelsSituation": {
"voip": true,
"messenger": false,
"widget": false,
"whatsapp": false,
"email": true,
"sms": true,
"telegramBot": false,
"whatsappApi": false,
"instagram": false
},
"customFields": [],
"custom_fields": [],
"number": "7599999999",
"type": 2,
"isEditable": true,
"messengerId": null,
"groups": [],
"organizations": [],
"organization": false,
"parent": null,
"links": []
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
PUT contacts/{contactId}/execFlow
Execute a Flow to a contact
Initialize the execution of a Flow
to a specific contact.
Channels that can use this resource:
Email
Messenger
TelegramBot
Whatsapp
To specify the channel that will be used to execute the Flow
, it is necessary to send the uuid
. This uuid
is the universal identifier of the channel.
The value of the uuid
can be obtained at the Huggy panel bellow the section: Configuration >>
Channels >>
Channel Details.
Besides the uuid
, there is more 4 attributes that can be provide during the request:
variables
( object )
Corresponds to the fields that can be used during flow execution.
"variables": {
"data": "15/10/2019",
"url_event": "https://huggy.io"
}
2
3
4
Running example
At the variables
declaration above, there is two terms that can be used during the Flow execution: data
and url_evento
. For these two terms to be used it is necessary to inform them in some part of the flow's action, for example, in the action of sending message.
When sending a message with the following text:
"Hello, good afternoon. The event will be on {{data
}}. The access link is the following: {{
url_event`}}".
The system will replace the terms data
and url_event
by the values provided at the variables declaration, being as fllows:
"Hello, good afternoon. The event will be on 15/10/2019
. The access link is the following: https://huggy.io
".
Note: default { }
whenInChat
( true | false )
If the chat is in attendance with the agent, the following conditions will be considered:
true
: Execute the Flow and remove the agent from the conversation (the chat will come back to the automatic status).false
: Do not execute the Flow.
Note: default false
whenWaitForChat
( true | false )
If the chat is waiting on the queue, the following conditions will be considered:
true
: Do not execute the Flow.false
: The chat will come back to the automatic status.
Note: default false
whenInAuto
( true | false )
If it is on automatic and/or hold another Flow im process, the following conditions will be considered:
true
: Abort the actual Flow and initialize the execution of the provided Flow.false
: Do nothing.
Observations:
For the right operation of this resource in the channels Messenger and TelegramBot the provided contact must have a link with the company, that is, it is necessary that the contact has already done some service with the company through the mentioned channels.
In the case of whatsapp channel, it is possible to run the flow without previous service. However, the contact's phone number must be valid: Country Area Code (55-Brazil) + Area Code (DDD) + Phone Number. Ex. 5511988886666.
If any of the four attributes above explained is not provided at the request, the system will pick up the default value of each one.
If there is no open chat with the contact, a new chat will be created.
Parameter | Type | Description |
---|---|---|
contactId | integer | Contact ID |
Exemplo: Contact ID
Request Example
{
"uuid": "c2d519bf-913a-4a14-8826-d50ad7e9ccc",
"flowId": 21,
"variables": {
"data": "15/10/2019",
"url_event": "https://huggy.io"
},
"whenInChat": true,
"whenWaitForChat": true,
"whenInAuto": true
}
2
3
4
5
6
7
8
9
10
11
200
Response{
"reason": "Flow processed",
"chatID": 19291350
}
2
3
4
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
DELETE/contacts/{id}
Delete a contact
Delete a contact by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Contact ID |
Contact ID
204
ResponseSuccessful request with empty body
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
Custom Fields
GET/customFields
View all custom fields
Get list of all custom fields. Custom fields are useful to insert additional information on the contact.
200
Response[
{
"id": "906",
"companyID": "12043",
"name": "second email option",
"description": "second email option",
"fieldType": "email",
"payload": null,
"entityID": "1",
"validation": "[\"huggy.validations.email\"]",
"createdAt": "2019-06-12 17:10:21",
"updatedAt": "2019-06-12 17:10:21",
"deletedAt": null,
"active": "1",
"status": "1",
"token": "second_option_email_customer",
"inputType": "input"
},
{
"id": "907",
"companyID": "12043",
"name": "last address of the organization",
"description": "last address",
"fieldType": "string",
"payload": null,
"entityID": "3",
"validation": "[\"huggy.validations.string\"]",
"createdAt": "2019-06-12 17:11:48",
"updatedAt": "2019-06-12 17:11:48",
"deletedAt": null,
"active": "1",
"status": "1",
"token": "last_address_organization",
"inputType": "input"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Departments
GET/departments
View all departments
Get the list of all departments created in the company.
Note: This resource has an optional parameter that returns all found records, this is: all records in one or more pages.
Parameter | Type | Description | |
---|---|---|---|
allPages | boolean | Parameter that will return all records if your value to true | optional |
Parameter that will return all records if your value to true
200
Response[
{
"id": 25954,
"name": "1 - Financial",
"parentId": null
},
{
"id": 25955,
"name": "2 - Warehouse",
"parentId": null
},
{
"id": 25956,
"name": "3 - Sales",
"parentId": null
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
GET/departments/parents
View all parent departments
Get list of all parent departments. Parent departments are departments that have sub-departments.
200
Response[
{
"id": 25954,
"name": "1 - Financial"
},
{
"id": 25955,
"name": "2 - Warehouse"
}
]
2
3
4
5
6
7
8
9
10
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
GET/departments/{id}
View a department
Get the registered department information by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Department ID |
Department ID
200
Response{
"id": 30326,
"name": "Financeiro",
"companyID": 15691,
"active": true,
"color": "#000000",
"order": 1,
"parentID": null
}
2
3
4
5
6
7
8
9
Tabulations
GET/tabulations
View all tabulations
Get the list of all created tabulations. Tabulations are useful to identify the context of a chat.
Note: This resource has an optional parameter that returns all found records, this is: all records in one or more pages.
Parameter | Type | Description |
---|---|---|
allPages | boolean | Parameter that will return all records if your value to true |
Parameter that will return all records if your value to true
200
Response[
{
"id": 12055,
"name": "Exchange"
},
{
"id": 12054,
"name": "Deadline"
},
{
"id": 12053,
"name": "Doubt"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
GET/tabulations/{id}
View a tabulation
Gets data of a tabulation by its ID.
Parameter | Type | Description |
---|---|---|
id | integer | Tabulations ID |
Tabulations ID
200
Response{
"id": "12054",
"companyID": "12043",
"name": "Deadline",
"createdAt": "2019-06-13 09:13:44",
"updatedAt": "2019-06-13 09:13:44",
"status": "1",
"dao": null,
"remapped": []
}
2
3
4
5
6
7
8
9
10
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
Telegram Bot
GET/telegramBot
View all telegram bots
Get the list of all telegram bots registered on the Huggy platform.
200
Response[
{
"id": 9,
"name": "doe",
"username": "johndoe_bot"
},
{
"id": 24,
"name": "knsilvestre",
"username": "knsilvestre_bot"
},
{
"id": 27,
"name": "carlosaguiar",
"username": "carlossantosaguiar_bot"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
400
Response{
"reason": "This message will show that doesn't exist result for your search."
}
2
3
GET/telegramBot/{id}
View a telegram bot
Get the telegram bot data by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Telegram bot ID |
Telegram bot ID
200
Response{
"id": "9",
"name": "doe",
"username": "johndoe_bot",
"uuid": "5d960a25-4762-4021-a814-b6cf4d26e11f",
"flowIn": {
"id": 2,
"description": "Welcome to Attendance"
},
"flowOut": {
"id": 3,
"description": "Satisfaction Survey"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
400
Response{
"reason": "This message will inform what caused the error."
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search."
}
2
3
POST/telegramBot
Register a telegram bot
Register a new telegram bot on the Huggy plataform by its token
.
Body parameter
Parameter | Type | Description |
---|---|---|
token | string | Telegram bot token |
Telegram bot token
Request example
{
"token": "3400010986:ACGLDsVx5MKO_06Jw08wgPerpI0ac3bODdM"
}
2
3
201
Response{
"id": "9",
"name": "doe",
"username": "johndoe_bot",
"uuid": "5d960a25-4762-4021-a814-b6cf4d26e11f",
"flowIn": null,
"flowOut": null
}
2
3
4
5
6
7
8
400
Response{
"reason": "This message will inform what caused the error."
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search."
}
2
3
PUT/telegramBot/{id}
Update a telegram bot
Update name, input flows and output flows of a telegram bot by its ID
.
Body parameter
Parameter | Type | Description |
---|---|---|
name | string | Bot nickname |
flowInID | integer | Input flow ID |
flowOutID | integer | Output flow ID |
Bot nickname
Input flow ID
Output flow ID
Request example
{
"name": "John Doe",
"flowInID": "2",
"flowOutID": "3"
}
2
3
4
5
200
Response{
"id": "29",
"name": "carlosaguiar",
"username": "carlossantosaguiar_bot",
"uuid": "787e60dd-f263-4f0b-b4fc-dc98667be1a2",
"flowIn": {
"id": 2,
"description": "Welcome to Attendance"
},
"flowOut": {
"id": 3,
"description": "Satisfaction Survey"
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
400
Response{
"reason": "This message will inform what caused the error."
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search."
}
2
3
DELETE/telegramBot/{id}
Delete a telegram bot
Delete a telegram bot by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Telegram bot ID |
Telegram bot ID
204
ResponseSuccessful request with empty body
400
Response{
"reason": "This message will inform what caused the error."
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search."
}
2
3
Shortcuts
GET/shortcuts
View all shortcuts
Get the list of all shortcuts created in Huggy platform. Shortcuts are used for sending predefined texts, photos, image and others files.
200
Response[
{
"id": "17229",
"name": "Welcome message",
"key": "wmessage",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "Hello! Welcome to the sales department!",
"public": true
},
{
"id": "17228",
"name": "Welcome message",
"key": "bvwarehouse",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "Hello! Welcome to the warehouse department!",
"public": false
},
{
"id": "17227",
"name": "Welcome message",
"key": "bvfinancial",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": null,
"public": false
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
GET/shortcuts/{id}
View a shortcut
Get the shortcut data by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Shortcut ID |
Shortcut ID
200
Response{
"id": "17229",
"name": "Welcome message",
"key": "wmessage",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "Hello! Welcome to the sales department!",
"public": true
}
2
3
4
5
6
7
8
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
POST/shortcuts
Create a new shortcut
Creates a new shortcut for sending texts, images and files.
Note: For sending text messages, a limit of one thousand characters is reserved.
Body parameters
Parameter | Type | Description | |
---|---|---|---|
name | string | Shortcut name | |
key | string | Keyword used to call the shortcut | |
file | string | Link to the file used in sending the shortcut | |
text | string | A text message used in sending the shortcut | optional |
public | boolean | Makes the shortcut visible on the attendance screen or in the shortcuts list | optional |
Shortcut name
Keyword used to call the shortcut
Link to the file used in sending the shortcut
A text message used in sending the shortcut
Makes the shortcut visible on the attendance screen or in the shortcuts list
Request example
{
"name": "Document subscription",
"key": "docs_sub",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "A message that accompanies the sent document.",
"public": true
}
2
3
4
5
6
7
201
Response{
"id": 34009,
"name": "Document subscription",
"key": "docs_sub",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "A message that accompanies the sent document.",
"public": true
}
2
3
4
5
6
7
8
400
Response{
"reason": "This message will inform what caused the error."
}
2
3
PUT/shortcuts/{id}
Update shortcut
Update a shortcut by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Shortcut ID |
Shortcut ID
Body parameters
Parameter | Type | Description | |
---|---|---|---|
name | string | Shortcut name | |
key | string | Keyword used to call the shortcut | |
file | string | Link to the file used in sending the shortcut | |
text | string | A text message used in sending the shortcut | optional |
public | boolean | Makes the shortcut visible on the attendance screen or in the shortcuts list | optional |
Shortcut name
Keyword used to call the shortcut
Link to the file used in sending the shortcut
A text message used in sending the shortcut
Makes the shortcut visible on the attendance screen or in the shortcuts list
Request example
{
"name": "The new name for the shortcut",
"key": "keyword_new",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "An updated message for the shortcut.",
"public": false
}
2
3
4
5
6
7
200
Response{
"id": 34003,
"name": "The new name for the shortcut",
"key": "keyword_new",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "An updated message for the shortcut.",
"public": false
}
2
3
4
5
6
7
8
400
Response{
"reason": "This message will inform what caused the error."
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search."
}
2
3
DELETE/shortcuts/{id}
Delete a shortcut
Delete a shortcut by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Shortcut ID |
Shortcut ID
204
ResponseSuccessful request with empty body
404
Response{
"reason": "This message will show that doesn't exist result for your search."
}
2
3
Status
GET/status
View all status
Get the list of all custom status that was created by agents. The agent status corresponds to a special condition that it can be in, but it must be associated with available
or unavailable
option.
200
Response[
{
"id": "1691",
"name": "Absent",
"message": "Hello! I'll be right back.",
"type": "0",
"createdAt": "2019-06-13 11:59:56",
"updatedAt": "2019-06-13 12:00:16",
"agentID": "34976",
"available": false
},
{
"id": "1690",
"name": "lunch time",
"message": "Hello! Our lunch time is from 13h to 14h.",
"type": "0",
"createdAt": "2019-06-13 11:58:35",
"updatedAt": "2019-06-13 12:00:06",
"agentID": "34976",
"available": false
},
{
"id": "1689",
"name": "Meeting",
"message": "Hello! We are meeting. logo we will follow.",
"type": "0",
"createdAt": "2019-06-13 11:57:21",
"updatedAt": "2019-06-13 11:57:21",
"agentID": "34976",
"available": false
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Workflow
GET/workflows
View all workflows
Get the list of all workflows
and their respective phases.
Workflows can be created to guide the attendance phases.
200
Response[
{
"id": "5656",
"companyID": "12043",
"name": "Delivery cycle",
"createdAt": "2019-06-13 15:05:41",
"updatedAt": "2019-06-13 15:09:10",
"status": "1",
"fatherID": null,
"color": "#4f81bd",
"steps": [
{
"id": "5657",
"companyID": "12043",
"name": "Material preparation",
"createdAt": "2019-06-13 15:06:43",
"updatedAt": "2019-06-13 15:06:43",
"status": "1",
"fatherID": "5656",
"color": null,
"steps": []
},
{
"id": "5658",
"companyID": "12043",
"name": "Material collection",
"createdAt": "2019-06-13 15:06:58",
"updatedAt": "2019-06-13 15:06:58",
"status": "1",
"fatherID": "5656",
"color": null,
"steps": []
},
{
"id": "5659",
"companyID": "12043",
"name": "Send to received",
"createdAt": "2019-06-13 15:07:26",
"updatedAt": "2019-06-13 15:07:26",
"status": "1",
"fatherID": "5656",
"color": null,
"steps": []
},
{
"id": "5660",
"companyID": "12043",
"name": "Feedback delivered",
"createdAt": "2019-06-13 15:08:12",
"updatedAt": "2019-06-13 15:08:12",
"status": "1",
"fatherID": "5656",
"color": null,
"steps": []
}
]
},
{
"id": "5651",
"companyID": "12043",
"name": "Sales validation cycle",
"createdAt": "2019-06-13 14:36:43",
"updatedAt": "2019-06-13 14:36:43",
"status": "1",
"fatherID": null,
"color": "#4f81bd",
"steps": [
{
"id": "5652",
"companyID": "12043",
"name": "Open request",
"createdAt": "2019-06-13 14:37:02",
"updatedAt": "2019-06-13 14:39:53",
"status": "1",
"fatherID": "5651",
"color": null,
"steps": []
},
{
"id": "5653",
"companyID": "12043",
"name": "Validando Informações",
"createdAt": "2019-06-13 14:39:37",
"updatedAt": "2019-06-13 14:40:22",
"status": "1",
"fatherID": "5651",
"color": null,
"steps": []
},
{
"id": "5654",
"companyID": "12043",
"name": "Accepted request",
"createdAt": "2019-06-13 14:40:57",
"updatedAt": "2019-06-13 14:40:57",
"status": "1",
"fatherID": "5651",
"color": null,
"steps": []
},
{
"id": "5655",
"companyID": "12043",
"name": "Request denied",
"createdAt": "2019-06-13 14:41:13",
"updatedAt": "2019-06-13 14:41:13",
"status": "1",
"fatherID": "5651",
"color": null,
"steps": []
}
]
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
GET/workflows/{id}
View a workflow
Get the workflow data by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Workflow ID |
Workflow ID
200
Response{
"id": "5656",
"companyID": "12043",
"name": "Delivery cycle",
"createdAt": "2019-06-13 15:05:41",
"updatedAt": "2019-06-13 15:09:10",
"status": "1",
"fatherID": null,
"color": "#4f81bd",
"steps": [
{
"id": "5657",
"companyID": "12043",
"name": "Material preparation",
"createdAt": "2019-06-13 15:06:43",
"updatedAt": "2019-06-13 15:06:43",
"status": "1",
"fatherID": "5656",
"color": null,
"steps": []
},
{
"id": "5658",
"companyID": "12043",
"name": "Material collection",
"createdAt": "2019-06-13 15:06:58",
"updatedAt": "2019-06-13 15:06:58",
"status": "1",
"fatherID": "5656",
"color": null,
"steps": []
},
{
"id": "5659",
"companyID": "12043",
"name": "Send to recipient",
"createdAt": "2019-06-13 15:07:26",
"updatedAt": "2019-06-13 15:07:26",
"status": "1",
"fatherID": "5656",
"color": null,
"steps": []
},
{
"id": "5660",
"companyID": "12043",
"name": "Feedback delivered",
"createdAt": "2019-06-13 15:08:12",
"updatedAt": "2019-06-13 15:08:12",
"status": "1",
"fatherID": "5656",
"color": null,
"steps": []
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
Bots
GET/bots
View all bots
Get the list of all bots
created in Huggy platform
200
Response[
{
"id": 2926,
"name": "HuggyBot"
},
{
"id": 2925,
"name": "HuggyGirl"
}
]
2
3
4
5
6
7
8
9
10
GET/bots/{id}
View a bot
Get the bot data by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Bot ID |
Bot ID
200
Response{
"id": "2926",
"companyID": "15691",
"name": "HuggyBot",
"uid": null,
"createdAt": "2019-06-17 08:40:06",
"updatedAt": "2019-06-17 08:41:58",
"status": "1",
"description": null,
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"phone": null,
"email": "charles@test.com",
"birthday": "2019-06-17",
"transferMessage": "You will transferred for other attendant.",
"welcomeMessage": "Hello, Welcome to the Huggy.",
"maxErrors": "100",
"engineID": "3",
"apiAiLang": "en",
"apiAiClientToken": "d7d1d9daec634e598ea9ccd59acf7693",
"apiAiDeveloperToken": "9555d63499614423859ade081ff74da4",
"watsonUsername": null,
"watsonPassword": null,
"watsonWorkspace": null,
"watsonAcceptEmptyIntents": "0",
"botServiceSecret": null,
"botServiceBotHandle": null
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
Virtual Agents
GET/virtualAgents
View all virtual agents
Get the list of all virtual agents registered in Huggy platform.
200
Response[
{
"id": 784,
"name": "huggyboy",
"email": "huggyboy@test.com"
},
{
"id": 785,
"name": "huggygirl",
"email": "huggygirl@test.com"
},
{
"id": 782,
"name": "huggyhank",
"email": "hugggyhenk@test.com"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
GET/virtualAgents/{id}
View a virtual agent
Get the virtual agent data by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Virtual agent ID |
Virtual agent ID
200
Response{
"id": "784",
"companyID": "15691",
"name": "huggyboy",
"mobile": "557592731111",
"email": "huggyboy@test.com",
"phone": null,
"photoLink": "https://c.pzw.io/img/avatar-user-boy.jpg",
"createdAt": "2019-06-17 17:11:13",
"updatedAt": "2019-06-17 17:11:13",
"status": "1"
}
2
3
4
5
6
7
8
9
10
11
12
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
Projects
GET/projects
View all projects
Get the list of all projects created in Huggy platform. Each project is composed by one or more flows.
Note: In addition to the projects and their respective flows, this action will return the system default context variables.
200
Response[
{
"id": "497786",
"companyID": "1",
"name": "ATENDIMENTO SYNTESIS",
"createdBy": "3278",
"status": "1",
"createdAt": "2020-03-24 10:30:42",
"updatedAt": "2020-03-24 10:30:42"
},
{
"id": "497804",
"companyID": "1",
"name": "Conversation Page",
"createdBy": "38736",
"status": "1",
"createdAt": "2020-04-07 22:25:49",
"updatedAt": "2020-04-07 22:25:49"
},
{
"id": "486288",
"companyID": "1",
"name": "CS Tech",
"createdBy": "19912",
"status": "1",
"createdAt": "2019-04-25 14:20:54",
"updatedAt": "2019-04-25 14:20:54"
},
{
"id": "11940",
"companyID": "1",
"name": "Digital SDR",
"createdBy": "46",
"status": "1",
"createdAt": "2019-02-23 17:48:46",
"updatedAt": "2019-02-23 17:48:46"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
GET/projects/{id}
View a project
Get the project data by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Project ID |
Project ID
200
Response{
"id": "497786",
"companyID": "1",
"name": "ATENDIMENTO SYNTESIS",
"createdBy": "3278",
"status": "1",
"createdAt": "2020-03-24 10:30:42",
"updatedAt": "2020-03-24 10:30:42",
"variables": {
"Project flows": [],
"huggy": {
"time_hello": "huggy.time_hello",
"chat": {
"id": "huggy.chat.id",
"created_at": "huggy.chat.created_at",
"department": {
"id": "huggy.chat.department.id",
"name": "huggy.chat.department.name",
"order": "huggy.chat.department.order"
},
"tabulation": {
"id": "huggy.chat.tabulation.id",
"name": "huggy.chat.tabulation.name"
},
"contact": {
"id": "huggy.chat.contact.id",
"name": "huggy.chat.contact.name",
"created_at": "huggy.chat.contact.created_at",
"first_name": "huggy.chat.contact.first_name",
"second_name": "huggy.chat.contact.second_name",
"mobile": "huggy.chat.contact.mobile",
"email": "huggy.chat.contact.email",
"organization": {
"id": "huggy.chat.contact.organization.id",
"name": "huggy.chat.contact.organization.name",
"description": "huggy.chat.contact.organization.description"
},
"custom.apelido_customer": "huggy.chat.contact.custom.apelido_customer",
"custom.email_customer": "huggy.chat.contact.custom.email_customer",
"custom.empresa_customer": "huggy.chat.contact.custom.empresa_customer"
},
"company": {
"id": "huggy.chat.company.id",
"name": "huggy.chat.company.name",
"email": "huggy.chat.company.email",
"created_at": "huggy.chat.company.created_at",
"phone": "huggy.chat.company.phone"
},
"agent": {
"id": "huggy.chat.agent.id",
"name": "huggy.chat.agent.name",
"email": "huggy.chat.agent.email",
"created_at": "huggy.chat.agent.created_at",
"phone": "huggy.chat.agent.phone"
},
"queue_position": "huggy.chat.queue_position",
"workflow_id": "huggy.chat.workflow_id",
"workflow_step_id": "huggy.chat.workflow_step_id",
"url": "huggy.chat.url",
"channel_type": "huggy.chat.channel_type",
"contact_last_message": "huggy.chat.contact_last_message",
"chat_last_message": "huggy.chat.chat_last_message",
"current_message": "huggy.chat.current_message",
"tags": "huggy.chat.tags"
}
}
},
"variables_settings": [],
"hasFlows": true
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
POST/projects
Create a project
Create a project passing in the request body the attribute name
and its respective value.
Body parameters
Parameter | Type | Description |
---|---|---|
name | string | Project name that will be created |
Project name that will be created
Requested example
{
"name": "Electronics"
}
2
3
200
Response{
"project": {
"id": "487742",
"companyID": "15691",
"name": "Electronics",
"createdBy": "39708",
"status": 1,
"createdAt": "2019-06-18 11:03:38",
"updatedAt": "2019-06-18 11:03:38",
"variables": {
"Flows do projeto": [],
"huggy": {
"time_hello": "huggy.time_hello",
"chat": {
"id": "huggy.chat.id",
"created_at": "huggy.chat.created_at",
"department": {
"id": "huggy.chat.department.id",
"name": "huggy.chat.department.name",
"order": "huggy.chat.department.order"
},
"tabulation": {
"id": "huggy.chat.tabulation.id",
"name": "huggy.chat.tabulation.name"
},
"contact": {
"id": "huggy.chat.contact.id",
"name": "huggy.chat.contact.name",
"created_at": "huggy.chat.contact.created_at",
"first_name": "huggy.chat.contact.first_name",
"second_name": "huggy.chat.contact.second_name",
"mobile": "huggy.chat.contact.mobile",
"email": "huggy.chat.contact.email",
"organization": {
"id": "huggy.chat.contact.organization.id",
"name": "huggy.chat.contact.organization.name",
"description": "huggy.chat.contact.organization.description"
}
},
"company": {
"id": "huggy.chat.company.id",
"name": "huggy.chat.company.name",
"created_at": "huggy.chat.company.created_at",
"phone": "huggy.chat.company.phone"
},
"agent": {
"id": "huggy.chat.agent.id",
"name": "huggy.chat.agent.name",
"email": "huggy.chat.agent.email",
"created_at": "huggy.chat.agent.created_at",
"phone": "huggy.chat.agent.phone"
},
"queue_position": "huggy.chat.queue_position",
"workflow_id": "huggy.chat.workflow_id",
"workflow_step_id": "huggy.chat.workflow_step_id",
"url": "huggy.chat.url",
"channel_type": "huggy.chat.channel_type",
"current_message": "huggy.chat.current_message"
}
}
},
"variables_settings": [],
"hasFlows": false
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
PUT/projects/{id}
Update the project name
Update the project name passing in the request body the attribute name and its respective value.
Parameter | Type | Description |
---|---|---|
name | string | Project ID |
Project ID
Body parameters
Parameter | Type | Description |
---|---|---|
name | string | New name to project |
New name to project
Requested example
{
"name": "Electronics"
}
2
3
200
Response{
"project": {
"id": "487704",
"companyID": "15691",
"name": "Visitor",
"createdBy": "39708",
"status": 1,
"createdAt": "2019-06-16 22:04:19",
"updatedAt": "2019-06-18 11:04:46",
"variables": {
"Flows do projeto": [],
"huggy": {
"time_hello": "huggy.time_hello",
"chat": {
"id": "huggy.chat.id",
"created_at": "huggy.chat.created_at",
"department": {
"id": "huggy.chat.department.id",
"name": "huggy.chat.department.name",
"order": "huggy.chat.department.order"
},
"tabulation": {
"id": "huggy.chat.tabulation.id",
"name": "huggy.chat.tabulation.name"
},
"contact": {
"id": "huggy.chat.contact.id",
"name": "huggy.chat.contact.name",
"created_at": "huggy.chat.contact.created_at",
"first_name": "huggy.chat.contact.first_name",
"second_name": "huggy.chat.contact.second_name",
"mobile": "huggy.chat.contact.mobile",
"email": "huggy.chat.contact.email",
"organization": {
"id": "huggy.chat.contact.organization.id",
"name": "huggy.chat.contact.organization.name",
"description": "huggy.chat.contact.organization.description"
}
},
"company": {
"id": "huggy.chat.company.id",
"name": "huggy.chat.company.name",
"created_at": "huggy.chat.company.created_at",
"phone": "huggy.chat.company.phone"
},
"agent": {
"id": "huggy.chat.agent.id",
"name": "huggy.chat.agent.name",
"email": "huggy.chat.agent.email",
"created_at": "huggy.chat.agent.created_at",
"phone": "huggy.chat.agent.phone"
},
"queue_position": "huggy.chat.queue_position",
"workflow_id": "huggy.chat.workflow_id",
"workflow_step_id": "huggy.chat.workflow_step_id",
"url": "huggy.chat.url",
"channel_type": "huggy.chat.channel_type",
"current_message": "huggy.chat.current_message"
}
}
},
"variables_settings": [],
"hasFlows": true
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
DELETE/projects/{id}
Delete a project
Delete a project by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Project ID |
Project ID
200
Response{
"status": true
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
GET/projects/{id}/flows
View all project flows
Get the list of all project flows and its configured actions.
Parameter | Type | Description |
---|---|---|
id | integer | Project ID |
Project ID
200
Response[
{
"id": "67356",
"token": "bd8868c5-f816-460b-ab25-631ea0696f10",
"description": "segunda via boleto",
"createdAt": "2020-03-24 10:36:24",
"updatedAt": "2020-03-24 10:36:24",
"status": "1",
"companyID": "1",
"createdBy": null,
"importStatus": "0",
"projectID": "497786",
"importedBy": null,
"deletedBy": null,
"deletedAt": null,
"actions": [],
"variables": []
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
GET/projects/{projectId}/flows/{flowId}
View a flow
Get the flow data by its ID
.
Parameter | Type | Description | |
---|---|---|---|
projectId | integer | Project ID | optional |
flowId | integer | Flow ID |
Project ID
Flow ID
200
Response{
"id": "30124",
"token": "dfd5a68d-31d4-4261-b659-e5b4c9b26a53",
"description": "Welcome",
"createdAt": "2019-06-16 20:58:43",
"updatedAt": "2019-06-18 06:57:46",
"status": "1",
"companyID": "15691",
"createdBy": null,
"importStatus": "0",
"projectID": "487703",
"importedBy": null,
"actions": [
{
"id": "101122",
"type": "huggy.action.send.message",
"value": "{\"content\":[\"Ol\\u00e1! Welcome to our website.\\n\",\"Would you like to talk to one of our attendants?\\n\",\"Ol\\u00e1!Welcome to our website.\"],\"typing\":false,\"content_type\":\"0\"}",
"order": "0",
"createdAt": "2019-06-16 21:56:03",
"updatedAt": "2019-06-18 06:57:46",
"status": "1",
"companyID": "15691",
"automationFlowID": "30124",
"label": "APP_LABEL_ACTION_SEND_MESSAGE",
"fullValue": {
"content": [
"Hello! Welcome to our website.\n",
"Would you like to talk to one of our attendants?\n", "Hello! Welcome to our website."
],
"type": {
"type": "0"
},
"typing": false,
"index": 1
}
},
{
"id": "101123",
"type": "huggy.action.send.message",
"value": "{\"content\":[\"Would you like to talk to one of our attendants?\"],\"typing\":false,\"content_type\":\"0\"}",
"order": "1",
"createdAt": "2019-06-16 21:56:03",
"updatedAt": "2019-06-18 06:57:46",
"status": "1",
"companyID": "15691",
"automationFlowID": "30124",
"label": "APP_LABEL_ACTION_SEND_MESSAGE",
"fullValue": {
"content": [
"Would you like to talk to one of our attendants?"
],
"type": {
"type": "0"
},
"typing": false,
"index": 0
}
},
{
"id": "101766",
"type": "huggy.action.conditional",
"value": "{\"action\":{\"type\":\"huggy.action.transfer.to.agent\",\"label\":\"APP_LABEL_ACTION_TRANSFER_TO_AGENT\",\"id\":\"\",\"companyID\":15691,\"value\":39704,\"fullValue\":[],\"order\":0},\"conditions\":[{\"type\":\"huggy.conditional.variable\",\"operator\":\"=\",\"value\":{\"key\":\"pTransfAgent\",\"value\":\"SIM\",\"customVariable\":true}}]}",
"order": "2",
"createdAt": "2019-06-18 06:57:46",
"updatedAt": "2019-06-18 06:57:46",
"status": "1",
"companyID": "15691",
"automationFlowID": "30124",
"label": "APP_LABEL_ACTION_CONDITIONAL",
"fullValue": {
"id": "39704",
"name": "Aguiar",
"login": "carlos@teste.com",
"status": "1",
"companyID": "15333",
"photoLink": null,
"gender": "0",
"birthDate": null,
"email": "Charles@test.com",
"createdAt": "2019-05-26 17:48:14",
"updatedAt": "2019-06-09 08:08:47",
"whatsappID": "5488902",
"maxChats": "1000",
"perfilID": "3",
"welcomeText": null,
"departmentsAccess": "1",
"viewedUpdates": "1",
"statusID": null,
"pushToken": null,
"osDevice": null,
"signatureEmail": null,
"autoLogin": null,
"autoDistribution": "0",
"lastAutoChatAt": null,
"active": "1",
"layoutType": "1",
"blocked": 0,
"office": "Outro",
"confirmedEmail": "1",
"confirmEmailAlert": "",
"perfilName": "Administrator",
"photo_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"image_small": "https://c.pzw.io/img/avatar-user-boy.jpg",
"number": "5575999999999",
"type": 1,
"isActive": true,
"isAvailable": false,
"isOnline": false,
"lastSeen": "2019-05-26 17:47:14",
"isGuest": ""
}
}
],
"variables": []
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
POST/projects/{id}/flows
Create a flow
Pass in the query parameter the project ID and in the request body the attribute description
so that the flow will be created.
Parameter | Type | Description |
---|---|---|
id | integer | Project ID |
Project ID
Body parameters
Parameter | Type | Description |
---|---|---|
description | string | Flow description to be created |
Flow description to be created
Requested example
{
"description": "tracking"
}
2
3
200
Response{
"id": "30358",
"token": "63cb5ca6-9069-4144-a241-4df582af3b6e",
"description": "Tracking",
"createdAt": null,
"updatedAt": null,
"status": null,
"companyID": 15691,
"createdBy": null,
"importStatus": null,
"projectID": 487759,
"importedBy": null,
"actions": [],
"variables": []
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
PUT/projects/{projectId}/flows/{flowId}
Update a flow
Update the flow description.
Parameter | Type | Description |
---|---|---|
projectId | integer | Project ID |
flowId | integer | Project flow number |
Project ID
Project flow number
Body parameters
Parameter | Type | Description |
---|---|---|
description | integer | The new description flow |
The new description flow
Requested example
{
"description": "New description"
}
2
3
200
Response{
"id": "30320",
"token": "92e5f207-daee-4571-af39-34f935024128",
"description": "new description",
"createdAt": "2019-06-18 11:46:59",
"updatedAt": "2019-06-25 08:59:19",
"status": "1",
"companyID": "15691",
"createdBy": null,
"importStatus": "0",
"projectID": "487703",
"importedBy": null,
"actions": [],
"variables": []
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
DELETE/projects/{projectsId}/flows/{flowId}
Delete a flow
Delete a flow by its ID.
Note: It doesn’t possible to delete a flow in use.
Parameter | Type | Description |
---|---|---|
projectId | integer | Project ID |
flowId | integer | Flow ID |
Project ID
Flow ID
204
Response{
Successful request with empty body
}
2
3
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
Organizations
GET/organizations
View all organizations
View a list of all organizations registered in Huggy platform.
200
Response[
{
"id": "19706",
"name": "hankmark",
"cnpj": null,
"ie": null,
"address": null,
"state": null,
"city": null,
"country": null,
"district": null,
"zipCode": null,
"createdAt": "2019-06-26 11:27:12",
"updatedAt": "2019-06-26 11:27:12",
"companyID": "15691",
"status": "1",
"description": "shoe distributor",
"observation": null,
"domains": "henkmark.com",
"phone": "5575999999999",
"photo": null,
"nameEmoji": "hankmark",
"customFields": []
},
{
"id": "19704",
"name": "Huggy",
"cnpj": null,
"ie": null,
"address": null,
"state": null,
"city": null,
"country": null,
"district": null,
"zipCode": null,
"createdAt": "2019-06-26 11:22:54",
"updatedAt": "2019-06-26 11:22:54",
"companyID": "15691",
"status": "1",
"description": "Digital attendance",
"observation": null,
"domains": "huggy.io",
"phone": "75999999999",
"photo": null,
"nameEmoji": "Huggy",
"customFields": []
},
{
"id": "19705",
"name": "Huggy",
"cnpj": null,
"ie": null,
"address": null,
"state": null,
"city": null,
"country": null,
"district": null,
"zipCode": null,
"createdAt": "2019-06-26 11:25:57",
"updatedAt": "2019-06-26 11:25:57",
"companyID": "15691",
"status": "1",
"description": "Digital Attendance",
"observation": null,
"domains": "testhuggy.com",
"phone": "75999999999",
"photo": null,
"nameEmoji": "Huggy",
"customFields": []
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
POST/organizations
Create a new organization
Create a new organization in Huggy platform. Pass in the request body the attribute name with its respective value.
Body parameters
Parameter | Type | Description |
---|---|---|
name | string | Organization name |
Organization name
Requested example
{
"name": "Huggy"
}
2
3
200
Response{
"id": "18711",
"name": "Huggy",
"cnpj": null,
"ie": null,
"address": null,
"state": null,
"city": null,
"country": null,
"district": null,
"zipCode": null,
"createdAt": null,
"updatedAt": null,
"companyID": "11721",
"status": 1,
"description": null,
"observation": null,
"domains": null,
"phone": null,
"photo": null,
"nameEmoji": "Huggy",
"customFields": []
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
400
Response{
"reason": "This message will inform what caused the error"
}
2
3
PUT/organizations/{Id}
Update a organization
Update the organization name.
Parameter | Type | Description |
---|---|---|
id | integer | Organization ID |
Organization ID
Body parameters
Parameter | Type | Description |
---|---|---|
name | string | New organization name |
New organization name
Requested example
{
"name": "Huggy"
}
2
3
200
Response{
"id": "18697",
"name": "Huggy",
"cnpj": null,
"ie": null,
"address": null,
"state": null,
"city": null,
"country": null,
"district": null,
"zipCode": null,
"createdAt": null,
"updatedAt": null,
"companyID": "11721",
"status": 1,
"description": null,
"observation": null,
"domains": null,
"phone": null,
"photo": null,
"nameEmoji": "Huggy",
"customFields": []
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
DELETE/organizations/{Id}
Delete a organization
Delete a organization by its ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Organization ID |
Organization ID
204
ResponseSuccessful request with empty body
404
Response{
"reason": "This message will show that doesn't exist result for your search"
}
2
3
4
Companies
GET/companies
View all companies
Get the list of all agent companies.
Note: The access token in the API belong to the agent. Therefore, the listed companies at this endpoint match the companies of the token owner.
200
Response[
{
"id": 15691,
"name": "Huggy"
},
{
"id": 15693,
"name": "Hank"
}
]
2
3
4
5
6
7
8
9
10