recurvedata-lib 0.1.487__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of recurvedata-lib might be problematic. Click here for more details.

Files changed (333) hide show
  1. recurvedata/__init__.py +0 -0
  2. recurvedata/__version__.py +1 -0
  3. recurvedata/client/__init__.py +3 -0
  4. recurvedata/client/client.py +150 -0
  5. recurvedata/client/server_client.py +91 -0
  6. recurvedata/config.py +99 -0
  7. recurvedata/connectors/__init__.py +20 -0
  8. recurvedata/connectors/_register.py +46 -0
  9. recurvedata/connectors/base.py +111 -0
  10. recurvedata/connectors/config_schema.py +1575 -0
  11. recurvedata/connectors/connectors/__init__.py +0 -0
  12. recurvedata/connectors/connectors/aliyun_access_key.py +30 -0
  13. recurvedata/connectors/connectors/auth.py +44 -0
  14. recurvedata/connectors/connectors/azure_blob.py +89 -0
  15. recurvedata/connectors/connectors/azure_synapse.py +79 -0
  16. recurvedata/connectors/connectors/bigquery.py +359 -0
  17. recurvedata/connectors/connectors/clickhouse.py +219 -0
  18. recurvedata/connectors/connectors/dingtalk.py +61 -0
  19. recurvedata/connectors/connectors/doris.py +215 -0
  20. recurvedata/connectors/connectors/es.py +62 -0
  21. recurvedata/connectors/connectors/feishu.py +65 -0
  22. recurvedata/connectors/connectors/ftp.py +50 -0
  23. recurvedata/connectors/connectors/generic.py +49 -0
  24. recurvedata/connectors/connectors/google_cloud_storage.py +115 -0
  25. recurvedata/connectors/connectors/google_service_account.py +225 -0
  26. recurvedata/connectors/connectors/hive.py +207 -0
  27. recurvedata/connectors/connectors/impala.py +210 -0
  28. recurvedata/connectors/connectors/jenkins.py +51 -0
  29. recurvedata/connectors/connectors/mail.py +89 -0
  30. recurvedata/connectors/connectors/microsoft_fabric.py +284 -0
  31. recurvedata/connectors/connectors/mongo.py +79 -0
  32. recurvedata/connectors/connectors/mssql.py +131 -0
  33. recurvedata/connectors/connectors/mysql.py +191 -0
  34. recurvedata/connectors/connectors/n8n.py +141 -0
  35. recurvedata/connectors/connectors/oss.py +74 -0
  36. recurvedata/connectors/connectors/owncloud.py +36 -0
  37. recurvedata/connectors/connectors/phoenix.py +36 -0
  38. recurvedata/connectors/connectors/postgres.py +230 -0
  39. recurvedata/connectors/connectors/python.py +50 -0
  40. recurvedata/connectors/connectors/redshift.py +187 -0
  41. recurvedata/connectors/connectors/s3.py +93 -0
  42. recurvedata/connectors/connectors/sftp.py +87 -0
  43. recurvedata/connectors/connectors/slack.py +35 -0
  44. recurvedata/connectors/connectors/spark.py +99 -0
  45. recurvedata/connectors/connectors/starrocks.py +175 -0
  46. recurvedata/connectors/connectors/tencent_cos.py +40 -0
  47. recurvedata/connectors/connectors/tidb.py +49 -0
  48. recurvedata/connectors/const.py +315 -0
  49. recurvedata/connectors/datasource.py +189 -0
  50. recurvedata/connectors/dbapi.py +469 -0
  51. recurvedata/connectors/fs.py +66 -0
  52. recurvedata/connectors/ftp.py +40 -0
  53. recurvedata/connectors/object_store.py +60 -0
  54. recurvedata/connectors/pigeon.py +172 -0
  55. recurvedata/connectors/proxy.py +104 -0
  56. recurvedata/connectors/service.py +223 -0
  57. recurvedata/connectors/utils.py +47 -0
  58. recurvedata/consts.py +49 -0
  59. recurvedata/core/__init__.py +0 -0
  60. recurvedata/core/config.py +46 -0
  61. recurvedata/core/configurable.py +27 -0
  62. recurvedata/core/consts.py +2 -0
  63. recurvedata/core/templating.py +206 -0
  64. recurvedata/core/tracing.py +223 -0
  65. recurvedata/core/transformer.py +186 -0
  66. recurvedata/core/translation.py +91 -0
  67. recurvedata/dbt/client.py +97 -0
  68. recurvedata/dbt/consts.py +99 -0
  69. recurvedata/dbt/cosmos_utils.py +275 -0
  70. recurvedata/dbt/error_codes.py +18 -0
  71. recurvedata/dbt/schemas.py +98 -0
  72. recurvedata/dbt/service.py +451 -0
  73. recurvedata/dbt/utils.py +246 -0
  74. recurvedata/error_codes.py +71 -0
  75. recurvedata/exceptions.py +72 -0
  76. recurvedata/executors/__init__.py +4 -0
  77. recurvedata/executors/cli/__init__.py +7 -0
  78. recurvedata/executors/cli/connector.py +117 -0
  79. recurvedata/executors/cli/dbt.py +118 -0
  80. recurvedata/executors/cli/main.py +82 -0
  81. recurvedata/executors/cli/parameters.py +18 -0
  82. recurvedata/executors/client.py +190 -0
  83. recurvedata/executors/consts.py +50 -0
  84. recurvedata/executors/debug_executor.py +100 -0
  85. recurvedata/executors/executor.py +300 -0
  86. recurvedata/executors/link_executor.py +189 -0
  87. recurvedata/executors/models.py +34 -0
  88. recurvedata/executors/schemas.py +222 -0
  89. recurvedata/executors/service/__init__.py +0 -0
  90. recurvedata/executors/service/connector.py +380 -0
  91. recurvedata/executors/utils.py +172 -0
  92. recurvedata/filestorage/__init__.py +11 -0
  93. recurvedata/filestorage/_factory.py +33 -0
  94. recurvedata/filestorage/backends/__init__.py +0 -0
  95. recurvedata/filestorage/backends/fsspec.py +45 -0
  96. recurvedata/filestorage/backends/local.py +67 -0
  97. recurvedata/filestorage/backends/oss.py +56 -0
  98. recurvedata/filestorage/interface.py +84 -0
  99. recurvedata/operators/__init__.py +10 -0
  100. recurvedata/operators/base.py +28 -0
  101. recurvedata/operators/config.py +21 -0
  102. recurvedata/operators/context.py +255 -0
  103. recurvedata/operators/dbt_operator/__init__.py +2 -0
  104. recurvedata/operators/dbt_operator/model_pipeline_link_operator.py +55 -0
  105. recurvedata/operators/dbt_operator/operator.py +353 -0
  106. recurvedata/operators/link_operator/__init__.py +1 -0
  107. recurvedata/operators/link_operator/operator.py +120 -0
  108. recurvedata/operators/models.py +55 -0
  109. recurvedata/operators/notify_operator/__init__.py +1 -0
  110. recurvedata/operators/notify_operator/operator.py +180 -0
  111. recurvedata/operators/operator.py +119 -0
  112. recurvedata/operators/python_operator/__init__.py +1 -0
  113. recurvedata/operators/python_operator/operator.py +132 -0
  114. recurvedata/operators/sensor_operator/__init__.py +1 -0
  115. recurvedata/operators/sensor_operator/airflow_utils.py +63 -0
  116. recurvedata/operators/sensor_operator/operator.py +172 -0
  117. recurvedata/operators/spark_operator/__init__.py +1 -0
  118. recurvedata/operators/spark_operator/operator.py +200 -0
  119. recurvedata/operators/spark_operator/spark_sample.py +47 -0
  120. recurvedata/operators/sql_operator/__init__.py +1 -0
  121. recurvedata/operators/sql_operator/operator.py +90 -0
  122. recurvedata/operators/task.py +211 -0
  123. recurvedata/operators/transfer_operator/__init__.py +40 -0
  124. recurvedata/operators/transfer_operator/const.py +10 -0
  125. recurvedata/operators/transfer_operator/dump_aliyun_sls.py +82 -0
  126. recurvedata/operators/transfer_operator/dump_sheet_task_base.py +292 -0
  127. recurvedata/operators/transfer_operator/dump_task_cass.py +155 -0
  128. recurvedata/operators/transfer_operator/dump_task_dbapi.py +209 -0
  129. recurvedata/operators/transfer_operator/dump_task_es.py +113 -0
  130. recurvedata/operators/transfer_operator/dump_task_feishu_sheet.py +114 -0
  131. recurvedata/operators/transfer_operator/dump_task_ftp.py +234 -0
  132. recurvedata/operators/transfer_operator/dump_task_google_sheet.py +66 -0
  133. recurvedata/operators/transfer_operator/dump_task_mongodb.py +168 -0
  134. recurvedata/operators/transfer_operator/dump_task_oss.py +285 -0
  135. recurvedata/operators/transfer_operator/dump_task_python.py +212 -0
  136. recurvedata/operators/transfer_operator/dump_task_s3.py +270 -0
  137. recurvedata/operators/transfer_operator/dump_task_sftp.py +229 -0
  138. recurvedata/operators/transfer_operator/load_task_aliyun_oss.py +107 -0
  139. recurvedata/operators/transfer_operator/load_task_azure_blob.py +115 -0
  140. recurvedata/operators/transfer_operator/load_task_azure_synapse.py +90 -0
  141. recurvedata/operators/transfer_operator/load_task_clickhouse.py +167 -0
  142. recurvedata/operators/transfer_operator/load_task_doris.py +164 -0
  143. recurvedata/operators/transfer_operator/load_task_email.py +188 -0
  144. recurvedata/operators/transfer_operator/load_task_es.py +86 -0
  145. recurvedata/operators/transfer_operator/load_task_filebrowser.py +151 -0
  146. recurvedata/operators/transfer_operator/load_task_ftp.py +19 -0
  147. recurvedata/operators/transfer_operator/load_task_google_bigquery.py +90 -0
  148. recurvedata/operators/transfer_operator/load_task_google_cloud_storage.py +127 -0
  149. recurvedata/operators/transfer_operator/load_task_google_sheet.py +130 -0
  150. recurvedata/operators/transfer_operator/load_task_hive.py +158 -0
  151. recurvedata/operators/transfer_operator/load_task_microsoft_fabric.py +105 -0
  152. recurvedata/operators/transfer_operator/load_task_mssql.py +153 -0
  153. recurvedata/operators/transfer_operator/load_task_mysql.py +157 -0
  154. recurvedata/operators/transfer_operator/load_task_owncloud.py +135 -0
  155. recurvedata/operators/transfer_operator/load_task_postgresql.py +109 -0
  156. recurvedata/operators/transfer_operator/load_task_qcloud_cos.py +119 -0
  157. recurvedata/operators/transfer_operator/load_task_recurve_data_prep.py +75 -0
  158. recurvedata/operators/transfer_operator/load_task_redshift.py +95 -0
  159. recurvedata/operators/transfer_operator/load_task_s3.py +150 -0
  160. recurvedata/operators/transfer_operator/load_task_sftp.py +90 -0
  161. recurvedata/operators/transfer_operator/load_task_starrocks.py +169 -0
  162. recurvedata/operators/transfer_operator/load_task_yicrowds.py +97 -0
  163. recurvedata/operators/transfer_operator/mixin.py +31 -0
  164. recurvedata/operators/transfer_operator/operator.py +231 -0
  165. recurvedata/operators/transfer_operator/task.py +223 -0
  166. recurvedata/operators/transfer_operator/utils.py +134 -0
  167. recurvedata/operators/ui.py +80 -0
  168. recurvedata/operators/utils/__init__.py +51 -0
  169. recurvedata/operators/utils/file_factory.py +150 -0
  170. recurvedata/operators/utils/fs.py +10 -0
  171. recurvedata/operators/utils/lineage.py +265 -0
  172. recurvedata/operators/web_init.py +15 -0
  173. recurvedata/pigeon/connector/__init__.py +294 -0
  174. recurvedata/pigeon/connector/_registry.py +17 -0
  175. recurvedata/pigeon/connector/aliyun_oss.py +80 -0
  176. recurvedata/pigeon/connector/awss3.py +123 -0
  177. recurvedata/pigeon/connector/azure_blob.py +176 -0
  178. recurvedata/pigeon/connector/azure_synapse.py +51 -0
  179. recurvedata/pigeon/connector/cass.py +151 -0
  180. recurvedata/pigeon/connector/clickhouse.py +403 -0
  181. recurvedata/pigeon/connector/clickhouse_native.py +351 -0
  182. recurvedata/pigeon/connector/dbapi.py +571 -0
  183. recurvedata/pigeon/connector/doris.py +166 -0
  184. recurvedata/pigeon/connector/es.py +176 -0
  185. recurvedata/pigeon/connector/feishu.py +1135 -0
  186. recurvedata/pigeon/connector/ftp.py +163 -0
  187. recurvedata/pigeon/connector/google_bigquery.py +283 -0
  188. recurvedata/pigeon/connector/google_cloud_storage.py +130 -0
  189. recurvedata/pigeon/connector/hbase_phoenix.py +108 -0
  190. recurvedata/pigeon/connector/hdfs.py +204 -0
  191. recurvedata/pigeon/connector/hive_impala.py +383 -0
  192. recurvedata/pigeon/connector/microsoft_fabric.py +95 -0
  193. recurvedata/pigeon/connector/mongodb.py +56 -0
  194. recurvedata/pigeon/connector/mssql.py +467 -0
  195. recurvedata/pigeon/connector/mysql.py +175 -0
  196. recurvedata/pigeon/connector/owncloud.py +92 -0
  197. recurvedata/pigeon/connector/postgresql.py +267 -0
  198. recurvedata/pigeon/connector/power_bi.py +179 -0
  199. recurvedata/pigeon/connector/qcloud_cos.py +79 -0
  200. recurvedata/pigeon/connector/redshift.py +123 -0
  201. recurvedata/pigeon/connector/sftp.py +73 -0
  202. recurvedata/pigeon/connector/sqlite.py +42 -0
  203. recurvedata/pigeon/connector/starrocks.py +144 -0
  204. recurvedata/pigeon/connector/tableau.py +162 -0
  205. recurvedata/pigeon/const.py +21 -0
  206. recurvedata/pigeon/csv.py +172 -0
  207. recurvedata/pigeon/docs/datasources-example.json +82 -0
  208. recurvedata/pigeon/docs/images/pigeon_design.png +0 -0
  209. recurvedata/pigeon/docs/lightweight-data-sync-solution.md +111 -0
  210. recurvedata/pigeon/dumper/__init__.py +171 -0
  211. recurvedata/pigeon/dumper/aliyun_sls.py +415 -0
  212. recurvedata/pigeon/dumper/base.py +141 -0
  213. recurvedata/pigeon/dumper/cass.py +213 -0
  214. recurvedata/pigeon/dumper/dbapi.py +346 -0
  215. recurvedata/pigeon/dumper/es.py +112 -0
  216. recurvedata/pigeon/dumper/ftp.py +64 -0
  217. recurvedata/pigeon/dumper/mongodb.py +103 -0
  218. recurvedata/pigeon/handler/__init__.py +4 -0
  219. recurvedata/pigeon/handler/base.py +153 -0
  220. recurvedata/pigeon/handler/csv_handler.py +290 -0
  221. recurvedata/pigeon/loader/__init__.py +87 -0
  222. recurvedata/pigeon/loader/base.py +83 -0
  223. recurvedata/pigeon/loader/csv_to_azure_synapse.py +214 -0
  224. recurvedata/pigeon/loader/csv_to_clickhouse.py +152 -0
  225. recurvedata/pigeon/loader/csv_to_doris.py +215 -0
  226. recurvedata/pigeon/loader/csv_to_es.py +51 -0
  227. recurvedata/pigeon/loader/csv_to_google_bigquery.py +169 -0
  228. recurvedata/pigeon/loader/csv_to_hive.py +468 -0
  229. recurvedata/pigeon/loader/csv_to_microsoft_fabric.py +242 -0
  230. recurvedata/pigeon/loader/csv_to_mssql.py +174 -0
  231. recurvedata/pigeon/loader/csv_to_mysql.py +180 -0
  232. recurvedata/pigeon/loader/csv_to_postgresql.py +248 -0
  233. recurvedata/pigeon/loader/csv_to_redshift.py +240 -0
  234. recurvedata/pigeon/loader/csv_to_starrocks.py +233 -0
  235. recurvedata/pigeon/meta.py +116 -0
  236. recurvedata/pigeon/row_factory.py +42 -0
  237. recurvedata/pigeon/schema/__init__.py +124 -0
  238. recurvedata/pigeon/schema/types.py +13 -0
  239. recurvedata/pigeon/sync.py +283 -0
  240. recurvedata/pigeon/transformer.py +146 -0
  241. recurvedata/pigeon/utils/__init__.py +134 -0
  242. recurvedata/pigeon/utils/bloomfilter.py +181 -0
  243. recurvedata/pigeon/utils/date_time.py +323 -0
  244. recurvedata/pigeon/utils/escape.py +15 -0
  245. recurvedata/pigeon/utils/fs.py +266 -0
  246. recurvedata/pigeon/utils/json.py +44 -0
  247. recurvedata/pigeon/utils/keyed_tuple.py +85 -0
  248. recurvedata/pigeon/utils/mp.py +156 -0
  249. recurvedata/pigeon/utils/sql.py +328 -0
  250. recurvedata/pigeon/utils/timing.py +155 -0
  251. recurvedata/provider_manager.py +0 -0
  252. recurvedata/providers/__init__.py +0 -0
  253. recurvedata/providers/dbapi/__init__.py +0 -0
  254. recurvedata/providers/flywheel/__init__.py +0 -0
  255. recurvedata/providers/mysql/__init__.py +0 -0
  256. recurvedata/schedulers/__init__.py +1 -0
  257. recurvedata/schedulers/airflow.py +974 -0
  258. recurvedata/schedulers/airflow_db_process.py +331 -0
  259. recurvedata/schedulers/airflow_operators.py +61 -0
  260. recurvedata/schedulers/airflow_plugin.py +9 -0
  261. recurvedata/schedulers/airflow_trigger_dag_patch.py +117 -0
  262. recurvedata/schedulers/base.py +99 -0
  263. recurvedata/schedulers/cli.py +228 -0
  264. recurvedata/schedulers/client.py +56 -0
  265. recurvedata/schedulers/consts.py +52 -0
  266. recurvedata/schedulers/debug_celery.py +62 -0
  267. recurvedata/schedulers/model.py +63 -0
  268. recurvedata/schedulers/schemas.py +97 -0
  269. recurvedata/schedulers/service.py +20 -0
  270. recurvedata/schedulers/system_dags.py +59 -0
  271. recurvedata/schedulers/task_status.py +279 -0
  272. recurvedata/schedulers/utils.py +73 -0
  273. recurvedata/schema/__init__.py +0 -0
  274. recurvedata/schema/field.py +88 -0
  275. recurvedata/schema/schema.py +55 -0
  276. recurvedata/schema/types.py +17 -0
  277. recurvedata/schema.py +0 -0
  278. recurvedata/server/__init__.py +0 -0
  279. recurvedata/server/app.py +7 -0
  280. recurvedata/server/connector/__init__.py +0 -0
  281. recurvedata/server/connector/api.py +79 -0
  282. recurvedata/server/connector/schemas.py +28 -0
  283. recurvedata/server/data_service/__init__.py +0 -0
  284. recurvedata/server/data_service/api.py +126 -0
  285. recurvedata/server/data_service/client.py +18 -0
  286. recurvedata/server/data_service/consts.py +1 -0
  287. recurvedata/server/data_service/schemas.py +68 -0
  288. recurvedata/server/data_service/service.py +218 -0
  289. recurvedata/server/dbt/__init__.py +0 -0
  290. recurvedata/server/dbt/api.py +116 -0
  291. recurvedata/server/error_code.py +49 -0
  292. recurvedata/server/exceptions.py +19 -0
  293. recurvedata/server/executor/__init__.py +0 -0
  294. recurvedata/server/executor/api.py +37 -0
  295. recurvedata/server/executor/schemas.py +30 -0
  296. recurvedata/server/executor/service.py +220 -0
  297. recurvedata/server/main.py +32 -0
  298. recurvedata/server/schedulers/__init__.py +0 -0
  299. recurvedata/server/schedulers/api.py +252 -0
  300. recurvedata/server/schedulers/schemas.py +50 -0
  301. recurvedata/server/schemas.py +50 -0
  302. recurvedata/utils/__init__.py +15 -0
  303. recurvedata/utils/_typer.py +61 -0
  304. recurvedata/utils/attrdict.py +19 -0
  305. recurvedata/utils/command_helper.py +20 -0
  306. recurvedata/utils/compat.py +12 -0
  307. recurvedata/utils/compression.py +203 -0
  308. recurvedata/utils/crontab.py +42 -0
  309. recurvedata/utils/crypto_util.py +305 -0
  310. recurvedata/utils/dataclass.py +11 -0
  311. recurvedata/utils/date_time.py +464 -0
  312. recurvedata/utils/dispatch.py +114 -0
  313. recurvedata/utils/email_util.py +104 -0
  314. recurvedata/utils/files.py +386 -0
  315. recurvedata/utils/helpers.py +170 -0
  316. recurvedata/utils/httputil.py +117 -0
  317. recurvedata/utils/imports.py +132 -0
  318. recurvedata/utils/json.py +80 -0
  319. recurvedata/utils/log.py +117 -0
  320. recurvedata/utils/log_capture.py +153 -0
  321. recurvedata/utils/mp.py +178 -0
  322. recurvedata/utils/normalizer.py +102 -0
  323. recurvedata/utils/redis_lock.py +474 -0
  324. recurvedata/utils/registry.py +54 -0
  325. recurvedata/utils/shell.py +15 -0
  326. recurvedata/utils/singleton.py +33 -0
  327. recurvedata/utils/sql.py +6 -0
  328. recurvedata/utils/timeout.py +28 -0
  329. recurvedata/utils/tracing.py +14 -0
  330. recurvedata_lib-0.1.487.dist-info/METADATA +605 -0
  331. recurvedata_lib-0.1.487.dist-info/RECORD +333 -0
  332. recurvedata_lib-0.1.487.dist-info/WHEEL +5 -0
  333. recurvedata_lib-0.1.487.dist-info/entry_points.txt +6 -0
@@ -0,0 +1,1575 @@
1
+ from recurvedata.connectors.const import SSH_TUNNEL_CONFIG_SCHEMA, get_module_name
2
+ from recurvedata.connectors.proxy import HTTP_PROXY_CONFIG_SCHEMA
3
+ from recurvedata.core.translation import _l
4
+
5
+
6
+ def get_complex_config_schema(connection_name: str):
7
+ module_name = get_module_name(connection_name)
8
+ if module_name:
9
+ return ALL_CONFIG_SCHEMA_DCT[module_name]
10
+
11
+
12
+ # auto generated by scripts/connector_schema_generator.py
13
+ ALL_CONFIG_SCHEMA_DCT = {
14
+ "recurvedata.connectors.connectors.aliyun_access_key": {
15
+ "type": "aliyun_access_key",
16
+ "ui_type": "Aliyun Access Key",
17
+ "category": ["others"],
18
+ "config_schema": {
19
+ "type": "object",
20
+ "properties": {
21
+ "endpoint": {"type": "string", "title": _l("Endpoint")},
22
+ "access_key_id": {"type": "string", "title": _l("Access Key ID")},
23
+ "access_key_secret": {"type": "string", "title": _l("Access Key Secret")},
24
+ },
25
+ "order": ["endpoint", "access_key_id", "access_key_secret"],
26
+ "required": ["endpoint", "access_key_id", "access_key_secret"],
27
+ "secret": ["access_key_secret"],
28
+ },
29
+ "enabled": True,
30
+ "group": ["destination"],
31
+ "test_required": False,
32
+ },
33
+ "recurvedata.connectors.connectors.auth": {
34
+ "type": "auth",
35
+ "ui_type": "Auth",
36
+ "category": ["others"],
37
+ "config_schema": {
38
+ "type": "object",
39
+ "properties": {
40
+ "host": {"type": "string", "title": _l("Host Address")},
41
+ "user": {"type": "string", "title": _l("Username")},
42
+ "password": {"type": "string", "title": _l("Password")},
43
+ "port": {"type": "number", "title": _l("Port Number")},
44
+ "extra": {
45
+ "type": "string",
46
+ "title": _l("Additional Configuration"),
47
+ "description": _l("Additional configuration parameters in JSON format"),
48
+ "ui:options": {"type": "textarea"},
49
+ },
50
+ },
51
+ "order": ["host", "user", "password", "port", "extra"],
52
+ "required": ["host"],
53
+ "secret": ["password"],
54
+ },
55
+ "enabled": True,
56
+ "group": [],
57
+ "test_required": True,
58
+ },
59
+ "recurvedata.connectors.connectors.azure_blob": {
60
+ "type": "azure_blob",
61
+ "ui_type": "Azure Blob Storage",
62
+ "category": ["storage"],
63
+ "config_schema": {
64
+ "type": "object",
65
+ "properties": {
66
+ "connection_string": {
67
+ "type": "string",
68
+ "title": _l("Connection String"),
69
+ "description": _l("Azure Storage connection string containing authentication details"),
70
+ },
71
+ "account_name": {"type": "string", "title": _l("Storage Account Name")},
72
+ "account_key": {"type": "string", "title": _l("Account Access Key")},
73
+ "sas_token": {"type": "string", "title": _l("SAS Token")},
74
+ "container": {"type": "string", "title": _l("Container Name")},
75
+ "endpoint_suffix": {
76
+ "type": "string",
77
+ "title": _l("Endpoint Suffix"),
78
+ "description": _l("Storage endpoint suffix (e.g. core.windows.net)"),
79
+ },
80
+ },
81
+ "order": ["connection_string", "account_name", "account_key", "sas_token", "container", "endpoint_suffix"],
82
+ "required": [],
83
+ "secret": ["account_key", "sas_token"],
84
+ },
85
+ "enabled": True,
86
+ "group": ["destination"],
87
+ "test_required": True,
88
+ },
89
+ "recurvedata.connectors.connectors.azure_synapse": {
90
+ "type": "azure_synapse",
91
+ "ui_type": "Azure Synapse",
92
+ "category": ["warehouse"],
93
+ "config_schema": {
94
+ "type": "object",
95
+ "properties": {
96
+ "host": {"type": "string", "title": _l("Host Address")},
97
+ "port": {
98
+ "type": "number",
99
+ "title": _l("Port Number"),
100
+ "default": 1433,
101
+ },
102
+ "user": {"type": "string", "title": _l("Username")},
103
+ "password": {"type": "string", "title": _l("Password")},
104
+ "database": {"type": "string", "title": _l("Database Name")},
105
+ "odbc_driver": {
106
+ "type": "string",
107
+ "title": _l("ODBC Driver"),
108
+ "default": "ODBC Driver 17 for SQL Server",
109
+ },
110
+ "blob_options": {
111
+ "type": "object",
112
+ "title": _l("Azure Blob Storage Options"),
113
+ "properties": {
114
+ "account_name": {"type": "string", "title": _l("Storage Account Name")},
115
+ "sas_token": {"type": "string", "title": _l("SAS Token")},
116
+ },
117
+ "order": ["account_name", "sas_token"],
118
+ },
119
+ },
120
+ "order": ["host", "port", "user", "password", "database", "odbc_driver", "blob_options"],
121
+ "required": ["host", "port"],
122
+ "secret": ["password", "blob_options.sas_token"],
123
+ },
124
+ "enabled": True,
125
+ "group": ["destination"],
126
+ "test_required": True,
127
+ },
128
+ "recurvedata.connectors.connectors.bigquery": {
129
+ "type": "bigquery",
130
+ "ui_type": "Google BigQuery",
131
+ "category": ["warehouse", "database"],
132
+ "config_schema": {
133
+ "type": "object",
134
+ "properties": {
135
+ "type": {
136
+ "type": "string",
137
+ "title": _l("Account Type"),
138
+ "default": "service_account",
139
+ },
140
+ "project_id": {"type": "string", "title": _l("Google Cloud Project ID")},
141
+ "private_key_id": {"type": "string", "title": _l("Google Auth Private Key ID")},
142
+ "private_key": {"type": "string", "title": _l("Google Auth Private Key")},
143
+ "client_id": {"type": "string", "title": _l("Google OAuth Client ID")},
144
+ "client_email": {"type": "string", "title": _l("Service Account Email")},
145
+ "token_uri": {
146
+ "type": "string",
147
+ "title": _l("Google OAuth Token URI"),
148
+ "default": "https://oauth2.googleapis.com/token",
149
+ },
150
+ "proxies": HTTP_PROXY_CONFIG_SCHEMA["proxies"],
151
+ },
152
+ "order": [
153
+ "type",
154
+ "project_id",
155
+ "private_key_id",
156
+ "private_key",
157
+ "client_id",
158
+ "client_email",
159
+ "token_uri",
160
+ "proxies",
161
+ ],
162
+ "required": ["type", "project_id", "private_key", "private_key_id", "client_email", "token_uri"],
163
+ "secret": ["private_key"],
164
+ },
165
+ "enabled": True,
166
+ "group": ["destination"],
167
+ "test_required": True,
168
+ },
169
+ "recurvedata.connectors.connectors.clickhouse": {
170
+ "type": "clickhouse",
171
+ "ui_type": "ClickHouse",
172
+ "category": ["database"],
173
+ "config_schema": {
174
+ "type": "object",
175
+ "properties": {
176
+ "host": {
177
+ "type": "string",
178
+ "title": _l("Host Address"),
179
+ "default": "127.0.0.1",
180
+ },
181
+ "user": {"type": "string", "title": _l("Username")},
182
+ "password": {"type": "string", "title": _l("Password")},
183
+ "database": {
184
+ "type": "string",
185
+ "title": _l("Database Name"),
186
+ "description": _l("The name of the database to connect to"),
187
+ },
188
+ "port": {
189
+ "type": "number",
190
+ "title": _l("Port Number"),
191
+ "description": _l(
192
+ "Native Protocol port number for the ClickHouse server connection. "
193
+ "Normally, default is 9000 for native protocol, use 9440 if secure SSL/TLS is enabled."
194
+ ),
195
+ "default": 9000,
196
+ },
197
+ "secure": {
198
+ "type": "boolean",
199
+ "title": _l("Use Secure Connection"),
200
+ "description": _l("Enable secure SSL/TLS connection to ClickHouse"),
201
+ "default": False,
202
+ },
203
+ },
204
+ "order": ["host", "port", "user", "password", "database", "secure"],
205
+ "required": [
206
+ "host",
207
+ ],
208
+ "secret": ["password"],
209
+ },
210
+ "enabled": True,
211
+ "group": ["destination"],
212
+ "test_required": True,
213
+ },
214
+ "recurvedata.connectors.connectors.tencent_cos": {
215
+ "type": "cos",
216
+ "ui_type": "Tencent COS",
217
+ "category": ["storage"],
218
+ "config_schema": {
219
+ "type": "object",
220
+ "properties": {
221
+ "secret_id": {"type": "string", "title": _l("Tencent Cloud API Secret ID")},
222
+ "secret_key": {"type": "string", "title": _l("Tencent Cloud API Secret Key")},
223
+ "region": {"type": "string", "title": _l("COS Region"), "default": "ap-guangzhou"},
224
+ "bucket": {"type": "string", "title": _l("Bucket Name")},
225
+ },
226
+ "order": ["secret_id", "secret_key", "region", "bucket"],
227
+ "required": ["secret_id", "secret_key", "region", "bucket"],
228
+ "secret": ["secret_key"],
229
+ },
230
+ "enabled": True,
231
+ "group": ["destination"],
232
+ "test_required": True,
233
+ },
234
+ "recurvedata.connectors.connectors.dingtalk": {
235
+ "type": "dingtalk",
236
+ "ui_type": "Ding Talk",
237
+ "category": ["others"],
238
+ "config_schema": {
239
+ "type": "object",
240
+ "properties": {
241
+ "app_key": {"type": "string", "title": _l("DingTalk App Key")},
242
+ "app_secret": {"type": "string", "title": _l("DingTalk App Secret")},
243
+ "phone": {
244
+ "type": "string",
245
+ "title": _l("Phone Number"),
246
+ "description": _l("Phone number associated with the DingTalk account"),
247
+ },
248
+ },
249
+ "order": ["app_key", "app_secret", "phone"],
250
+ "required": ["app_key", "app_secret"],
251
+ "secret": ["app_secret"],
252
+ },
253
+ "enabled": False,
254
+ "group": ["integration"],
255
+ "test_required": True,
256
+ },
257
+ "recurvedata.connectors.connectors.doris": {
258
+ "type": "doris",
259
+ "ui_type": "SelectDB(Doris)",
260
+ "category": ["database"],
261
+ "config_schema": {
262
+ "type": "object",
263
+ "properties": {
264
+ "host": {
265
+ "type": "string",
266
+ "title": _l("Host Address"),
267
+ "default": "127.0.0.1",
268
+ },
269
+ "user": {"type": "string", "title": _l("Username")},
270
+ "password": {"type": "string", "title": _l("Password")},
271
+ "database": {
272
+ "type": "string",
273
+ "title": _l("Database Name"),
274
+ "description": _l("The name of the database to connect to"),
275
+ },
276
+ "port": {
277
+ "type": "number",
278
+ "title": _l("SelectDB(Doris) Port Number"),
279
+ "description": _l("The port number for connecting to SelectDB(Doris) server on FE"),
280
+ "default": 9030,
281
+ },
282
+ "http_port": {
283
+ "type": "number",
284
+ "title": _l("FE HTTP Port"),
285
+ "description": _l("The HTTP port number for the Doris Frontend (FE) service"),
286
+ "default": 8030,
287
+ },
288
+ "ssh_tunnel": SSH_TUNNEL_CONFIG_SCHEMA,
289
+ },
290
+ "order": ["host", "port", "http_port", "user", "password", "database", "ssh_tunnel"],
291
+ "required": ["host", "http_port"],
292
+ "secret": ["password"],
293
+ },
294
+ "enabled": True,
295
+ "group": ["destination"],
296
+ "test_required": True,
297
+ },
298
+ "recurvedata.connectors.connectors.es": {
299
+ "type": "elasticsearch",
300
+ "ui_type": "Elasticsearch",
301
+ "category": ["database"],
302
+ "config_schema": {
303
+ "type": "object",
304
+ "properties": {
305
+ "host": {
306
+ "type": "string",
307
+ "title": _l("Host Address"),
308
+ "default": "127.0.0.1",
309
+ },
310
+ "port": {
311
+ "type": "number",
312
+ "title": _l("Port Number"),
313
+ "default": 9200,
314
+ },
315
+ "user": {"type": "string", "title": _l("Username")},
316
+ "password": {"type": "string", "title": _l("Password")},
317
+ },
318
+ "order": [
319
+ "host",
320
+ "port",
321
+ "user",
322
+ "password",
323
+ ],
324
+ "required": [
325
+ "host",
326
+ ],
327
+ "secret": ["password"],
328
+ },
329
+ "enabled": True,
330
+ "group": ["destination"],
331
+ "test_required": True,
332
+ },
333
+ "recurvedata.connectors.connectors.feishu": {
334
+ "type": "feishu_bot",
335
+ "ui_type": "Feishu",
336
+ "category": ["others"],
337
+ "config_schema": {
338
+ "type": "object",
339
+ "properties": {
340
+ "app_id": {"type": "string", "title": _l("Feishu Bot App ID")},
341
+ "app_secret": {"type": "string", "title": _l("Feishu Bot App Secret")},
342
+ },
343
+ "order": [
344
+ "app_id",
345
+ "app_secret",
346
+ ],
347
+ "required": [
348
+ "app_id",
349
+ "app_secret",
350
+ ],
351
+ "secret": [
352
+ "app_secret",
353
+ ],
354
+ },
355
+ "enabled": True,
356
+ "group": ["integration"],
357
+ "test_required": True,
358
+ },
359
+ "recurvedata.connectors.connectors.ftp": {
360
+ "type": "ftp",
361
+ "ui_type": "FTP",
362
+ "category": ["storage"],
363
+ "config_schema": {
364
+ "type": "object",
365
+ "properties": {
366
+ "host": {
367
+ "type": "string",
368
+ "title": _l("Host Address"),
369
+ "default": "127.0.0.1",
370
+ },
371
+ "user": {"type": "string", "title": _l("Username")},
372
+ "password": {"type": "string", "title": _l("Password")},
373
+ "port": {
374
+ "type": "number",
375
+ "title": _l("Port Number"),
376
+ "default": 21,
377
+ },
378
+ },
379
+ "order": [
380
+ "host",
381
+ "port",
382
+ "user",
383
+ "password",
384
+ ],
385
+ "required": ["host", "port"],
386
+ "secret": ["password"],
387
+ },
388
+ "enabled": True,
389
+ "group": ["destination"],
390
+ "test_required": True,
391
+ },
392
+ "recurvedata.connectors.connectors.generic": {
393
+ "type": "generic",
394
+ "ui_type": "Generic",
395
+ "category": ["others"],
396
+ "config_schema": {
397
+ "type": "object",
398
+ "properties": {
399
+ "host": {"type": "string", "title": _l("Host")},
400
+ "port": {"type": "integer", "title": _l("Port")},
401
+ "user": {"type": "string", "title": _l("Username")},
402
+ "password": {"type": "string", "title": _l("Password")},
403
+ "timeout": {"type": "integer", "title": _l("Timeout (seconds)"), "default": 30},
404
+ "custom": {
405
+ "type": "string",
406
+ "title": _l("Custom Configuration"),
407
+ "description": _l("Custom configuration parameters in JSON format"),
408
+ "ui:field": "CodeEditorWithReferencesField",
409
+ "ui:options": {"type": "code", "lang": "json"},
410
+ },
411
+ },
412
+ "order": ["host", "port", "user", "password", "timeout", "custom"],
413
+ "required": ["host", "port", "user", "password"],
414
+ "secret": ["password"],
415
+ },
416
+ "enabled": True,
417
+ "group": ["destination"],
418
+ "test_required": False,
419
+ },
420
+ "recurvedata.connectors.connectors.google_cloud_storage": {
421
+ "type": "google_cloud_storage",
422
+ "ui_type": "Google Cloud Storage",
423
+ "category": ["storage"],
424
+ "config_schema": {
425
+ "type": "object",
426
+ "properties": {
427
+ "key_dict": {
428
+ "type": "object",
429
+ "title": _l("Service Account Key"),
430
+ "description": _l("Google Cloud service account key credentials"),
431
+ "properties": {
432
+ "type": {
433
+ "type": "string",
434
+ "title": _l("Account Type"),
435
+ "default": "service_account",
436
+ },
437
+ "project_id": {"type": "string", "title": _l("Google Cloud Project ID")},
438
+ "private_key_id": {"type": "string", "title": _l("Google Auth Private Key ID")},
439
+ "private_key": {
440
+ "type": "string",
441
+ "title": _l("Google Auth Private Key"),
442
+ "ui:options": {"type": "textarea"},
443
+ },
444
+ "client_email": {"type": "string", "title": _l("Service Account Email")},
445
+ "client_id": {"type": "string", "title": _l("Google OAuth Client ID")},
446
+ "auth_uri": {
447
+ "type": "string",
448
+ "title": _l("Google OAuth Auth URI"),
449
+ "default": "https://accounts.google.com/o/oauth2/auth",
450
+ },
451
+ "token_uri": {
452
+ "type": "string",
453
+ "title": _l("Google OAuth Token URI"),
454
+ "default": "https://oauth2.googleapis.com/token",
455
+ },
456
+ "auth_provider_x509_cert_url": {
457
+ "type": "string",
458
+ "title": _l("Google OAuth Certificate URL (Auth Provider)"),
459
+ "default": "https://www.googleapis.com/oauth2/v1/certs",
460
+ },
461
+ "client_x509_cert_url": {
462
+ "type": "string",
463
+ "title": _l("Google OAuth Certificate URL (Client)"),
464
+ "default": "https://www.googleapis.com/robot/v1/metadata/x509/recurvedata-gcs%40brand-portal-prod.iam.gserviceaccount.com",
465
+ },
466
+ },
467
+ "order": [
468
+ "type",
469
+ "project_id",
470
+ "private_key_id",
471
+ "private_key",
472
+ "client_email",
473
+ "client_id",
474
+ "auth_uri",
475
+ "token_uri",
476
+ "auth_provider_x509_cert_url",
477
+ "client_x509_cert_url",
478
+ ],
479
+ "required": [
480
+ "type",
481
+ "project_id",
482
+ "private_key_id",
483
+ "private_key",
484
+ "client_id",
485
+ ],
486
+ "secret": [
487
+ "private_key",
488
+ ],
489
+ },
490
+ "bucket": {
491
+ "type": "string",
492
+ "title": _l("Bucket Name"),
493
+ "description": _l("Name of the Google Cloud Storage bucket"),
494
+ },
495
+ "proxies": HTTP_PROXY_CONFIG_SCHEMA["proxies"],
496
+ },
497
+ "order": [
498
+ "key_dict",
499
+ "bucket",
500
+ "proxies",
501
+ ],
502
+ "required": [
503
+ "key_dict",
504
+ ],
505
+ "secret": [
506
+ "key_dict.private_key",
507
+ ],
508
+ },
509
+ "enabled": True,
510
+ "group": ["destination"],
511
+ "test_required": False,
512
+ },
513
+ "recurvedata.connectors.connectors.google_service_account": {
514
+ "type": "google_service_account",
515
+ "ui_type": "Google Service Account",
516
+ "category": ["service"],
517
+ "config_schema": {
518
+ "type": "object",
519
+ "properties": {
520
+ "project_id": {"type": "string", "title": _l("Google Cloud Project ID")},
521
+ "private_key_id": {"type": "string", "title": _l("Google Auth Private Key ID")},
522
+ "private_key": {
523
+ "type": "string",
524
+ "title": _l("Google Auth Private Key"),
525
+ "ui:options": {"type": "textarea"},
526
+ },
527
+ "client_email": {"type": "string", "title": _l("Service Account Email")},
528
+ "client_id": {"type": "string", "title": _l("Google OAuth Client ID")},
529
+ "auth_uri": {
530
+ "type": "string",
531
+ "title": _l("Google OAuth Auth URI"),
532
+ "default": "https://accounts.google.com/o/oauth2/auth",
533
+ },
534
+ "token_uri": {
535
+ "type": "string",
536
+ "title": _l("Google OAuth Token URI"),
537
+ "default": "https://oauth2.googleapis.com/token",
538
+ },
539
+ "auth_provider_x509_cert_url": {
540
+ "type": "string",
541
+ "title": _l("Google OAuth Certificate URL (Auth Provider)"),
542
+ "default": "https://www.googleapis.com/oauth2/v1/certs",
543
+ },
544
+ "client_x509_cert_url": {
545
+ "type": "string",
546
+ "title": _l("Google OAuth Certificate URL (Client)"),
547
+ "default": "https://www.googleapis.com/robot/v1/metadata/x509/recurvedata-gcs%40brand-portal-prod.iam.gserviceaccount.com",
548
+ },
549
+ "universe_domain": {
550
+ "type": "string",
551
+ "title": _l("Universe Domain"),
552
+ "default": "googleapis.com",
553
+ },
554
+ "proxies": HTTP_PROXY_CONFIG_SCHEMA["proxies"],
555
+ },
556
+ "order": [
557
+ "project_id",
558
+ "private_key_id",
559
+ "private_key",
560
+ "client_email",
561
+ "client_id",
562
+ "auth_uri",
563
+ "token_uri",
564
+ "auth_provider_x509_cert_url",
565
+ "client_x509_cert_url",
566
+ "universe_domain",
567
+ "proxies",
568
+ ],
569
+ "required": [
570
+ "project_id",
571
+ "private_key_id",
572
+ "private_key",
573
+ "client_email",
574
+ ],
575
+ "secret": [
576
+ "private_key",
577
+ ],
578
+ },
579
+ "enabled": True,
580
+ "group": ["destination"],
581
+ "test_required": True,
582
+ },
583
+ "recurvedata.connectors.connectors.hive": {
584
+ "type": "hive",
585
+ "ui_type": "Apache Hive",
586
+ "category": ["warehouse"],
587
+ "config_schema": {
588
+ "type": "object",
589
+ "properties": {
590
+ "host": {
591
+ "type": "string",
592
+ "title": _l("Host Address"),
593
+ "default": "127.0.0.1",
594
+ },
595
+ "port": {
596
+ "type": "number",
597
+ "title": _l("Port Number"),
598
+ "default": 10000,
599
+ },
600
+ "user": {"type": "string", "title": _l("Username")},
601
+ "password": {"type": "string", "title": _l("Password")},
602
+ "database": {
603
+ "type": "string",
604
+ "title": _l("Database Name"),
605
+ "description": _l("The name of the database to connect to"),
606
+ "default": "default",
607
+ },
608
+ "hdfs_options": {
609
+ "type": "object",
610
+ "title": _l("HDFS Options"),
611
+ "description": _l("Configuration options for HDFS connection"),
612
+ "properties": {
613
+ "host": {
614
+ "type": "string",
615
+ "title": _l("Host Address"),
616
+ "description": _l("HDFS namenode hostname or IP address"),
617
+ },
618
+ "port": {
619
+ "type": "number",
620
+ "title": _l("Port Number"),
621
+ "description": _l("HDFS namenode port number"),
622
+ "default": 50070,
623
+ },
624
+ "user": {"type": "string", "title": _l("Username")},
625
+ "staging_folder": {
626
+ "type": "string",
627
+ "title": _l("Transfer Staging Folder"),
628
+ "description": _l("Temporary HDFS directory path for data transfer staging"),
629
+ "default": "/tmp/recurve",
630
+ },
631
+ },
632
+ "order": ["host", "port", "user", "staging_folder"],
633
+ },
634
+ "auth": {
635
+ "type": "string",
636
+ "title": _l("Authentication Type"),
637
+ "default": "LDAP",
638
+ },
639
+ "hive_conf": {
640
+ "type": "object",
641
+ "title": _l("Hive Execute Configurations"),
642
+ "description": _l("Additional Hive execution parameters"),
643
+ "properties": {
644
+ "spark.yarn.queue": {
645
+ "type": "string",
646
+ "title": _l("Hive On Spark Queue"),
647
+ "description": _l("YARN queue name for Spark execution"),
648
+ },
649
+ "tez.queue.name": {
650
+ "type": "string",
651
+ "title": _l("Hive On Tez Queue"),
652
+ "description": _l("YARN queue name for Tez execution"),
653
+ },
654
+ },
655
+ "order": ["spark.yarn.queue", "tez.queue.name"],
656
+ },
657
+ },
658
+ "order": [
659
+ "host",
660
+ "port",
661
+ "user",
662
+ "password",
663
+ "database",
664
+ "hdfs_options",
665
+ "auth",
666
+ "hive_conf",
667
+ ],
668
+ "required": ["host", "port"],
669
+ "secret": ["password"],
670
+ },
671
+ "enabled": True,
672
+ "group": ["destination"],
673
+ "test_required": True,
674
+ },
675
+ "recurvedata.connectors.connectors.impala": {
676
+ "type": "impala",
677
+ "ui_type": "Apache Impala",
678
+ "category": ["warehouse"],
679
+ "config_schema": {
680
+ "type": "object",
681
+ "properties": {
682
+ "host": {
683
+ "type": "string",
684
+ "title": _l("Host Address"),
685
+ "default": "127.0.0.1",
686
+ },
687
+ "port": {
688
+ "type": "number",
689
+ "title": _l("Port Number"),
690
+ "default": 21050,
691
+ },
692
+ "user": {"type": "string", "title": _l("Username")},
693
+ "password": {"type": "string", "title": _l("Password")},
694
+ "database": {
695
+ "type": "string",
696
+ "title": _l("Database"),
697
+ "description": _l("The name of the database to connect to"),
698
+ "default": "default",
699
+ },
700
+ "hdfs_options": {
701
+ "type": "object",
702
+ "title": _l("HDFS Configuration"),
703
+ "description": _l("Configuration options for HDFS connection"),
704
+ "properties": {
705
+ "host": {
706
+ "type": "string",
707
+ "title": _l("Host"),
708
+ "description": _l("HDFS namenode hostname or IP address"),
709
+ },
710
+ "port": {
711
+ "type": "number",
712
+ "title": _l("Port Number"),
713
+ "description": _l("HDFS namenode port number"),
714
+ "default": 50070,
715
+ },
716
+ "user": {"type": "string", "title": _l("Username")},
717
+ },
718
+ "order": ["host", "port", "user"],
719
+ },
720
+ "auth_mechanism": {
721
+ "type": "string",
722
+ "title": _l("Authentication Mechanism"),
723
+ "description": _l("Impala authentication mechanism (e.g. PLAIN, GSSAPI, LDAP)"),
724
+ "default": "PLAIN",
725
+ },
726
+ "auth": {
727
+ "type": "string",
728
+ "title": _l("Authentication Type"),
729
+ "default": "LDAP",
730
+ },
731
+ "use_http_transport": {
732
+ "type": "boolean",
733
+ "title": _l("Use HTTP Transport"),
734
+ "default": True,
735
+ },
736
+ "use_ssl": {
737
+ "type": "boolean",
738
+ "title": _l("Use SSL"),
739
+ "default": True,
740
+ },
741
+ "http_path": {
742
+ "type": "string",
743
+ "title": _l("HTTP Path"),
744
+ "default": "",
745
+ },
746
+ },
747
+ "order": [
748
+ "host",
749
+ "port",
750
+ "user",
751
+ "password",
752
+ "database",
753
+ "hdfs_options",
754
+ "auth",
755
+ "auth_mechanism",
756
+ "use_http_transport",
757
+ "use_ssl",
758
+ "http_path",
759
+ ],
760
+ "required": ["host", "port"],
761
+ "secret": ["password"],
762
+ },
763
+ "enabled": True,
764
+ "group": ["destination"],
765
+ "test_required": True,
766
+ },
767
+ "recurvedata.connectors.connectors.jenkins": {
768
+ "type": "jenkins",
769
+ "ui_type": "Jenkins",
770
+ "category": ["others"],
771
+ "config_schema": {
772
+ "type": "object",
773
+ "properties": {
774
+ "url": {"type": "string", "title": "url"},
775
+ "user": {"type": "string", "title": "Username"},
776
+ "password": {"type": "string", "title": "Password"},
777
+ },
778
+ "order": [
779
+ "url",
780
+ "user",
781
+ "password",
782
+ ],
783
+ "required": [
784
+ "url",
785
+ "user",
786
+ "password",
787
+ ],
788
+ "secret": ["password"],
789
+ },
790
+ "enabled": True,
791
+ "group": [],
792
+ "test_required": True,
793
+ },
794
+ "recurvedata.connectors.connectors.mail": {
795
+ "type": "mail",
796
+ "ui_type": "Mail",
797
+ "category": ["others"],
798
+ "config_schema": {
799
+ "type": "object",
800
+ "properties": {
801
+ "host": {"type": "string", "title": _l("SMTP Server Address")},
802
+ "port": {
803
+ "type": "number",
804
+ "title": _l("Port Number"),
805
+ "default": 465,
806
+ },
807
+ "user": {"type": "string", "title": _l("Username")},
808
+ "password": {"type": "string", "title": _l("Password")},
809
+ "reply_to": {
810
+ "type": "string",
811
+ "title": _l("Reply-To Address"),
812
+ "description": _l("Email address that recipients will reply to"),
813
+ },
814
+ "mail_from": {
815
+ "type": "string",
816
+ "title": _l("From Address"),
817
+ "description": _l("Email address that appears in the From field"),
818
+ },
819
+ "ssl": {
820
+ "type": "boolean",
821
+ "title": _l("Use SSL/TLS"),
822
+ "description": _l("Enable SSL/TLS encryption for secure email transmission"),
823
+ "default": True,
824
+ },
825
+ "timeout": {
826
+ "type": "number",
827
+ "title": _l("Connection Timeout"),
828
+ "description": _l("Maximum time in seconds to wait for server connection"),
829
+ "default": 180,
830
+ },
831
+ },
832
+ "order": [
833
+ "host",
834
+ "port",
835
+ "user",
836
+ "password",
837
+ "reply_to",
838
+ "mail_from",
839
+ "ssl",
840
+ "timeout",
841
+ ],
842
+ "required": ["host", "port", "user", "password"],
843
+ "secret": ["password"],
844
+ },
845
+ "enabled": True,
846
+ "group": [],
847
+ "test_required": True,
848
+ },
849
+ "recurvedata.connectors.connectors.microsoft_fabric": {
850
+ "type": "microsoft_fabric",
851
+ "ui_type": "Microsoft Fabric",
852
+ "category": ["warehouse"],
853
+ "config_schema": {
854
+ "type": "object",
855
+ "properties": {
856
+ "host": {
857
+ "type": "string",
858
+ "title": _l("Host Address"),
859
+ "default": "127.0.0.1",
860
+ },
861
+ "port": {
862
+ "type": "number",
863
+ "title": _l("Port Number"),
864
+ "default": 1433,
865
+ },
866
+ "authentication": {
867
+ "type": "string",
868
+ "title": _l("Authentication Method"),
869
+ "default": "ActiveDirectoryServicePrincipal",
870
+ "ui:options": {
871
+ "disabled": True,
872
+ },
873
+ },
874
+ "tenant_id": {
875
+ "type": "string",
876
+ "title": _l("Tenant ID"),
877
+ },
878
+ "client_id": {
879
+ "type": "string",
880
+ "title": _l("Client ID"),
881
+ },
882
+ "client_secret": {
883
+ "type": "string",
884
+ "title": _l("Client Secret"),
885
+ },
886
+ "database": {
887
+ "type": "string",
888
+ "title": _l("Database Name"),
889
+ },
890
+ "odbc_driver": {
891
+ "type": "string",
892
+ "title": _l("ODBC Driver"),
893
+ "default": "ODBC Driver 18 for SQL Server",
894
+ "ui:options": {
895
+ "disabled": True,
896
+ },
897
+ },
898
+ "encrypt": {
899
+ "type": "boolean",
900
+ "title": _l("Encrypt Connection"),
901
+ "description": _l("Whether to encrypt the connection"),
902
+ "default": True,
903
+ },
904
+ "trust_server_certificate": {
905
+ "type": "boolean",
906
+ "title": _l("Trust Server Certificate"),
907
+ "default": True,
908
+ },
909
+ "blob_options": {
910
+ "type": "object",
911
+ "title": _l("Azure Blob Storage Options"),
912
+ "properties": {
913
+ "account_name": {"type": "string", "title": _l("Storage Account Name")},
914
+ "endpoint_suffix": {"type": "string", "title": _l("Endpoint Suffix")},
915
+ "container_name": {"type": "string", "title": _l("Container Name")},
916
+ "sas_token": {"type": "string", "title": _l("SAS Token")},
917
+ },
918
+ "order": ["account_name", "endpoint_suffix", "container_name", "sas_token"],
919
+ },
920
+ },
921
+ "order": [
922
+ "host",
923
+ "port",
924
+ "authentication",
925
+ "tenant_id",
926
+ "client_id",
927
+ "client_secret",
928
+ "database",
929
+ "odbc_driver",
930
+ "encrypt",
931
+ "trust_server_certificate",
932
+ "blob_options",
933
+ ],
934
+ "required": ["host", "port", "tenant_id", "client_id", "client_secret", "database"],
935
+ "secret": ["client_secret", "blob_options.sas_token"],
936
+ },
937
+ "enabled": True,
938
+ "group": ["destination"],
939
+ "test_required": True,
940
+ },
941
+ "recurvedata.connectors.connectors.mongo": {
942
+ "type": "mongodb",
943
+ "ui_type": "MongoDB",
944
+ "category": ["database"],
945
+ "config_schema": {
946
+ "type": "object",
947
+ "properties": {
948
+ "host": {
949
+ "type": "string",
950
+ "title": _l("Host Address"),
951
+ "default": "127.0.0.1",
952
+ },
953
+ "port": {
954
+ "type": "number",
955
+ "title": _l("Port Number"),
956
+ "default": 27017,
957
+ },
958
+ "user": {"type": "string", "title": _l("Username")},
959
+ "password": {"type": "string", "title": _l("Password")},
960
+ "authSource": {
961
+ "type": "string",
962
+ "title": _l("Authentication Database"),
963
+ "default": "admin",
964
+ },
965
+ },
966
+ "order": ["host", "port", "user", "password", "authSource"],
967
+ "required": ["host", "port", "user", "password"],
968
+ "secret": ["password"],
969
+ },
970
+ "enabled": True,
971
+ "group": ["destination"],
972
+ "test_required": True,
973
+ },
974
+ "recurvedata.connectors.connectors.mssql": {
975
+ "type": "mssql",
976
+ "ui_type": "Microsoft SQL Server",
977
+ "category": ["database"],
978
+ "config_schema": {
979
+ "type": "object",
980
+ "properties": {
981
+ "host": {
982
+ "type": "string",
983
+ "title": _l("Host Address"),
984
+ "default": "127.0.0.1",
985
+ },
986
+ "port": {
987
+ "type": "number",
988
+ "title": _l("Port Number"),
989
+ "default": 1433,
990
+ },
991
+ "user": {"type": "string", "title": _l("Username")},
992
+ "password": {"type": "string", "title": _l("Password")},
993
+ "database": {
994
+ "type": "string",
995
+ "title": _l("Database Name"),
996
+ "description": _l("The name of the database to connect to"),
997
+ "default": "default",
998
+ },
999
+ "odbc_driver": {
1000
+ "type": "string",
1001
+ "title": _l("ODBC Driver"),
1002
+ "default": "ODBC Driver 18 for SQL Server",
1003
+ },
1004
+ "encrypt": {
1005
+ "type": "boolean",
1006
+ "title": _l("Encrypt Connection"),
1007
+ "description": _l("Whether to encrypt the connection"),
1008
+ "default": True,
1009
+ },
1010
+ "trust_server_certificate": {
1011
+ "type": "boolean",
1012
+ "title": _l("Trust Server Certificate"),
1013
+ "default": True,
1014
+ },
1015
+ },
1016
+ "order": [
1017
+ "host",
1018
+ "port",
1019
+ "user",
1020
+ "password",
1021
+ "database",
1022
+ "odbc_driver",
1023
+ "encrypt",
1024
+ "trust_server_certificate",
1025
+ ],
1026
+ "required": [
1027
+ "host",
1028
+ ],
1029
+ "secret": ["password"],
1030
+ },
1031
+ "enabled": True,
1032
+ "group": ["destination"],
1033
+ "test_required": True,
1034
+ },
1035
+ "recurvedata.connectors.connectors.mysql": {
1036
+ "type": "mysql",
1037
+ "ui_type": "MySQL",
1038
+ "category": ["database"],
1039
+ "config_schema": {
1040
+ "type": "object",
1041
+ "properties": {
1042
+ "host": {
1043
+ "type": "string",
1044
+ "title": _l("Host Address"),
1045
+ "default": "127.0.0.1",
1046
+ },
1047
+ "port": {
1048
+ "type": "number",
1049
+ "title": _l("Port Number"),
1050
+ "default": 3306,
1051
+ },
1052
+ "user": {"type": "string", "title": _l("Username")},
1053
+ "password": {"type": "string", "title": _l("Password")},
1054
+ "database": {
1055
+ "type": "string",
1056
+ "title": _l("Database Name"),
1057
+ "description": _l("The name of the database to connect to"),
1058
+ },
1059
+ },
1060
+ "order": [
1061
+ "host",
1062
+ "port",
1063
+ "user",
1064
+ "password",
1065
+ "database",
1066
+ ],
1067
+ "required": [
1068
+ "host",
1069
+ ],
1070
+ "secret": ["password"],
1071
+ },
1072
+ "enabled": True,
1073
+ "group": ["destination"],
1074
+ "test_required": True,
1075
+ },
1076
+ "recurvedata.connectors.connectors.n8n": {
1077
+ "type": "n8n",
1078
+ "ui_type": "n8n",
1079
+ "category": ["others"],
1080
+ "config_schema": {
1081
+ "type": "object",
1082
+ "properties": {
1083
+ "url": {
1084
+ "type": "string",
1085
+ "title": _l("API Address"),
1086
+ "description": _l("The URL of the n8n API, e.g. https://localhost:5678/api/v1"),
1087
+ },
1088
+ "api_key": {"type": "string", "title": _l("API KEY")},
1089
+ "timeout": {
1090
+ "type": "number",
1091
+ "title": _l("Timeout"),
1092
+ "description": _l("The timeout of the n8n API, e.g. 60"),
1093
+ "default": 60,
1094
+ },
1095
+ "webhook_credential": {
1096
+ "type": "object",
1097
+ "title": _l("Webhook Trigger Node Credential"),
1098
+ "description": _l("The credential of the n8n webhook trigger node"),
1099
+ "properties": {
1100
+ "credential_type": {
1101
+ "type": "string",
1102
+ "title": _l("Credential Type"),
1103
+ "enum": ["Basic Auth", "Header Auth", "JWT Auth", "None"],
1104
+ "enumNames": ["Basic Auth", "Header Auth", "JWT Auth", "None"],
1105
+ "default": "None",
1106
+ },
1107
+ "basic_auth": {
1108
+ "ui:hidden": '{{parentFormData.credential_type !== "Basic Auth"}}',
1109
+ "type": "object",
1110
+ "title": _l("Basic Auth"),
1111
+ "description": _l("The basic auth of the n8n webhook trigger node"),
1112
+ "properties": {
1113
+ "username": {"type": "string", "title": _l("Username")},
1114
+ "password": {"type": "string", "title": _l("Password")},
1115
+ },
1116
+ },
1117
+ "header_auth": {
1118
+ "ui:hidden": '{{parentFormData.credential_type !== "Header Auth"}}',
1119
+ "type": "object",
1120
+ "title": _l("Header Auth"),
1121
+ "description": _l("The header auth of the n8n webhook trigger node"),
1122
+ "properties": {
1123
+ "header_name": {"type": "string", "title": _l("Header Name")},
1124
+ "header_value": {"type": "string", "title": _l("Header Value")},
1125
+ },
1126
+ },
1127
+ "jwt_auth": {
1128
+ "ui:hidden": '{{parentFormData.credential_type !== "JWT Auth"}}',
1129
+ "type": "object",
1130
+ "title": _l("JWT Auth"),
1131
+ "description": _l("The jwt auth of the n8n webhook trigger node"),
1132
+ "properties": {
1133
+ "jwt_token": {"type": "string", "title": _l("JWT Token")},
1134
+ },
1135
+ },
1136
+ },
1137
+ "order": ["credential_type", "basic_auth", "header_auth", "jwt_auth"],
1138
+ },
1139
+ "proxies": HTTP_PROXY_CONFIG_SCHEMA["proxies"],
1140
+ },
1141
+ "order": ["url", "api_key", "timeout", "webhook_credential", "proxies"],
1142
+ "required": ["url", "api_key"],
1143
+ "secret": [
1144
+ "api_key",
1145
+ "webhook_credential.basic_auth.password",
1146
+ "webhook_credential.header_auth.header_value",
1147
+ "webhook_credential.jwt_auth.jwt_token",
1148
+ ],
1149
+ },
1150
+ "enabled": True,
1151
+ "group": ["destination"],
1152
+ "test_required": True,
1153
+ },
1154
+ "recurvedata.connectors.connectors.oss": {
1155
+ "type": "oss",
1156
+ "ui_type": "Aliyun OSS",
1157
+ "category": ["storage"],
1158
+ "config_schema": {
1159
+ "type": "object",
1160
+ "properties": {
1161
+ "access_key_id": {
1162
+ "type": "string",
1163
+ "title": _l("Aliyun Access Key ID"),
1164
+ "description": _l("The AccessKey ID for authenticating with Aliyun OSS"),
1165
+ },
1166
+ "secret_access_key": {
1167
+ "type": "string",
1168
+ "title": _l("Aliyun Secret Access Key"),
1169
+ "description": _l("The AccessKey Secret for authenticating with Aliyun OSS"),
1170
+ },
1171
+ "endpoint": {
1172
+ "type": "string",
1173
+ "title": _l("OSS Endpoint"),
1174
+ "description": _l("The endpoint URL for your OSS bucket region"),
1175
+ "default": "oss-cn-hangzhou.aliyuncs.com",
1176
+ },
1177
+ "bucket": {"type": "string", "title": _l("Bucket Name")},
1178
+ "proxies": HTTP_PROXY_CONFIG_SCHEMA["proxies"],
1179
+ },
1180
+ "order": [
1181
+ "access_key_id",
1182
+ "secret_access_key",
1183
+ "endpoint",
1184
+ "bucket",
1185
+ "proxies",
1186
+ ],
1187
+ "required": ["access_key_id", "secret_access_key", "endpoint", "bucket"],
1188
+ "secret": ["secret_access_key"],
1189
+ },
1190
+ "enabled": True,
1191
+ "group": ["destination"],
1192
+ "test_required": True,
1193
+ },
1194
+ "recurvedata.connectors.connectors.owncloud": {
1195
+ "type": "owncloud",
1196
+ "ui_type": "OwnCloud",
1197
+ "category": ["storage"],
1198
+ "config_schema": {
1199
+ "type": "object",
1200
+ "properties": {
1201
+ "url": {"type": "string", "title": _l("Host URL")},
1202
+ "user": {"type": "string", "title": _l("Username")},
1203
+ "password": {"type": "string", "title": _l("Password")},
1204
+ "dav_endpoint_version": {
1205
+ "type": "number",
1206
+ "title": _l("WebDAV Endpoint Version"),
1207
+ "default": 1,
1208
+ },
1209
+ },
1210
+ "order": ["url", "user", "password", "dav_endpoint_version"],
1211
+ "required": ["url", "user", "password"],
1212
+ "secret": ["password"],
1213
+ },
1214
+ "enabled": True,
1215
+ "group": ["destination"],
1216
+ "test_required": True,
1217
+ },
1218
+ "recurvedata.connectors.connectors.phoenix": {
1219
+ "type": "phoenix",
1220
+ "ui_type": "HBase Phoenix",
1221
+ "category": ["database"],
1222
+ "config_schema": {
1223
+ "type": "object",
1224
+ "properties": {
1225
+ "host": {"type": "string", "title": "Host Address"},
1226
+ "port": {
1227
+ "type": "number",
1228
+ "title": "Port Number",
1229
+ "default": 8765,
1230
+ },
1231
+ },
1232
+ "order": ["host", "port"],
1233
+ "required": ["host", "port"],
1234
+ "secret": [],
1235
+ },
1236
+ "enabled": True,
1237
+ "group": ["destination"],
1238
+ "test_required": True,
1239
+ },
1240
+ "recurvedata.connectors.connectors.postgres": {
1241
+ "type": "postgres",
1242
+ "ui_type": "PostgreSQL",
1243
+ "category": ["database"],
1244
+ "config_schema": {
1245
+ "type": "object",
1246
+ "properties": {
1247
+ "host": {
1248
+ "type": "string",
1249
+ "title": _l("Host Address"),
1250
+ "default": "127.0.0.1",
1251
+ },
1252
+ "port": {
1253
+ "type": "number",
1254
+ "title": _l("Port Number"),
1255
+ "default": 5432,
1256
+ },
1257
+ "user": {"type": "string", "title": _l("Username")},
1258
+ "password": {"type": "string", "title": _l("Password")},
1259
+ "database": {
1260
+ "type": "string",
1261
+ "title": _l("Database Name"),
1262
+ "description": _l("The name of the database to connect to"),
1263
+ },
1264
+ },
1265
+ "order": ["host", "port", "user", "password", "database"],
1266
+ "required": [
1267
+ "host",
1268
+ "user",
1269
+ "password",
1270
+ ],
1271
+ "secret": ["password"],
1272
+ },
1273
+ "enabled": True,
1274
+ "group": ["destination"],
1275
+ "test_required": True,
1276
+ },
1277
+ "recurvedata.connectors.connectors.python": {
1278
+ "type": "python",
1279
+ "ui_type": "Python",
1280
+ "category": ["others"],
1281
+ "config_schema": {
1282
+ "type": "object",
1283
+ "properties": {
1284
+ "python_version": {
1285
+ "type": "string",
1286
+ "title": _l("Python Version"),
1287
+ "enum": ["3.11.9", "3.10.14"],
1288
+ "enumNames": ["3.11.9", "3.10.14"],
1289
+ "default": "3.11.9",
1290
+ },
1291
+ "pyenv": {
1292
+ "type": "string",
1293
+ "title": _l("Python Virtual Environment Name"),
1294
+ "default": "recurve_executor",
1295
+ },
1296
+ "requirements": {
1297
+ "type": "string",
1298
+ "title": _l("Python Package Requirements"),
1299
+ "description": _l(
1300
+ "List of Python packages and versions to install, the same format as requirements.txt"
1301
+ ),
1302
+ "ui:options": {
1303
+ "type": "textarea",
1304
+ "rows": 10,
1305
+ },
1306
+ },
1307
+ },
1308
+ "order": ["python_version", "pyenv", "requirements"],
1309
+ "required": ["python_version", "pyenv"],
1310
+ "secret": [],
1311
+ },
1312
+ "enabled": True,
1313
+ "group": ["destination"],
1314
+ "test_required": False,
1315
+ },
1316
+ "recurvedata.connectors.connectors.redshift": {
1317
+ "type": "redshift",
1318
+ "ui_type": "Redshift",
1319
+ "category": ["database"],
1320
+ "config_schema": {
1321
+ "type": "object",
1322
+ "properties": {
1323
+ "host": {"type": "string", "title": _l("Host Address")},
1324
+ "port": {
1325
+ "type": "number",
1326
+ "title": _l("Port Number"),
1327
+ "default": 5439,
1328
+ },
1329
+ "user": {"type": "string", "title": _l("Username")},
1330
+ "password": {"type": "string", "title": _l("Password")},
1331
+ "database": {
1332
+ "type": "string",
1333
+ "title": _l("Database Name"),
1334
+ "description": _l("The name of the database to connect to"),
1335
+ },
1336
+ "s3_options": {
1337
+ "type": "object",
1338
+ "title": _l("S3 Configuration"),
1339
+ "description": _l("AWS S3 credentials for data loading and unloading"),
1340
+ "properties": {
1341
+ "access_key_id": {"type": "string", "title": _l("AWS Access Key ID")},
1342
+ "secret_access_key": {"type": "string", "title": _l("AWS Secret Access Key")},
1343
+ "region": {"type": "string", "title": _l("AWS Region")},
1344
+ },
1345
+ "order": ["access_key_id", "secret_access_key", "region"],
1346
+ },
1347
+ },
1348
+ "order": ["host", "port", "user", "password", "database", "s3_options"],
1349
+ "required": ["host", "port"],
1350
+ "secret": ["password"],
1351
+ },
1352
+ "enabled": True,
1353
+ "group": ["destination"],
1354
+ "test_required": True,
1355
+ },
1356
+ "recurvedata.connectors.connectors.s3": {
1357
+ "type": "s3",
1358
+ "ui_type": "AWS S3",
1359
+ "category": ["storage"],
1360
+ "config_schema": {
1361
+ "type": "object",
1362
+ "properties": {
1363
+ "access_key_id": {"type": "string", "title": _l("AWS Access Key ID")},
1364
+ "secret_access_key": {"type": "string", "title": _l("AWS Secret Access Key")},
1365
+ "region": {"type": "string", "title": _l("AWS Region")},
1366
+ "bucket": {"type": "string", "title": _l("Bucket Name")},
1367
+ "proxies": HTTP_PROXY_CONFIG_SCHEMA["proxies"],
1368
+ },
1369
+ "order": ["access_key_id", "secret_access_key", "region", "bucket", "proxies"],
1370
+ "required": ["access_key_id", "secret_access_key"],
1371
+ "secret": ["secret_access_key"],
1372
+ },
1373
+ "enabled": True,
1374
+ "group": ["destination"],
1375
+ "test_required": True,
1376
+ },
1377
+ "recurvedata.connectors.connectors.sftp": {
1378
+ "type": "sftp",
1379
+ "ui_type": "SFTP",
1380
+ "category": ["storage"],
1381
+ "config_schema": {
1382
+ "type": "object",
1383
+ "properties": {
1384
+ "host": {
1385
+ "type": "string",
1386
+ "title": _l("Host Address"),
1387
+ "default": "127.0.0.1",
1388
+ },
1389
+ "port": {
1390
+ "type": "number",
1391
+ "title": _l("Port Number"),
1392
+ "default": 22,
1393
+ },
1394
+ "user": {"type": "string", "title": _l("Username")},
1395
+ "password": {"type": "string", "title": _l("Password")},
1396
+ "private_key_path": {"type": "string", "title": _l("Private Key File Path")},
1397
+ },
1398
+ "order": ["host", "port", "user", "password", "private_key_path"],
1399
+ "required": ["host", "port"],
1400
+ "secret": ["password"],
1401
+ },
1402
+ "enabled": True,
1403
+ "group": ["destination"],
1404
+ "test_required": True,
1405
+ },
1406
+ "recurvedata.connectors.connectors.slack": {
1407
+ "type": "slack",
1408
+ "ui_type": "Slack",
1409
+ "category": ["others"],
1410
+ "config_schema": {
1411
+ "type": "object",
1412
+ "properties": {
1413
+ "app_token": {
1414
+ "type": "string",
1415
+ "title": _l("Slack App Token"),
1416
+ "description": _l("The token used to authenticate with Slack API"),
1417
+ },
1418
+ },
1419
+ "required": [
1420
+ "app_token",
1421
+ ],
1422
+ "secret": [
1423
+ "app_token",
1424
+ ],
1425
+ },
1426
+ "enabled": True,
1427
+ "group": ["integration"],
1428
+ "test_required": True,
1429
+ },
1430
+ "recurvedata.connectors.connectors.spark": {
1431
+ "type": "spark",
1432
+ "ui_type": "Spark",
1433
+ "category": ["database"],
1434
+ "config_schema": {
1435
+ "type": "object",
1436
+ "properties": {
1437
+ "submitter": {
1438
+ "type": "string",
1439
+ "title": _l("Spark Submit Command"),
1440
+ "description": _l("Path to spark-submit executable"),
1441
+ "default": "spark-submit",
1442
+ },
1443
+ "env": {
1444
+ "type": "object",
1445
+ "title": _l("Environment Variables"),
1446
+ "description": _l("Environment variables required for Spark execution"),
1447
+ "properties": {
1448
+ "JAVA_HOME": {"type": "string", "title": "JAVA_HOME"},
1449
+ "PYSPARK_PYTHON": {"type": "string", "title": "PYSPARK_PYTHON"},
1450
+ "PYSPARK_DRIVER_PYTHON": {"type": "string", "title": "PYSPARK_DRIVER_PYTHON"},
1451
+ "HADOOP_USER_NAME": {"type": "string", "title": "HADOOP_USER_NAME"},
1452
+ "PIGEON_SECRET_KEY": {"type": "string", "title": "PIGEON_SECRET_KEY"},
1453
+ "PATH": {"type": "string", "title": "PATH"},
1454
+ "SPARK_CONF_DIR": {"type": "string", "title": "SPARK_CONF_DIR"},
1455
+ "HADOOP_CONF_DIR": {"type": "string", "title": "HADOOP_CONF_DIR"},
1456
+ "HIVE_CONF_DIR": {"type": "string", "title": "HIVE_CONF_DIR"},
1457
+ "HIVE_HOME": {"type": "string", "title": "HIVE_HOME"},
1458
+ },
1459
+ "order": [
1460
+ "JAVA_HOME",
1461
+ "PYSPARK_PYTHON",
1462
+ "PYSPARK_DRIVER_PYTHON",
1463
+ "HADOOP_USER_NAME",
1464
+ "PIGEON_SECRET_KEY",
1465
+ "PATH",
1466
+ "HIVE_CONF_DIR",
1467
+ "HADOOP_CONF_DIR",
1468
+ "SPARK_CONF_DIR",
1469
+ "HIVE_HOME",
1470
+ ],
1471
+ },
1472
+ "execution_config": {
1473
+ "type": "object",
1474
+ "title": _l("Execution Configuration"),
1475
+ "description": _l("Spark execution settings"),
1476
+ "properties": {
1477
+ "queue": {
1478
+ "type": "string",
1479
+ "title": _l("Queue Name"),
1480
+ "description": _l("Name of the queue to submit Spark job"),
1481
+ "default": "recurve",
1482
+ },
1483
+ "conf": {
1484
+ "type": "string",
1485
+ "title": _l("Additional Configuration"),
1486
+ "description": _l("Additional Spark configuration in JSON format"),
1487
+ "ui:options": {"type": "textarea"},
1488
+ },
1489
+ },
1490
+ "order": ["queue", "conf"],
1491
+ },
1492
+ },
1493
+ "order": ["submitter", "env", "execution_config"],
1494
+ "required": [
1495
+ "submitter",
1496
+ ],
1497
+ "secret": [],
1498
+ },
1499
+ "enabled": True,
1500
+ "group": ["destination"],
1501
+ "test_required": True,
1502
+ },
1503
+ "recurvedata.connectors.connectors.starrocks": {
1504
+ "type": "starrocks",
1505
+ "ui_type": "StarRocks",
1506
+ "category": ["database"],
1507
+ "config_schema": {
1508
+ "type": "object",
1509
+ "properties": {
1510
+ "host": {
1511
+ "type": "string",
1512
+ "title": _l("Host Address"),
1513
+ "default": "127.0.0.1",
1514
+ },
1515
+ "user": {"type": "string", "title": _l("Username")},
1516
+ "password": {"type": "string", "title": _l("Password")},
1517
+ "database": {
1518
+ "type": "string",
1519
+ "title": _l("Database Name"),
1520
+ "description": _l("The name of the database to connect to"),
1521
+ },
1522
+ "port": {
1523
+ "type": "number",
1524
+ "title": _l("MySQL Port Number"),
1525
+ "description": _l("The port number for connecting to MySQL server on FE"),
1526
+ "default": 9030,
1527
+ },
1528
+ "http_port": {
1529
+ "type": "number",
1530
+ "title": _l("FE HTTP Port"),
1531
+ "description": _l("The HTTP port number for the Doris Frontend (FE) service"),
1532
+ "default": 8030,
1533
+ },
1534
+ "ssh_tunnel": SSH_TUNNEL_CONFIG_SCHEMA,
1535
+ },
1536
+ "order": ["host", "port", "http_port", "user", "password", "database", "ssh_tunnel"],
1537
+ "required": ["host", "http_port"],
1538
+ "secret": ["password"],
1539
+ },
1540
+ "enabled": True,
1541
+ "group": ["destination"],
1542
+ "test_required": True,
1543
+ },
1544
+ "recurvedata.connectors.connectors.tidb": {
1545
+ "type": "tidb",
1546
+ "ui_type": "TiDB",
1547
+ "category": ["database"],
1548
+ "config_schema": {
1549
+ "type": "object",
1550
+ "properties": {
1551
+ "host": {"type": "string", "title": _l("Host Address"), "default": "127.0.0.1"},
1552
+ "port": {
1553
+ "type": "number",
1554
+ "title": _l("Port Number"),
1555
+ "default": 4000,
1556
+ },
1557
+ "user": {"type": "string", "title": _l("Username")},
1558
+ "password": {"type": "string", "title": _l("Password")},
1559
+ "database": {
1560
+ "type": "string",
1561
+ "title": _l("Database Name"),
1562
+ "description": _l("The name of the database to connect to"),
1563
+ },
1564
+ },
1565
+ "order": ["host", "port", "user", "password", "database"],
1566
+ "required": ["host"],
1567
+ "secret": ["password"],
1568
+ },
1569
+ "enabled": True,
1570
+ "group": ["destination"],
1571
+ "test_required": True,
1572
+ },
1573
+ }
1574
+
1575
+ # auto generated finish