openapi: 3.0.0
info:
  title: Postman v3
  version: 1.0.0
  description: Postman v3
servers:
  - url: backend_url_here
paths:
  /v2/api/external/{ApiID}/params/:
    get:
      summary: SendMessageParams
      parameters:
        - name: body
          in: query
          required: false
          description: Texto da mensagem que será enviada
          deprecated: false
          schema: {}
          example: A%20mensagem%20desejadaa
        - name: number
          in: query
          required: false
          description: 'Número do WhatsApp do destinatário (formato: 5511999999999)'
          deprecated: false
          schema: {}
          example: '5515998566622'
        - name: externalKey
          in: query
          required: false
          description: >-
            Chave única do sistema para identificação (valor gerado do seu lado
            para controle do envio)
          deprecated: false
          schema: {}
          example: '{{SecretKey}}'
        - name: bearertoken
          in: query
          required: false
          description: Token de autenticação
          deprecated: false
          schema: {}
          example: '{{BearerToken}}'
        - name: isClosed
          in: query
          required: false
          description: Define se o ticket será fechado após o envio
          deprecated: false
          schema: {}
          example: 'false'
      responses: {}
      tags:
        - 📨 Mensagens
      requestBody:
        content:
          application/json:
            schema:
              type: object
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}:
    post:
      summary: SendMessageAPIText
      responses: {}
      tags:
        - 📨 Mensagens
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Texto da mensagem que será enviada
                  "body": "A mensagem desejada",
                  
                  // Número do WhatsApp do destinatário (formato: 5511999999999)
                  "number": "5515998566622",
                  
                  // Chave única do sistema para identificação (valor gerado do seu lado para controle do envio)
                  "externalKey": "unique_id",
                  
                  // Define se o ticket será fechado após o envio
                  "isClosed": false
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/url:
    post:
      summary: SendMessageAPIFileURL
      responses: {}
      tags:
        - 📨 Mensagens
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: "{\r\n    // URL do arquivo que será enviado (imagem, documento, etc)\r\n    \"mediaUrl\": \"https://comunidadezdg.com.br/wp-content/uploads/2022/07/icon100.png\",\r\n    \r\n    // Texto da mensagem que acompanhará o arquivo\r\n    \"body\": \"A mensagem desejada\",\r\n    \r\n    // Número do WhatsApp do destinatário (formato: 5511999999999)\r\n    \"number\": \"5515998566622\",\r\n    \r\n    // Chave única do sistema para identificação (valor gerado do seu lado para controle do envio)\r\n    \"externalKey\": \"unique_id\",\r\n    \r\n    // Define se o ticket será fechado após o envio\r\n    \"isClosed\": false\r\n}"
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/voice:
    post:
      summary: SendMessageAPIVoice
      responses: {}
      tags:
        - 📨 Mensagens
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // URL do arquivo de áudio que será enviado
                  "audio": "https://comunidadezdg.com.br/wp-content/uploads/2022/12/audio.ogg",
                  
                  // Número do WhatsApp do destinatário (formato: 5511999999999)
                  "number": "5515998566622",
                  
                  // Chave única do sistema para identificação (valor gerado do seu lado para controle do envio)
                  "externalKey": "unique_id",
                  
                  // Define se o ticket será fechado após o envio
                  "isClosed": false
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/base64:
    post:
      summary: SendMessageAPITextBase64
      responses: {}
      tags:
        - 📨 Mensagens
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Texto da mensagem que acompanhará o arquivo
                  "body": "A mensagem desejada",
                  
                  // Número do WhatsApp do destinatário (formato: 5511999999999)
                  "number": "5515998566622",
                  
                  // Arquivo codificado em base64
                  "base64Data": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==",
                  
                  // Tipo MIME do arquivo (ex: image/png, application/pdf)
                  "mimeType": "image/png",
                  
                  // Nome do arquivo que será exibido
                  "fileName": "exemplo_imagem",
                  
                  // Define se o ticket será fechado após o envio
                  "isClosed": false
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/group:
    post:
      summary: SendGroupMessageAPIText
      responses: {}
      tags:
        - 👥 Mensagens em Grupo
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Texto da mensagem que será enviada
                  "body": "A mensagem desejada",
                  
                  // ID do grupo do WhatsApp
                  "number": "12356818915189153",
                  
                  // Chave única do sistema para identificação (valor gerado do seu lado para controle do envio)
                  "externalKey": "unique_id",
                  
                  // Define se o ticket será fechado após o envio
                  "isClosed": false
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/groupMediaUrl:
    post:
      summary: SendMessageAPIFileURLGroup
      responses: {}
      tags:
        - 👥 Mensagens em Grupo
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: "{\r\n    // URL do arquivo que será enviado (imagem, documento, etc)\r\n    \"mediaUrl\": \"https://comunidadezdg.com.br/wp-content/uploads/2022/07/icon100.png\",\r\n    \r\n    // Texto da mensagem que acompanhará o arquivo\r\n    \"body\": \"A mensagem desejada\",\r\n    \r\n    // ID do grupo do WhatsApp\r\n    \"number\": \"12356818915189153\",\r\n    \r\n    // Chave única do sistema para identificação (valor gerado do seu lado para controle do envio)\r\n    \"externalKey\": \"unique_id\",\r\n    \r\n    // Define se o ticket será fechado após o envio\r\n    \"isClosed\": false\r\n}"
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/template:
    post:
      summary: SendTemplateWaba
      responses: {}
      tags:
        - 📋 Templates WABA
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: "{\r\n    // Número do WhatsApp do destinatário (formato: 5511999999999)\r\n    \"number\": \"5515998566622\",\r\n    \r\n    // Define se o ticket será fechado após o envio\r\n    \"isClosed\": false,\r\n    \r\n    // Dados do template do WhatsApp Business API\r\n    \"templateData\": {\r\n        // Produto de mensageria (sempre whatsapp)\r\n        \"messaging_product\": \"whatsapp\",\r\n        \r\n        // Número do destinatário (mesmo do campo number)\r\n        \"to\": \"5515998566622\",\r\n        \r\n        // Tipo da mensagem (sempre template)\r\n        \"type\": \"template\",\r\n        \r\n        // Configurações do template\r\n        \"template\": {\r\n            // Nome do template aprovado\r\n            \"name\": \"hello_world\",\r\n            \r\n            // Configurações de idioma\r\n            \"language\": {\r\n                // Código do idioma (ex: en_US, pt_BR)\r\n                \"code\": \"en_US\"\r\n            }\r\n        }\r\n    }\r\n}"
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/templateBody:
    post:
      summary: SendTemplateWabaBody
      responses: {}
      tags:
        - 📋 Templates WABA
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: "{\r\n    // Número do WhatsApp do destinatário (formato: 5511999999999)\r\n    \"number\": \"5515998566622\",\r\n    \r\n    // Define se o ticket será fechado após o envio\r\n    \"isClosed\": false,\r\n    \r\n    // Dados do template do WhatsApp Business API\r\n    \"templateData\": {\r\n        // Produto de mensageria (sempre whatsapp)\r\n        \"messaging_product\": \"whatsapp\",\r\n        \r\n        // Número do destinatário (mesmo do campo number)\r\n        \"to\": \"5515998566622\",\r\n        \r\n        // Tipo da mensagem (sempre template)\r\n        \"type\": \"template\",\r\n        \r\n        // Configurações do template\r\n        \"template\": {\r\n            // Nome do template aprovado\r\n            \"name\": \"hello_world\",\r\n            \r\n            // Configurações de idioma\r\n            \"language\": {\r\n                // Código do idioma (ex: en_US, pt_BR)\r\n                \"code\": \"en_US\"\r\n            }\r\n        }\r\n    }\r\n}"
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/templateMarketingBody:
    post:
      summary: SendTemplateWabaMarketing
      responses: {}
      tags:
        - 📋 Templates WABA
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: "{\r\n    // Número do WhatsApp do destinatário (formato: 5511999999999)\r\n    \"number\": \"5515998566622\",\r\n    \r\n    // Define se o ticket será fechado após o envio\r\n    \"isClosed\": false,\r\n    \r\n    // Dados do template do WhatsApp Business API\r\n    \"templateData\": {\r\n        // Produto de mensageria (sempre whatsapp)\r\n        \"messaging_product\": \"whatsapp\",\r\n        \r\n        // Número do destinatário (mesmo do campo number)\r\n        \"to\": \"5515998566622\",\r\n        \r\n        // Tipo da mensagem (sempre template)\r\n        \"type\": \"template\",\r\n        \r\n        // Configurações do template\r\n        \"template\": {\r\n            // Nome do template aprovado\r\n            \"name\": \"hello_world\",\r\n            \r\n            // Configurações de idioma\r\n            \"language\": {\r\n                // Código do idioma (ex: en_US, pt_BR)\r\n                \"code\": \"en_US\"\r\n            }\r\n        }\r\n    }\r\n}"
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/sendButtonWABA:
    post:
      summary: SendButtonWABA
      responses: {}
      tags:
        - 🔘 WABA Interativo
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Número do WhatsApp do destinatário (formato: 5511999999999)
                  "number": "5515998566622",
                  
                  // Mensagem que acompanhará os botões
                  "message": "Escolha uma opção:",
                  
                  // Texto do primeiro botão
                  "button1": "Opção 1",
                  
                  // Texto do segundo botão
                  "button2": "Opção 2",
                  
                  // Texto do terceiro botão (opcional)
                  "button3": "Opção 3",
                  
                  // ID do ticket 
                  "ticketId": 1262
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/sendListWABA:
    post:
      summary: SendListWABA
      responses: {}
      tags:
        - 🔘 WABA Interativo
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Número do WhatsApp do destinatário (formato: 5511999999999)
                  "number": "5515998566622",
                  
                  // Cabeçalho da lista
                  "header": "Menu Principal",
                  
                  // Corpo da lista
                  "body": "Escolha uma opção da lista:",
                  
                  // Rodapé da lista
                  "footer": "Selecione uma opção",
                  
                  // Texto do botão
                  "button_text": "Ver opções",
                  
                  // Seções da lista (array de objetos)
                  "sections": [
                      {
                          "title": "Seção 1",
                          "rows": [
                              {
                                  "id": "1",
                                  "title": "Opção 1",
                                  "description": "Descrição da opção 1"
                              },
                              {
                                  "id": "2",
                                  "title": "Opção 2",
                                  "description": "Descrição da opção 2"
                              }
                          ]
                      }
                  ],
                  
                  // ID do ticket
                  "ticketId": 1262
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/createContact:
    post:
      summary: CreateContact
      responses: {}
      tags:
        - 👤 Contatos
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Nome completo do contato
                  "name": "Nome", 
                  
                  // Número do WhatsApp (formato: 5511999999999)
                  "number": "5515998566622", 
                  
                  // Email do contato
                  "email": "contato@email.com",
                  
                  // CPF do contato (formato: 000.000.000-00)
                  "cpf": "012.345.678.91",
                  
                  // Primeiro nome do contato
                  "firstName": "Nome Principal",
                  
                  // Sobrenome do contato
                  "lastName": "Sobrenome",
                  
                  // Nome da empresa do contato
                  "businessName": "Empresa",
                  
                  // Data de nascimento (formato: DD/MM/AAAA)
                  "birthdayDate": "01/01/1990",
                  
                  // Chave única do sistema para identificação (valor gerado do seu lado para controle do envio)
                  "externalKey": "unique_id"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/showcontact:
    post:
      summary: ShowContact
      responses: {}
      tags:
        - 👤 Contatos
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Número do WhatsApp do contato (formato: 5511999999999)
                  "number": "5515998566622"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updateContact:
    post:
      summary: UpdateContact
      responses: {}
      tags:
        - 👤 Contatos
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Nome completo do contato
                  "name": "Nome", 
                  
                  // Número do WhatsApp (formato: 5511999999999)
                  "number": "5515998566622", 
                  
                  // Email do contato
                  "email": "contato@email.com",
                  
                  // CPF do contato (formato: 000.000.000-00)
                  "cpf": "012.345.678.91",
                  
                  // Primeiro nome do contato
                  "firstName": "Nome Principal",
                  
                  // Sobrenome do contato
                  "lastName": "Sobrenome",
                  
                  // Nome da empresa do contato
                  "businessName": "Empresa",
                  
                  // Data de nascimento (formato: DD/MM/AAAA)
                  "birthdayDate": "01/01/1990",
                  
                  // ID do kanban do contato
                  "kanban": 2,
                  
                  // Chave única do sistema para identificação (valor gerado do seu lado para controle do envio e não pode se repetir)
                  "externalKey": "ID_UNICA_DO_SISTEMA_CLIENTE_PARA_EXECUTAR_UMA_ACAO_COM_WEBHOOK"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/blockContact:
    post:
      summary: BlockContact
      responses: {}
      tags:
        - 👤 Contatos
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do contato que será bloqueado/desbloqueado
                  "contactId": 1,
                  
                  // true para bloquear, false para desbloquear
                  "blocked": true
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/contacts/search:
    post:
      summary: SearchContacts
      responses: {}
      tags:
        - 👤 Contatos
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Parâmetro de busca textual (opcional) - busca em nome, número, CPF, etc
                  "searchParam": "",
                  
                  // Número da página (padrão: 1)
                  "page": 1,
                  
                  // Limite de resultados por página (padrão: 40)
                  "limit": 40,
                  
                  // ID de uma tag para filtrar (opcional)
                  "tagId": 1,
                  
                  // OU array de IDs de tags para filtrar por múltiplas tags (opcional)
                  // "tagIds": [1, 2, 3],
                  
                  // ID da wallet para filtrar (opcional)
                  // "walletId": 1,
                  
                  // Filtrar por contatos bloqueados (opcional: true/false)
                  // "blocked": false
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updateContactKanban:
    post:
      summary: UpdateContactKanban
      responses: {}
      tags:
        - 👤 Contatos
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do contato que terá o kanban (carteira) alterado
                  "contactId": 1,
                  
                  // ID do kanban (carteira) que será atribuído ao contato
                  "kanban": 2
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updateContactWallet:
    post:
      summary: UpdateContactWallet
      responses: {}
      tags:
        - 👤 Contatos
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do contato que será carteirizado
                  "contactId": 1,
                  
                  // ID da wallet que será atribuída ao contato (pode usar walletId ou walletIds)
                  "walletId": 2,
                  
                  // OU array de IDs de wallets para atribuir múltiplas wallets de uma vez
                  // "walletIds": [1, 2, 3]
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/getContactExtraInfo:
    get:
      summary: GetContactExtraInfo
      parameters:
        - name: contactId
          in: query
          description: ID do contato
          schema:
            type: integer
          example: '1'
      responses: {}
      tags:
        - 👤 Contatos
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updateContactExtraInfo:
    post:
      summary: UpdateContactExtraInfo
      responses: {}
      tags:
        - 👤 Contatos
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do contato que terá as informações adicionais atualizadas
                  "contactId": 1,
                  
                  // Array de campos personalizados (extraInfo)
                  "extraInfo": [
                      {
                          "name": "Campo Personalizado 1",
                          "value": "Valor do campo 1"
                      },
                      {
                          "name": "Campo Personalizado 2",
                          "value": "Valor do campo 2"
                      }
                  ]
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/createTicket:
    post:
      summary: CreateTicket
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Texto da mensagem inicial do ticket
                  "body": "A mensagem desejada",
                  
                  // Número do WhatsApp do contato (formato: 5511999999999)
                  "number": "5535988754197",
                  
                  // Chave única do sistema para identificação (valor gerado do seu lado para controle do envio)
                  "externalKey": "unique_id",
                  
                  // ID do usuário que está criando o ticket
                  "userId": 3,
                  
                  // Status inicial do ticket (pending ou open)
                  "status": "pending",
                  
                  // ID do kanban (opcional)
                  // "kanbanId": 1,
                  
                  // ID do fluxo de chat (opcional)
                  // "chatFlowId": 16,
                  
                  // ID da fila (opcional)
                  // "queueId": 1,
                  
                  // ID da demanda (opcional)
                  // "reasonId": 1,
                  
                  // Valor do ticket (opcional)
                  // "value": 10.25
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updatequeue:
    post:
      summary: SetQueue
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do ticket que terá a fila alterada
                  "ticketId": 4,
                  
                  // ID da fila que será atribuída ao ticket
                  "queueId": 1
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updatetag:
    post:
      summary: SetTag
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do ticket que terá a tag alterada
                  "ticketId": 4,
                  
                  // ID da tag que será atribuída ao ticket
                  "tag": 1
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updateticketinfo:
    post:
      summary: SetTicketInfo
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do ticket que será atualizado
                  "ticketId": 1262,
                  
                  // ID do usuário que está fazendo a atualização
                  "userId": 1,
                  
                  // Status do ticket (pending, open, closed)
                  "status": "pending",
                  
                  // ID da fila do ticket (null para remover)
                  "queueId": null,
                  
                  // Status de integração com Typebot
                  "typebotStatus": false,
                  
                  // Status de integração com ChatGPT
                  "chatgptStatus": false,
                  
                  // Status de integração com Dialogflow
                  "dialogflowStatus": false,
                  
                  // Status de integração com Dify
                  "difyStatus": false,
                  
                  // Status de integração com N8N
                  "n8nStatus": false,
                  
                  // ID do fluxo de chat (null para remover)
                  "chatFlowId": null
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/showticket:
    post:
      summary: ShowTicketInformation
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Número do WhatsApp do contato (formato: 5511999999999)
                  "number": "5515998566622"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/showticketchatbot:
    post:
      summary: ShowTicketInformationChatBot
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Número do WhatsApp do contato (formato: 5511999999999)
                  "number": "5515998566622"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/showallticket:
    post:
      summary: ShowAllTicketInformation
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Número do WhatsApp do contato (formato: 5511999999999)
                  "number": "5515998566622"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/showAllMessages:
    post:
      summary: ShowAllMessages
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do ticket que terá as mensagens listadas
                  "ticket": "123"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updateTicketChannel:
    post:
      summary: UpdateTicketChannel
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do ticket que terá o canal alterado
                  "ticketId": 1262,
                  
                  // ID do novo canal (WhatsApp)
                  "whatsappId": 1,
                  
                  // Tipo do canal (whatsapp, baileys, waba, etc)
                  "channel": "whatsapp"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/createNotes:
    post:
      summary: CreateNotes
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Texto da nota que será adicionada ao ticket
                  "notes": "Mensagem da nota", 
                  
                  // ID do ticket que receberá a nota
                  "ticketId": 1262, 
                  
                  // ID do usuário que está criando a nota
                  "userId": 1,
                  
                  // Chave única do sistema para identificação (valor gerado do seu lado para controle do envio e não pode se repetir)
                  "idFront": "ID_UNICA_DO_SISTEMA_CLIENTE_PARA_EXECUTAR_UMA_ACAO_COM_WEBHOOK"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updateNote:
    post:
      summary: UpdateNote
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID da nota que será atualizada
                  "noteId": 1,
                  
                  // Novo conteúdo da nota
                  "notes": "Conteúdo atualizado da nota"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/listNotes:
    get:
      summary: ListNotes
      parameters:
        - name: ticketId
          in: query
          description: ID do ticket
          schema:
            type: integer
          example: '1262'
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/addTag:
    post:
      summary: AddTag
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do ticket que receberá a tag
                  "ticketId": 4,
                  
                  // ID da tag que será adicionada (pode usar tagId ou tagIds)
                  "tagId": 1,
                  
                  // OU array de IDs de tags para adicionar múltiplas tags de uma vez
                  // "tagIds": [1, 2, 3]
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/removeTag:
    post:
      summary: RemoveTag
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do ticket que terá a tag removida
                  "ticketId": 4,
                  
                  // ID da tag que será removida (pode usar tagId ou tagIds)
                  "tagId": 1,
                  
                  // OU array de IDs de tags para remover múltiplas tags de uma vez
                  // "tagIds": [1, 2, 3]
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/sendPresence:
    post:
      summary: SendPresence
      responses: {}
      tags:
        - 🎫 Tickets
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do ticket associado
                  "ticketId": 1262,
                  
                  // Estado de presence: "typing" (digitando), "paused" (pausado) ou "recording" (gravando)
                  "state": "typing"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/createOpportunity:
    post:
      summary: CreateOpportunity
      responses: {}
      tags:
        - 💼 Oportunidades
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                // Campos do contato
                "number": "5535912345678",  // número do WhatsApp
                "contactName": "Nome do Contato",   // nome do contato
                "email": "contato@email.com", // email do contato

                // Campos da oportunidade
                "name": "Nome da Oportunidade 2", // nome da oportunidade
                "value": 10000.00,              // valor da oportunidade
                "status": "open",              // pode ser: "open", "win", "lose"
                "pipelineId": 16,               // ID do pipeline
                "stageId": 7,                  // ID do estágio
                "responsibleId": 1,            // ID do responsável
                "closingForecast": "2024-12-31", // data esperada de fechamento
                "description": "Descrição da oportunidade" // descrição da oportunidade
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/deleteOpportunity:
    post:
      summary: DeleteOpportunity
      responses: {}
      tags:
        - 💼 Oportunidades
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                // Campos da oportunidade
                "opportunityId": 19 // id da oportunidade
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updateOpportunity:
    post:
      summary: UpdateOpportunity
      responses: {}
      tags:
        - 💼 Oportunidades
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                // Campos da oportunidade
                "opportunityId": 30, // id da oportunidade
                "name": "Nome da Oportunidade 2 API", // nome da oportunidade
                "value": 500.00,              // valor da oportunidade
                "status": "open",              // pode ser: "open", "win", "lose"
                "pipelineId": 16,               // ID do pipeline
                "stageId": 7,                  // ID do estágio
                "responsibleId": 1,            // ID do responsável
                "closingForecast": "2024-12-31", // data esperada de fechamento
                "description": "Descrição da oportunidade" // descrição da oportunidade
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/createUser:
    post:
      summary: CreateUser
      responses: {}
      tags:
        - 👥 Usuários
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Email do usuário
                  "email": "usuario@example.com",
                  
                  // Senha do usuário (mínimo 8 caracteres)
                  "password": "senha123",
                  
                  // Nome completo do usuário
                  "name": "Nome do Usuário",
                  
                  // Perfil do usuário (admin, user)
                  "profile": "user"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/updateUser:
    post:
      summary: UpdateUser
      responses: {}
      tags:
        - 👥 Usuários
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do usuário que será atualizado
                  "userId": 1,
                  
                  // Nome completo do usuário (opcional)
                  "name": "Nome Atualizado",
                  
                  // Email do usuário (opcional)
                  "email": "novoemail@example.com"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/listUsers:
    get:
      summary: ListUsers
      parameters:
        - name: pageNumber
          in: query
          description: Número da página
          schema:
            type: integer
          example: '1'
        - name: searchParam
          in: query
          description: Parâmetro de busca (opcional)
          schema:
            type: string
      responses: {}
      tags:
        - 👥 Usuários
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/getUserStatus:
    get:
      summary: GetUserStatus
      parameters:
        - name: userId
          in: query
          description: ID do usuário
          schema:
            type: integer
          example: '1'
      responses: {}
      tags:
        - 👥 Usuários
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/listChannels:
    get:
      summary: ListChannels
      responses: {}
      tags:
        - 📊 Listagens
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/listSessions:
    get:
      summary: ListSessions
      responses: {}
      tags:
        - 📊 Listagens
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/listTickets:
    get:
      summary: ListTickets
      parameters:
        - name: pageNumber
          in: query
          description: Número da página
          schema:
            type: integer
          example: '1'
        - name: status
          in: query
          description: Status do ticket (open, pending, closed)
          schema:
            type: string
          example: open
        - name: searchParam
          in: query
          description: Parâmetro de busca (opcional)
          schema:
            type: string
        - name: queuesIds
          in: query
          description: IDs das filas (opcional)
          schema:
            type: string
        - name: whatsappIds
          in: query
          description: IDs dos canais (opcional)
          schema:
            type: string
      responses: {}
      tags:
        - 📊 Listagens
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/listOpportunities:
    get:
      summary: ListOpportunities
      parameters:
        - name: page
          in: query
          description: Número da página
          schema:
            type: integer
          example: '1'
        - name: limit
          in: query
          description: Limite de resultados por página
          schema:
            type: integer
          example: '40'
        - name: status
          in: query
          description: Status da oportunidade (opcional)
          schema:
            type: string
        - name: pipelineId
          in: query
          description: ID do pipeline (opcional)
          schema:
            type: string
      responses: {}
      tags:
        - 📊 Listagens
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/listContacts:
    get:
      summary: ListContacts
      parameters:
        - name: pageNumber
          in: query
          description: Número da página
          schema:
            type: integer
          example: '1'
        - name: searchParam
          in: query
          description: Parâmetro de busca (opcional)
          schema:
            type: string
        - name: walletId
          in: query
          description: ID da wallet (opcional)
          schema:
            type: string
        - name: tagId
          in: query
          description: ID da tag (opcional)
          schema:
            type: string
      responses: {}
      tags:
        - 📊 Listagens
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/listTags:
    get:
      summary: ListTags
      parameters:
        - name: isActive
          in: query
          description: Filtrar por tags ativas (true/false)
          schema:
            type: boolean
          example: 'true'
      responses: {}
      tags:
        - 📊 Listagens
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/listQueues:
    get:
      summary: ListQueues
      responses: {}
      tags:
        - 📊 Listagens
      security:
        - BearerAuth: []
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/showChannel:
    post:
      summary: ShowChannelInformation
      responses: {}
      tags:
        - 🔌 Canais e Sessões
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Número do WhatsApp do canal (formato: 5511999999999)
                  "number": "5515998566622"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/showChannelById:
    post:
      summary: ShowChannelInformationById
      responses: {}
      tags:
        - 🔌 Canais e Sessões
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do canal que será consultado
                  "id": 43
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/listGroupInfo:
    post:
      summary: ListGroupsInfo
      responses: {}
      tags:
        - 🔌 Canais e Sessões
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  //lista todos os grupos
                  "listGroups": true, 
                  
                  //lista todos os grupos e adiciona o array de participantes
                  "listParticipants": true 

                  // opicional (lista dados de um grupo específico ex: idDoGrupo@g.us)
                  // "groupId": "46211553263266@g.us" 
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/createtSession:
    post:
      summary: CreateSession
      responses: {}
      tags:
        - 🔌 Canais e Sessões
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Nome da instância do WhatsApp
                  "name": "My WhatsApp Instance",
                  
                  // Status inicial da sessão (DISCONNECTED, CONNECTED)
                  "status": "DISCONNECTED",
                  
                  // Tipo da sessão
                  "type": "baileys"
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/deleteSession:
    post:
      summary: DeleteSession
      responses: {}
      tags:
        - 🔌 Canais e Sessões
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID da sessão do WhatsApp que será deletada
                  "whatsappId": 1
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/startSession:
    post:
      summary: StartSession
      responses: {}
      tags:
        - 🔌 Canais e Sessões
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID da sessão do WhatsApp que será iniciada
                  "whatsappId": 1
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /v2/api/external/{ApiID}/qrCodeSession:
    post:
      summary: ShowQrCode
      responses: {}
      tags:
        - 🔌 Canais e Sessões
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID da sessão do WhatsApp que terá o QR Code gerado
                  "whatsappId": 1
              }
    parameters:
      - name: ApiID
        in: path
        required: true
        schema:
          type: string
        example: your_api_id_here
  /tenantCreateApi:
    post:
      summary: CreateApi
      responses: {}
      tags:
        - 🏢 Tenant API
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Nome da API que será criada
                  "name": "API 1",
                  
                  // ID da sessão do WhatsApp associada
                  "sessionId": 1,
                  
                  // URL para receber atualizações de status do serviço (opcional)
                  "urlServiceStatus": null,
                  
                  // URL para receber atualizações de status das mensagens (opcional)
                  "urlMessageStatus": null,
                  
                  // ID do usuário que está criando a API
                  "userId": 1,
                  
                  // Token de autenticação para a API
                  "authToken": "123456",
                  
                  // ID do tenant que terá a API
                  "tenant": 1
              }
  /tenantDeleteApi:
    post:
      summary: DeleteApi
      responses: {}
      tags:
        - 🏢 Tenant API
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID da sessão do WhatsApp associada à API
                  "sessionId": 43,
                  
                  // ID do usuário que está deletando a API
                  "userId": 1,
                  
                  // ID do tenant que possui a API
                  "tenant": 1,
                  
                  // ID da API que será deletada
                  "apiId": "5ec32c80-4549-4256-8ed1-ed57b86396c3"
              }
  /tenantApiStoreTenant:
    post:
      summary: StoreTenant
      responses: {}
      tags:
        - 🏢 Tenant API
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Status do tenant (active, inactive)
                  "status": "active",
                  
                  // Nome da empresa/tenant
                  "name": "Empresa Exemplo",
                  
                  // Número máximo de usuários permitidos
                  "maxUsers": 3,
                  
                  // Número máximo de conexões WhatsApp permitidas
                  "maxConnections": 3,
                  
                  // Confirmação de aceite dos termos
                  "acceptTerms": true,
                  
                  // Email do administrador do tenant
                  "email": "user@example.com",
                  
                  // Senha do administrador (mínimo 8 caracteres, incluindo números e caracteres especiais)
                  "password": "securePassword123!",
                  
                  // Nome completo do administrador
                  "userName": "Pedro Bastos",
                  
                  // Perfil do administrador (admin, user)
                  "profile": "admin"
              }
  /tenantApiCreateSession:
    post:
      summary: CreateSessionTenant
      responses: {}
      tags:
        - 🏢 Tenant API
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Tenant
                  "tenant": 1,

                  // Nome da instância do WhatsApp
                  "name": "My WhatsApp Instance",
                  
                  // Status inicial da sessão (DISCONNECTED, CONNECTED)
                  "status": "DISCONNECTED",
                  
                  // Tipo da sessão (whatsapp, baileys, meow, evo, uazapi, zapi)
                  "type": "baileys"
              }
  /tenantApiShowTenant:
    post:
      summary: ShowTenant
      responses: {}
      tags:
        - 🏢 Tenant API
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // ID do tenant que será consultado
                  "id": 1
              }
  /tenantApiUpdateTenant:
    post:
      summary: UpdateTenant
      responses: {}
      tags:
        - 🏢 Tenant API
      security:
        - BearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
            example: |-
              {
                  // Status do tenant (active, inactive)
                  "status": "active",
                  
                  // Identidade do tenant (CPF/CNPJ) - indentificador usado para reconhecer qual tenant será atualizado
                  "identity": "07122989674",
                  
                  // Número máximo de usuários permitidos
                  "maxUsers": 100,
                  
                  // Número máximo de conexões WhatsApp permitidas
                  "maxConnections": 10
              }
  /tenantApiListTenants:
    get:
      summary: ListTenants
      responses: {}
      tags:
        - 🏢 Tenant API
      security:
        - BearerAuth: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
security:
  - BearerAuth: []
