This is an automated email from the ASF dual-hosted git repository.

kaxilnaik pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 4404bc05b3e Add missing conn-fields for providers migrated to yaml 
(#62116)
4404bc05b3e is described below

commit 4404bc05b3e77bf1c50219ba2ec1da5ef560a684
Author: Amogh Desai <[email protected]>
AuthorDate: Thu Feb 19 06:34:35 2026 +0530

    Add missing conn-fields for providers migrated to yaml (#62116)
---
 providers/google/provider.yaml                     | 130 +++++++-
 .../airflow/providers/google/get_provider_info.py  | 103 ++++++-
 providers/hashicorp/provider.yaml                  | 103 +++++++
 .../providers/hashicorp/get_provider_info.py       |  25 ++
 providers/microsoft/azure/provider.yaml            | 336 ++++++++++++++++++++-
 .../providers/microsoft/azure/get_provider_info.py | 271 ++++++++++++++++-
 providers/snowflake/provider.yaml                  |  76 +++++
 .../providers/snowflake/get_provider_info.py       |  27 ++
 scripts/tools/generate_yaml_format_for_hooks.py    |  38 ++-
 9 files changed, 1063 insertions(+), 46 deletions(-)

diff --git a/providers/google/provider.yaml b/providers/google/provider.yaml
index 1eaca6bb9d4..709c970c312 100644
--- a/providers/google/provider.yaml
+++ b/providers/google/provider.yaml
@@ -1131,63 +1131,62 @@ connection-types:
       project:
         label: "Project Id"
         schema:
-          type: string
+          type: ["string", "null"]
       key_path:
         label: "Keyfile Path"
         schema:
-          type: string
+          type: ["string", "null"]
       keyfile_dict:
         label: "Keyfile JSON"
         schema:
-          type: string
+          type: ["string", "null"]
           format: password
       credential_config_file:
         label: "Credential Configuration File"
         schema:
-          type: string
+          type: ["string", "null"]
       scope:
         label: "Scopes (comma separated)"
         schema:
-          type: string
+          type: ["string", "null"]
       key_secret_name:
         label: "Keyfile Secret Name (in GCP Secret Manager)"
         schema:
-          type: string
+          type: ["string", "null"]
       key_secret_project_id:
         label: "Keyfile Secret Project Id (in GCP Secret Manager)"
         schema:
-          type: string
+          type: ["string", "null"]
       num_retries:
         label: "Number of Retries"
         schema:
-          type: integer
-          minimum: 0
+          type: ["integer", "null"]
           default: 5
       impersonation_chain:
         label: "Impersonation Chain"
         schema:
-          type: string
+          type: ["string", "null"]
       idp_issuer_url:
         label: "IdP Token Issue URL (Client Credentials Grant Flow)"
         schema:
-          type: string
+          type: ["string", "null"]
       client_id:
         label: "Client ID (Client Credentials Grant Flow)"
         schema:
-          type: string
+          type: ["string", "null"]
       client_secret:
         label: "Client Secret (Client Credentials Grant Flow)"
         schema:
-          type: string
+          type: ["string", "null"]
           format: password
       idp_extra_parameters:
         label: "IdP Extra Request Parameters"
         schema:
-          type: string
+          type: ["string", "null"]
       is_anonymous:
         label: "Anonymous credentials (ignores all other settings)"
         schema:
-          type: boolean
+          type: ["boolean", "null"]
           default: false
   - hook-class-name: 
airflow.providers.google.cloud.hooks.dataprep.GoogleDataprepHook
     connection-type: dataprep
@@ -1201,6 +1200,88 @@ connection-types:
       hidden-fields: ["host", "schema", "login", "password", "port", "extra"]
       relabeling: {}
       placeholders: {}
+    conn-fields:
+      project:
+        label: "Project Id"
+        schema:
+          type: ["string", "null"]
+      key_path:
+        label: "Keyfile Path"
+        schema:
+          type: ["string", "null"]
+      keyfile_dict:
+        label: "Keyfile JSON"
+        schema:
+          type: ["string", "null"]
+          format: password
+      credential_config_file:
+        label: "Credential Configuration File"
+        schema:
+          type: ["string", "null"]
+      scope:
+        label: "Scopes (comma separated)"
+        schema:
+          type: ["string", "null"]
+      key_secret_name:
+        label: "Keyfile Secret Name (in GCP Secret Manager)"
+        schema:
+          type: ["string", "null"]
+      key_secret_project_id:
+        label: "Keyfile Secret Project Id (in GCP Secret Manager)"
+        schema:
+          type: ["string", "null"]
+      num_retries:
+        label: "Number of Retries"
+        schema:
+          type: ["integer", "null"]
+          default: 5
+      impersonation_chain:
+        label: "Impersonation Chain"
+        schema:
+          type: ["string", "null"]
+      idp_issuer_url:
+        label: "IdP Token Issue URL (Client Credentials Grant Flow)"
+        schema:
+          type: ["string", "null"]
+      client_id:
+        label: "Client ID (Client Credentials Grant Flow)"
+        schema:
+          type: ["string", "null"]
+      client_secret:
+        label: "Client Secret (Client Credentials Grant Flow)"
+        schema:
+          type: ["string", "null"]
+          format: password
+      idp_extra_parameters:
+        label: "IdP Extra Request Parameters"
+        schema:
+          type: ["string", "null"]
+      is_anonymous:
+        label: "Anonymous credentials (ignores all other settings)"
+        schema:
+          type: ["boolean", "null"]
+          default: false
+      use_legacy_sql:
+        label: "Use Legacy SQL"
+        schema:
+          type: ["boolean", "null"]
+      location:
+        label: "Location"
+        schema:
+          type: ["string", "null"]
+      priority:
+        label: "Priority"
+        schema:
+          type: ["string", "null"]
+          default: INTERACTIVE
+      api_resource_configs:
+        label: "API Resource Configs"
+        schema:
+          type: ["string", "null"]
+      labels:
+        label: "Labels"
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.google.cloud.hooks.compute_ssh.ComputeEngineSSHHook
     connection-type: gcpssh
     ui-field-behaviour:
@@ -1216,6 +1297,25 @@ connection-types:
       relabeling: {}
       placeholders:
         password: "Leave blank (optional)"
+    conn-fields:
+      developer_token:
+        label: "Developer token"
+        schema:
+          type: ["string", "null"]
+      client_id:
+        label: "OAuth2 Client ID"
+        schema:
+          type: ["string", "null"]
+      client_secret:
+        label: "OAuth2 Client Secret"
+        schema:
+          type: ["string", "null"]
+          format: password
+      refresh_token:
+        label: "OAuth2 Refresh Token"
+        schema:
+          type: ["string", "null"]
+          format: password
   - hook-class-name: airflow.providers.google.cloud.hooks.looker.LookerHook
     connection-type: gcp_looker
 
diff --git a/providers/google/src/airflow/providers/google/get_provider_info.py 
b/providers/google/src/airflow/providers/google/get_provider_info.py
index 99e3d078359..4f45d95ad46 100644
--- a/providers/google/src/airflow/providers/google/get_provider_info.py
+++ b/providers/google/src/airflow/providers/google/get_provider_info.py
@@ -1373,49 +1373,52 @@ def get_provider_info():
                     "placeholders": {},
                 },
                 "conn-fields": {
-                    "project": {"label": "Project Id", "schema": {"type": 
"string"}},
-                    "key_path": {"label": "Keyfile Path", "schema": {"type": 
"string"}},
+                    "project": {"label": "Project Id", "schema": {"type": 
["string", "null"]}},
+                    "key_path": {"label": "Keyfile Path", "schema": {"type": 
["string", "null"]}},
                     "keyfile_dict": {
                         "label": "Keyfile JSON",
-                        "schema": {"type": "string", "format": "password"},
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
                     },
                     "credential_config_file": {
                         "label": "Credential Configuration File",
-                        "schema": {"type": "string"},
+                        "schema": {"type": ["string", "null"]},
                     },
-                    "scope": {"label": "Scopes (comma separated)", "schema": 
{"type": "string"}},
+                    "scope": {"label": "Scopes (comma separated)", "schema": 
{"type": ["string", "null"]}},
                     "key_secret_name": {
                         "label": "Keyfile Secret Name (in GCP Secret Manager)",
-                        "schema": {"type": "string"},
+                        "schema": {"type": ["string", "null"]},
                     },
                     "key_secret_project_id": {
                         "label": "Keyfile Secret Project Id (in GCP Secret 
Manager)",
-                        "schema": {"type": "string"},
+                        "schema": {"type": ["string", "null"]},
                     },
                     "num_retries": {
                         "label": "Number of Retries",
-                        "schema": {"type": "integer", "minimum": 0, "default": 
5},
+                        "schema": {"type": ["integer", "null"], "default": 5},
+                    },
+                    "impersonation_chain": {
+                        "label": "Impersonation Chain",
+                        "schema": {"type": ["string", "null"]},
                     },
-                    "impersonation_chain": {"label": "Impersonation Chain", 
"schema": {"type": "string"}},
                     "idp_issuer_url": {
                         "label": "IdP Token Issue URL (Client Credentials 
Grant Flow)",
-                        "schema": {"type": "string"},
+                        "schema": {"type": ["string", "null"]},
                     },
                     "client_id": {
                         "label": "Client ID (Client Credentials Grant Flow)",
-                        "schema": {"type": "string"},
+                        "schema": {"type": ["string", "null"]},
                     },
                     "client_secret": {
                         "label": "Client Secret (Client Credentials Grant 
Flow)",
-                        "schema": {"type": "string", "format": "password"},
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
                     },
                     "idp_extra_parameters": {
                         "label": "IdP Extra Request Parameters",
-                        "schema": {"type": "string"},
+                        "schema": {"type": ["string", "null"]},
                     },
                     "is_anonymous": {
                         "label": "Anonymous credentials (ignores all other 
settings)",
-                        "schema": {"type": "boolean", "default": False},
+                        "schema": {"type": ["boolean", "null"], "default": 
False},
                     },
                 },
             },
@@ -1439,6 +1442,66 @@ def get_provider_info():
                     "relabeling": {},
                     "placeholders": {},
                 },
+                "conn-fields": {
+                    "project": {"label": "Project Id", "schema": {"type": 
["string", "null"]}},
+                    "key_path": {"label": "Keyfile Path", "schema": {"type": 
["string", "null"]}},
+                    "keyfile_dict": {
+                        "label": "Keyfile JSON",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "credential_config_file": {
+                        "label": "Credential Configuration File",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "scope": {"label": "Scopes (comma separated)", "schema": 
{"type": ["string", "null"]}},
+                    "key_secret_name": {
+                        "label": "Keyfile Secret Name (in GCP Secret Manager)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "key_secret_project_id": {
+                        "label": "Keyfile Secret Project Id (in GCP Secret 
Manager)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "num_retries": {
+                        "label": "Number of Retries",
+                        "schema": {"type": ["integer", "null"], "default": 5},
+                    },
+                    "impersonation_chain": {
+                        "label": "Impersonation Chain",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "idp_issuer_url": {
+                        "label": "IdP Token Issue URL (Client Credentials 
Grant Flow)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "client_id": {
+                        "label": "Client ID (Client Credentials Grant Flow)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "client_secret": {
+                        "label": "Client Secret (Client Credentials Grant 
Flow)",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "idp_extra_parameters": {
+                        "label": "IdP Extra Request Parameters",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "is_anonymous": {
+                        "label": "Anonymous credentials (ignores all other 
settings)",
+                        "schema": {"type": ["boolean", "null"], "default": 
False},
+                    },
+                    "use_legacy_sql": {"label": "Use Legacy SQL", "schema": 
{"type": ["boolean", "null"]}},
+                    "location": {"label": "Location", "schema": {"type": 
["string", "null"]}},
+                    "priority": {
+                        "label": "Priority",
+                        "schema": {"type": ["string", "null"], "default": 
"INTERACTIVE"},
+                    },
+                    "api_resource_configs": {
+                        "label": "API Resource Configs",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "labels": {"label": "Labels", "schema": {"type": 
["string", "null"]}},
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.google.cloud.hooks.compute_ssh.ComputeEngineSSHHook",
@@ -1461,6 +1524,18 @@ def get_provider_info():
                     "relabeling": {},
                     "placeholders": {"password": "Leave blank (optional)"},
                 },
+                "conn-fields": {
+                    "developer_token": {"label": "Developer token", "schema": 
{"type": ["string", "null"]}},
+                    "client_id": {"label": "OAuth2 Client ID", "schema": 
{"type": ["string", "null"]}},
+                    "client_secret": {
+                        "label": "OAuth2 Client Secret",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "refresh_token": {
+                        "label": "OAuth2 Refresh Token",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.google.cloud.hooks.looker.LookerHook",
diff --git a/providers/hashicorp/provider.yaml 
b/providers/hashicorp/provider.yaml
index fea993e184a..9cbc539c865 100644
--- a/providers/hashicorp/provider.yaml
+++ b/providers/hashicorp/provider.yaml
@@ -88,6 +88,109 @@ connection-types:
     connection-type: vault
     ui-field-behaviour:
       hidden-fields: ["extra"]
+    conn-fields:
+      auth_type:
+        label: Auth type
+        schema:
+          type:
+            - string
+            - 'null'
+      auth_mount_point:
+        label: Auth mount point
+        schema:
+          type:
+            - string
+            - 'null'
+      kv_engine_version:
+        label: KV engine version
+        schema:
+          type:
+            - integer
+            - 'null'
+          default: 2
+          enum:
+            - 1
+            - 2
+        description: Must be 1 or 2.
+      kubernetes_role:
+        label: Kubernetes role
+        schema:
+          type:
+            - string
+            - 'null'
+      kubernetes_jwt_path:
+        label: Kubernetes jwt path
+        schema:
+          type:
+            - string
+            - 'null'
+      jwt_role:
+        label: JWT role
+        schema:
+          type:
+            - string
+            - 'null'
+      jwt_token:
+        label: JWT token
+        schema:
+          type:
+            - string
+            - 'null'
+      jwt_token_path:
+        label: JWT token path
+        schema:
+          type:
+            - string
+            - 'null'
+      token_path:
+        label: Token path
+        schema:
+          type:
+            - string
+            - 'null'
+      gcp_key_path:
+        label: GCP key path
+        schema:
+          type:
+            - string
+            - 'null'
+      gcp_scopes:
+        label: GCP scopes
+        schema:
+          type:
+            - string
+            - 'null'
+      azure_tenant_id:
+        label: Azure tenant ID
+        schema:
+          type:
+            - string
+            - 'null'
+      azure_resource:
+        label: Azure resource
+        schema:
+          type:
+            - string
+            - 'null'
+      radius_host:
+        label: Radius host
+        schema:
+          type:
+            - string
+            - 'null'
+      radius_port:
+        label: Radius port
+        schema:
+          type:
+            - integer
+            - 'null'
+      use_tls:
+        label: Use TLS
+        schema:
+          type:
+            - boolean
+            - 'null'
+          default: true
 
 secrets-backends:
   - airflow.providers.hashicorp.secrets.vault.VaultBackend
diff --git 
a/providers/hashicorp/src/airflow/providers/hashicorp/get_provider_info.py 
b/providers/hashicorp/src/airflow/providers/hashicorp/get_provider_info.py
index e6f4ecb5099..1fd65f01b98 100644
--- a/providers/hashicorp/src/airflow/providers/hashicorp/get_provider_info.py
+++ b/providers/hashicorp/src/airflow/providers/hashicorp/get_provider_info.py
@@ -45,6 +45,31 @@ def get_provider_info():
                 "hook-class-name": 
"airflow.providers.hashicorp.hooks.vault.VaultHook",
                 "connection-type": "vault",
                 "ui-field-behaviour": {"hidden-fields": ["extra"]},
+                "conn-fields": {
+                    "auth_type": {"label": "Auth type", "schema": {"type": 
["string", "null"]}},
+                    "auth_mount_point": {"label": "Auth mount point", 
"schema": {"type": ["string", "null"]}},
+                    "kv_engine_version": {
+                        "label": "KV engine version",
+                        "schema": {"type": ["integer", "null"], "default": 2, 
"enum": [1, 2]},
+                        "description": "Must be 1 or 2.",
+                    },
+                    "kubernetes_role": {"label": "Kubernetes role", "schema": 
{"type": ["string", "null"]}},
+                    "kubernetes_jwt_path": {
+                        "label": "Kubernetes jwt path",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "jwt_role": {"label": "JWT role", "schema": {"type": 
["string", "null"]}},
+                    "jwt_token": {"label": "JWT token", "schema": {"type": 
["string", "null"]}},
+                    "jwt_token_path": {"label": "JWT token path", "schema": 
{"type": ["string", "null"]}},
+                    "token_path": {"label": "Token path", "schema": {"type": 
["string", "null"]}},
+                    "gcp_key_path": {"label": "GCP key path", "schema": 
{"type": ["string", "null"]}},
+                    "gcp_scopes": {"label": "GCP scopes", "schema": {"type": 
["string", "null"]}},
+                    "azure_tenant_id": {"label": "Azure tenant ID", "schema": 
{"type": ["string", "null"]}},
+                    "azure_resource": {"label": "Azure resource", "schema": 
{"type": ["string", "null"]}},
+                    "radius_host": {"label": "Radius host", "schema": {"type": 
["string", "null"]}},
+                    "radius_port": {"label": "Radius port", "schema": {"type": 
["integer", "null"]}},
+                    "use_tls": {"label": "Use TLS", "schema": {"type": 
["boolean", "null"], "default": True}},
+                },
             }
         ],
         "secrets-backends": 
["airflow.providers.hashicorp.secrets.vault.VaultBackend"],
diff --git a/providers/microsoft/azure/provider.yaml 
b/providers/microsoft/azure/provider.yaml
index c49f055a1c9..8d9620a2e69 100644
--- a/providers/microsoft/azure/provider.yaml
+++ b/providers/microsoft/azure/provider.yaml
@@ -343,6 +343,23 @@ connection-types:
         password: secret (token credentials auth)
         tenantId: tenantId (token credentials auth)
         subscriptionId: subscriptionId (token credentials auth)
+    conn-fields:
+      tenantId:
+        label: Azure Tenant ID
+        schema:
+          type: ["string", "null"]
+      subscriptionId:
+        label: Azure Subscription ID
+        schema:
+          type: ["string", "null"]
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.adx.AzureDataExplorerHook
     connection-type: azure_data_explorer
     ui-field-behaviour:
@@ -357,6 +374,33 @@ connection-types:
         tenant: Used with AAD_APP/AAD_APP_CERT/AAD_CREDS
         certificate: Used with AAD_APP_CERT
         thumbprint: Used with AAD_APP_CERT
+    conn-fields:
+      tenant:
+        label: Tenant ID
+        schema:
+          type: ["string", "null"]
+      auth_method:
+        label: Authentication Method
+        schema:
+          type: ["string", "null"]
+      certificate:
+        label: Application PEM Certificate
+        schema:
+          type: ["string", "null"]
+          format: password
+      thumbprint:
+        label: Application Certificate Thumbprint
+        schema:
+          type: ["string", "null"]
+          format: password
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.batch.AzureBatchHook
     connection-type: azure_batch
     ui-field-behaviour:
@@ -365,6 +409,19 @@ connection-types:
         login: Batch Account Name
         password: Batch Account Access Key
       placeholders: {}
+    conn-fields:
+      account_url:
+        label: Batch Account URL
+        schema:
+          type: ["string", "null"]
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.cosmos.AzureCosmosDBHook
     connection-type: azure_cosmos
     ui-field-behaviour:
@@ -379,6 +436,31 @@ connection-types:
         collection_name: collection name
         subscription_id: Subscription ID (required for Azure AD authentication)
         resource_group_name: Resource Group Name (required for Azure AD 
authentication)
+    conn-fields:
+      database_name:
+        label: Cosmos Database Name (optional)
+        schema:
+          type: ["string", "null"]
+      collection_name:
+        label: Cosmos Collection Name (optional)
+        schema:
+          type: ["string", "null"]
+      subscription_id:
+        label: Subscription ID (optional)
+        schema:
+          type: ["string", "null"]
+      resource_group_name:
+        label: Resource Group Name (optional)
+        schema:
+          type: ["string", "null"]
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.data_lake.AzureDataLakeHook
     connection-type: azure_data_lake
     ui-field-behaviour:
@@ -391,6 +473,23 @@ connection-types:
         password: secret
         tenant: tenant id
         account_name: datalake store
+    conn-fields:
+      tenant:
+        label: Azure Tenant ID
+        schema:
+          type: ["string", "null"]
+      account_name:
+        label: Azure DataLake Store Name
+        schema:
+          type: ["string", "null"]
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.fileshare.AzureFileShareHook
     connection-type: azure_fileshare
     ui-field-behaviour:
@@ -403,6 +502,24 @@ connection-types:
         password: secret
         sas_token: account url or token (optional)
         connection_string: account url or token (optional)
+    conn-fields:
+      sas_token:
+        label: SAS Token (optional)
+        schema:
+          type: ["string", "null"]
+          format: password
+      connection_string:
+        label: Connection String (optional)
+        schema:
+          type: ["string", "null"]
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.container_volume.AzureContainerVolumeHook
     connection-type: azure_container_volume
     ui-field-behaviour:
@@ -416,6 +533,28 @@ connection-types:
         connection_string: connection string auth
         subscription_id: Subscription id (required for Azure AD authentication)
         resource_group: Resource group name (required for Azure AD 
authentication)
+    conn-fields:
+      connection_string:
+        label: Blob Storage Connection String (optional)
+        schema:
+          type: ["string", "null"]
+          format: password
+      subscription_id:
+        label: Subscription ID (optional)
+        schema:
+          type: ["string", "null"]
+      resource_group:
+        label: Resource group name (optional)
+        schema:
+          type: ["string", "null"]
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.container_instance.AzureContainerInstanceHook
     connection-type: azure_container_instance
   - hook-class-name: airflow.providers.microsoft.azure.hooks.wasb.WasbHook
@@ -434,7 +573,37 @@ connection-types:
         tenant_id: tenant
         shared_access_key: shared access key
         sas_token: account url or token
-        extra: additional options for ClientSecretCredential or 
DefaultAzureCredential
+        extra: >-
+          additional options for use with ClientSecretCredential,
+          DefaultAzureCredential, or account_key authentication
+    conn-fields:
+      connection_string:
+        label: Blob Storage Connection String (optional)
+        schema:
+          type: ["string", "null"]
+          format: password
+      shared_access_key:
+        label: Blob Storage Shared Access Key (optional)
+        schema:
+          type: ["string", "null"]
+          format: password
+      tenant_id:
+        label: Tenant Id (Active Directory Auth)
+        schema:
+          type: ["string", "null"]
+      sas_token:
+        label: SAS Token (optional)
+        schema:
+          type: ["string", "null"]
+          format: password
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.data_factory.AzureDataFactoryHook
     connection-type: azure_data_factory
     ui-field-behaviour:
@@ -443,6 +612,31 @@ connection-types:
         login: Client ID
         password: Secret
       placeholders: {}
+    conn-fields:
+      tenantId:
+        label: Tenant ID
+        schema:
+          type: ["string", "null"]
+      subscriptionId:
+        label: Subscription ID
+        schema:
+          type: ["string", "null"]
+      resource_group_name:
+        label: Resource Group Name
+        schema:
+          type: ["string", "null"]
+      factory_name:
+        label: Factory Name
+        schema:
+          type: ["string", "null"]
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.container_registry.AzureContainerRegistryHook
     connection-type: azure_container_registry
     ui-field-behaviour:
@@ -457,6 +651,23 @@ connection-types:
         host: docker image registry server
         subscription_id: Subscription id (required for Azure AD authentication)
         resource_group: Resource group name (required for Azure AD 
authentication)
+    conn-fields:
+      subscription_id:
+        label: Subscription ID (optional)
+        schema:
+          type: ["string", "null"]
+      resource_group:
+        label: Resource group name (optional)
+        schema:
+          type: ["string", "null"]
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.asb.BaseAzureServiceBusHook
     connection-type: azure_service_bus
     ui-field-behaviour:
@@ -464,9 +675,30 @@ connection-types:
       relabeling:
         schema: Connection String
       placeholders:
-        fully_qualified_namespace: <Resource group>.servicebus.windows.net 
(for Azure AD authentication)
+        fully_qualified_namespace: >-
+          <Resource group>.servicebus.windows.net (for Azure AD authentication)
         credential: credential
-        schema: Endpoint=sb://<Resource 
group>.servicebus.windows.net/;SharedAccessKeyName=...
+        schema: >-
+          Endpoint=sb://<Resource group>.servicebus.windows.net/;
+          SharedAccessKeyName=<AccessKeyName>;SharedAccessKey=<SharedAccessKey>
+    conn-fields:
+      fully_qualified_namespace:
+        label: Fully Qualified Namespace
+        schema:
+          type: ["string", "null"]
+      credential:
+        label: Credential
+        schema:
+          type: ["string", "null"]
+          format: password
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.synapse.BaseAzureSynapseHook
     connection-type: azure_synapse
     ui-field-behaviour:
@@ -476,6 +708,23 @@ connection-types:
         password: Secret
         host: Synapse Workspace URL
       placeholders: {}
+    conn-fields:
+      tenantId:
+        label: Tenant ID
+        schema:
+          type: ["string", "null"]
+      subscriptionId:
+        label: Subscription ID
+        schema:
+          type: ["string", "null"]
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.data_lake.AzureDataLakeStorageV2Hook
     connection-type: adls
     ui-field-behaviour:
@@ -491,6 +740,24 @@ connection-types:
         host: storage account name
         connection_string: connection string (overrides auth)
         tenant_id: tenant id
+    conn-fields:
+      connection_string:
+        label: ADLS Gen2 Connection String (optional)
+        schema:
+          type: ["string", "null"]
+          format: password
+      tenant_id:
+        label: Tenant ID (Active Directory)
+        schema:
+          type: ["string", "null"]
+      managed_identity_client_id:
+        label: Managed Identity Client ID
+        schema:
+          type: ["string", "null"]
+      workload_identity_tenant_id:
+        label: Workload Identity Tenant ID
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.msgraph.KiotaRequestAdapterHook
     connection-type: msgraph
     ui-field-behaviour:
@@ -499,6 +766,64 @@ connection-types:
         login: Client ID
         password: Client Secret
       placeholders: {}
+    conn-fields:
+      tenant_id:
+        label: Tenant ID
+        schema:
+          type: ["string", "null"]
+      drive_id:
+        label: Drive ID
+        schema:
+          type: ["string", "null"]
+      api_version:
+        label: API Version
+        schema:
+          type: ["string", "null"]
+          default: v1.0
+      authority:
+        label: Authority
+        schema:
+          type: ["string", "null"]
+      certificate_path:
+        label: Certificate path
+        schema:
+          type: ["string", "null"]
+      certificate_data:
+        label: Certificate data
+        schema:
+          type: ["string", "null"]
+      scopes:
+        label: Scopes
+        schema:
+          type: ["string", "null"]
+          default: https://graph.microsoft.com/.default
+      disable_instance_discovery:
+        label: Disable instance discovery
+        schema:
+          type: ["boolean", "null"]
+          default: false
+      allowed_hosts:
+        label: Allowed hosts
+        schema:
+          type: ["string", "null"]
+      proxies:
+        label: Proxies
+        schema:
+          type: ["string", "null"]
+      verify:
+        label: Verify
+        schema:
+          type: ["boolean", "null"]
+          default: true
+      trust_env:
+        label: Trust environment
+        schema:
+          type: ["boolean", "null"]
+          default: true
+      base_url:
+        label: Base URL
+        schema:
+          type: ["string", "null"]
   - hook-class-name: 
airflow.providers.microsoft.azure.hooks.powerbi.PowerBIHook
     connection-type: powerbi
     ui-field-behaviour:
@@ -507,6 +832,11 @@ connection-types:
         login: Client ID
         password: Client Secret
       placeholders: {}
+    conn-fields:
+      tenant_id:
+        label: Tenant ID
+        schema:
+          type: ["string", "null"]
 
 secrets-backends:
   - airflow.providers.microsoft.azure.secrets.key_vault.AzureKeyVaultBackend
diff --git 
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/get_provider_info.py
 
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/get_provider_info.py
index de4da0f0ac6..80cc07ce077 100644
--- 
a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/get_provider_info.py
+++ 
b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/get_provider_info.py
@@ -333,6 +333,21 @@ def get_provider_info():
                         "subscriptionId": "subscriptionId (token credentials 
auth)",
                     },
                 },
+                "conn-fields": {
+                    "tenantId": {"label": "Azure Tenant ID", "schema": 
{"type": ["string", "null"]}},
+                    "subscriptionId": {
+                        "label": "Azure Subscription ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.adx.AzureDataExplorerHook",
@@ -349,6 +364,26 @@ def get_provider_info():
                         "thumbprint": "Used with AAD_APP_CERT",
                     },
                 },
+                "conn-fields": {
+                    "tenant": {"label": "Tenant ID", "schema": {"type": 
["string", "null"]}},
+                    "auth_method": {"label": "Authentication Method", 
"schema": {"type": ["string", "null"]}},
+                    "certificate": {
+                        "label": "Application PEM Certificate",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "thumbprint": {
+                        "label": "Application Certificate Thumbprint",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.batch.AzureBatchHook",
@@ -358,6 +393,17 @@ def get_provider_info():
                     "relabeling": {"login": "Batch Account Name", "password": 
"Batch Account Access Key"},
                     "placeholders": {},
                 },
+                "conn-fields": {
+                    "account_url": {"label": "Batch Account URL", "schema": 
{"type": ["string", "null"]}},
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.cosmos.AzureCosmosDBHook",
@@ -374,6 +420,32 @@ def get_provider_info():
                         "resource_group_name": "Resource Group Name (required 
for Azure AD authentication)",
                     },
                 },
+                "conn-fields": {
+                    "database_name": {
+                        "label": "Cosmos Database Name (optional)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "collection_name": {
+                        "label": "Cosmos Collection Name (optional)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "subscription_id": {
+                        "label": "Subscription ID (optional)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "resource_group_name": {
+                        "label": "Resource Group Name (optional)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.data_lake.AzureDataLakeHook",
@@ -388,6 +460,21 @@ def get_provider_info():
                         "account_name": "datalake store",
                     },
                 },
+                "conn-fields": {
+                    "tenant": {"label": "Azure Tenant ID", "schema": {"type": 
["string", "null"]}},
+                    "account_name": {
+                        "label": "Azure DataLake Store Name",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.fileshare.AzureFileShareHook",
@@ -405,6 +492,24 @@ def get_provider_info():
                         "connection_string": "account url or token (optional)",
                     },
                 },
+                "conn-fields": {
+                    "sas_token": {
+                        "label": "SAS Token (optional)",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "connection_string": {
+                        "label": "Connection String (optional)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.container_volume.AzureContainerVolumeHook",
@@ -420,6 +525,28 @@ def get_provider_info():
                         "resource_group": "Resource group name (required for 
Azure AD authentication)",
                     },
                 },
+                "conn-fields": {
+                    "connection_string": {
+                        "label": "Blob Storage Connection String (optional)",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "subscription_id": {
+                        "label": "Subscription ID (optional)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "resource_group": {
+                        "label": "Resource group name (optional)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.container_instance.AzureContainerInstanceHook",
@@ -443,7 +570,33 @@ def get_provider_info():
                         "tenant_id": "tenant",
                         "shared_access_key": "shared access key",
                         "sas_token": "account url or token",
-                        "extra": "additional options for 
ClientSecretCredential or DefaultAzureCredential",
+                        "extra": "additional options for use with 
ClientSecretCredential, DefaultAzureCredential, or account_key authentication",
+                    },
+                },
+                "conn-fields": {
+                    "connection_string": {
+                        "label": "Blob Storage Connection String (optional)",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "shared_access_key": {
+                        "label": "Blob Storage Shared Access Key (optional)",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "tenant_id": {
+                        "label": "Tenant Id (Active Directory Auth)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "sas_token": {
+                        "label": "SAS Token (optional)",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
                     },
                 },
             },
@@ -455,6 +608,23 @@ def get_provider_info():
                     "relabeling": {"login": "Client ID", "password": "Secret"},
                     "placeholders": {},
                 },
+                "conn-fields": {
+                    "tenantId": {"label": "Tenant ID", "schema": {"type": 
["string", "null"]}},
+                    "subscriptionId": {"label": "Subscription ID", "schema": 
{"type": ["string", "null"]}},
+                    "resource_group_name": {
+                        "label": "Resource Group Name",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "factory_name": {"label": "Factory Name", "schema": 
{"type": ["string", "null"]}},
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.container_registry.AzureContainerRegistryHook",
@@ -474,6 +644,24 @@ def get_provider_info():
                         "resource_group": "Resource group name (required for 
Azure AD authentication)",
                     },
                 },
+                "conn-fields": {
+                    "subscription_id": {
+                        "label": "Subscription ID (optional)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "resource_group": {
+                        "label": "Resource group name (optional)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.asb.BaseAzureServiceBusHook",
@@ -484,7 +672,25 @@ def get_provider_info():
                     "placeholders": {
                         "fully_qualified_namespace": "<Resource 
group>.servicebus.windows.net (for Azure AD authentication)",
                         "credential": "credential",
-                        "schema": "Endpoint=sb://<Resource 
group>.servicebus.windows.net/;SharedAccessKeyName=...",
+                        "schema": "Endpoint=sb://<Resource 
group>.servicebus.windows.net/; 
SharedAccessKeyName=<AccessKeyName>;SharedAccessKey=<SharedAccessKey>",
+                    },
+                },
+                "conn-fields": {
+                    "fully_qualified_namespace": {
+                        "label": "Fully Qualified Namespace",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "credential": {
+                        "label": "Credential",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
                     },
                 },
             },
@@ -500,6 +706,18 @@ def get_provider_info():
                     },
                     "placeholders": {},
                 },
+                "conn-fields": {
+                    "tenantId": {"label": "Tenant ID", "schema": {"type": 
["string", "null"]}},
+                    "subscriptionId": {"label": "Subscription ID", "schema": 
{"type": ["string", "null"]}},
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.data_lake.AzureDataLakeStorageV2Hook",
@@ -520,6 +738,24 @@ def get_provider_info():
                         "tenant_id": "tenant id",
                     },
                 },
+                "conn-fields": {
+                    "connection_string": {
+                        "label": "ADLS Gen2 Connection String (optional)",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "tenant_id": {
+                        "label": "Tenant ID (Active Directory)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "managed_identity_client_id": {
+                        "label": "Managed Identity Client ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "workload_identity_tenant_id": {
+                        "label": "Workload Identity Tenant ID",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.msgraph.KiotaRequestAdapterHook",
@@ -529,6 +765,36 @@ def get_provider_info():
                     "relabeling": {"login": "Client ID", "password": "Client 
Secret"},
                     "placeholders": {},
                 },
+                "conn-fields": {
+                    "tenant_id": {"label": "Tenant ID", "schema": {"type": 
["string", "null"]}},
+                    "drive_id": {"label": "Drive ID", "schema": {"type": 
["string", "null"]}},
+                    "api_version": {
+                        "label": "API Version",
+                        "schema": {"type": ["string", "null"], "default": 
"v1.0"},
+                    },
+                    "authority": {"label": "Authority", "schema": {"type": 
["string", "null"]}},
+                    "certificate_path": {"label": "Certificate path", 
"schema": {"type": ["string", "null"]}},
+                    "certificate_data": {"label": "Certificate data", 
"schema": {"type": ["string", "null"]}},
+                    "scopes": {
+                        "label": "Scopes",
+                        "schema": {
+                            "type": ["string", "null"],
+                            "default": "https://graph.microsoft.com/.default";,
+                        },
+                    },
+                    "disable_instance_discovery": {
+                        "label": "Disable instance discovery",
+                        "schema": {"type": ["boolean", "null"], "default": 
False},
+                    },
+                    "allowed_hosts": {"label": "Allowed hosts", "schema": 
{"type": ["string", "null"]}},
+                    "proxies": {"label": "Proxies", "schema": {"type": 
["string", "null"]}},
+                    "verify": {"label": "Verify", "schema": {"type": 
["boolean", "null"], "default": True}},
+                    "trust_env": {
+                        "label": "Trust environment",
+                        "schema": {"type": ["boolean", "null"], "default": 
True},
+                    },
+                    "base_url": {"label": "Base URL", "schema": {"type": 
["string", "null"]}},
+                },
             },
             {
                 "hook-class-name": 
"airflow.providers.microsoft.azure.hooks.powerbi.PowerBIHook",
@@ -538,6 +804,7 @@ def get_provider_info():
                     "relabeling": {"login": "Client ID", "password": "Client 
Secret"},
                     "placeholders": {},
                 },
+                "conn-fields": {"tenant_id": {"label": "Tenant ID", "schema": 
{"type": ["string", "null"]}}},
             },
         ],
         "secrets-backends": 
["airflow.providers.microsoft.azure.secrets.key_vault.AzureKeyVaultBackend"],
diff --git a/providers/snowflake/provider.yaml 
b/providers/snowflake/provider.yaml
index 0412dc0b118..d830f37c37d 100644
--- a/providers/snowflake/provider.yaml
+++ b/providers/snowflake/provider.yaml
@@ -181,6 +181,82 @@ connection-types:
         proxy_port: Proxy server port
         proxy_user: Proxy username (optional)
         proxy_password: Proxy password (optional)
+    conn-fields:
+      account:
+        label: Account
+        schema:
+          type:
+            - string
+            - 'null'
+      warehouse:
+        label: Warehouse
+        schema:
+          type:
+            - string
+            - 'null'
+      database:
+        label: Database
+        schema:
+          type:
+            - string
+            - 'null'
+      region:
+        label: Region
+        schema:
+          type:
+            - string
+            - 'null'
+      role:
+        label: Role
+        schema:
+          type:
+            - string
+            - 'null'
+      private_key_file:
+        label: Private key (Path)
+        schema:
+          type:
+            - string
+            - 'null'
+      private_key_content:
+        label: Private key (Text)
+        schema:
+          type:
+            - string
+            - 'null'
+          format: password
+      insecure_mode:
+        label: Insecure Mode
+        schema:
+          type:
+            - boolean
+            - 'null'
+        description: Turns off OCSP certificate checks
+      proxy_host:
+        label: Proxy Host
+        schema:
+          type:
+            - string
+            - 'null'
+      proxy_port:
+        label: Proxy Port
+        schema:
+          type:
+            - integer
+            - 'null'
+      proxy_user:
+        label: Proxy User
+        schema:
+          type:
+            - string
+            - 'null'
+      proxy_password:
+        label: Proxy Password
+        schema:
+          type:
+            - string
+            - 'null'
+          format: password
 
 triggers:
   - integration-name: Snowflake
diff --git 
a/providers/snowflake/src/airflow/providers/snowflake/get_provider_info.py 
b/providers/snowflake/src/airflow/providers/snowflake/get_provider_info.py
index 9acc48e03f6..9974117f789 100644
--- a/providers/snowflake/src/airflow/providers/snowflake/get_provider_info.py
+++ b/providers/snowflake/src/airflow/providers/snowflake/get_provider_info.py
@@ -108,6 +108,33 @@ def get_provider_info():
                         "proxy_password": "Proxy password (optional)",
                     },
                 },
+                "conn-fields": {
+                    "account": {"label": "Account", "schema": {"type": 
["string", "null"]}},
+                    "warehouse": {"label": "Warehouse", "schema": {"type": 
["string", "null"]}},
+                    "database": {"label": "Database", "schema": {"type": 
["string", "null"]}},
+                    "region": {"label": "Region", "schema": {"type": 
["string", "null"]}},
+                    "role": {"label": "Role", "schema": {"type": ["string", 
"null"]}},
+                    "private_key_file": {
+                        "label": "Private key (Path)",
+                        "schema": {"type": ["string", "null"]},
+                    },
+                    "private_key_content": {
+                        "label": "Private key (Text)",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                    "insecure_mode": {
+                        "label": "Insecure Mode",
+                        "schema": {"type": ["boolean", "null"]},
+                        "description": "Turns off OCSP certificate checks",
+                    },
+                    "proxy_host": {"label": "Proxy Host", "schema": {"type": 
["string", "null"]}},
+                    "proxy_port": {"label": "Proxy Port", "schema": {"type": 
["integer", "null"]}},
+                    "proxy_user": {"label": "Proxy User", "schema": {"type": 
["string", "null"]}},
+                    "proxy_password": {
+                        "label": "Proxy Password",
+                        "schema": {"type": ["string", "null"], "format": 
"password"},
+                    },
+                },
             }
         ],
         "triggers": [
diff --git a/scripts/tools/generate_yaml_format_for_hooks.py 
b/scripts/tools/generate_yaml_format_for_hooks.py
index ecb3c112f1d..0bf2857ec98 100755
--- a/scripts/tools/generate_yaml_format_for_hooks.py
+++ b/scripts/tools/generate_yaml_format_for_hooks.py
@@ -52,26 +52,40 @@ def extract_conn_fields(widgets, connection_type):
     for field_key, field_widget in widgets.items():
         field_name = field_key[len(prefix) :] if field_key.startswith(prefix) 
else field_key
 
-        if not hasattr(field_widget, "param"):
+        field_class = getattr(field_widget, "field_class", None)
+        if not field_class:
             continue
 
-        field_data = field_widget.param.dump()
-        schema = field_data.get("schema", {}).copy()
-        label = schema.pop("title", field_name.replace("_", " ").title())
+        field_class_name = field_class.__name__
+        args = getattr(field_widget, "args", ())
+        kwargs = getattr(field_widget, "kwargs", {})
 
-        field_class_name = getattr(field_widget, "field_class", None)
-        is_password_field = field_class_name and "Password" in 
field_class_name.__name__
+        label = str(args[0]) if args else field_name.replace("_", " ").title()
 
-        if is_password_field and schema.get("format") != "password":
-            schema["format"] = "password"
+        # Use ["type", "null"] to make fields optional (nullable) by default.
+        # This matches the legacy behavior where all extra fields are optional.
+        if "Boolean" in field_class_name:
+            schema = {"type": ["boolean", "null"]}
+        elif "Integer" in field_class_name:
+            schema = {"type": ["integer", "null"]}
+        elif "Password" in field_class_name:
+            schema = {"type": ["string", "null"], "format": "password"}
+        else:
+            schema = {"type": ["string", "null"]}
+
+        if kwargs.get("default") is not None:
+            schema["default"] = kwargs["default"]
 
-        if field_data.get("value") is not None:
-            schema["default"] = field_data["value"]
+        # Extract enum constraints from any_of() / AnyOf validators
+        validators = kwargs.get("validators", [])
+        for validator in validators:
+            if hasattr(validator, "values_formatter") and hasattr(validator, 
"values"):
+                schema["enum"] = list(validator.values)
 
         yaml_field = {"label": label, "schema": schema}
 
-        if field_data.get("description"):
-            yaml_field["description"] = field_data["description"]
+        if kwargs.get("description"):
+            yaml_field["description"] = kwargs["description"]
 
         conn_fields[field_name] = yaml_field
 

Reply via email to