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 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

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.

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.

Autenticação OAuth 2.0

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
1

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 o refresh_token, conforme o modelo a seguir:
POST https://auth.huggy.app/oauth/access_token

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

ParameterTypeExemploDescription
grant_typestringauthorization_codeIsso informa ao terminal do token que o aplicativo está usando o tipo de concessão Código de Autorização OAuth.
redirect_uristringhttps://nomedoapp.org/auth/callbackURL de callback utilizada para o recebimento do token
client_idstringAPP-bafb4727-c1fe-47af-8cd7-9f43c1a87767ID do aplicativo do cliente
client_secretstring52f9fc0d-daa5-4238-bg36-2rb63db54eebConhecido e utilizado somente pelo aplicativo e o servidor de autorização
codestringdef50200fb4b3a43e7647589...Code enviado para a url de callback. Garante a autenticidade do cliente e controle de acesso ao token
grant_type
string

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.


redirect_uri
string

Exemplo: https://nomedoapp.org/auth/callback

URL de callback utilizada para o recebimento do token


client_id
string

Exemplo: APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767

ID do aplicativo do cliente


client_secret
string

Exemplo: 52f9fc0d-daa5-4238-bg36-2rb63db54eeb

Conhecido e utilizado somente pelo aplicativo e o servidor de autorização


code
string

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"
}
1
2
3
4
5
6
7

Resposta 200

{
    "token_type": "Bearer",
    "expires_in": 2592000,
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImY4ODUxODBhZGU4N2Q0MGE1NmNkNWE4ODE3YzU0YWIyZDliZDg0NmVlODdkYTIzYTg3YThlNjQyZWY4NjczOGQ5Nzg5NDA2ZjU0NmYyYWVhIn0.eyJhdWQiOiJBUFAtZGFmYjQ3MjctYTFmZS00NmFmLTljZDctNmQ0M2MxYTg3NzY3IiwianRpIjoiZjg4NTE4MGFkZTg3ZDQwYTU2Y2Q1YTg3MTdjNTRhYjJkOWJkODQ2ZWU4N2RhMjNhODdhOGU2mDJlZjg2NzM4ZDk3ODk0MDZmNTQ2ZjJhZWEiLCJpYXQiOjE1NzQ4NTk2OTEsIm5iZiI6MTU3NDg1OTY5MSwiZXhwIjoxNTc3NDUxNjkxLCJzdWIiOiIzNDE0NiIsInNjb3BlcyI6WyJpbnN0YWxsX2FwcCIsInJlYWRfYWdlbnRfcHJvZmlsZSJdfQ.WXSsIOigtQh3GEGoGvfogcNiee6y1ElkvXCdOxJSOQr5LXJU-mZR2gCsBLh_XKXtvuj-9MSKHSq10HgsKacLrmJGryaeBvo1m9Ro9GUrTeNPY2cKOtjaCcxTgjRbTUvWQlNOhPMfxNSQ8-2L5-hKwrhxtjbFPghrtF1ifqRj_w0",
    "refresh_token": "def5430200ce65d9ae52cbd8e89191c731d15e6836bda7e6ad80a1ffe7f5bbbe971bae5cef6b881054ea003e55cf9d2cefd8218902ad0822bb137a561f7d1d72bada321e607b8acd396b618c933b2aeb4ae0971b7a12e116050f2583b0bf1d6f3bf90635d1fb2f417756b1963c9a55414a9d3cc63374a9683e07b4d07da1299a2c3ccdb6c1s91040ef6279afd7bc1e4b70f070272dcf7cd39c7f2508b2ffdf5f58101f8fc552ae828f372253d67973a2357560944cff5d5c020f1d5da1fdc045d6e5acc8856571635ac0aca0217bc069b9cb4718219f6acd33c77f1b8a4ddcf1742ba122e879054d096a198aab985d2144949444cc078a5d09fa372e91bcb1568c8b0977ad94614223d04f60b6dc245d2e28922ffdcf8284d1a4dde1874b3715bd92019cdb019dec3ef4f6a2d745c6948aebb271e90ed94d1cfce6d6fda526c52175453cabcbc096cf818bd5a32356007c8c40f93fc4694fcbeb51431dc0dbe2e4b05e8a479101fdb457a4a2e29d076701be5a640d6115e43cd261b52f8939ead61d4a11f2f3dab615dbf09e319619833a287f6de6f75f9dc08385af43689fc41b04f92825f2cb0fddb0289e19980"
}
1
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:

POST https://auth.huggy.app/oauth/access_token
ParameterTypeDescription
access_tokenstringToken expirado
access_token
string

Token expirado


Parâmetros do corpo

ParameterTypeExemploDescription
grant_typestringrefresh_tokenIsso informa ao terminal do token que o aplicativo está usando o tipo de concessão para atualização de um Token expirado.
client_idstringAPP-bafb4727-c1fe-47af-8cd7-9f43c1a87767ID do aplicativo do cliente
client_secretstring52f9fc0d-daa5-4238-bg36-2rb63db54eebConhecido e utilizado somente pelo aplicativo e o servidor de autorização
refresh_tokenstringdef50200fb4b3a43e7647589...Codigo de atualização para um token expirado
grant_type
string

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.


client_id
string

Exemplo: APP-bafb4727-c1fe-47af-8cd7-9f43c1a87767

ID do aplicativo do cliente


client_secret
string

Exemplo: 52f9fc0d-daa5-4238-bg36-2rb63db54eeb

Conhecido e utilizado somente pelo aplicativo e o servidor de autorização


refresh_token
string

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"
}
1
2
3
4
5
6

Resposta 200

{
    "token_type": "Bearer",
    "expires_in": 2505600,
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGdiOiJSUPI1NiIsImp0aSI6ImNmZGQwMThmOTMzYTA2ZDIyNDY2NzUzMzk2ODk2MjRkYjAwNTRhMDg4MzlkODk3ZDQ5MjJlMDk3MTP4MTY0MThkNzQ3Y2YxYTQyNmQzNmNmIn0.eyJhdWQiOiJBUFAtNGQ2ZWEyNTAiQGM1My00NmUxLTg1YzstZTNjZWQwNmUyYzVkIiwianRpIjoiY2ZkZDAxOGY5MzNhMDZkMjI0NjY3NTMzOTY4OTYyNGRiMAA1NGEwODgzOWQ4OTdkNDkyMmUwOTcxMDgxNjQxOGQ3NDdjZjFhNDI2ZDM2Y2YiLCJpYXQiOjE1ODEzNDU0NjYsIm5iZiQ6MTU4MTM0NTQ2NiwiZXhwIjoxNTgzODUxMDY2LCJzdWIiOiIzNDE0NiIsInNjb3BlcyI6WyJpbnN0YWxsX2FwcCIsInJEYWRfYWdlbnRfcHJvZmlsSSJdfQ.VL5fgtj4ioZOvvh9QDBD9Uk-DwtezOKfCNTOC0wFDxYIH_3s_l6sZmyAAPAm4yB-XSZMNXeItqeC-JSICt1pSPbf74Dn9i5Nyn_Evi2Owt4V9I_efuLNSCC6XM8u59l5LUfkt5ICTBRDBnkK2ux6zuYsUzCYjMS8U3qW_Z6g0SE",
    "refresh_token": "def5020048b980d8104a5f09caaa3ba7eec0acfd84cb026a48623b1b61146d4a175d92c4fbea51d3d2143a2ed2c7b7b7be85c8a4b2a6de1154ecbfe44a3814fce8e7c59c578f38112eebb1c218c0c6e088bef56950ef0d940cc45abad9128deeb1fb2f4fd2ba0b4sd018509da99f43ff4d355ab542503382cd827b6948922ffb1216b349e93eb2d2ecce9bb567bf4960e336776af882824f1d4791ad38da2b1a92c32ca50afceee3b9283a474cb1ed932359f4c77d7908fbd13e275b66f913784f2a155ae0593d119dcfda0dcc44d7fa2240ac15817cb95c1303d8d36f1a39602f1162d87e749b0f8a188c9b21314737a7cada2d51299e5d27f9ee95f250b35e20de728711cebd6bde748246629ea40f8402a7586ba54db349f61a42e7cea417617ff0d7fda0deb1c6f9afcd2bae45d526518cd7f52e62a22ba0530e3afd50b0d8896653d2c0bf0b2d525e200613f5b45bd432s6e4cdcefa5730b7d570641fe3e46f3f0705361737684000fc337880cae515983b0d718046c99c7348be65c9a478cf1d7a0de0f05f9f9baac79e0f5b9a7aa7f66a0272705dead82d475ac2ea687453f26d46bb771b9cb19ca36ecc"
}
1
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:

ParameterTypeDescription
agentintegerID do agente
departmentintegerID do departamento
customerintegerID do cliente
situationstringVer valores
statusstringVer valores
agent
integer

ID do agente


department
integer

ID do departamento


customer
integer

ID do cliente


situation
string

Ver valores


status
string

Ver valores


Filtro de chats por canais

Os chats podem ser filtrados por canais através do parâmetro channel.

Os Canais podem ser:

  • whatsapp
  • telegram-bot
  • messenger
  • email

Resposta 200

[
    {
        "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"
            }
        ]
    }
]
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Resposta 200

    {
        "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": []
    },
1
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

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Resposta 200










































 



[
    {
        "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"
    }
]
1
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.
ValorDescription
textRepresenta uma mensagem de Texto
imageRepresenta um link para uma imagem
audioRepresenta uma mensagem de áudio
videoRepresenta um link para um vídeo
documentRepresenta um documento enviado pelo chat
emailRepresenta um endereço de email
smsRepresenta um sms
internalEventRepresenta a ocorrência de um evento interno. Por exemplo: Agente Y definiu departamento X
templateMessageRepresenta uma mensagem template quando esta é enviada no chat
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


email

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


Resposta 404

{  
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Resposta 200

[
    {
        "id": "304430",
        "name": "restrição"
    },
    {
        "id": "304431",
        "name": "bloqueio"
    }
]
1
2
3
4
5
6
7
8
9
10

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Resposta 200

[
    {
        "name": "Carlos",
        "id": 39704
    }
]
1
2
3
4
5
6

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro.
}
1
2
3

GET/chats/{id}/contextVariables

Obter variáveis de contexto

Obtém as variáveis de contexto do chat.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Resposta 200

{
    "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"
    }
}
1
2
3
4
5
6
7
8
9
10
11

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Parâmetros do corpo

ParameterTypeDescription
textstringMensagem enviada para o contato
optionsarrayArray contendo identificador e titulo da opção do botãoopcional
filestringURL enviada para o contato contendo um arquivoopcional
isInternalbooleanInforma se a mensagem é internaopcional
text
string

Mensagem enviada para o contato


options
array

Array contendo identificador e titulo da opção do botão


file
string

URL enviada para o contato contendo um arquivo


isInternal
boolean

Informa se a mensagem é interna


Exemplo de requisição

{
    "text": "Olá, John!",
    "file": "https://c.pzw.io/img/avatar-user-boy.jpg",
    "isInternal": false
}
1
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

Resposta 200

{
    "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"
}
1
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

ChannelButtonsMessage sending
Huggy WhatsAppyesUse Quick Reply em até 3 itens | Se for maior que 3 e até 10 use lista interativa | Se for maior que 10 use texto
MessengeryesUse Quick Reply em até 13 itens | Se for maior que 13 use texto
InstagramyesUse Quick Reply em até 13 itens | Se for maior que 13 use texto
TelegramBotyesUse Quick Reply em até 1000 itens
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`


Instagram
yes

Use `Quick Reply` em até 13 itens | Se for maior que 13 use `texto`


TelegramBot
yes

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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Resposta 201

{
	"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
}
1
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

ProviderTemplate TypeType Support
Huggy WhatsAppMarketing | Autenticação | ServiçoTexto | Botão
Outros provedoresMarketing | ServiçoText
Huggy WhatsApp

Marketing | Autenticação | Serviço

Texto | Botão


Outros provedores

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

AttributeTypeDescription
template_idintegerIdentificador do template criado na plataforma Huggy
paramsObjectObjeto contendo as variáveis adicionadas na criação da mensagem de template
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


Exemplo de requisição


 



 
 




{
	"hsm": {
		"template_id": 675,
		"params":
		{
			"1": "John Doe",
			"2": "Huggy"
		}
	}
}
1
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

MidiaTypePropertyDescription
textstringtextContém um texto para a mensagem
imageObjectlinkContém o link da imagem
documentObjectlink; filenameContém um link para o arquivo e o nome (opcional)
videoObjectlinkContém o link para o vídeo
text
string

Property: text

Contém um texto para a mensagem


image
Object

Property: link

Contém o link da imagem


document
Object

Property: link; filename

Contém um link para o arquivo e o nome `(opcional)`


video
Object

Property: 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"
					}
				}
			]
		}
	}
}
1
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 propriedade type, 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"
        }
      ]
    }
  }
}
1
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 a uri restante na propriedade text do seu objeto buttons.

Resposta 200

{
	"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
}
1
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

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Parâmetros do corpo

ParameterTypeDescription
agentIdintegerIdentificador do agente
messagestringMensagem enviada ao agente junto à transferênciaopcional
agentId
integer

Identificador do agente


message
string

Mensagem enviada ao agente junto à transferência


Exemplo de requisição

{
  "agentId": 39607,
  "message": "Olá, segue o atendimento do nosso cliente Emanoel"
}
1
2
3
4

Resposta 200

{
    "customerId": "7356074",
    "id": 17656128
}
1
2
3
4

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Exemplo: Identificador do chat


Parâmetros do corpo

ParameterTypeDescription
flowIdintegerIdentificador do flow
variablesobjectObjeto contendo as variáveisopcional
flowId
integer

Exemplo: Identificador do flow


variables
object

Exemplo: Objeto contendo as variáveis

opcional


Exemplo de requisição

{
    "flowId" : 142714,
    "variables": {
        "data": "15/10/2019",
        "url_event": "https://huggy.io"
    }
}
1
2
3
4
5
6
7

Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 400

{
   "reason": "Esta mensagem informará o que ocasionou o erro"
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca"
}
1
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 status 400 será retornado.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Parâmetros do corpo

ParameterTypeDescription
agentIdintegerIdentificador do agente
agentId
integer

Identificador do agente


{
  "agentId": 39607
}
1
2
3

Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

PUT/chats/{id}/read

Marcar mensagem como lida

Marca leitura na mensagem do chat informado. Um ID será requerido para isso.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 403

{
   "reason": "Esta mensagem informará o que ocasionou o erro"
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca"
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Parâmetros do corpo

ParameterTypeDescription
tabulationIdintegerIdentificador da tabulação
tabulationId
integer

Identificador da tabulação


Exemplo de requisição

{
    "tabulationId" : 9740
}
1
2
3

Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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 o chat 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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Parâmetros do corpo

ParameterTypeDescription
tagsstringString contendo tags de marcação para o chat
tags
string

String contendo tags de marcação para o chat


Exemplo de requisição

{
	"tags": "tag4, tag5, tag6"
}
1
2
3

Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

PUT/chats/{id}/queue

Mover para a fila

Move um chat para a fila.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Parâmetros do corpo

ParameterTypeDescription
departmentintegerNúmero do departamento que se deseja atribuir ao chat
department
integer

Número do departamento que se deseja atribuir ao chat


Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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 como true, habilita o envio de uma mensagem de agradecimento após a finalização do chat, caso essa mensagem esteja configurada no painel Huggy.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Parâmetros do corpo

ParameterTypeDescription
tabulationintegerNúmero da tabulaçãoopcional
commentstringComentário a ser enviadoopcional
sendFeedbackbooleanMensagem de agradecimentoopcional
tabulation
integer

Número da tabulação


comment
string

Comentário a ser enviado


sendFeedback
boolean

Mensagem de agradecimento


Exemplo de requisição

{
	"tabulation": "12484",
	"comment": "comentário através da API",
    "sendFeedback": true
}
1
2
3
4
5

Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

PUT/chats/{id}/reopen

Reabrir um chat

Faz a reabertura de um chat, passando seu ID como parâmetro na requisição.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Parâmetros do corpo

ParameterTypeDescription
stepIdintegerIdentificador da etapa do Workflow
stepId
integer

Identificador da etapa do Workflow


Exemplo de requisição

{
    "stepId": 4760
}
1
2
3

Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Resposta 200

{
  "messages": [],
  "chatID": 475,
  "emailID": null,
  "callStatus": "0",
  "callQueue": null,
  "callNumber": null,
  "page_current": 0,
  "formHuggyChat": {},
  "contextVariables": []
}
1
2
3
4
5
6
7
8
9
10
11

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{
    "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do chat
id
integer

Identificador do chat


Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{
    "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
allPagesbooleanParâmetro que retornará todos os registros se seu valor for verdadeiro
allPages
boolean

Parâmetro que retornará todos os registros se seu valor for verdadeiro


Resposta 200

[
    {
        "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"
    }
]
1
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.

Resposta 200

{
    "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"
}
1
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.

ParameterTypeDescription
idintegerIdentificador do agente
id
integer

Identificador do agente


Resposta 200

{
    "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"
}
1
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

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

GET/agents/{id}/status

Visualizar o status do agente

Obtém o status de um agent a partir de seu ID

ParameterTypeDescription
idintegerIdentificador do agente
id
integer

Identificador do agente


Resposta 200

{
    "id": null,
    "name": "Unavailable",
    "message": null,
    "type": 0,
    "createdAt": null,
    "updatedAt": null,
    "agentID": 34146,
    "updatedBy": null,
    "companyID": null,
    "available": false
}
1
2
3
4
5
6
7
8
9
10
11
12

Resposta 404

{
   "reason": "This message will show that doesn't exist result for your search."
}
1
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çãoTypeChaveValor
AgentintegerType1
GerenteintegerType2
AdministradorintegerType3
Agent
integer

Type

1


Gerente
integer

Type

2


Administrador
integer

Type

3


Parâmetros do corpo

ParameterTypeDescription
emailstringEndereço de e-mail do agente
maxChatsintegerQuantidade máxima de chats definida para o novo agente
typeintegerIdentificador do perfil de acesso do agente
email
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


Exemplo de requisição

{
    "email": "charles@test.com",
    "maxChats": 50,
    "type": 1
}
1
2
3
4
5

Resposta400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 500

{
    "reason": "Agente já conectado"
}
1
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.

ParameterTypeDescription
idintegerIdentificador do agente
id
integer

Identificador do agente


Parâmetros do corpo

ParameterTypeExemploDescription
idinteger0 | -1 | -2Determina o status do agente
id
integer

Exemplo: 0 | -1 | -2

Determina o status do agente


Exemplo de requisição

    "id": 0
1

Resposta 200

{
    "statusId": null,
    "available": true,
    "type": 1
}
1
2
3
4
5

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do agente
id
integer

Identificador do agente


Parâmetros do corpo

ParameterTypeDescription
namestringNome do Agente
loginstringEndereço de e-mail do agente
phonestringNúmero de telefone do agente
name
string

Nome do Agente


login
string

Endereço de e-mail do agente


phone
string

Número de telefone do agente


Exemplo de requisição

{
  "name": "John Doe",
  "login": "teste2@doe.com",
  "phone": 557599999999
}
1
2
3
4
5

Resposta 200

Requisição bem sucedida com o corpo vazio
1

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
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:

ParameterTypeDescription
emailstringEmail do contato
phonestringTelefone do contato
email
string

Email do contato


phone
string

Telefone do contato


Resposta 200

[
    {
        "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": []
    }
]
1
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.

ParameterTypeDescription
idintegerIdentificador do contato
id
integer

Identificador do contato


Resposta 200

{
    "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": []
}
1
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

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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í.

ParameterTypeDescription
idintegerIdentificador do contato
id
integer

Identificador do contato


Resposta 200

[
    {
        "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": ""
    }
]
1
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

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

GET/contacts/{id}/groups

Visualizar o grupo do contato

Obtém os dados do grupo ao qual o contato pertence.

ParameterTypeDescription
idintegerIdentificador do contato
id
integer

Identificador do contato


Resposta 200

[
    {
        "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"
    }
]
1
2
3
4
5
6
7
8
9
10
11

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

GET/contacts/{id}/organizations

Visualizar a organização do contato

Obtém os dados da organização a qual o contato pertence.

ParameterTypeDescription
idintegerIdentificador do contato
id
integer

Identificador do contato


Resposta 200

[
    {
        "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": []
    }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do contato
id
integer

Identificador do contato


Resposta 200

[
    {
        "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"
    }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do contato
id
integer

Identificador do contato


Resposta 200

[
    {
        "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"
            }
        ]
    }
]
1
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

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

POST/contacts

Criar contato

Para criar um novo contato, name e email serão requeridos

Parâmetros do corpo

ParameterTypeDescription
namestringNome do contato
emailstringE-mail do contato
name
string

Nome do contato


email
string

E-mail do contato


Exemplo de requisição

{
  "name": "Charles Edware",
  "email": "teste3@teste.com"
}
1
2
3
4

Resposta 201

{
    "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": []
}
1
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

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
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 email, você poderá definir no corpo da requisição o assunto do email através da propriedade subject.

ParameterTypeDescription
idintegerIdentificador do contato
id
integer

Identificador do contato


Parâmetros do corpo

ParameterTypeDescription
channelUuidstringUUID do canal onde será criado o atendimento
subjectstringAssunto do e-mailopcional
channelUuid
string

UUID do canal onde será criado o atendimento


subject
string

Assunto do e-mail


Exemplo de requisição

{
  "channelUuid": "28b407cd-81a4-3abf-94d6-ca4f948d5d2f",
  "subject": "Férias"
}
1
2
3
4

Resposta 201

{
	"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"
		}
	]
}
1
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

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do contato
id
integer

Identificador do contato


Parâmetros do corpo

ParameterTypeDescription
commentstringComentário que ficará registrado no painel do contato
comment
string

Comentário que ficará registrado no painel do contato


Exemplo de requisição

{
  "comment": "Aguardando documentos"
}
1
2
3

Resposta 201

{
    "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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

PUT/contacts/{id}

Atualizar um contato

Atualiza um contato a partir do seu ID.

ParameterTypeDescription
idintegerIdentificador do contato
id
integer

Identificador do contato


Parâmetros do corpo

ParameterTypeDescription
namestringNome do contato
emailstringEndereço de e-mail do contato
phonestringTelefone do contato
mobilestringCelular do contato
addressstringEndereço do contatoopcional
citystringCidade do contatoopcional
districtstringBairro do contatoopcional
statestringEstado do contatoopcional
obsstringComentário feito sobre o contatoopcional
name
string

Nome do contato


email
string

Endereço de e-mail do contato


phone
string

Telefone do contato


mobile
string

Celular do contato


address
string

Endereço do contato


city
string

Cidade do contato


district
string

Bairro do contato


state
string

Estado do contato


obs
string

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"
}
1
2
3
4
5
6
7
8
9
10
11

Resposta 200

{
    "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": []
}
1
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

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
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"
}
1
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.

ParameterTypeDescription
contactIdintegerIdentificador do contato
contactId
integer

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
}
1
2
3
4
5
6
7
8
9
10
11

Resposta 200

{
    "reason": "Flow processed",
    "chatID": 19291350
}            
1
2
3
4

Resposta 200

{
    "reason": "Flow processed and agent removed from chat",
    "chatID": 19291350
}   
1
2
3
4

Resposta 400

{
   "reason": "Esta mensagem informará o que ocasionou o erro"
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca"
}
1
2
3

DELETE/contacts/{id}

Excluir um contato

Exclui um contato a partir do seu ID.

ParameterTypeDescription
idintegerIdentificador do contato
id
integer

Identificador do contato


Resposta 204

Requisição bem sucedida com o corpo vazio
1

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

Resposta 200

[
    {
        "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"
    }
]
1
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.

ParameterTypeDescription
allPagesbooleanParâmetro que retornará todos os registros se seu valor for verdadeiroopcional
allPages
boolean

Parâmetro que retornará todos os registros se seu valor for verdadeiro


Resposta 200

[
    {
        "id": 25954,
        "name": "1 - Financeiro",
        "parentId": null
    },
    {
        "id": 25955,
        "name": "2 - Almoxarifado",
        "parentId": null
    },
    {
        "id": 25956,
        "name": "3 - Vendas",
        "parentId": null
    }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

Resposta 200

[
    {
        "id": 25954,
        "name": "1 - Financeiro"
    },
    {
        "id": 25955,
        "name": "2 - Almoxarifado"
    }
]
1
2
3
4
5
6
7
8
9
10

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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!

ParameterTypeDescription
idintegerIdentificador do departamento
id
integer

Identificador do departamento


Resposta 200

{
    "id": 30326,
    "name": "Financeiro",
    "companyID": 15691,
    "active": true,
    "color": "#000000",
    "order": 1,
    "parentID": null
}
1
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.

ParameterTypeDescription
allPagesbooleanParâmetro que retornará todos os registros se seu valor for verdadeiro
allPages
boolean

Parâmetro que retornará todos os registros se seu valor for verdadeiro


Resposta 200

[
    {
        "id": 12055,
        "name": "Trocas"
    },
    {
        "id": 12054,
        "name": "Prazo de Entrega"
    },
    {
        "id": 12053,
        "name": "Dúvidas"
    }
]
1
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.

ParameterTypeDescription
idintegerIdentificador da tabulação
id
integer

Identificador da tabulação


Resposta 200

{
    "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": []
}
1
2
3
4
5
6
7
8
9
10

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

Telegram Bot

GET/telegramBot

Visualizar todos os telegram bots

Obtém a lista de todos os telegram bots cadastrados na plataforma Huggy.

Resposta 200

[
	{
		"id": 9,
		"name": "doe",
		"username": "johndoe_bot"
	},
	{
		"id": 24,
		"name": "knsilvestre",
		"username": "knsilvestre_bot"
	},
	{
		"id": 27,
		"name": "carlosaguiar",
		"username": "carlossantosaguiar_bot"
	}
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

GET/telegramBot/{id}

Visualizar um telegram bot

Obtém os dados de um telegram bot a partir de seu ID.

ParameterTypeDescription
idintegerIdentificador do telegram bot
id
integer

Identificador do telegram bot


Resposta 200

{
	"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"
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

POST/telegramBot

Cadastrar um telegram bot

Cadastrar um novo telegram bot na plataforma Huggy a partir do token.

Parâmetros do corpo

ParameterTypeDescription
tokenstringToken do telegram bot
token
string

Token do telegram bot


Exemplo de requisição

{
    "token": "3400010986:ACGLDsVx5MKO_06Jw08wgPerpI0ac3bODdM"
}
1
2
3

Resposta 201

{
    "id": "9",
    "name": "doe",
    "username": "johndoe_bot",
    "uuid": "5d960a25-4762-4021-a814-b6cf4d26e11f",
    "flowIn": null,
    "flowOut": null
}
1
2
3
4
5
6
7
8

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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

ParameterTypeDescription
namestringApelido do bot
flowInIDintegerIdentificador do flow de entrada
flowOutIDintegerIdentificador do flow de saída
name
string

Apelido do bot


flowInID
integer

Identificador do flow de entrada


flowOutID
integer

Identificador do flow de saída


Exemplo de requisição

{
    "name": "John Doe",
	"flowInID": "2",
	"flowOutID": "3"
}
1
2
3
4
5

Resposta 200

{
	"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"
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

DELETE/telegramBot/{id}

Deletar um telegram bot

Exclui um telegram bot a partir de seu ID.

ParameterTypeDescription
idintegerIdentificador do telegram bot
id
integer

Identificador do telegram bot


Resposta 204

Requisição bem sucedida com o corpo vazio
1

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

Resposta 200

[
    {
        "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
    }
]
1
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.

ParameterTypeDescription
idintegerIdentificador do atalho
id
integer

Identificador do atalho


Resposta 200

{
    "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
}
1
2
3
4
5
6
7
8

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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

ParameterTypeDescription
namestringNome do atalho
keystringPalavra chave utilizada para chamar o atalho
filestringLink do arquivo usado no envio do atalho
textstringUma mensagem de texto usada no envio do atalhoopcional
publicbooleanTorna o atalho visível na tela de atendimentos ou na lista de atalhosopcional
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


public
boolean

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
}
1
2
3
4
5
6
7

Resposta 201

{
    "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
}
1
2
3
4
5
6
7
8

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

PUT/shortcuts/{id}

Atualizar um atalho

Atualiza um atalho por meio de seu ID.

ParameterTypeDescription
idintegerIdentificador do atalho
id
integer

Identificador do atalho


Parâmetros do corpo

ParameterTypeDescription
namestringNome do atalho
keystringPalavra chave utilizada para chamar o atalho
filestringLink contendo arquivo usado no envio do atalho
textstringUma mensagem de texto usada no envio do atalhoopcional
publicbooleanTorna o atalho visível na tela de atendimentos ou na lista de atalhosopcional
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


public
boolean

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
}
1
2
3
4
5
6
7

Resposta 200

{
    "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
}
1
2
3
4
5
6
7
8

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

Resposta 404

{  
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

DELETE/shortcuts/{id}

Deletar um atalho

Exclui um atalho a partir de seu ID.

ParameterTypeDescription
idintegerIdentificador do atalho
id
integer

Identificador do atalho


Resposta 204

Requisição bem sucedida com o corpo vazio
1

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

Resposta 200

[
    {
        "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
    }
]
1
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

Resposta 200

[
    {
        "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": []
            }
        ]
    }
]
1
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.

ParameterTypeDescription
idintegerIdentificador do workflow
id
integer

Identificador do workflow


Resposta 200

{
    "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": []
        }
    ]
}
1
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

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

Bots

GET/bots

Visualizar todos os bots

Obtém a lista de todos os bots criados na plataforma Huggy.

Resposta 200

[
    {
        "id": 2926,
        "name": "HuggyBot"
    },
    {
        "id": 2925,
        "name": "HuggyGirl"
    }
]
1
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.

ParameterTypeDescription
idintegerIdentificador do bot
id
integer

Identificador do bot


Resposta 200

{
    "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
}
1
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

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

Virtual Agents

GET/virtualAgents

Visualizar todos os agentes virtuais

Obtém a lista de todos os agentes virtuais cadastrados na plataforma Huggy.

Resposta 200

[
    {
        "id": 784,
        "name": "huggyboy",
        "email": "huggyboy@test.com"
    },
    {
        "id": 785,
        "name": "huggygirl",
        "email": "huggygirl@test.com"
    },
    {
        "id": 782,
        "name": "huggyhank",
        "email": "hugggyhenk@test.com"
    }
]
1
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.

ParameterTypeDescription
idintegerIdentificador do agente virtual
id
integer

Identificador do agente virtual


Resposta 200

{
    "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"
}
1
2
3
4
5
6
7
8
9
10
11
12

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
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.

Resposta 200

[
    {
        "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"
    }
]
1
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.

ParameterTypeDescription
idintegerIdentificador do projeto
id
integer

Identificador do projeto


Resposta 200

{
    "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
}
1
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
ParameterTypeDescription
namestringNome do projeto que será criado
name
string

Nome do projeto que será criado


Exemplo de requisição

{
  "name": "Eletrônicos"
}
1
2
3

Resposta 200

{
    "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
    }
}
1
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.

ParameterTypeDescription
idintegerIdentificador do projeto
id
integer

Identificador do projeto


Parâmetros do corpo
ParameterTypeDescription
namestringNovo nome para o projeto
name
string

Novo nome para o projeto


Exemplo de requisição

{
  "name": "Eletrônicos"
}
1
2
3

Resposta 200

{
    "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
    }
}
1
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

Resposta 400

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

DELETE/projects/{id}

Excluir um projeto

Exclui um projeto a partir do seu ID.

ParameterTypeDescription
idintegerIdentificador do projeto
id
integer

Identificador do projeto


Resposta 204

{
    "status": true
}
1
2
3

Resposta 404

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
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.

ParameterTypeDescription
idintegerIdentificador do projeto
id
integer

Identificador do projeto


Resposta 200

[
    {
        "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": []
    }
]
1
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.

ParameterTypeDescription
projectIdintegerIdentificador do projetoopcional
flowIdintegerIdentificador do Flow
projectId
integer

Identificador do projeto


flowId
integer

Identificador do Flow


Resposta 200

{
    "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": []
}
1
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.

ParameterTypeDescription
idintegerIdentificador do projeto
id
integer

Identificador do projeto


Parâmetros do corpo
ParameterTypeDescription
descriptionstringDescrição do Flow que será criado
description
string

Descrição do Flow que será criado


Exemplo de requisição

{
  "description": "Rastreamento"
}
1
2
3

Resposta 200

{
    "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": []
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Resposta 404

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
2
3

PUT/projects/{projectId}/flows/{flowId}

Atualizar um Flow

Atualiza a descrição de um Flow.

ParameterTypeDescription
projectIdintegerIdentificador do projeto
flowIdintegerIdentificador do Flow
projectId
integer

Identificador do projeto


flowId
integer

Identificador do Flow


Parâmetros do corpo
ParameterTypeDescription
descriptionstringNova descrição do Flow
description
string

Nova descrição do Flow


Exemplo de requisição

{
  "description": "New description"
}
1
2
3

Resposta 200

{
    "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": []
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Resposta 404

{
    "reason": "Esta mensagem informará o que ocasionou o erro."
}
1
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.

ParameterTypeDescription
projectIdintegerIdentificador do projeto
flowIdintegerIdentificador do Flow
projectId
integer

Identificador do projeto


flowId
integer

Identificador do Flow


Resposta 204

{
Requisição bem sucedida com o corpo vazio
}
1
2
3

Resposta 400

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

Organizations

GET/organizations

Visualizar todas as organizações

Obtém a lista de todas as organizações cadastradas na plataforma Huggy.

Resposta 200

[
    {
        "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": []
    }
]
1
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
ParameterTypeDescription
namestringNome da organização
name
string

Nome da organização


Exemplo de requisição

{
  "name": "Huggy"
}
1
2
3

Resposta 200

{
    "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": []
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Resposta400

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

PUT/organizations/{Id}

Atualizar uma organização

Atualiza o nome da organização.

ParameterTypeDescription
idintegerIdentificador da organização
id
integer

Identificador da organização


Parâmetro do corpo
ParameterTypeDescription
namestringNovo nome da organização
name
string

Novo nome da organização


Exemplo de requisição

{
  "name": "Huggy"
}
1
2
3

Resposta 200

{
    "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": []
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}
1
2
3

DELETE/organizations/{Id}

Excluir uma organização

Exclui uma organização a partir de seu ID

ParameterTypeDescription
idintegerIdentificador da organização
id
integer

Identificador da organização


Resposta 204

Requisição bem sucedida com o corpo vazio
1

Resposta 404

{
   "reason": "Esta mensagem mostrará que não existe resultado para sua busca."
}

1
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.

Resposta 200

[
    {
        "id": 15691,
        "name": "Huggy"
    },
    {
        "id": 15693,
        "name": "Hank"
    }
]
1
2
3
4
5
6
7
8
9
10

Types