Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.
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 |
Configurar outras opções de ligação
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[]({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:passwordtextnumberemail |
| 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óriodisabledisPrimaryconnectLabeldisconnectLabel |
| 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:
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. |
Lista suspensa
{
"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:
Por outro lado, a imagem seguinte mostra 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:
| 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:
| Valores de Matriz | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| linkType | Verdadeiro | ENUMERAÇÃO | Determina o tipo de ligação, como um dos seguintes valores: InstallAgentOnWindowsVirtualMachineInstallAgentOnWindowsNonAzureInstallAgentOnLinuxVirtualMachineInstallAgentOnLinuxNonAzureOpenSyslogSettingsOpenCustomLogsSettingsOpenWafOpenAzureFirewall
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"
}
}
]
}
]
}
}
}