Referência de definições do conector de dados para o Codeless Connector Framework

Para criar um conector de dados com o Codeless Connector Framework (CCF), utilize este documento como um suplemento para os documentos de referência da API REST Microsoft Sentinel para Definições do Conector de Dados. Especificamente, este documento de referência expande-se na secção seguinte:

  • connectorUiConfig- define os elementos visuais e o texto apresentados na página do conector de dados no Microsoft Sentinel.

Para obter mais informações, veja Criar um conector sem código.

Definições do conector de dados – Criar ou atualizar

Veja a operação Criar ou Atualizar nos documentos da API REST para encontrar a versão mais recente da API estável ou de pré-visualização. Apenas a update operação requer o etag valor.

Método PUT

https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectorDefinitions/{{dataConnectorDefinitionName}}?api-version={{apiVersion}}

Parâmetros de URI

Para obter mais informações sobre a versão mais recente da API, veja Definições do Conector de Dados – Criar ou Atualizar Parâmetros de URI

Nome Descrição
dataConnectorDefinitionName A definição do conector de dados tem de ser um nome exclusivo e é igual ao name parâmetro no corpo do pedido.
resourceGroupName O nome do grupo de recursos, não sensível a maiúsculas e minúsculas.
subscriptionId O ID da subscrição de destino.
workspaceName O nome da área de trabalho, não o ID.
Padrão Regex: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$
versão da API A versão da API a utilizar para esta operação.

Corpo da solicitação

O corpo do pedido para criar uma definição de conector de dados CCF com a API tem a seguinte estrutura:

{
    "kind": "Customizable",
    "properties": {
        "connectorUIConfig": {}
    }
}

dataConnectorDefinition tem as seguintes propriedades:

Nome Obrigatório Tipo Descrição
Tipo Verdadeiro Cadeia de caracteres Customizable para o conector de dados de consulta de API ou Static de outra forma
propriedades. connectorUiConfig Verdadeiro JSON Aninhado
connectorUiConfig
As propriedades de configuração da IU do conector de dados

Configurar a interface de utilizador do conector

Esta secção descreve as opções de configuração disponíveis para personalizar a interface de utilizador da página do conector de dados.

A seguinte captura de ecrã mostra uma página do conector de dados de exemplo, realçada com números que correspondem a áreas importantes da interface de utilizador.

Captura de ecrã a mostrar uma página do conector de dados de exemplo com secções identificadas entre 1 e 9.

Cada um dos seguintes elementos da connectorUiConfig secção necessários para configurar a interface de utilizador corresponde à parte CustomizableConnectorUiConfig da API.

Campo Obrigatório Tipo Descrição Captura de ecrã a destacar área #
title True string Título apresentado na página do conector de dados 1
id string Define o ID do conector personalizado para utilização interna
logo string Caminho para o ficheiro de imagem no formato SVG. Se não estiver configurado nenhum valor, é utilizado um logótipo predefinido. 2
publicador True string O fornecedor do conector 3
descriptionMarkdown Verdadeiro cadeia em markdown Uma descrição para o conector com a capacidade de adicionar um idioma de markdown para melhorá-lo. 4
sampleQueries Verdadeiro JSON Aninhado
sampleQueries
Consultas para o cliente compreender como localizar os dados no registo de eventos.
graphQueries Verdadeiro JSON Aninhado
graphQueries
Consultas que apresentam a ingestão de dados nas últimas duas semanas.

Forneça uma consulta para todos os tipos de dados do conector de dados ou uma consulta diferente para cada tipo de dados.
5
graphQueriesTableName Define o nome da tabela à qual o conector insere dados. Este nome pode ser utilizado noutras consultas ao especificar {{graphQueriesTableName}} o marcador de posição em graphQueries e lastDataReceivedQuery os valores.
dataTypes Verdadeiro JSON Aninhado
dataTypes
Uma lista de todos os tipos de dados para o conector e uma consulta para obter a hora do último evento para cada tipo de dados. 6
connectivityCriteria Verdadeiro JSON Aninhado
connectivityCriteria
Um objeto que define como verificar se o conector está ligado. 7
disponibilidade JSON Aninhado
disponibilidade
Um objeto que define a status de disponibilidade do conector.
permissões Verdadeiro JSON Aninhado
permissões
As informações apresentadas na secção Pré-requisitos da IU, que lista as permissões necessárias para ativar ou desativar o conector. 8
instruçõesPassos Verdadeiro JSON Aninhado
instruções
Uma matriz de partes de widget que explicam como instalar o conector e controlos acionáveis apresentados no separador Instruções . 9
isConnectivityCriteriasMatchSome Booliano Um booleano que indica se deve utilizar "OU"(ALGUNS) ou "E" entre itens ConnectivityCriteria.

connectivityCriteria

Campo Obrigatório Tipo Descrição
Tipo Verdadeiro Cadeia de caracteres Uma das duas opções seguintes: HasDataConnectors este valor é melhor para conectores de dados de consulta de API, como o CCF. O conector é considerado ligado a, pelo menos, uma ligação ativa.

isConnectedQuery – este valor é melhor para outros tipos de conectores de dados. O conector é considerado ligado quando a consulta fornecida devolve dados.
Valor Verdadeiro quando o tipo é isConnectedQuery Cadeia de caracteres Uma consulta para determinar se os dados são recebidos num determinado período de tempo. Por exemplo: CommonSecurityLog | where DeviceVendor == \"Vectra Networks\"\n| where DeviceProduct == \"X Series\"\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(7d)"

dataTypes

Valor da Matriz Tipo Descrição
name Cadeia de caracteres Uma descrição relevante para o, incluindo olastDataReceivedQuery suporte para a graphQueriesTableName variável .

Exemplo: {{graphQueriesTableName}}
lastDataReceivedQuery Cadeia de caracteres Uma consulta KQL que devolve uma linha e indica a última vez que os dados foram recebidos ou não existem dados se não existirem resultados.

Exemplo: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)

graphQueries

Define uma consulta que apresenta a ingestão de dados nas últimas duas semanas.

Forneça uma consulta para todos os tipos de dados do conector de dados ou uma consulta diferente para cada tipo de dados.

Valor da Matriz Tipo Descrição
metricName Cadeia de caracteres Um nome significativo para o seu gráfico.

Exemplo: Total data received
legenda Cadeia de caracteres A cadeia que aparece na legenda à direita do gráfico, incluindo uma referência de variável.

Exemplo: {{graphQueriesTableName}}
baseQuery Cadeia de caracteres A consulta que filtra eventos relevantes, incluindo uma referência variável.

Exemplo: TableName_CL | where ProviderName == "myprovider" ou {{graphQueriesTableName}}

availability

Campo Obrigatório Tipo Descrição
status Número inteiro A disponibilidade status do conector.
Disponível = 1
Sinalizador de Funcionalidade = 2
Brevemente = 3
Interno = 4
isPreview Booliano Um booleano que indica se o conector está no modo de pré-visualização.

permissões

Valor da matriz Tipo Descrição
alfândegas Cadeia de caracteres Descreve todas as permissões personalizadas necessárias para a ligação de dados, na seguinte sintaxe:
{
"name":cadeia de caracteres,
"description":cadeia
}

Exemplo: o valor aduaneiro é apresentado na secção Pré-requisitos Microsoft Sentinel com um ícone informativo azul. No exemplo do GitHub, este valor está correlacionado com a linha Chave de token pessoal da API do GitHub: precisa de acesso ao token pessoal do GitHub...
licenças ENUMERAÇÃO Define as licenças necessárias, como um dos seguintes valores: OfficeIRM,OfficeATP, Office365, AadP1P2, Mcas, Aatp, Mdatp, , MtpIoT

Exemplo: o valor das licenças é apresentado em Microsoft Sentinel como: Licença: Necessário Azure AD Premium P2
resourceProvider resourceProvider Descreve quaisquer pré-requisitos para o recurso Azure.

Exemplo: o valor resourceProvider é apresentado na secção Pré-requisitos do Microsoft Sentinel como:
Área de trabalho: é necessária a permissão de leitura e escrita.
Chaves: são necessárias permissões de leitura para chaves partilhadas para a área de trabalho.
locatário matriz de valores ENUM
Exemplo:

"tenant": [
"GlobalADmin",
"SecurityAdmin"
]
Define as permissões necessárias, como um ou mais dos seguintes valores: "GlobalAdmin", "SecurityAdmin", , "SecurityReader""InformationProtection"

Exemplo: apresenta o valor do inquilino em Microsoft Sentinel como: Permissões de Inquilino: Requer Global Administrator ou Security Administrator no inquilino da área de trabalho

Importante

A Microsoft recomenda que você use funções com o menor número de permissões. Isto ajuda a melhorar a segurança da sua organização. O Administrador Global é uma função altamente privilegiada que deve ser limitada a cenários de emergência quando não for possível usar uma função existente.

resourceProvider

valor da sub-matriz Tipo Descrição
fornecedor ENUMERAÇÃO Descreve o fornecedor de recursos, com um dos seguintes valores:
- Microsoft.OperationalInsights/workspaces
- Microsoft.OperationalInsights/solutions
- Microsoft.OperationalInsights/workspaces/datasources
- microsoft.aadiam/diagnosticSettings
- Microsoft.OperationalInsights/workspaces/sharedKeys
- Microsoft.Authorization/policyAssignments
providerDisplayName Cadeia de caracteres Um item de lista em Pré-requisitos que apresenta uma marca de verificação "x" vermelha ou verde quando as permissões necessárias são validadas na página do conector. Exemplo, "Workspace"
permissionsDisplayText Cadeia de caracteres Apresentar texto para permissões de Leitura, Escrita ou Leitura e Escrita que devem corresponder aos valores configurados em requiredPermissions
requiredPermissions {
"action":Booliano,
"delete":Booliano,
"read":Booliano,
"write":Booliano
}
Descreve as permissões mínimas necessárias para o conector.
scope ENUMERAÇÃO Descreve o âmbito do conector de dados como um dos seguintes valores: "Subscription", , "ResourceGroup""Workspace"

sampleQueries

valor da matriz Tipo Descrição
description Cadeia de caracteres Uma descrição significativa para a consulta de exemplo.

Exemplo: Top 10 vulnerabilities detected
query Cadeia de caracteres Consulta de exemplo utilizada para obter os dados do tipo de dados.

Exemplo: {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10

Para definir uma ligação inline com markdown, utilize o seguinte exemplo.

{
   "title": "",
   "description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)"
}

Para definir uma ligação como um modelo do ARM, utilize o seguinte exemplo como guia:

{
   "title": "Azure Resource Manager (ARM) template",
   "description": "1. Click the **Deploy to Azure** button below.\n\n\t[![Deploy To Azure](https://aka.ms/deploytoazurebutton)]({URL to custom ARM template})"
}

instruçõesPassos

Esta secção fornece parâmetros que definem o conjunto de instruções que aparecem na página do conector de dados no Microsoft Sentinel e tem a seguinte estrutura:

"instructionSteps": [
    {
        "title": "",
        "description": "",
        "instructions": [
        {
            "type": "",
            "parameters": {}
        }
        ],
        "innerSteps": {}
    }
]
Propriedade matriz Obrigatório Tipo Descrição
title Cadeia de caracteres Define um título para as suas instruções.
description Cadeia de caracteres Define uma descrição relevante para as suas instruções.
innerSteps Matriz Define uma matriz de passos de instrução interna.
instruções Verdadeiro Matriz de instruções Define uma matriz de instruções de um tipo de parâmetro específico.

instruções

Apresenta um grupo de instruções, com vários parâmetros e a capacidade de aninhar mais instruçõesPassos em grupos. Os parâmetros definidos aqui correspondem

Tipo Propriedade matriz Descrição
OAuthForm OAuthForm Ligar com o OAuth
Caixa de Texto Caixa de Texto Esta ação é emparelhada com ConnectionToggleButton. Existem 4 tipos disponíveis:
  • password
  • text
  • number
  • email
  • ConnectionToggleButton ConnectionToggleButton Acione a implementação do DCR com base nas informações de ligação fornecidas através dos parâmetros do marcador de posição. São suportados os seguintes parâmetros:
  • name : obrigatório
  • disabled
  • isPrimary
  • connectLabel
  • disconnectLabel
  • CopyableLabel CopyableLabel Mostra um campo de texto com um botão copiar no final. Quando o botão está selecionado, o valor do campo é copiado.
    Dropdown Dropdown Apresenta uma lista pendente de opções para o utilizador selecionar.
    Markdown Markdown Apresenta uma secção de texto formatada com Markdown.
    DataConnectorsGrid DataConnectorsGrid Apresenta uma grelha de conectores de dados.
    Painel de Contexto Painel de Contexto Apresenta um painel de informações contextuais.
    InfoMessage InfoMessage Define uma mensagem de informações inline.
    InstructionStepsGroup InstructionStepsGroup Apresenta um grupo de instruções, opcionalmente expandidas ou minimizáveis, numa secção de instruções separada.
    InstallAgent InstallAgent Apresenta uma ligação para outras partes do Azure para cumprir vários requisitos de instalação.
    OAuthForm

    Este componente requer que o OAuth2 tipo esteja presente na auth propriedade do modelo do conector de dados.

    "instructions": [
    {
      "type": "OAuthForm",
      "parameters": {
        "clientIdLabel": "Client ID",
        "clientSecretLabel": "Client Secret",
        "connectButtonLabel": "Connect",
        "disconnectButtonLabel": "Disconnect"
      }          
    }
    ]
    
    Caixa de texto

    Eis alguns exemplos do Textbox tipo . Estes exemplos correspondem aos parâmetros utilizados na secção de exemplo auth em Referência de conectores de dados para o Codeless Connector Framework. Para cada um dos 4 tipos, cada um tem label, placeholdere name.

    "instructions": [
    {
      "type": "Textbox",
      "parameters": {
          {
            "label": "User name",
            "placeholder": "User name",
            "type": "text",
            "name": "username"
          }
      }
    },
    {
      "type": "Textbox",
      "parameters": {
          "label": "Secret",
          "placeholder": "Secret",
          "type": "password",
          "name": "password"
      }
    }
    ]
    
    ConnectionToggleButton
    "instructions": [
    {
      "type": "ConnectionToggleButton",
      "parameters": {
        "connectLabel": "toggle",
        "name": "toggle"
      }          
    }
    ]
    
    CopyableLabel

    Exemplo:

    Captura de ecrã a mostrar um botão copiar valor num campo.

    Código de exemplo:

    {
        "parameters": {
            "fillWith": [
                "WorkspaceId",
                "PrimaryKey"
                ],
            "label": "Here are some values you'll need to proceed.",
            "value": "Workspace is {0} and PrimaryKey is {1}"
        },
        "type": "CopyableLabel"
    }
    
    Valor da Matriz Obrigatório Tipo Descrição
    fillWith ENUMERAÇÃO Matriz de variáveis de ambiente utilizadas para preencher um marcador de posição. Separe múltiplos marcadores de posição com vírgulas. Por exemplo: {0},{1}

    Valores suportados: workspaceId, , workspaceName, primaryKey, MicrosoftAwsAccount, subscriptionId
    etiqueta Verdadeiro Cadeia de caracteres Define o texto da etiqueta acima de uma caixa de texto.
    value Verdadeiro Cadeia de caracteres Define o valor a apresentar na caixa de texto, suporta marcadores de posição.
    rows Linhas Define as linhas na área da interface de utilizador. Por predefinição, defina como 1.
    wideLabel Booliano Determina uma etiqueta larga para cadeias longas. Por predefinição, defina como false.
    {
      "parameters": {
        "label": "Select an option",
        "name": "dropdown",
        "options": [
          {
            "key": "Option 1",
            "text": "option1"
          },
          {
            "key": "Option 2",
            "text": "option2"
          }
        ],
        "placeholder": "Select an option",
        "isMultiSelect": false,
        "required": true,
        "defaultAllSelected": false
      },
      "type": "Dropdown"
    }
    
    Campo Obrigatório Tipo Descrição
    etiqueta Verdadeiro Cadeia de caracteres Define o texto da etiqueta acima da lista pendente.
    name Verdadeiro Cadeia de caracteres Define o nome exclusivo para a lista pendente. Isto é utilizado na configuração da Consulta.
    options Verdadeiro Matriz Define a lista de opções para a lista pendente.
    espaço reservado Cadeia de caracteres Define o texto do marcador de posição para a lista pendente.
    isMultiSelect Booliano Determina se podem ser selecionadas múltiplas opções. Por predefinição, defina como false.
    required Booliano Se true, a lista pendente tem de ser preenchida.
    defaultAllSelected Booliano Se true, todas as opções estão selecionadas por predefinição.
    Markdown
    {
      "parameters": {
        "content": "## This is a Markdown section\n\nYou can use **bold** text, _italic_ text, and even [links](https://www.example.com)."
      },
      "type": "Markdown"
    }
    
    DataConnectorsGrid
    {
      "type": "DataConnectorsGrid",
      "parameters": {
        "mapping": [
          {
            "columnName": "Column 1",
            "columnValue": "Value 1"
          },
          {
            "columnName": "Column 2",
            "columnValue": "Value 2"
          }
        ],
        "menuItems": [
          "MyConnector"
        ]
      }
    }
    
    
    Campo Obrigatório Tipo Descrição
    mapeamento Verdadeiro Matriz Define o mapeamento de colunas na grelha.
    menuItems Matriz Define os itens de menu da grelha.
    Painel de Contexto
    {
      "type": "ContextPane",
      "parameters": {
        "isPrimary": true,
        "label": "Add Account",
        "title": "Add Account",
        "subtitle": "Add Account",
        "contextPaneType": "DataConnectorsContextPane",
        "instructionSteps": [
          {
            "instructions": [
              {
                "type": "Textbox",
                "parameters": {
                  "label": "Snowflake Account Identifier",
                  "placeholder": "Enter Snowflake Account Identifier",
                  "type": "text",
                  "name": "accountId",
                  "validations": {
                    "required": true
                  }
                }
              },
              {
                "type": "Textbox",
                "parameters": {
                  "label": "Snowflake PAT",
                  "placeholder": "Enter Snowflake PAT",
                  "type": "password",
                  "name": "apikey",
                  "validations": {
                    "required": true
                  }
                }
              }
            ]
          }
        ]
      }
    }
    
    Campo Obrigatório Tipo Descrição
    title Verdadeiro Cadeia de caracteres O título do painel de contexto.
    subtítulo Verdadeiro Cadeia de caracteres O subtítulo do painel de contexto.
    contextPaneType Verdadeiro Cadeia de caracteres O tipo do painel de contexto.
    instruçõesPassos Verdadeiro Matriz
    instruçõesPassos
    Os passos de instrução para o painel de contexto.
    etiqueta Cadeia de caracteres A etiqueta do painel de contexto.
    isPrimary Booliano Indica se este é o painel de contexto principal.
    InfoMessage

    Eis um exemplo de uma mensagem de informações inline:

    Captura de ecrã a mostrar uma mensagem de informações inline.

    Por outro lado, a imagem seguinte mostra uma mensagem de informação que não está inline:

    Captura de ecrã a mostrar uma mensagem de informação que não está inline.

    Valor da Matriz Tipo Descrição
    text Cadeia de caracteres Defina o texto a apresentar na mensagem.
    visible Booliano Determina se a mensagem é apresentada.
    inline Booliano Determina a forma como a mensagem de informação é apresentada.

    - true: (Recomendado) Mostra a mensagem de informações incorporada nas instruções.
    - false: adiciona um fundo azul.
    InstructionStepsGroup

    Eis um exemplo de um grupo de instruções expansível:

    Captura de ecrã de um grupo de instruções extra expansível.

    Valor da Matriz Obrigatório Tipo Descrição
    title Verdadeiro Cadeia de caracteres Define o título do passo de instrução.
    description Cadeia de caracteres Texto descritivo opcional.
    canCollapseAllSections Booliano Determina se a secção é ou não um acordeão minimizável.
    noFxPadding Booliano Se true, reduz a altura do preenchimento para poupar espaço.
    expandido Booliano Se true, aparecer como expandido por predefinição.

    Para obter um exemplo detalhado, veja o JSON de configuração do conector DNS do Windows.

    InstallAgent

    Alguns tipos InstallAgent aparecem como um botão, outros aparecem como uma ligação. Seguem-se exemplos de ambos:

    Captura de ecrã de uma ligação adicionada como um botão.

    Captura de ecrã de uma ligação adicionada como texto inline.

    Valores de Matriz Obrigatório Tipo Descrição
    linkType Verdadeiro ENUMERAÇÃO Determina o tipo de ligação, como um dos seguintes valores:

    InstallAgentOnWindowsVirtualMachine
    InstallAgentOnWindowsNonAzure
    InstallAgentOnLinuxVirtualMachine
    InstallAgentOnLinuxNonAzure
    OpenSyslogSettings
    OpenCustomLogsSettings
    OpenWaf
    OpenAzureFirewall OpenMicrosoftAzureMonitoring
    OpenFrontDoors
    OpenCdnProfile
    AutomaticDeploymentCEF
    OpenAzureInformationProtection
    OpenAzureActivityLog
    OpenIotPricingModel
    OpenPolicyAssignment
    OpenAllAssignmentsBlade
    OpenCreateDataCollectionRule
    policyDefinitionGuid Verdadeiro ao utilizar OpenPolicyAssignment linkType. Cadeia de caracteres Para conectores baseados em políticas, define o GUID da definição de política incorporada.
    assignMode ENUMERAÇÃO Para conectores baseados em políticas, define o modo de atribuição como um dos seguintes valores: Initiative, Policy
    dataCollectionRuleType ENUMERAÇÃO Para conectores baseados em DCR, define o tipo de regra de recolha de dados como SecurityEvent, ou ForwardEvent.

    Exemplo de definição do conector de dados

    O exemplo seguinte reúne alguns dos componentes definidos neste artigo como um formato de corpo JSON para utilizar com a API de definição criar ou atualizar conector de dados.

    Para obter mais exemplos da connectorUiConfig revisão de outros conectores de dados CCF. Até os conectores que utilizam o CCF legado têm exemplos válidos da criação da IU.

    {
        "kind": "Customizable",
        "properties": {
            "connectorUiConfig": {
              "title": "Example CCF Data Connector",
              "publisher": "My Company",
              "descriptionMarkdown": "This is an example of data connector",
              "graphQueriesTableName": "ExampleConnectorAlerts_CL",
              "graphQueries": [
                {
                  "metricName": "Alerts received",
                  "legend": "My data connector alerts",
                  "baseQuery": "{{graphQueriesTableName}}"
                },   
               {
                  "metricName": "Events received",
                  "legend": "My data connector events",
                  "baseQuery": "ASIMFileEventLogs"
                }
              ],
                "sampleQueries": [
                {
                    "description": "All alert logs",
                    "query": "{{graphQueriesTableName}} \n | take 10"
                }
              ],
              "dataTypes": [
                {
                  "name": "{{graphQueriesTableName}}",
                  "lastDataReceivedQuery": "{{graphQueriesTableName}} \n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)"
                },
                 {
                  "name": "ASIMFileEventLogs",
                  "lastDataReceivedQuery": "ASIMFileEventLogs \n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)"
                 }
              ],
              "connectivityCriteria": [
                {
                  "type": "HasDataConnectors"
                }
              ],
              "permissions": {
                "resourceProvider": [
                  {
                    "provider": "Microsoft.OperationalInsights/workspaces",
                    "permissionsDisplayText": "Read and Write permissions are required.",
                    "providerDisplayName": "Workspace",
                    "scope": "Workspace",
                    "requiredPermissions": {
                      "write": true,
                      "read": true,
                      "delete": true
                    }
                  },
                ],
                "customs": [
                  {
                    "name": "Example Connector API Key",
                    "description": "The connector API key username and password is required"
                  }
                ] 
            },
              "instructionSteps": [
                {
                  "title": "Connect My Connector to Microsoft Sentinel",
                  "description": "To enable the connector provide the required information below and click on Connect.\n>",
                  "instructions": [
                   {
                      "type": "Textbox",
                      "parameters": {
                        "label": "User name",
                        "placeholder": "User name",
                        "type": "text",
                        "name": "username"
                      }
                    },
                    {
                      "type": "Textbox",
                      "parameters": {
                        "label": "Secret",
                        "placeholder": "Secret",
                        "type": "password",
                        "name": "password"
                      }
                    },
                    {
                      "type": "ConnectionToggleButton",
                      "parameters": {
                        "connectLabel": "toggle",
                        "name": "toggle"
                      }
                    }
                  ]
                }
              ]
            }
        }
    }