API v3
Bem-vindo à API Huggy. Com ela, você pode gerenciar todos os agentes, contatos e atender seus clientes, enviar e receber mensagens. Essa API permite executar ações programaticamente na conta da sua empresa.
Nossa API nativamente suporta o formato:
REST
O sistema deve fazer uma solicitação para o URL https://api.huggy.app/v3, enviando os parâmetros por GET, POST, PUT ou DELETE. Para cada solicitação, a resposta será um objeto JSON, que é detalhado ao longo desta documentação.
Autenticação
Autenticação via painel Huggy
Para que a API seja ativada, será necessário adicionar um aplicativo na sessão Developers no painel Huggy e realizar uma autenticação através de uma estrutura de autorização para concessão de acesso à API, OAuth2.0
. A criação do aplicativo disponibilizará acesso as credenciais OAuth que consistem em client_id
e client_secret
, as quais possibilitarão a geração do token de acesso à API.
Sessões do aplicativo
Informações Básicas Nessa sessão, você poderá configurar um Nome e uma Descrição para seu aplicativo, ambos poderão ser atualizados a qualquer momento.
Autenticação OAuth 2.0
Nessa sessão você poderá configurar uma url de callback e visualizar o client_id e o client_secret que foram gerados automaticamente a partir do momento que você criou o aplicativo na plataforma Huggy.
Endereço de entrega
url de callback
- Consiste em um endereço de entrega que será utilizado para que a Huggy possa devolver ao seu aplicativo a autorização solicitada.
Credenciais OAuth
client_id
- ID do aplicativo do cliente. Trata-se de como a API irá identificar a aplicação.
client_secret
- Conhecido e utilizado somente pelo aplicativo e pelo servidor de autorização.
- Conhecido e utilizado somente pelo aplicativo e pelo servidor de autorização.
Fluxo de autenticação
Passo 1:
- Criar um aplicativo na plataforma
Huggy
Passo 2:
- Substituir os parâmetros da url abaixo.
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: Define o escopo de acesso à API (recursos);
- response_type: Tipo de resposta esperada. Código enviado à url de callback;
- redirect_uri: URL de callback configurada no aplicativo;
- client_id: ID do aplicativo;
Passo 3:
- Estando com o usuário logado na plataforma Huggy, acessar a
url
com as informações descritas no passo anterior. Se todos os passos até aqui forem contemplados, então a interface de autorização de uso lhe será apresentada.
Passo 4:
- Conceder permissão de uso do aplicativo
Passo 5:
- Após clicar em
Autorizar uso
, enviaremos o code para a url de callback:
https://nomedoapp.org/auth/callback?code=def50200a66869346ba8d24820a1ed96e267d3518a65d27efe179ab73f1c8e50a0ba7f860b763534eaeec5c895ca7efaf49aa7b5160ab33545c18c59d8672e9d0ae8f98a0b81aaae9b741c8536839dbbb4d2864d08f11d5faeea10bec7a4eba32b3e07c343e6031c280f73d97d1dfd92ec0bfe3a84e6ffb62d18991b21c5825c1ef4c4e2dd0c92550d70aa11184b6f1e7004c09f54826ca47cf42c1065efd0e680e8857909d64e991258e41981858d08bc5e9e70866ec7ab67e500a7af3d84835cbc7a6ca33fc38e782050b62e5af3b280368315bf3dd3c234bffa986426a6eed2efa922e932d9579721e6dc1c3a5e74d949773a3eaaaa596be289d129cb81b62690ba32166b2d54c0725ad510g99f7df41c9edc701e1d60ffed375319dee886287030e6d3f4d0983b4211a4b74d82ff3349f5027eee16bca259e4b5ba88123a4e68e5ce4fad77e3ecd558036271bw566ebe4b5cc0baa1e05bb6c0c5a1d0420ab2bcc3e96396b9b58dc63a345732dcc8246dba3ac5c687eb6981882d37fc84e2e9bc88e8a88f795b6cb7f2dc89d97c0c31b37d207c3b45571e2bc39afb412929485f7a84f485daaae4a7
Nota: O code enviado para a url de callback só poderá ser utilizado uma vez. Caso você precise gerar novamente o access_token, o passo 2 dessa documentação deverá ser repetido.
Passo 6:
- Em posse do code, uma requisição deve ser feita para a extração do
access_token
e orefresh_token
, conforme o modelo a seguir:
Solução prática
Confira uma solução prática que permite realizar o processo de autenticação usando uma interface personalizada e intuitiva.
Parâmetros da requisição
Parameter | Type | Exemplo | Description |
---|---|---|---|
grant_type | string | authorization_code | Isso informa ao terminal do token que o aplicativo está usando o tipo de concessão Código de Autorização OAuth. |
redirect_uri | string | https://nomedoapp.org/auth/callback | URL de callback utilizada para o recebimento do token |
client_id | string | APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767 | ID do aplicativo do cliente |
client_secret | string | 52f9fc0d-daa5-4238-bg36-2rb63db54eeb | Conhecido e utilizado somente pelo aplicativo e o servidor de autorização |
code | string | def50200fb4b3a43e7647589... | Code enviado para a url de callback. Garante a autenticidade do cliente e controle de acesso ao token |
Exemplo: authorization_code
Isso informa ao terminal do token que o aplicativo está usando o tipo de concessão Código de Autorização OAuth.
Exemplo: https://nomedoapp.org/auth/callback
URL de callback utilizada para o recebimento do token
Exemplo: APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767
ID do aplicativo do cliente
Exemplo: 52f9fc0d-daa5-4238-bg36-2rb63db54eeb
Conhecido e utilizado somente pelo aplicativo e o servidor de autorização
Exemplo: def50200fb4b3a43e7647589...
Code enviado para a url de callback. Garante a autenticidade do cliente e controle de acesso ao token
Exemplo de requisição
{
"grant_type": "authorization_code",
"redirect_uri": "https://nomedoapp.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
Resposta{
"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
Nota: O access_token possui um prazo de validade de seis meses.
Atualizando o token.
Caso seu token tenha expirado, a atualização poderá ser feita mediante o access_token
e o refresh_token
, como demonstrado:
Header
Parameter | Type | Description |
---|---|---|
access_token | string | Token expirado |
Token expirado
Parâmetros do corpo
Parameter | Type | Exemplo | Description |
---|---|---|---|
grant_type | string | refresh_token | Isso informa ao terminal do token que o aplicativo está usando o tipo de concessão para atualização de um Token expirado. |
client_id | string | APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767 | ID do aplicativo do cliente |
client_secret | string | 52f9fc0d-daa5-4238-bg36-2rb63db54eeb | Conhecido e utilizado somente pelo aplicativo e o servidor de autorização |
refresh_token | string | def50200fb4b3a43e7647589... | Codigo de atualização para um token expirado |
Exemplo: refresh_token
Isso informa ao terminal do token que o aplicativo está usando o tipo de concessão para atualização de um Token expirado.
Exemplo: APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767
ID do aplicativo do cliente
Exemplo: 52f9fc0d-daa5-4238-bg36-2rb63db54eeb
Conhecido e utilizado somente pelo aplicativo e o servidor de autorização
Exemplo: def50200fb4b3a43e7647589...
Codigo de atualização para um token expirado
Exemplo de requisição
{
"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
Resposta{
"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
Nota: O Token atualizado tem um prazo de validade de 1 ano.
Cabeçalhos
Todas as requisições também devem incluir os seguintes headers:
- Content-Type: application/json
- Accept: application/json
- Authorization: Bearer xxxxxxx
Idioma
Por padrão, quando não for informado o Accept-Language
, todas as requisições serão respondidas em inglês. Para obter a resposta em um idioma preferido, no Header de sua requisição, informe:
- Accept-Language: en
- Accept-Language: pt-br
- Accept-Language: es
Requisições
Por padrão, todas as chamadas à API assumem que a requisição em questão está sendo feita diretamente na company principal. Isto é: a primeira company que um agente foi vinculado. Se a requisição está sendo feita a uma company secundária, ela deverá assumir o modelo de URI https://api.huggy.app/v3/companies/{companieId}/recurso...
Resposta
Algumas requisições bem-sucedidas podem ser respondidas com um status 200 ou 204 sem que um corpo retorne, como em requisições que utilizam os métodos POST e DELETE.
Paginação
O parâmetro de paginação está previsto para todos os endpoints que listam o conteúdo de um determinado recurso. Essa lista se limita a 20 resultados e os recursos remanescentes, se existirem, podem ser acessados com um parâmetro de consulta ?page=1
em uma requisição. Esta paginação começa em 0
(primeira página). Se a página solicitada não existir, uma lista vazia []
é retornada no corpo da resposta.
Respostas usuais do servidor:
- 200 OK - o pedido foi bem sucedido.
- 201 Created - o pedido foi bem sucedido e um recurso foi criado.
- 204 Modified - o pedido foi bem sucedido e um recurso foi modificado.
- 400 Bad Request - o pedido não pôde ser entendido ou faltavam os parâmetros necessários. Verifique o motivo na resposta do corpo.
- 401 Unauthorized - falha na autenticação ou o usuário não possui permissões para a operação solicitada. Verifique o token da API, ele pode estar errado.
- 403 Forbidden - o cliente não tem direitos de acesso ao conteúdo, portanto, o servidor é reservado a não dar mais respostas. Diferente do código 401, aqui a identidade do cliente é conhecida.
- 404 Not Found - o recurso não foi encontrado. Isso pode ser causado por um ID não existente.
- 423 Locked - O recurso sendo acessado está bloqueado, não sendo possível, no momento, nenhuma interação com ele.
- 501 Request Failed - pode ser causada por um método de solicitação incorreto.
Chats
GET/chats
Visualizar todos os chats
Este endpoint possui alguns parâmetros opcionais para obtermos os dados de um chat de acordo a sua situação. Para esse tipo de requisição, passe como parâmetro
na URL o atributo agent
, department
, customer
, situation
ou status
seguido da valor que deseja filtrar, como por exemplo:
Parameter | Type | Description |
---|---|---|
agent | integer | ID do agente |
department | integer | ID do departamento |
customer | integer | ID do cliente |
situation | string | Ver valores |
status | string | Ver valores |
ID do agente
ID do departamento
ID do cliente
Ver valores
Ver valores
Filtro de chats por canais
Os chats podem ser filtrados por canais através do parâmetro channel
.
Os Canais podem ser:
- telegram-bot
- messenger
200
Resposta[
{
"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}
Visualizar os detalhes de um chat
Obtém os dados detalhados de um chat
a partir de seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
200
Resposta {
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
GET/chats/{id}/messages
Visualizar as mensagens de um chat
Obtém a mensagem de um chat
específico a partir de seu ID
.
Essa requisição retornará as mensagens correspondentes a um chat. Portanto, ela poderá retornar uma ou mais mensagens.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
200
Resposta[
{
"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
- Utilizado para representar tipo de mensagem retornada no
payload
.
- Utilizado para representar tipo de mensagem retornada no
Valor | Description |
---|---|
text | Representa uma mensagem de Texto |
image | Representa um link para uma imagem |
audio | Representa uma mensagem de áudio |
video | Representa um link para um vídeo |
document | Representa um documento enviado pelo chat |
Representa um endereço de email | |
sms | Representa um sms |
internalEvent | Representa a ocorrência de um evento interno. Por exemplo: Agente Y definiu departamento X |
templateMessage | Representa uma mensagem template quando esta é enviada no chat |
Representa uma mensagem de Texto
Representa um link para uma imagem
Representa uma mensagem de áudio
Representa um link para um vídeo
Representa um documento enviado pelo chat
Representa um endereço de email
Representa um sms
Representa a ocorrência de um evento interno. Por exemplo: Agente Y definiu departamento X
Representa uma mensagem template quando esta é enviada no chat
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
GET/chats/{id}/tags
Visualizar todas as tags do chat
Obtém a lista de tags adicionadas a um chat.
Nota: Tags são utilizadas para sintetizar o contexto de um atendimento e assim, ser possível mapeá-lo.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
200
Resposta[
{
"id": "304430",
"name": "restrição"
},
{
"id": "304431",
"name": "bloqueio"
}
]
2
3
4
5
6
7
8
9
10
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
GET/chats/{id}/agents
Visualizar o ID de um agente
Obtém o Nome
e o ID
de um agente a partir do número ID
do chat.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
200
Resposta[
{
"name": "Carlos",
"id": 39704
}
]
2
3
4
5
6
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro.
}
2
3
GET/chats/{id}/contextVariables
Obter variáveis de contexto
Obtém as variáveis de contexto do chat.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
200
Resposta{
"id": 212592,
"customerId": 187702,
"contextVariables": {
"huggy.time_hello": "Olá",
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
POST/chats/{id}/messages
Adicionar nova mensagem em um chat
Adiciona um nova mensagem passando chave
e valor
no corpo de sua requisição. Para o envio de mensagem de tipo botão, veja as particularidades de cada canal.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
text | string | Mensagem enviada para o contato | |
options | array | Array contendo identificador e titulo da opção do botão | opcional |
file | string | URL enviada para o contato contendo um arquivo | opcional |
isInternal | boolean | Informa se a mensagem é interna | opcional |
Mensagem enviada para o contato
Array contendo identificador e titulo da opção do botão
URL enviada para o contato contendo um arquivo
Informa se a mensagem é interna
Exemplo de requisição
{
"text": "Olá, John!",
"file": "https://c.pzw.io/img/avatar-user-boy.jpg",
"isInternal": false
}
2
3
4
5
Tipos de arquivos permitidos
- image/jpg
- image/png
- image/gif
- image/bmp
- audio/mp4
- audio/mp3
- audio/wav
- application/pdf
- application/doc
- application/txt
200
Resposta{
"id": 270959650,
"text": "Olá, 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
Envio de botões
Particularidades dos canais
Channel | Buttons | Message sending | |
---|---|---|---|
Huggy WhatsApp | yes | Use Quick Reply em até 3 itens | Se for maior que 3 e até 10 use lista interativa | Se for maior que 10 use texto | |
Messenger | yes | Use Quick Reply em até 13 itens | Se for maior que 13 use texto | |
yes | Use Quick Reply em até 13 itens | Se for maior que 13 use texto | ||
TelegramBot | yes | Use Quick Reply em até 1000 itens |
Use `Quick Reply` em até 3 itens | Se for maior que 3 e até 10 use `lista interativa` | Se for maior que 10 use `texto`
Use `Quick Reply` em até 13 itens | Se for maior que 13 use `texto`
Use `Quick Reply` em até 13 itens | Se for maior que 13 use `texto`
Use `Quick Reply` em até 1000 itens
Nota: O envio de mensagens com botões está
indisponível
nos canais E-mail, VoIP e Chat interno.
Exemplo de requisição para o envio de botões
{
"text": "Qual opção deseja?",
"options": [
{
"id": 1,
"title": "opção 1"
},
{
"id": 2,
"title": "opção 2"
},
{
"id": 3,
"title": "opção 3"
}
],
"isInternal": false
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
201
Resposta{
"id": 1266041,
"text": "Qual opção deseja?\n \n1 - Opção 1\n2 - Opção 2\n3 - Opção 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
Envio de templates
Particularidades dos provedores
Provider | Template Type | Type Support |
---|---|---|
Huggy WhatsApp | Marketing | Autenticação | Serviço | Texto | Botão |
Outros provedores | Marketing | Serviço | Text |
Marketing | Autenticação | Serviço
Texto | Botão
Marketing | Serviço
Text
Nota: A rota com envio de templates usando botões terá suporte somente ao provedor Huggy WhatsApp. Demais provedores, continuarão o envio de template somente com texto.
Modelo de mensagem baseado em texto
Attribute | Type | Description |
---|---|---|
template_id | integer | Identificador do template criado na plataforma Huggy |
params | Object | Objeto contendo as variáveis adicionadas na criação da mensagem de template |
Identificador do template criado na plataforma Huggy
Exemplo de requisição
{
"hsm": {
"template_id": 675,
"params":
{
"1": "John Doe",
"2": "Huggy"
}
}
}
2
3
4
5
6
7
8
9
10
Nota: para o envio de mensagem de template, a Huggy utiliza um objeto
hsm
(High Structured Message), que possui os parâmetros de variáveis adicionadas na criação da mensagem de template.
Cabeçalhos para o envio de mensagens
Midia | Type | Property | Description |
---|---|---|---|
text | string | text | Contém um texto para a mensagem |
image | Object | link | Contém o link da imagem |
document | Object | link; filename | Contém um link para o arquivo e o nome (opcional) |
video | Object | link | Contém o link para o vídeo |
Exemplo de requisição com o envio de template e mídia
{
"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
Nota: além das variáveis de template, um objeto
header
é configurado contendo os parâmetros do cabeçalho, sendo eles: uma propriedadetype
, que identifica o tipo de mídia enviada e um objeto de mesmo nome com suas propriedades específicas. A quantidade de parâmetros informada na requisição, deve corresponder à quantidade informada na criação da mensagem de template.
Exemplo de requisição com envio de botões dinâmicos
{
"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
Nota: se você configurou uma mensagem de template com envio de botões dinâmicos, você precisou informar durante a criação da sua mensagem de template o tipo de URL como
dinâmica
, tal como informar o domínio da url do site, por exempo:https://www.huggy.io/
. Portanto, para enviar uma requisição via API com botão dinâmico, alternando entre a sessão de soluções da Huggy, informe auri
restante na propriedadetext
do seu objetobuttons
.
200
Resposta{
"id": 1300404,
"text": "Olá John Doe! Essa é o Flow, uma de nossas soluções mais poderosas",
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
POST/chats/{id}/transfer
Transferir um chat para outro agente
Transfere um chat para outro agente. A resposta esperada contém um customerID
e o chatID
que o agente foi transferido.
Nota: O agente, o qual receberá o chat transferido, visualizará a mensagem enviada na requisição, em seu painel de atendimento.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
agentId | integer | Identificador do agente | |
message | string | Mensagem enviada ao agente junto à transferência | opcional |
Identificador do agente
Mensagem enviada ao agente junto à transferência
Exemplo de requisição
{
"agentId": 39607,
"message": "Olá, segue o atendimento do nosso cliente Emanoel"
}
2
3
4
200
Resposta{
"customerId": "7356074",
"id": 17656128
}
2
3
4
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
POST/chats/{id}/flow
Executar flow
Execute um Flow a partir de um chat que não esteja finalizado ou que não seja do tipo interno. Caso o chat já possua um Flow em processamento, este será abortado e a execução do novo Flow será iniciada.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Exemplo: Identificador do chat
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
flowId | integer | Identificador do flow | |
variables | object | Objeto contendo as variáveis | opcional |
Exemplo: Identificador do flow
Exemplo: Objeto contendo as variáveis
opcional
Exemplo de requisição
{
"flowId" : 142714,
"variables": {
"data": "15/10/2019",
"url_event": "https://huggy.io"
}
}
2
3
4
5
6
7
200
RespostaRequisição bem sucedida com o corpo vazio
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro"
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca"
}
2
3
PUT/chats/{id}/agent
Adicionar um agente
Adiciona um agente ao chat.
Nota: Um
agente
convidado não pode adicionar outros agentes. Se essa requisição for solicitada, um status400
será retornado.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
agentId | integer | Identificador do agente |
Identificador do agente
{
"agentId": 39607
}
2
3
200
RespostaRequisição bem sucedida com o corpo vazio
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
PUT/chats/{id}/read
Marcar mensagem como lida
Marca leitura na mensagem do chat
informado. Um ID
será requerido para isso.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
200
RespostaRequisição bem sucedida com o corpo vazio
403
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro"
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca"
}
2
3
PUT/chats/{id}/tabulation
Essa ação permite atualizar a tabulação de um chat.
Para isso, informe o ID
da tabulação no corpo da requisição.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
tabulationId | integer | Identificador da tabulação |
Identificador da tabulação
Exemplo de requisição
{
"tabulationId" : 9740
}
2
3
200
RespostaRequisição bem sucedida com o corpo vazio
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
PUT/chats/{id}/tags
Atualizar tags do chat
Esta ação permite realizar alterações nas tags
de um chat
específico, atualizando-as, modificando seu valor original.
Para isso, informe no parâmetro da requisição o ID
do chat e no corpo da requisição os valores das tags.
Nota: Cada valor será passado para a chave tags como uma
array
contendo o nome de cada uma das tags separados por vírgula. O número de tags que se deseja alterar pode ser superior ao número de tags existentes para ochat
em questão. Neste caso, uma ou mais tags aparecerão vinculadas ao chat em questão. Isso é possível porque a alteração é feita em um array que poderá ter seus indices atualizados ou novos adicionados, caso seja passado uma quantidade de tags superior ao existente.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
tags | string | String contendo tags de marcação para o chat |
String contendo tags de marcação para o chat
Exemplo de requisição
{
"tags": "tag4, tag5, tag6"
}
2
3
200
RespostaRequisição bem sucedida com o corpo vazio
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
PUT/chats/{id}/queue
Mover para a fila
Move um chat
para a fila.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
200
RespostaRequisição bem sucedida com o corpo vazio
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
PUT/chats/{id}/department
Atribuir um departamento ao chat
Atribui um departamento a um chat
. Para isso, informe o ID
de um chat válido e informe no corpo da requisição o número do departamento que será atribuído.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
department | integer | Número do departamento que se deseja atribuir ao chat |
Número do departamento que se deseja atribuir ao chat
200
RespostaRequisição bem sucedida com o corpo vazio
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
PUT/chats/{id}/close
Fechar um chat
Fecha um chat, passando seu ID
como parâmetro na requisição.
Nota: Opcionalmente você poderá fechar um chat utilizando uma tabulação e/ou uma mensagem de agradecimento, enviando estes parâmetros no corpo da requisição. O parâmetro
sendFeedback
quando definido comotrue
, habilita o envio de uma mensagem de agradecimento após a finalização do chat, caso essa mensagem esteja configurada no painel Huggy.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
tabulation | integer | Número da tabulação | opcional |
comment | string | Comentário a ser enviado | opcional |
sendFeedback | boolean | Mensagem de agradecimento | opcional |
Número da tabulação
Comentário a ser enviado
Mensagem de agradecimento
Exemplo de requisição
{
"tabulation": "12484",
"comment": "comentário através da API",
"sendFeedback": true
}
2
3
4
5
200
RespostaRequisição bem sucedida com o corpo vazio
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
PUT/chats/{id}/reopen
Reabrir um chat
Faz a reabertura de um chat, passando seu ID
como parâmetro na requisição.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
200
RespostaRequisição bem sucedida com o corpo vazio
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
PUT/chats/{id}/workflow
Atualizar a etapa do Workflow do chat
Atualiza a etapa de um Workflow de um chat.
Para isso, passe o ID
da etapa do Workflow no corpo da requisição.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
stepId | integer | Identificador da etapa do Workflow |
Identificador da etapa do Workflow
Exemplo de requisição
{
"stepId": 4760
}
2
3
200
RespostaRequisição bem sucedida com o corpo vazio
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
PUT/chats/{id}/assignToMe
Atribui o chat ao agente
Atribui o chat ao agente da company
Nota: O payload de resposta dessa requisição retornará a lista de mensagens presentes nesse atendimento.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
200
Resposta{
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
DELETE/chats/{id}
Excluir um chat
Exclui um chat a partir do seu ID
.
Nota: Somente um Administrador possui permissão para excluir um chat. Um chat só poderá ser excluído quando estiver com o status finalizado.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do chat |
Identificador do chat
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
Agentes
GET/agents
Visualizar todos os agentes
Obtém informações de todos os agentes cadastrados.
Nota: Este recurso possui um parâmetro opcional que retorna todos os registros encontrados, isto é: o total de registros em uma ou mais páginas.
Parameter | Type | Description |
---|---|---|
allPages | boolean | Parâmetro que retornará todos os registros se seu valor for verdadeiro |
Parâmetro que retornará todos os registros se seu valor for verdadeiro
200
Resposta[
{
"id": 39708,
"name": "Kivya",
"email": "teste@teste.com",
"photo_url": null,
"phone": "5575999999999"
},
{
"id": 39704,
"name": "Carlos",
"email": "teste@teste.com",
"photo_url": null,
"phone": "5575999999999"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
GET/agents/profile
Visualizar o perfil do agente
Obtém os dados do perfil do agente logado na plataforma Huggy.
Nota: O perfil a ser exibido, corresponde ao do
token
do usuário logado na plataforma.
200
Resposta{
"id": 39704,
"roleID": "3",
"companyID": "15333",
"name": "Carlos",
"email": "teste@teste.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}
Visualizar dados de um agente
Obtém os dados de um agente específico. O ID
do agente é requerido no parâmetro da requisição.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do agente |
Identificador do agente
200
Resposta{
"id": "39708",
"name": "kivya",
"login": "kivya@teste.com",
"status": false,
"companyID": "15333",
"photoLink": null,
"gender": "0",
"birthDate": null,
"email": "teste@teste.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": "Administrador",
"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": "Convidado"
}
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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
GET/agents/{id}/status
Visualizar o status do agente
Obtém o status de um agent a partir de seu ID
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do agente |
Identificador do agente
200
Resposta{
"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
Resposta{
"reason": "This message will show that doesn't exist result for your search."
}
2
3
POST/agents
Convidar um novo agente
Para convidar um novo agente, existem três atributos obrigatórios que devem ser passados no corpo da requisição, são eles: email, maxChats e type. Um agente é definido pelo seu perfil de acesso, sendo este representado pela atributo type que recebe um valor numérico, onde:
Nota: Um novo agente só será exibido no painel Huggy após aceitar o convite enviado por email.
Definição | Type | Chave | Valor |
---|---|---|---|
Agent | integer | Type | 1 |
Gerente | integer | Type | 2 |
Administrador | integer | Type | 3 |
Type
1
Type
2
Type
3
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
string | Endereço de e-mail do agente | ||
maxChats | integer | Quantidade máxima de chats definida para o novo agente | |
type | integer | Identificador do perfil de acesso do agente |
Endereço de e-mail do agente
Quantidade máxima de chats definida para o novo agente
Identificador do perfil de acesso do agente
Exemplo de requisição
{
"email": "charles@test.com",
"maxChats": 50,
"type": 1
}
2
3
4
5
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
500
Resposta{
"reason": "Agente já conectado"
}
2
3
PUT/agents/status
Atualizar o status do agente
Por padrão, um agente possui três opções de status, tornando ele Disponível, Indisponível ou Pausado.
Para atualizar o status de um agente, uma propriedade id
deve ser passada no corpo da requisição com um valor numérico que torne o agente Disponível 0
, Indisponível -1
ou Pausado -2
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do agente |
Identificador do agente
Parâmetros do corpo
Parameter | Type | Exemplo | Description |
---|---|---|---|
id | integer | 0 | -1 | -2 | Determina o status do agente |
Exemplo: 0 | -1 | -2
Determina o status do agente
Exemplo de requisição
"id": 0
200
Resposta{
"statusId": null,
"available": true,
"type": 1
}
2
3
4
5
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
PUT/agents/{id}
Atualizar um agente
Atualiza as informações de um agente. Algumas informações são obrigatórias, tais como: name e login ou name e email.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do agente |
Identificador do agente
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
name | string | Nome do Agente |
login | string | Endereço de e-mail do agente |
phone | string | Número de telefone do agente |
Nome do Agente
Endereço de e-mail do agente
Número de telefone do agente
Exemplo de requisição
{
"name": "John Doe",
"login": "teste2@doe.com",
"phone": 557599999999
}
2
3
4
5
200
RespostaRequisição bem sucedida com o corpo vazio
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
Contatos
GET/contacts
Visualizar todos os contatos
Obtém os dados de todos os contatos cadastrados.
Parâmetros opcionais podem ser utilizados nesta requisição, tais como:
Parameter | Type | Description |
---|---|---|
string | Email do contato | |
phone | string | Telefone do contato |
Email do contato
Telefone do contato
200
Resposta[
{
"id": "7662964",
"whatsappID": "5560493",
"name": "Charles",
"companyID": "15333",
"email": "teste@teste.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 teste@teste.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": "teste@teste.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 teste@teste.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}
Visualizar um contato
Obtém os dados de um contato específico a partir de seu ID.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do contato |
Identificador do contato
200
Resposta{
"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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
GET/contacts/{id}/timeline
Visualizar a timeline de um contato
Obtém os dados da timeline de um contato a partir do seu ID
. Os dados da timeline são dados da criação do contato e de todos os eventos associados a ele a partir daí.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do contato |
Identificador do contato
200
Resposta[
{
"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": "Um atendimento foi iniciado pelo cliente no canal E-mail.",
"title": "Chat iniciado",
"time": "07/07/2019 09:12:28",
"photo": "https://c.pzw.io/img/avatar-user-boy.jpg",
"name": "Salomão",
"type": "chat.created",
"channel": "email",
"department": null,
"duration": null,
"situation": "in_chat",
"chatID": "19378164",
"deleted": false
},
{
"icon": "user",
"text": "O contato Salomão foi criado",
"title": "Contato criado",
"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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
GET/contacts/{id}/groups
Visualizar o grupo do contato
Obtém os dados do grupo ao qual o contato pertence.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do contato |
Identificador do contato
200
Resposta[
{
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
GET/contacts/{id}/organizations
Visualizar a organização do contato
Obtém os dados da organização a qual o contato pertence.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do contato |
Identificador do contato
200
Resposta[
{
"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": "Tecnologia",
"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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
GET/contacts/{id}/customFields
Visualizar um campo personalizado
Obtém os dados de um campo personalizado criado previamente para a utilização de informações adicionais no cadastro do contato.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do contato |
Identificador do contato
200
Resposta[
{
"id": "487",
"companyID": "12025",
"name": "email alternativo",
"description": "segunda opção de 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": "email_alternativo_customer",
"inputType": "input",
"value": "alternativetest@test.com"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
GET/contacts/{id}/linkedContacts
Visualizar associação de contatos
Obtém os dados do contato associado. A associação define que um contato pode ser considerado contato principal de outro contato.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do contato |
Identificador do contato
200
Resposta[
{
"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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
POST/contacts
Criar contato
Para criar um novo contato, name
e email
serão requeridos
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
name | string | Nome do contato |
string | E-mail do contato |
Nome do contato
E-mail do contato
Exemplo de requisição
{
"name": "Charles Edware",
"email": "teste3@teste.com"
}
2
3
4
201
Resposta{
"id": "7663175",
"whatsappID": null,
"name": "Edward",
"companyID": "15333",
"email": "teste@teste.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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
POST/contacts/{id}/chats
Criar um chat a partir do ID de um contato.
Cria um chat a partir do ID
do contato passando o uuid
do canal desejado.
Nota: Caso o chat seja criado a partir do canal
subject
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do contato |
Identificador do contato
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
channelUuid | string | UUID do canal onde será criado o atendimento | |
subject | string | Assunto do e-mail | opcional |
UUID do canal onde será criado o atendimento
Assunto do e-mail
Exemplo de requisição
{
"channelUuid": "28b407cd-81a4-3abf-94d6-ca4f948d5d2f",
"subject": "Férias"
}
2
3
4
201
Resposta{
"id": 214049,
"agentId": 40419,
"secondAgentId": null,
"contactId": 671,
"departmentId": null,
"tabulationId": null,
"chatTabulation": null,
"lastMessage": {
"text": "Agente Igor entrou no atendimento.",
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
POST/timeline/createComment/{id}
Criar comentário na linha do tempo
Cria um comentário na linha do tempo do contato a partir de seu ID
. Comentários contribuem para relatar atividades com o cliente, construindo assim um histórico de seus atendimentos.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do contato |
Identificador do contato
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
comment | string | Comentário que ficará registrado no painel do contato |
Comentário que ficará registrado no painel do contato
Exemplo de requisição
{
"comment": "Aguardando documentos"
}
2
3
201
Resposta{
"id": 7740752,
"icon": "comment",
"text": "Aguardando documentos",
"title": "Comentário",
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
PUT/contacts/{id}
Atualizar um contato
Atualiza um contato a partir do seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do contato |
Identificador do contato
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
name | string | Nome do contato | |
string | Endereço de e-mail do contato | ||
phone | string | Telefone do contato | |
mobile | string | Celular do contato | |
address | string | Endereço do contato | opcional |
city | string | Cidade do contato | opcional |
district | string | Bairro do contato | opcional |
state | string | Estado do contato | opcional |
obs | string | Comentário feito sobre o contato | opcional |
Nome do contato
Endereço de e-mail do contato
Telefone do contato
Celular do contato
Endereço do contato
Cidade do contato
Bairro do contato
Estado do contato
Comentário feito sobre o contato
Exemplo de requisição
{
"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": "Esse é um campo para comentários sobre o contato"
}
2
3
4
5
6
7
8
9
10
11
200
Resposta{
"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": "Esse é um campo para comentários sobre o contato",
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
PUT contacts/{contactId}/execFlow
Executar um Flow para um contato
Inicializa a execução de um Flow
para um contato específico.
Canais que podem utilizar este recurso:
Email
Messenger
TelegramBot
Whatsapp
Para especificar o canal que será utilizado para executar o Flow
, é necessário o envio do uuid
, que corresponde ao identificador universal do canal.
O valor do uuid
pode ser obtido no painel Huggy em "configurações" >>
"canais" >>
"canal desejado" >>
detalhamento do canal.
Além do uuid
, existem mais 4 atributos que podem ser informados durante a requisição:
variables
( object )
Corresponde aos campos que podem ser utilizados durante a execução do Flow.
"variables": {
"data": "15/10/2019",
"url_event": "https://huggy.io"
}
2
3
4
Exemplo de funcionamento
Na declaração de variables acima, existem dois termos que podem ser utilizados durante
a execução do Flow: data
e url_event
. Para que esses dois termos sejam utilizados é necessário informá-los em alguma parte das ações do Flow, por exemplo, na ação de enviar mensagem.
Ao enviar uma mensagem com o seguinte texto:
"Olá, boa tarde. O evento será no dia {{data
}}. Segue o link de acesso {{url_event
}}".
O sistema irá substituir os termos data
e url_event
pelos valores informados na declaração das variáveis, ficando da seguinte maneira:
"Olá, boa tarde. O evento será no dia 15/10/2019
. Segue o link de acesso https://huggy.io
".
Nota: default { }
whenInChat
( true | false )
Se o chat estiver em atendimento com o agente, as seguintes condições serão levadas em consideração:
true
: Executa o Flow e remove o agente da conversa (o chat volta para o status automático).false
: Não executa o Flow.
Nota: default false
`whenWaitForChat` ( true | false )
Se o chat estiver na fila, são levadas em consideração as seguintes condições:
true
: Não executa o Flow.false
: Chat volta para o status automático.
Nota: default false
`whenInAuto` ( true | false )
Se estiver em automático e/ou possuir outro Flow em processamento, serão levadas em consideração as seguintes condições:
true
: Abortar o Flow atual e iniciar a execução do Flow informado.false
: Não faz nada.
Nota: default false
Observações:
Para o funcionamento deste recurso nos canais Messenger e TelegramBot o contato informado precisa ter vínculo com a empresa, ou seja, é necessário que o contato já tenha feito algum atendimento com a empresa pelos canais citados
Para o canal whatsapp, é possivél executar o Flow sem que tenha existido um atendimento anterior. No entanto, o número do telefone do contato precisa estar válido: Código de área do país (55-Brasil) + código de área do estado (DDD) + o número do telefone. Ex. 5511988886666.
Caso algum dos quatros atributos explicados acima não seja informado na requisição, o sistema pegará o valor default de cada um.
Se não houver um chat aberto com o contato, será criado um novo chat.
Parameter | Type | Description |
---|---|---|
contactId | integer | Identificador do contato |
Exemplo: Identificador do contato
Exemplo de requisição
{
"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
Resposta{
"reason": "Flow processed",
"chatID": 19291350
}
2
3
4
200
Resposta{
"reason": "Flow processed and agent removed from chat",
"chatID": 19291350
}
2
3
4
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro"
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca"
}
2
3
DELETE/contacts/{id}
Excluir um contato
Exclui um contato a partir do seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do contato |
Identificador do contato
204
RespostaRequisição bem sucedida com o corpo vazio
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
Custom Fields
GET/customFields
Visualizar todos os campos personalizados
Obtém a lista de todos os campos personalizados. Campos personalizados são utilizados para inserir informações adicionais em um contato.
200
Resposta[
{
"id": "906",
"companyID": "12043",
"name": "segunda opção de email",
"description": "segunda opção de email",
"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": "segunda_opcao_de_email_customer",
"inputType": "input"
},
{
"id": "907",
"companyID": "12043",
"name": "último endereço",
"description": "último endereço",
"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": "ultimo_endereco_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
Departamentos
GET/departments
Visualizar todos os departamentos
Obtém a lista de todos os departamentos criados na empresa.
Nota: Este recurso possui um parâmetro opcional que retorna todos os registros encontrados.
Parameter | Type | Description | |
---|---|---|---|
allPages | boolean | Parâmetro que retornará todos os registros se seu valor for verdadeiro | opcional |
Parâmetro que retornará todos os registros se seu valor for verdadeiro
200
Resposta[
{
"id": 25954,
"name": "1 - Financeiro",
"parentId": null
},
{
"id": 25955,
"name": "2 - Almoxarifado",
"parentId": null
},
{
"id": 25956,
"name": "3 - Vendas",
"parentId": null
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
GET/departments/parents
Visualizar todos os departamentos pai
Obtém a lista de todos os departamentos Pai
. Departamentos pai são departamentos que possuem sub-departamentos.
200
Resposta[
{
"id": 25954,
"name": "1 - Financeiro"
},
{
"id": 25955,
"name": "2 - Almoxarifado"
}
]
2
3
4
5
6
7
8
9
10
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
GET/departments/{id}
Visualizar um departamento
Obtém as informações do departamento cadastrado, a partir do ID
do departamento.
Nota: Para obter o
ID
de todos os departamentos cadastrados, por favor, Clique Aqui!
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do departamento |
Identificador do departamento
200
Resposta{
"id": 30326,
"name": "Financeiro",
"companyID": 15691,
"active": true,
"color": "#000000",
"order": 1,
"parentID": null
}
2
3
4
5
6
7
8
9
Tabulações
GET/tabulations
Visualizar todas as tabulações
Obtém a lista de todas as tabulações criadas para melhor identificar o contexto de um chat.
Nota: Este recurso possui um parâmetro opcional que retorna todos os registros encontrados.
Parameter | Type | Description |
---|---|---|
allPages | boolean | Parâmetro que retornará todos os registros se seu valor for verdadeiro |
Parâmetro que retornará todos os registros se seu valor for verdadeiro
200
Resposta[
{
"id": 12055,
"name": "Trocas"
},
{
"id": 12054,
"name": "Prazo de Entrega"
},
{
"id": 12053,
"name": "Dúvidas"
}
]
2
3
4
5
6
7
8
9
10
11
12
13
14
GET/tabulations/{id}
Visualizar uma tabulação
Obtém os dados de uma tabulação a partir do seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador da tabulação |
Identificador da tabulação
200
Resposta{
"id": "12054",
"companyID": "12043",
"name": "Prazo de Entrega",
"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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
Telegram Bot
GET/telegramBot
Visualizar todos os telegram bots
Obtém a lista de todos os telegram bots cadastrados na plataforma Huggy.
200
Resposta[
{
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
GET/telegramBot/{id}
Visualizar um telegram bot
Obtém os dados de um telegram bot a partir de seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do telegram bot |
Identificador do telegram bot
200
Resposta{
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
POST/telegramBot
Cadastrar um telegram bot
Cadastrar um novo telegram bot na plataforma Huggy a partir do token.
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
token | string | Token do telegram bot |
Token do telegram bot
Exemplo de requisição
{
"token": "3400010986:ACGLDsVx5MKO_06Jw08wgPerpI0ac3bODdM"
}
2
3
201
Resposta{
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
PUT/telegramBot/{id}
Atualiza um telegram bot
Atualiza o nome, flows de entrada e saída de um telegram bot a partir do seu ID
.
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
name | string | Apelido do bot |
flowInID | integer | Identificador do flow de entrada |
flowOutID | integer | Identificador do flow de saída |
Apelido do bot
Identificador do flow de entrada
Identificador do flow de saída
Exemplo de requisição
{
"name": "John Doe",
"flowInID": "2",
"flowOutID": "3"
}
2
3
4
5
200
Resposta{
"id": "29",
"name": "John Doe",
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
DELETE/telegramBot/{id}
Deletar um telegram bot
Exclui um telegram bot a partir de seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do telegram bot |
Identificador do telegram bot
204
RespostaRequisição bem sucedida com o corpo vazio
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
Atalhos
GET/shortcuts
Visualizar todos os atalhos
Obtém a lista de todos atalhos utilizados na plataforma Huggy. Atalhos são utilizados para o envio de textos pré-definidos, fotos, imagens e outros arquivos.
200
Resposta[
{
"id": "17229",
"name": "Mensagem de boas vindas",
"key": "bvvendas",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "Olá! Seja bem vindo ao departamento vendas!",
"public": true
},
{
"id": "17228",
"name": "Mensagem de boas vindas",
"key": "bvalmoxarifado",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "Olá! Seja bem vindo ao departamento Almoxarifado!",
"public": false
},
{
"id": "17227",
"name": "Mensagem de boas vindas",
"key": "bvfinanceiro",
"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}
Visualizar um atalho
Obtém os dados de um atalho a partir de seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do atalho |
Identificador do atalho
200
Resposta{
"id": "17229",
"name": "Mensagem de boas vindas",
"key": "bvvendas",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "Olá! Seja bem vindo ao departamento vendas!",
"public": true
}
2
3
4
5
6
7
8
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
POST/shortcuts
Criar um novo atalho
Cria um novo atalho para o envio de textos, imagens e arquivos.
Nota: Para o envio de mensagens de texto, são reservados um limite de mil caracteres.
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
name | string | Nome do atalho | |
key | string | Palavra chave utilizada para chamar o atalho | |
file | string | Link do arquivo usado no envio do atalho | |
text | string | Uma mensagem de texto usada no envio do atalho | opcional |
public | boolean | Torna o atalho visível na tela de atendimentos ou na lista de atalhos | opcional |
Nome do atalho
Palavra chave utilizada para chamar o atalho
Link do arquivo usado no envio do atalho
Uma mensagem de texto usada no envio do atalho
Torna o atalho visível na tela de atendimentos ou na lista de atalhos
Exemplo de requisição
{
"name": "Documento de inscrição",
"key": "docs_inscricao",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "Uma mensagem que acompanha o documento enviado.",
"public": true
}
2
3
4
5
6
7
201
Resposta{
"id": 34009,
"name": "Documento de inscrição",
"key": "docs_inscricao",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "Uma mensagem que acompanha o documento enviado.",
"public": true
}
2
3
4
5
6
7
8
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
PUT/shortcuts/{id}
Atualizar um atalho
Atualiza um atalho por meio de seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do atalho |
Identificador do atalho
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
name | string | Nome do atalho | |
key | string | Palavra chave utilizada para chamar o atalho | |
file | string | Link contendo arquivo usado no envio do atalho | |
text | string | Uma mensagem de texto usada no envio do atalho | opcional |
public | boolean | Torna o atalho visível na tela de atendimentos ou na lista de atalhos | opcional |
Nome do atalho
Palavra chave utilizada para chamar o atalho
Link contendo arquivo usado no envio do atalho
Uma mensagem de texto usada no envio do atalho
Torna o atalho visível na tela de atendimentos ou na lista de atalhos
Exemplo de requisição
{
"name": "Novo nome para o atalho",
"key": "nova_chave",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "Uma mensagem atualizada para o atalho.",
"public": false
}
2
3
4
5
6
7
200
Resposta{
"id": 34003,
"name": "Novo nome para o atalho",
"key": "nova_chave",
"file": "https://cdn.pzw.io/2d1eb9940d3ef692dfc607bb26c4d85b.png",
"text": "Uma mensagem atualizada para o atalho.",
"public": false
}
2
3
4
5
6
7
8
400
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
DELETE/shortcuts/{id}
Deletar um atalho
Exclui um atalho a partir de seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do atalho |
Identificador do atalho
204
RespostaRequisição bem sucedida com o corpo vazio
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
Status
GET/status
Visualizar todos os status
Obtém a lista dos status criados pelos agentes. O status de um agente corresponde a uma condição em que ele se encontra, podendo ele estar Disponível ou Indisponível.
200
Resposta[
{
"id": "1691",
"name": "Ausente",
"message": "Olá! Logo estarei de volta.",
"type": "0",
"createdAt": "2019-06-13 11:59:56",
"updatedAt": "2019-06-13 12:00:16",
"agentID": "34976",
"available": false
},
{
"id": "1690",
"name": "Horário de Almoço",
"message": "Olá! Nosso horário de almoço é de 12h às 13h.",
"type": "0",
"createdAt": "2019-06-13 11:58:35",
"updatedAt": "2019-06-13 12:00:06",
"agentID": "34976",
"available": false
},
{
"id": "1689",
"name": "Reunião",
"message": "Olá! Estamos em reunião. Logo retornaremos.",
"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
Visualizar todos os workflows
Obtém a lista de todos os workflows
juntamente com suas respectivas etapas. Workflows são fluxos de trabalho que podem ser criados para dirigir as etapas dos atendimentos
200
Resposta[
{
"id": "5656",
"companyID": "12043",
"name": "Ciclo de Entrega",
"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": "Preparo de Material",
"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": "Coleta de Material",
"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": "Envio ao Destinatário",
"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 Entregue",
"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": "ciclo de validação de vendas",
"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": "Solicitação Aberta",
"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": "Solicitação Atendida",
"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": "Solicitação Negada",
"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}
Visualizar um workflow
Obtém os dados de um workflow a partir de seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do workflow |
Identificador do workflow
200
Resposta{
"id": "5656",
"companyID": "12043",
"name": "Ciclo de Entrega",
"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": "Preparo de Material",
"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": "Coleta de Material",
"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": "Envio ao Destinatário",
"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 Entregue",
"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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
Bots
GET/bots
Visualizar todos os bots
Obtém a lista de todos os bots
criados na plataforma Huggy.
200
Resposta[
{
"id": 2926,
"name": "HuggyBot"
},
{
"id": 2925,
"name": "HuggyGirl"
}
]
2
3
4
5
6
7
8
9
10
GET/bots/{id}
Visualizar um bot
Obtém os dados detalhados de um bot a partir de seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do bot |
Identificador do bot
200
Resposta{
"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": "carlos@teste.com",
"birthday": "2019-06-17",
"transferMessage": "Você será transferido para um outro atendente.",
"welcomeMessage": "Olá, Seja bem vindo a Huggy.",
"maxErrors": "100",
"engineID": "3",
"apiAiLang": "pt-BR",
"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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
Virtual Agents
GET/virtualAgents
Visualizar todos os agentes virtuais
Obtém a lista de todos os agentes virtuais cadastrados na plataforma Huggy.
200
Resposta[
{
"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}
Visualizar um agente virtual
Obtém os dados de um agente virtual a partir do seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do agente virtual |
Identificador do agente virtual
200
Resposta{
"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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
Projects
GET/projects
Visualizar todos os projetos
Obtém a lista de todos os projetos criados na plataforma Huggy.
Nota: Além dos projetos e seus respectivos flows, essa ação retornará as variáveis de contexto padrão do sistema.
200
Resposta[
{
"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}
Visualizar um projeto
Obtém os dados de um projeto a partir de seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do projeto |
Identificador do projeto
200
Resposta{
"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
Criar um projeto
Cria um projeto passando no corpo da requisição o atributo name
e seu valor desejado.
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
name | string | Nome do projeto que será criado |
Nome do projeto que será criado
Exemplo de requisição
{
"name": "Eletrônicos"
}
2
3
200
Resposta{
"project": {
"id": "487742",
"companyID": "15691",
"name": "Eletrônicos",
"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}
Atualizar o nome do projeto
Atualiza o nome do projeto passando no corpo da requisição o atributo name
e seu valor desejado.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do projeto |
Identificador do projeto
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
name | string | Novo nome para o projeto |
Novo nome para o projeto
Exemplo de requisição
{
"name": "Eletrônicos"
}
2
3
200
Resposta{
"project": {
"id": "487704",
"companyID": "15691",
"name": "Visitantes",
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
DELETE/projects/{id}
Excluir um projeto
Exclui um projeto a partir do seu ID
.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do projeto |
Identificador do projeto
204
Resposta{
"status": true
}
2
3
404
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
GET/projects/{id}/flows
Visualizar todos os flows de um projeto
Obtém a lista de todos os flows de um projeto juntamente com suas ações configuradas.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do projeto |
Identificador do projeto
200
Resposta[
{
"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}
Visualizar um Flow
Obtém os dados de um Flow automatizado a partir do ID
do Flow.
Parameter | Type | Description | |
---|---|---|---|
projectId | integer | Identificador do projeto | opcional |
flowId | integer | Identificador do Flow |
Identificador do projeto
Identificador do Flow
200
Resposta{
"id": "30124",
"token": "dfd5a68d-31d4-4261-b659-e5b4c9b26a53",
"description": "Boas Vindas",
"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! Seja bem vindo ao nosso site.\\n\",\"Gostaria de falar com um de nossos atendentes?\\n\",\"Ol\\u00e1! Seja bem vindo ao nosso site.\"],\"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": [
"Olá! Seja bem vindo ao nosso site.\n",
"Gostaria de falar com um de nossos atendentes?\n",
"Olá! Seja bem vindo ao nosso site."
],
"type": {
"type": "0"
},
"typing": false,
"index": 1
}
},
{
"id": "101123",
"type": "huggy.action.send.message",
"value": "{\"content\":[\"Gostaria de falar com um de nossos atendentes?\"],\"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": [
"Gostaria de falar com um de nossos atendentes?"
],
"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": "carlos@teste.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": "Administrador",
"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
116
POST/projects/{id}/flows
Criar um Flow
Passe no parâmetro de consulta o ID
do projeto e o atributo no corpo da solicitação para que o Flow seja criado.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador do projeto |
Identificador do projeto
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
description | string | Descrição do Flow que será criado |
Descrição do Flow que será criado
Exemplo de requisição
{
"description": "Rastreamento"
}
2
3
200
Resposta{
"id": "30358",
"token": "63cb5ca6-9069-4144-a241-4df582af3b6e",
"description": "Rastreamento",
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
PUT/projects/{projectId}/flows/{flowId}
Atualizar um Flow
Atualiza a descrição de um Flow.
Parameter | Type | Description |
---|---|---|
projectId | integer | Identificador do projeto |
flowId | integer | Identificador do Flow |
Identificador do projeto
Identificador do Flow
Parâmetros do corpo
Parameter | Type | Description | |
---|---|---|---|
description | string | Nova descrição do Flow |
Nova descrição do Flow
Exemplo de requisição
{
"description": "New description"
}
2
3
200
Resposta{
"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
Resposta{
"reason": "Esta mensagem informará o que ocasionou o erro."
}
2
3
DELETE/projects/{projectsId}/flows/{flowId}
Excluir um Flow
Exclui um Flow a partir do seu ID
Nota: Não é possível excluir um
Flow
que esteja em uso.
Parameter | Type | Description |
---|---|---|
projectId | integer | Identificador do projeto |
flowId | integer | Identificador do Flow |
Identificador do projeto
Identificador do Flow
204
Resposta{
Requisição bem sucedida com o corpo vazio
}
2
3
400
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
Organizations
GET/organizations
Visualizar todas as organizações
Obtém a lista de todas as organizações cadastradas na plataforma Huggy.
200
Resposta[
{
"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": "Distribuidora de Calçados",
"observation": null,
"domains": "hankmark.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": "Atendimento Digital",
"observation": null,
"domains": "huggy.io",
"phone": "75999999999",
"photo": null,
"nameEmoji": "Huggy",
"customFields": []
},
{
"id": "19705",
"name": "Mercante",
"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": "Distribuidora de Alimentos",
"observation": null,
"domains": "testmercante.com",
"phone": "75999999999",
"photo": null,
"nameEmoji": "Mercante",
"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
Criar uma nova organização
Cria uma nova organização na plataforma Huggy. Passe no corpo requisição o atributo name
com o nome desejado.
Parâmetros do corpo
Parameter | Type | Description |
---|---|---|
name | string | Nome da organização |
Nome da organização
Exemplo de requisição
{
"name": "Huggy"
}
2
3
200
Resposta{
"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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
PUT/organizations/{Id}
Atualizar uma organização
Atualiza o nome da organização.
Parameter | Type | Description |
---|---|---|
id | integer | Identificador da organização |
Identificador da organização
Parâmetro do corpo
Parameter | Type | Description |
---|---|---|
name | string | Novo nome da organização |
Novo nome da organização
Exemplo de requisição
{
"name": "Huggy"
}
2
3
200
Resposta{
"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
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
DELETE/organizations/{Id}
Excluir uma organização
Exclui uma organização a partir de seu ID
Parameter | Type | Description |
---|---|---|
id | integer | Identificador da organização |
Identificador da organização
204
RespostaRequisição bem sucedida com o corpo vazio
404
Resposta{
"reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
2
3
4
Companies
GET/companies
Visualizar todas as companies
Obtém a lista de todas as companies de um agente.
Nota: O Token de acesso à API pertence ao agente. Portanto, as companies listadas neste endpoint corresponderá às companies do proprietário do Token.
200
Resposta[
{
"id": 15691,
"name": "Huggy"
},
{
"id": 15693,
"name": "Hank"
}
]
2
3
4
5
6
7
8
9
10