{
    "openapi": "3.0.0",
    "info": {
        "version": "2.0.0",
        "title": "API Hub",
        "description": "Serviço de API's centralizadas para integração"
    },
    "servers": [
        {
            "url": "https://apihub.convert.app.br/api"
        },
        {
            "url": "https://apihub.letteldata.com.br/api"
        }
    ],
    "paths": {
        "/auth/login": {
            "post": {
                "summary": "Gerar token de usuário",
                "tags": [
                    "Autenticação"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "login",
                                    "password"
                                ],
                                "properties": {
                                    "login": {
                                        "type": "string",
                                        "example": "jose@convertcompany.com.br",
                                        "description": "Usuário API Hub"
                                    },
                                    "password": {
                                        "type": "string",
                                        "example": "senha123",
                                        "description": "Senha do Usuário API Hub"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "access_token": {
                                            "type": "string",
                                            "example": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                                        },
                                        "token_type": {
                                            "type": "string",
                                            "example": "bearer"
                                        },
                                        "expires_in": {
                                            "type": "integer",
                                            "example": 21600
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Login e/ou Password inválido(s)",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "example": "Unauthorized"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/gerarAccessToken": {
            "post": {
                "summary": "Gerar um Access Token",
                "tags": [
                    "Autenticação"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "cliente_id": {
                                        "type": "integer",
                                        "example": 2,
                                        "description": "(Opcional) ID de Cliente do API Hub"
                                    },
                                    "nivel": {
                                        "type": "string",
                                        "example": "admin",
                                        "description": "(Opcional) Nível de acesso que o Access Token possuirá"
                                    },
                                    "data_expiracao": {
                                        "type": "string",
                                        "example": "2024-09-10 17:00:00",
                                        "description": "(Opcional) Data/Hora de expiração do Access Token"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Token gerado com sucesso."
                                        },
                                        "token": {
                                            "type": "string",
                                            "example": "adsgashdgljkhsadglkjhakjghwekjghkjldgha"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/validarAccessToken": {
            "post": {
                "summary": "Validar um access token",
                "tags": [
                    "Autenticação"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "token"
                                ],
                                "properties": {
                                    "token": {
                                        "type": "string",
                                        "example": "xdfasjkdfhasdjkfakjshdkjahf",
                                        "description": "Access Token que vai ser validado"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "succes": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Token válido"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Token inválido",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Token não encontrado ou inválido"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/revogarAccessToken": {
            "post": {
                "summary": "Revogar access token",
                "tags": [
                    "Autenticação"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "token"
                                ],
                                "properties": {
                                    "token": {
                                        "type": "string",
                                        "example": "alkdsjgkasdjglkasgklhasdklgh",
                                        "description": "Token que será revogado"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "access_token": {
                                            "type": "string",
                                            "example": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                                        },
                                        "token_type": {
                                            "type": "string",
                                            "example": "bearer"
                                        },
                                        "expires_in": {
                                            "type": "integer",
                                            "example": 21600
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Login e/ou Password inválido(s)",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "error": {
                                            "type": "string",
                                            "example": "Access Token de Cliente não autorizado, inválido ou expirado"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/ativarAutenticacaoCliente": {
            "post": {
                "summary": "Ativar autenticação para o cliente",
                "tags": [
                    "Autenticação"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "cliente_id": {
                                        "type": "integer",
                                        "example": 4,
                                        "description": "Código do cliente onde irá ser ativada a autenticação"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Configurações de Autenticação ativadas com sucesso."
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bearer token inválido",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Não foi possível desativar as Configurações de Autenticação. O agente e/ou token de admin é inválido."
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/desativarAutenticacaoCliente": {
            "post": {
                "summary": "Desativar autenticação para o cliente",
                "tags": [
                    "Autenticação"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "cliente_id": {
                                        "type": "integer",
                                        "example": 5,
                                        "description": "Código do cliente onde irá ser desativada a autenticação"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Configurações de Autenticação Desativadas com sucesso."
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bearer token inválido",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Não foi possível desativar as Configurações de Autenticação. O agente e/ou token de admin é inválido."
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/alterar_senha": {
            "post": {
                "summary": "Alterar senha do usuário",
                "tags": [
                    "Autenticação"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "login": {
                                        "type": "string",
                                        "example": "usuario.convert",
                                        "description": "Login do Usuário a ser alterada a senha. (Somente ADMIN consegue executar essa alteração)"
                                    },
                                    "password_atual": {
                                        "type": "string",
                                        "example": "usuario.convert1234567",
                                        "description": "Password Atual do Usuário"
                                    },
                                    "password_novo": {
                                        "type": "string",
                                        "example": "AAAAAABBBBBB_CCCCCCCC1!",
                                        "description": "Password Novo do Usuário. Deverá conter 1 letra, 1 número e 1 caractere especial."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Senha alterada com sucesso!"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Quando tenta alterar a senha de um usuário que não é o seu próprio",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "status": {
                                            "type": "integer",
                                            "example": 401
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Você não tem permissões para alterar a senha de outro usuário."
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni_config_cliente/consultar": {
            "post": {
                "summary": "Listar configuração de cliente",
                "tags": [
                    "Configurações de cliente"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Contato"
                                    },
                                    "template": {
                                        "type": "string",
                                        "example": "template_teste",
                                        "description": "Identificador do template"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "id": {
                                            "type": "integer",
                                            "example": 88
                                        },
                                        "cliente_id": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "descricao": {
                                            "type": "string",
                                            "example": "Convert Company"
                                        },
                                        "identificador": {
                                            "type": "string",
                                            "example": "5554999999999"
                                        },
                                        "plataforma": {
                                            "type": "string",
                                            "example": "gupshup"
                                        },
                                        "tipo": {
                                            "type": "string",
                                            "example": "whats"
                                        },
                                        "plat_api_token": {
                                            "type": "string",
                                            "example": "fasdfjkadshfJKSfhkjsahfaskj"
                                        },
                                        "rocket_api_path": {
                                            "type": "string",
                                            "example": "https://chat.convert.app.br"
                                        },
                                        "rocket_agent_token": {
                                            "type": "string",
                                            "example": "ajsdhfAJKHSdjdhsajkdfa"
                                        },
                                        "created_at": {
                                            "type": "string",
                                            "example": "2024-02-28T18:00:00:02.000000Z"
                                        },
                                        "updated_at": {
                                            "type": "string",
                                            "example": "2024-02-28T18:00:00:02.000000Z"
                                        },
                                        "departamento_entrada": {
                                            "type": "string",
                                            "example": "AJhfksdajhfkjsh"
                                        },
                                        "mostrar_mensagem_transferencia": {
                                            "type": "boolean",
                                            "example": 0
                                        },
                                        "mostrar_mensagem_fila": {
                                            "type": "boolean",
                                            "example": 0
                                        },
                                        "mostrar_mensagem_conversa_iniciada": {
                                            "type": "boolean",
                                            "example": 1
                                        },
                                        "mensagem_transferencia": {
                                            "type": "string",
                                            "example": null
                                        },
                                        "mensagem_fila": {
                                            "type": "string",
                                            "example": null
                                        },
                                        "mensagem_conversa_iniciada": {
                                            "type": "string",
                                            "example": "Olá me chamo ##NOME_AGENTE## e irei lhe atender"
                                        },
                                        "rocket_agent_id": {
                                            "type": "string",
                                            "example": "JHAkjdhaskjhaskjdfhaskj"
                                        },
                                        "tempo_inatividade": {
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "mostrar_mensagem_encerramento": {
                                            "type": "boolean",
                                            "example": 1
                                        },
                                        "mensagem_encerramento": {
                                            "type": "string",
                                            "example": "Atendimento Encerrado"
                                        },
                                        "mostrar_agente_conversa": {
                                            "type": "boolean",
                                            "example": 1
                                        },
                                        "namespace_360": {
                                            "type": "string",
                                            "example": "adfsjkhafskjdf12831982kjsdhfkjash"
                                        },
                                        "mensagem_optin": {
                                            "type": "string",
                                            "example": null
                                        },
                                        "app_name": {
                                            "type": "string",
                                            "example": "ConvertApp"
                                        },
                                        "app_id": {
                                            "type": "string",
                                            "example": "4762135764512367451"
                                        },
                                        "partner_access_token": {
                                            "type": "string",
                                            "example": null
                                        },
                                        "solicitar_optin": {
                                            "type": "boolean",
                                            "example": 0
                                        },
                                        "enviar_template_sem_optin": {
                                            "type": "boolean",
                                            "example": 1
                                        },
                                        "enviar_mensagem_sala_expirada": {
                                            "type": "boolean",
                                            "example": 1
                                        },
                                        "mostrar_sobrenome_agente": {
                                            "type": "boolean",
                                            "example": 1
                                        },
                                        "tempo_espera_max": {
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "departamento_padrao": {
                                            "type": "string",
                                            "example": "AJHkfjhsdakjh123123khjk"
                                        },
                                        "auto_transf_enc_pelo_apihub": {
                                            "type": "boolean",
                                            "example": 1
                                        },
                                        "sala_expirada_primeiro_aviso": {
                                            "type": "string",
                                            "example": "A sua sessão irá expirar em 5 minutos."
                                        },
                                        "sala_expirada_tempo_antes_primeiro_aviso": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "sala_expirada_aviso_final": {
                                            "type": "string",
                                            "example": "Sessão expirada. O atendimento foi encerrado."
                                        },
                                        "json_config": {
                                            "type": "string",
                                            "example": null
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Falha ao encontrar uma Configuração",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 500
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Configuração do Omni não encontrada para esse Identificador."
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni_config_cliente": {
            "post": {
                "summary": "Cadastrar configuração de cliente",
                "tags": [
                    "Configurações de cliente"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador",
                                    "descricao",
                                    "plataforma",
                                    "tipo",
                                    "plat_api_token",
                                    "rocket_api_path",
                                    "rocket_agent_token",
                                    "departamento_entrada",
                                    "rocket_agent_id",
                                    "mostrar_mensagem_fila",
                                    "mostrar_mensagem_conversa_iniciada",
                                    "mostrar_mensagem_encerramento",
                                    "tempo_inatividade",
                                    "mostrar_agente_conversa",
                                    "mostrar_sobrenome_agente",
                                    "mostrar_mensagem_transferencia"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Contato"
                                    },
                                    "descricao": {
                                        "type": "string",
                                        "example": "Convert Company",
                                        "description": "Descrição da Configurção"
                                    },
                                    "plataforma": {
                                        "type": "string",
                                        "example": "gupshup",
                                        "description": "Broker que será utilizado",
                                        "enum": [
                                            "gupshup",
                                            "360dialog",
                                            "360dialogcloudapi",
                                            "360dialogsandbox",
                                            "facebook",
                                            "telegram",
                                            "outro",
                                            "livechat",
                                            "zenvia",
                                            "instagram"
                                        ]
                                    },
                                    "tipo": {
                                        "type": "string",
                                        "example": "whats",
                                        "description": "Tipo de forma de comunicação do Broker",
                                        "enum": [
                                            "whats",
                                            "telegram",
                                            "outro",
                                            "livechat",
                                            "messenger",
                                            "facebookgup"
                                        ]
                                    },
                                    "plat_api_token": {
                                        "type": "string",
                                        "example": "asdfbasd12312dsfbasdnfb",
                                        "description": "Token de API do Broker"
                                    },
                                    "rocket_api_path": {
                                        "type": "string",
                                        "example": "https://chat.convert.app.br",
                                        "description": "Caminho do OmniChannel"
                                    },
                                    "rocket_agent_token": {
                                        "type": "string",
                                        "example": "adbsbas12312asdbasdb",
                                        "description": "Token de acesso do Admin do Omni"
                                    },
                                    "departamento_entrada": {
                                        "type": "string",
                                        "example": "asdfbasdnfb12312asndbasnbda",
                                        "description": "Departamento onde a mensagem inicial irá ser entregue"
                                    },
                                    "rocket_agent_id": {
                                        "type": "string",
                                        "example": "admin.convert",
                                        "description": "ID do Admin do OmniChannel"
                                    },
                                    "mostrar_mensagem_fila": {
                                        "type": "boolean",
                                        "example": false,
                                        "description": "Permitir exibição de mensagem de entrada em fila de espera"
                                    },
                                    "mostrar_mensagem_conversa_iniciada": {
                                        "type": "boolean",
                                        "example": false,
                                        "description": "Permitir exibição de mensagem quando um atendimento é pego da fila de espera"
                                    },
                                    "mostrar_mensagem_encerramento": {
                                        "type": "boolean",
                                        "example": true,
                                        "description": "Permitir exibição de mensagem quando um atendimento é encerrado"
                                    },
                                    "tempo_inatividade": {
                                        "type": "integer",
                                        "example": 0,
                                        "description": "Tempo(minutos) em que um contato irá ficar em sessão no OmniChannel. 0 (zéro) é sem limites."
                                    },
                                    "mostrar_agente_conversa": {
                                        "type": "boolean",
                                        "example": true,
                                        "description": "Permitir exibição do nome do Agente durante o atendimento"
                                    },
                                    "mostrar_sobrenome_agente": {
                                        "type": "boolean",
                                        "example": false,
                                        "description": "Permitir exibição do sobrenome do Agente durante o atendimento"
                                    },
                                    "mostrar_mensagem_transferencia": {
                                        "type": "boolean",
                                        "example": false,
                                        "description": "Permitir exibição de mensagem de transferência"
                                    },
                                    "mensagem_transferencia": {
                                        "type": "string",
                                        "example": "Seu atendimento foi transferido",
                                        "description": "Mensagem de Transferência"
                                    },
                                    "mensagem_fila": {
                                        "type": "string",
                                        "example": "Seu atendimento está na fila de espera, por favor aguarde",
                                        "description": "Mensagem de entrada em uma fila de espera"
                                    },
                                    "mensagem_conversa_iniciada": {
                                        "type": "string",
                                        "example": "Seu atendimento foi iniciado",
                                        "description": "Mensagem de atendimento iniciado"
                                    },
                                    "mensagem_encerramento": {
                                        "type": "string",
                                        "example": "Seu atendimento foi encerrado",
                                        "description": "Mensagem de Encerramento"
                                    },
                                    "namespace_360": {
                                        "type": "string",
                                        "example": "sdfjkshgdjhg2342j3hgjhsadgf",
                                        "description": "Namespace do broker 360 Dialog, necessário para o envio de templates"
                                    },
                                    "app_name": {
                                        "type": "string",
                                        "example": "convertApp",
                                        "description": "Nome do aplicativo dentro do Broker, caso o Broker seja o Facebook esse campo é utilizado para gravar o WABA ID"
                                    },
                                    "app_id": {
                                        "type": "string",
                                        "example": "412412312314123123",
                                        "description": "ID do aplicativo dentro do Broker, caso o Broker seja o Facebook esse campo é utilizado para gravar o PHONE NUMBER ID"
                                    },
                                    "enviar_mensagem_sala_expirada": {
                                        "type": "boolean",
                                        "example": true,
                                        "description": "Mensagem de Sala Expirada"
                                    },
                                    "tempo_espera_max": {
                                        "type": "integer",
                                        "example": 0,
                                        "description": "Tempo de Expera máximo em Fila. 0 (zero) é sem limite"
                                    },
                                    "departamento_padrao": {
                                        "type": "string",
                                        "example": "gvfasdg1234asdgfsadgasdg",
                                        "description": "Departamento para onde será transferido o atendimento caso o tempo de espera máximo seja atingido. Caso o departamento seja NULO ao invés de transferir, o atendimento será encerrado."
                                    },
                                    "auto_transf_enc_pelo_apihub": {
                                        "type": "boolean",
                                        "example": true,
                                        "description": "Define se irá transferir/encerrar um atendimento que esteja com o tempo de espera esgotado"
                                    },
                                    "sala_expirada_primeiro_aviso": {
                                        "type": "string",
                                        "example": "A sua sessão irá expirar em 5 minutos",
                                        "description": "Mensagem de aviso antes da sessão expirar"
                                    },
                                    "sala_expirada_tempo_antes_primeiro_aviso": {
                                        "type": "integer",
                                        "example": 5,
                                        "description": "Tempo em minutos para a Primeira Mensagem de aviso ser enviada"
                                    },
                                    "sala_expirada_aviso_final": {
                                        "type": "string",
                                        "example": "Sessão expirada. O atendimento foi encerrado.",
                                        "description": "Mensagem de sessão expirada"
                                    },
                                    "json_config": {
                                        "type": "string",
                                        "example": "{\"eventos\":{\"inicioAgente\":[\"atendimentoIniciado\"],\"transferencia\":[\"transferencia\"],\"encerramento\": [\"atendimentoFinalizado\"]}}",
                                        "description": "Campo que aceita JSON com configurações específicas para os clientes e também permite a utilização de eventos de integração."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "apiHubToken": {
                                            "type": "string",
                                            "example": "abcd31231231basbhdbashdb"
                                        },
                                        "identificador": {
                                            "type": "string",
                                            "example": "5554999999999"
                                        },
                                        "descricao": {
                                            "type": "string",
                                            "example": "Convert Company"
                                        },
                                        "plataforma": {
                                            "type": "string",
                                            "example": "gupshup"
                                        },
                                        "tipo": {
                                            "type": "string",
                                            "example": "whats"
                                        },
                                        "plat_api_token": {
                                            "type": "string",
                                            "example": "asdfbasd12312dsfbasdnfb"
                                        },
                                        "rocket_api_path": {
                                            "type": "string",
                                            "example": "https://chat.convert.app.br"
                                        },
                                        "rocket_agent_token": {
                                            "type": "string",
                                            "example": "adbsbas12312asdbasdb"
                                        },
                                        "departamento_entrada": {
                                            "type": "string",
                                            "example": "asdfbasdnfb12312asndbasnbda"
                                        },
                                        "rocket_agent_id": {
                                            "type": "string",
                                            "example": "admin.convert"
                                        },
                                        "mostrar_mensagem_fila": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "mostrar_mensagem_conversa_iniciada": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "mostrar_mensagem_encerramento": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "tempo_inatividade": {
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "mostrar_agente_conversa": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "mostrar_sobrenome_agente": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "mostrar_mensagem_transferencia": {
                                            "type": "boolean",
                                            "example": false
                                        },
                                        "mensagem_transferencia": {
                                            "type": "string",
                                            "example": "Seu atendimento foi transferido"
                                        },
                                        "mensagem_fila": {
                                            "type": "string",
                                            "example": "Seu atendimento está na fila de espera, por favor aguarde"
                                        },
                                        "mensagem_conversa_iniciada": {
                                            "type": "string",
                                            "example": "Seu atendimento foi iniciado"
                                        },
                                        "mensagem_encerramento": {
                                            "type": "string",
                                            "example": "Seu atendimento foi encerrado"
                                        },
                                        "namespace_360": {
                                            "type": "string",
                                            "example": "sdfjkshgdjhg2342j3hgjhsadgf"
                                        },
                                        "app_name": {
                                            "type": "string",
                                            "example": "convertApp"
                                        },
                                        "app_id": {
                                            "type": "string",
                                            "example": "412412312314123123"
                                        },
                                        "enviar_mensagem_sala_expirada": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "tempo_espera_max": {
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "departamento_padrao": {
                                            "type": "string",
                                            "example": "gvfasdg1234asdgfsadgasdg"
                                        },
                                        "auto_transf_enc_pelo_apihub": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "sala_expirada_primeiro_aviso": {
                                            "type": "string",
                                            "example": "A sua sessão irá expirar em 5 minutos"
                                        },
                                        "sala_expirada_tempo_antes_primeiro_aviso": {
                                            "type": "integer",
                                            "example": 5
                                        },
                                        "sala_expirada_aviso_final": {
                                            "type": "string",
                                            "example": "Sessão expirada. O atendimento foi encerrado."
                                        },
                                        "json_config": {
                                            "type": "string",
                                            "example": "{\"eventos\":{\"inicioAgente\":[\"atendimentoIniciado\"],\"transferencia\":[\"transferencia\"],\"encerramento\": [\"atendimentoFinalizado\"]}}"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Resposta caso houver algum erro",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "string",
                                            "example": false
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "O campo mostrar sobrenome agente é obrigatório"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/saida": {
            "post": {
                "summary": "Enviar uma mensagem",
                "description": "Essa rota tem como objetivo enviar uma mensagem através de um template previamente cadastrado na plataforma do WhatsApp",
                "tags": [
                    "Envio de templates"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador",
                                    "tituloTemplate",
                                    "destino"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "555421037000",
                                        "description": "Identificador do canal, número da conta da sua empresa no WhatsApp, somente números, com DDI e DDD"
                                    },
                                    "agente": {
                                        "type": "string",
                                        "example": "CHbfaCxKNvLbLwJQi6",
                                        "description": "ID do usuário no Omnichannel para vínculo do atendimento, não é obrigatório"
                                    },
                                    "departamento": {
                                        "type": "string",
                                        "example": "DAkwZMmsAqdKZ3N",
                                        "description": "ID do departamento no Omnichannel para vínculo do atendimento, não é obrigatório"
                                    },
                                    "destino": {
                                        "type": "string",
                                        "example": "WHATS-5554984086070",
                                        "description": "Número de telefone do contato que irá receber a mensagem, deve obrigatóriamente ser formatado com DDI e DDD, somente números, deve sempre ser prefixado com 'WHATS-'"
                                    },
                                    "tituloTemplate": {
                                        "type": "string",
                                        "example": "primeiro_contato",
                                        "description": "ID ou título do template cadastrado na plataforma do WhatsApp"
                                    },
                                    "nomeContato": {
                                        "type": "string",
                                        "example": "João da Silva",
                                        "description": "Nome do contato para cadastro na central de contatos do Omnichannel"
                                    },
                                    "params": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "example": [
                                            "Boa tarde",
                                            "João"
                                        ],
                                        "description": "Array com as variáveis do template, na ordem em que foram cadastradas na plataforma do WhatsApp. Caso o template não possua variáveis, esse campo pode ser omitido"
                                    },
                                    "campanha": {
                                        "type": "string",
                                        "example": "Confirmação de agenda",
                                        "description": "Identificador vinculado aos envios, para tratativas de resposta, podendo redirecionar o atendimento dentro do fluxo ou utilizar como filtro para relatórios"
                                    },
                                    "fields": {
                                        "type": "array",
                                        "description": "Array de objetos com campos customizados para serem definidos no atendimento do Omnichannel, útil quando você quer adicionar uma tag para rastreio ou incluir algum dado para tratativa da resposta, é necessário cadastrar um campo customizado antes de utilizar esse recurso",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "tags": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    },
                                                    "example": [
                                                        "Confirmação de agenda",
                                                        "Consulta"
                                                    ],
                                                    "description": "Tags para adicionar ao atendimento, útil para rastreio e relatórios"
                                                },
                                                "{identificador_do_campo}": {
                                                    "type": "string",
                                                    "example": "Confirmação de agenda",
                                                    "description": "Campo customizado cadastrado no Omnichannel"
                                                }
                                            }
                                        },
                                        "example": [
                                            {
                                                "tags": [
                                                    "Confirmação de agenda",
                                                    "Consulta"
                                                ]
                                            },
                                            {
                                                "id_agendamento": "123456789"
                                            }
                                        ]
                                    },
                                    "criarSala": {
                                        "type": "boolean",
                                        "example": true,
                                        "description": "Parâmetro para habilitar a criação de uma sala no Omnichannel"
                                    },
                                    "document": {
                                        "type": "object",
                                        "description": "Configuração de um documento caso seja um template do tipo documento",
                                        "required": [
                                            "link",
                                            "filename"
                                        ],
                                        "properties": {
                                            "link": {
                                                "type": "string",
                                                "example": "https://www.africau.edu/images/default/sample.pdf",
                                                "description": "Link público da mídia"
                                            },
                                            "filename": {
                                                "type": "string",
                                                "example": "Manual de instruções",
                                                "description": "Nome da mídia"
                                            }
                                        }
                                    },
                                    "image": {
                                        "type": "object",
                                        "description": "Link de uma imagem caso seja um template que aceita imagens",
                                        "required": [
                                            "link",
                                            "filename"
                                        ],
                                        "properties": {
                                            "link": {
                                                "type": "string",
                                                "example": "https://www.africau.edu/images/default/sample.png",
                                                "description": "Link público da mídia"
                                            },
                                            "filename": {
                                                "type": "string",
                                                "example": "Sample",
                                                "description": "Nome da mídia"
                                            }
                                        }
                                    },
                                    "video": {
                                        "type": "object",
                                        "description": "Link de um vídeo caso seja um template que aceita vídeos",
                                        "required": [
                                            "link",
                                            "filename"
                                        ],
                                        "properties": {
                                            "link": {
                                                "type": "string",
                                                "example": "https://www.africau.edu/images/default/video.mp4",
                                                "description": "Link público da mídia"
                                            },
                                            "filename": {
                                                "type": "string",
                                                "example": "Sample",
                                                "description": "Nome da mídia"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Mensagem enviada com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "codAtendimento": {
                                            "type": "integer",
                                            "example": 2862
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Mensagem de saída posicionada para envio. Atendimento 2862 (Consultar logs do Omni)"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Erro ao realizar o envio, parâmetros ausentes, token inválido",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 500
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Token de cliente inválido."
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/status_envio_templates": {
            "post": {
                "summary": "Buscar status de envios",
                "description": "Essa rota tem como objetivo buscar o status de envios realizados para um contato",
                "tags": [
                    "Envio de templates"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador",
                                    "data"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "555421037000",
                                        "description": "Identificador do canal, número da conta da sua empresa no WhatsApp, somente números, com DDI e DDD"
                                    },
                                    "destino": {
                                        "type": "string",
                                        "example": "5554984086070",
                                        "description": "Telefone do contato de destino que recebeu a mensagem, deve ser formatado com DDI e DDD, somente números"
                                    },
                                    "atendimento": {
                                        "type": "string",
                                        "example": "2862",
                                        "description": "Identificador do atendimento, previamente recebido como resposta na API de enviar mensagem, não é obrigatório, e se passado retorna somente o objeto com os dados do atendimento"
                                    },
                                    "data": {
                                        "type": "string",
                                        "example": "2022-01-01",
                                        "description": "Filtro pela data de envio do template, é opcional apenas se você passar o campo 'atendimento'"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "templates": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "atendimento": {
                                                        "type": "integer",
                                                        "description": "Identificador do atendimento",
                                                        "example": 2862
                                                    },
                                                    "origem": {
                                                        "type": "string",
                                                        "description": "Número de telefone do contato que enviou a mensagem",
                                                        "example": "555421037000"
                                                    },
                                                    "destino": {
                                                        "type": "string",
                                                        "description": "Número de telefone do contato que recebeu a mensagem",
                                                        "example": "5554984086070"
                                                    },
                                                    "msg": {
                                                        "type": "string",
                                                        "description": "Mensagem enviada",
                                                        "example": "Olá Gabriel, tudo bem, você possui uma agenda para dia 20/05 as 14h, você confirma?"
                                                    },
                                                    "enviado": {
                                                        "type": "integer",
                                                        "description": "Status do envio, 1 para enviado, 0 para não enviado",
                                                        "example": 1
                                                    },
                                                    "entregue": {
                                                        "type": "integer",
                                                        "description": "Status da entrega, 1 para entregue, 0 para não entregue",
                                                        "example": 1
                                                    },
                                                    "lido": {
                                                        "type": "integer",
                                                        "description": "Status da leitura, 1 para lido, 0 para não lido",
                                                        "example": 1
                                                    },
                                                    "resposta": {
                                                        "type": "string",
                                                        "example": null
                                                    },
                                                    "criado_em": {
                                                        "type": "string",
                                                        "description": "Data de criação do atendimento",
                                                        "example": "2022-01-01 14:47:15.000000"
                                                    },
                                                    "atualizado_em": {
                                                        "type": "string",
                                                        "description": "Data de atualização do atendimento",
                                                        "example": "2022-01-01 14:47:15.000000"
                                                    },
                                                    "erro": {
                                                        "type": "string",
                                                        "description": "Mensagem de erro caso tenha ocorrido algum erro no envio",
                                                        "example": "(132000) O número de valores de parâmetros variáveis incluídos na solicitação não corresponde ao número de parâmetros variáveis definidos no modelo."
                                                    },
                                                    "codigo_erro": {
                                                        "type": "integer",
                                                        "description": "Código do erro na Meta caso tenha ocorrido algum erro no envio",
                                                        "example": 132000
                                                    }
                                                }
                                            }
                                        },
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "count": {
                                            "type": "integer",
                                            "example": 1
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Erro ao consultar envios de templates",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 401
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Parâmetros ausentes (identificador, data ou destino)"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/saldo": {
            "post": {
                "summary": "Consultar saldo da conta (WhatsApp)",
                "tags": [
                    "Consulta de saldo"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Contato"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "broker": {
                                            "type": "string",
                                            "example": "gupshup"
                                        },
                                        "saldo": {
                                            "type": "string",
                                            "example": "129.5652"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Falha ao passar estrutura inválida",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 401
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Configuração não encontrada"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/gettemplates": {
            "post": {
                "summary": "Buscar lista de templates",
                "tags": [
                    "Templates"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Contato. Pode ser passado uma String ou Array de identificadores"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "templates": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "broker": {
                                                        "type": "string",
                                                        "example": "360dialogcloudapi"
                                                    },
                                                    "id_broker": {
                                                        "type": "string",
                                                        "example": "teste_image"
                                                    },
                                                    "numero": {
                                                        "type": "string",
                                                        "example": "555430468153"
                                                    },
                                                    "titulo": {
                                                        "type": "string",
                                                        "example": "teste_image"
                                                    },
                                                    "msg": {
                                                        "type": "string",
                                                        "example": "Olá {{1}}, podemos conversar?"
                                                    },
                                                    "midia": {
                                                        "type": "string",
                                                        "example": true
                                                    },
                                                    "tipo_midia": {
                                                        "type": "string",
                                                        "example": "IMAGE"
                                                    },
                                                    "categoria": {
                                                        "type": "string",
                                                        "example": "MARKETING"
                                                    },
                                                    "status": {
                                                        "type": "string",
                                                        "example": "approved"
                                                    },
                                                    "language": {
                                                        "type": "string",
                                                        "example": "pt_BR"
                                                    }
                                                }
                                            }
                                        },
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "count": {
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "origem": {
                                            "type": "string",
                                            "example": "consulta"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/template/novo": {
            "post": {
                "summary": "Cadastrar template",
                "tags": [
                    "Templates"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador",
                                    "template"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Contato"
                                    },
                                    "template": {
                                        "type": "object",
                                        "required": [
                                            "name",
                                            "category",
                                            "allow_category_change",
                                            "components"
                                        ],
                                        "properties": {
                                            "name": {
                                                "type": "string",
                                                "example": "nome_template",
                                                "description": "Nome do Template que será criado"
                                            },
                                            "category": {
                                                "type": "string",
                                                "example": "UTILITY",
                                                "description": "Tipo de Template",
                                                "enum": [
                                                    "UTILITY",
                                                    "MARKETING",
                                                    "AUTHENTICATION"
                                                ]
                                            },
                                            "allow_category_change": {
                                                "type": "integer",
                                                "example": true,
                                                "description": "Permitir que o Meta altere a categoria se for necessário"
                                            },
                                            "language": {
                                                "type": "string",
                                                "example": "pt_BR",
                                                "description": "Idioma do template"
                                            },
                                            "components": {
                                                "type": "array",
                                                "items": {
                                                    "type": "object",
                                                    "properties": {
                                                        "type": {
                                                            "type": "string",
                                                            "description": "Tipo do Componente",
                                                            "enum": [
                                                                "HEADER",
                                                                "BODY",
                                                                "FOOTER",
                                                                "BUTTONS"
                                                            ]
                                                        },
                                                        "format": {
                                                            "type": "string",
                                                            "description": "Fomato do conteúdo do header",
                                                            "enum": [
                                                                "TEXT",
                                                                "IMAGE",
                                                                "VIDEO",
                                                                "DOCUMENT",
                                                                "LOCATION"
                                                            ]
                                                        },
                                                        "text": {
                                                            "type": "string",
                                                            "description": "Texto do componente"
                                                        },
                                                        "example": {
                                                            "type": "object",
                                                            "properties": {
                                                                "header_handle": {
                                                                    "type": "array",
                                                                    "items": {
                                                                        "type": "string",
                                                                        "description": "Exemplo de mídia"
                                                                    }
                                                                }
                                                            }
                                                        },
                                                        "buttons": {
                                                            "type": "array",
                                                            "items": {
                                                                "type": "object",
                                                                "properties": {
                                                                    "type": {
                                                                        "type": "string",
                                                                        "description": "Tipo de botão",
                                                                        "enum": [
                                                                            "URL",
                                                                            "PHONE_NUMBER",
                                                                            "QUICK_REPLY",
                                                                            "COPY_CODE"
                                                                        ]
                                                                    },
                                                                    "text": {
                                                                        "type": "string",
                                                                        "description": "Texto do botão"
                                                                    },
                                                                    "phone_number": {
                                                                        "type": "string",
                                                                        "description": "Caso utilizar o tipo PHONE_NUMBER, adicionar o número no qual será feita a ligação"
                                                                    },
                                                                    "url": {
                                                                        "type": "string",
                                                                        "description": "Caso utilizar o tipo URL deverá ser passado o caminho para o qual será redirecionado"
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    },
                                                    "required": [
                                                        "type",
                                                        "format"
                                                    ]
                                                },
                                                "example": [
                                                    {
                                                        "type": "HEADER",
                                                        "format": "IMAGE",
                                                        "example": {
                                                            "header_handle": [
                                                                "https://images.unsplash.com/photo-1579353977828-2a4eab540b9a?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Mnx8c2FtcGxlfGVufDB8fDB8fHww"
                                                            ]
                                                        }
                                                    },
                                                    {
                                                        "type": "BODY",
                                                        "format": "TEXT",
                                                        "text": "Olá {{1}}! Caso ainda precise de suporte utilize o botão abaixo.",
                                                        "example": {
                                                            "body_text": [
                                                                "Diego"
                                                            ]
                                                        }
                                                    },
                                                    {
                                                        "type": "FOOTER",
                                                        "format": "TEXT",
                                                        "text": "Convert Company 2024"
                                                    },
                                                    {
                                                        "type": "BUTTONS",
                                                        "buttons": [
                                                            {
                                                                "type": "PHONE_NUMBER",
                                                                "text": "Ligar",
                                                                "phone_number": "555430468153"
                                                            },
                                                            {
                                                                "type": "URL",
                                                                "text": "Suporte",
                                                                "url": "https://convert.movidesk.com"
                                                            }
                                                        ]
                                                    }
                                                ]
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Criação de template foi enfileirado com sucesso."
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Falha ao passar estrutura inválida",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 401
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Não foi passada a estrutura do template"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/template/remover": {
            "post": {
                "summary": "Deletar template",
                "tags": [
                    "Templates"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador",
                                    "templateName"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Contato"
                                    },
                                    "templateName": {
                                        "type": "string",
                                        "example": "nome_template",
                                        "description": "Nome do Template que será removido"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Remoção de template foi enfileirado com sucesso."
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Resposta caso houver algum erro",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 401
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Não foi possível encontrar a configuração do cliente para o Identificador passado."
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/template/utilidade": {
            "post": {
                "summary": "Buscar biblioteca de utilidade",
                "tags": [
                    "Templates"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Contato"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "templates": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "broker": {
                                                        "type": "string",
                                                        "example": "360dialogcloudapi"
                                                    },
                                                    "titulo": {
                                                        "type": "string",
                                                        "example": "teste_image"
                                                    },
                                                    "categoria": {
                                                        "type": "string",
                                                        "example": "MARKETING"
                                                    },
                                                    "language": {
                                                        "type": "string",
                                                        "example": "pt_BR"
                                                    },
                                                    "header": {
                                                        "type": "string",
                                                        "example": "pt_BR"
                                                    },
                                                    "body": {
                                                        "type": "string",
                                                        "example": "Olá {{1}}, podemos conversar?"
                                                    },
                                                    "buttons": {
                                                        "type": "array",
                                                        "description": "Botões do template pré-aprovado, e devem ser equivalentes ao original",
                                                        "items": {
                                                            "type": "object",
                                                            "properties": {
                                                                "type": {
                                                                    "type": "string",
                                                                    "description": "Tipo de botão",
                                                                    "enum": [
                                                                        "URL",
                                                                        "PHONE_NUMBER",
                                                                        "QUICK_REPLY",
                                                                        "COPY_CODE"
                                                                    ]
                                                                },
                                                                "text": {
                                                                    "type": "string",
                                                                    "description": "Texto do botão"
                                                                },
                                                                "phone_number": {
                                                                    "type": "string",
                                                                    "description": "Caso utilizar o tipo PHONE_NUMBER, adicionar o número no qual será feita a ligação"
                                                                },
                                                                "url": {
                                                                    "type": "string",
                                                                    "description": "Caso utilizar o tipo URL deverá ser passado o caminho para o qual será redirecionado"
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Resposta caso houver algum erro",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "templates": {
                                            "type": "integer",
                                            "example": 401
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Access Token de Cliente não autorizado, inválido ou expirado"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/template/utilidade/novo": {
            "post": {
                "summary": "Cadastrar da biblioteca de utilidade",
                "tags": [
                    "Templates"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador",
                                    "template_utilidade",
                                    "titulo"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Contato"
                                    },
                                    "template_utilidade": {
                                        "type": "string",
                                        "example": "account_creation_confirmation_3",
                                        "description": "Título do template de utilidade pré-aprovado"
                                    },
                                    "titulo": {
                                        "type": "string",
                                        "example": "confirmacao_criacao_conta",
                                        "description": "Novo título o qual ficará registrado no broker"
                                    },
                                    "buttons": {
                                        "type": "array",
                                        "description": "Botões do template pré-aprovado, e devem ser equivalentes ao original",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "type": {
                                                    "type": "string",
                                                    "description": "Tipo de botão",
                                                    "enum": [
                                                        "URL",
                                                        "PHONE_NUMBER",
                                                        "QUICK_REPLY",
                                                        "COPY_CODE"
                                                    ]
                                                },
                                                "text": {
                                                    "type": "string",
                                                    "description": "Texto do botão"
                                                },
                                                "phone_number": {
                                                    "type": "string",
                                                    "description": "Caso utilizar o tipo PHONE_NUMBER, adicionar o número no qual será feita a ligação"
                                                },
                                                "url": {
                                                    "type": "string",
                                                    "description": "Caso utilizar o tipo URL deverá ser passado o caminho para o qual será redirecionado"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso, exemplo do broker Gupshup",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "CRIAÇÃO de Utility Template Library do Gupshup (PARTNER) enviada com sucesso."
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Falha ao passar estrutura inválida",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 401
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Access Token de Cliente não autorizado, inválido ou expirado"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/blacklist/listar": {
            "post": {
                "summary": "Listar contatos bloqueados",
                "tags": [
                    "Blacklist"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "blacklist": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "example": [
                                                "555499999999",
                                                "555198898899"
                                            ]
                                        },
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "count": {
                                            "type": "integer",
                                            "example": 2
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Falha ao passar estrutura inválida",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 401
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "API Hub Token não foi passado."
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/blacklist/cadastrar": {
            "post": {
                "summary": "Bloquear um contato",
                "tags": [
                    "Blacklist"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "numero"
                                ],
                                "properties": {
                                    "numero": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Número do Contato"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "cliente_id": {
                                            "type": "integer",
                                            "example": 12
                                        },
                                        "numero": {
                                            "type": "string",
                                            "example": "555499999999"
                                        },
                                        "updated_at": {
                                            "type": "string",
                                            "example": "2024-01-19T19:44:04.000000Z"
                                        },
                                        "created_at": {
                                            "type": "string",
                                            "example": "2024-01-19T19:44:04.000000Z"
                                        },
                                        "id": {
                                            "type": "integer",
                                            "example": 2
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Resposta caso houver algum erro",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 401
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Número não foi passado."
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/blacklist/remover": {
            "post": {
                "summary": "Desbloquear um contato",
                "tags": [
                    "Blacklist"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "numero"
                                ],
                                "properties": {
                                    "numero": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Número do Contato"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "integer",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Número de telefone 5554999999999 removido da Blacklist."
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Resposta caso houver algum erro",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 401
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Número não foi passado."
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/webhook/listar": {
            "post": {
                "summary": "Listar webhooks do Broker",
                "tags": [
                    "Webhook"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Canal"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "webhook": {
                                            "type": "string",
                                            "example": "https://apihub.convert.app.br/webhook"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/webhook/config": {
            "post": {
                "summary": "Cadastrar webhook no Broker",
                "tags": [
                    "Webhook"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador",
                                    "url"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Canal"
                                    },
                                    "url": {
                                        "type": "string",
                                        "example": "https://apihub.convert.app.br/webhook",
                                        "description": "Webhook do canal"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Webhook setado com sucesso no 360 Dialog Cloud API."
                                        },
                                        "webhook": {
                                            "type": "string",
                                            "example": "https://apihub.convert.app.br/webhook"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/profile": {
            "post": {
                "summary": "Buscar dados do perfil",
                "tags": [
                    "Perfil da Conta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Canal"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "about": {
                                            "type": "string",
                                            "example": "Convert Company",
                                            "description": "Campo Sobre do Perfil"
                                        },
                                        "description": {
                                            "type": "string",
                                            "example": "Convert Company 2103-7000",
                                            "description": "Descrição do Perfil"
                                        },
                                        "address": {
                                            "type": "string",
                                            "example": "Av. Dr. Álvaro Severo de Miranda, 1106 - Sala 801 - Cidade Nova, Passo Fundo - RS",
                                            "description": "Endereço do Perfil"
                                        },
                                        "profile_email": {
                                            "type": "string",
                                            "example": "comercial@convertcompany.com.br",
                                            "description": "E-mail do Perfil"
                                        },
                                        "profile_picture": {
                                            "type": "string",
                                            "example": "https://media.licdn.com/dms/image/v2/C4D0BAQGQU0C9H3QViQ/company-logo_200_200/company-logo_200_200/0/1638819020860/convertcompany_logo?e=2147483647&v=beta&t=Nn94KxtZVYheT93cPJpcZkMNJwWtYtmoo_PuqWV1sYA",
                                            "description": "Imagem do Perfil"
                                        },
                                        "vertical": {
                                            "type": "string",
                                            "example": "OTHER",
                                            "description": "Categoria"
                                        },
                                        "websites": {
                                            "type": "string",
                                            "example": [
                                                "https://convertcompany.com.br",
                                                "https://convertcompany2.com.br"
                                            ],
                                            "description": "Sites do perfil. (Max. 2)"
                                        },
                                        "phone_status": {
                                            "type": "object",
                                            "properties": {
                                                "tier": {
                                                    "type": "string",
                                                    "example": "TIER_1K",
                                                    "description": "Tier no qual o perfil se enquadra"
                                                },
                                                "quality_rating": {
                                                    "type": "string",
                                                    "example": "GREEN",
                                                    "description": "Qualidade do perfil"
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/profile/update": {
            "post": {
                "summary": "Editar dados do perfil",
                "tags": [
                    "Perfil da Conta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador",
                                    "params"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Canal"
                                    },
                                    "params": {
                                        "type": "object",
                                        "properties": {
                                            "about": {
                                                "type": "string",
                                                "example": "Convert Company",
                                                "description": "Campo Sobre do Perfil"
                                            },
                                            "description": {
                                                "type": "string",
                                                "example": "Convert Company 2103-7000",
                                                "description": "Descrição do Perfil"
                                            },
                                            "address": {
                                                "type": "string",
                                                "example": "Av. Dr. Álvaro Severo de Miranda, 1106 - Sala 801 - Cidade Nova, Passo Fundo - RS",
                                                "description": "Endereço do Perfil"
                                            },
                                            "profile_email": {
                                                "type": "string",
                                                "example": "diego@convertcompany.com.br",
                                                "description": "E-mail do Perfil"
                                            },
                                            "profile_picture": {
                                                "type": "string",
                                                "example": "https://media.licdn.com/dms/image/v2/C4D0BAQGQU0C9H3QViQ/company-logo_200_200/company-logo_200_200/0/1638819020860/convertcompany_logo?e=2147483647&v=beta&t=Nn94KxtZVYheT93cPJpcZkMNJwWtYtmoo_PuqWV1sYA",
                                                "description": "Imagem do Perfil"
                                            },
                                            "vertical": {
                                                "type": "string",
                                                "example": "OTHER",
                                                "description": "Categoria",
                                                "enum": [
                                                    "UNDEFINED",
                                                    "OTHER",
                                                    "AUTO",
                                                    "BEAUTY",
                                                    "APPAREL",
                                                    "EDU",
                                                    "ENTERTAIN",
                                                    "EVENT_PLAN",
                                                    "FINANCE",
                                                    "GROCERY",
                                                    "GOVT",
                                                    "HOTEL",
                                                    "HEALTH",
                                                    "NONPROFIT",
                                                    "PROF_SERVICES",
                                                    "RETAIL",
                                                    "TRAVEL",
                                                    "RESTAURANT",
                                                    "NOT_A_BIZ"
                                                ]
                                            },
                                            "websites": {
                                                "type": "string",
                                                "example": [
                                                    "https://convertcompany.com.br",
                                                    "https://convertcompany2.com.br"
                                                ],
                                                "description": "Sites do perfil. (Array de Strings, Max. 2)"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Webhook setado com sucesso no 360 Dialog Cloud API."
                                        },
                                        "webhook": {
                                            "type": "string",
                                            "example": "https://apihub.convert.app.br/webhook"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/omni/token/refresh": {
            "post": {
                "summary": "Renovar token",
                "tags": [
                    "Autenticação"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "identificador"
                                ],
                                "properties": {
                                    "identificador": {
                                        "type": "string",
                                        "example": "5554999999999",
                                        "description": "Identificador do Canal"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Resposta se a requisição for feita com sucesso",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 200,
                                            "description": "Status da requisição"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Token do Instagram renovado com sucesso.",
                                            "description": "Mensagem de Resposta"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Resposta se a requisição for feita com falha",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "integer",
                                            "example": 401,
                                            "description": "Status da requisição"
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "Falha ao renovar o token do Instagram.",
                                            "description": "Mensagem de Resposta"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}