@lowdefy/docs-content 0.0.0-experimental-20260710073520

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.
Files changed (304) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +20 -0
  3. package/content/actions/callapi.md +66 -0
  4. package/content/actions/callmethod.md +41 -0
  5. package/content/actions/copytoclipboard.md +32 -0
  6. package/content/actions/displaymessage.md +53 -0
  7. package/content/actions/downloadcsv.md +89 -0
  8. package/content/actions/fetch.md +50 -0
  9. package/content/actions/geolocationcurrentposition.md +56 -0
  10. package/content/actions/link.md +104 -0
  11. package/content/actions/login.md +85 -0
  12. package/content/actions/logout.md +56 -0
  13. package/content/actions/pdfmake.md +304 -0
  14. package/content/actions/request.md +67 -0
  15. package/content/actions/reset.md +27 -0
  16. package/content/actions/resetvalidation.md +85 -0
  17. package/content/actions/scrollto.md +85 -0
  18. package/content/actions/setdarkmode.md +62 -0
  19. package/content/actions/setfocus.md +33 -0
  20. package/content/actions/setglobal.md +63 -0
  21. package/content/actions/setlocale.md +69 -0
  22. package/content/actions/setstate.md +70 -0
  23. package/content/actions/throw.md +72 -0
  24. package/content/actions/validate.md +87 -0
  25. package/content/actions/wait.md +24 -0
  26. package/content/agents/agent-endpoint-tools.md +190 -0
  27. package/content/agents/agent-mcp-tools.md +124 -0
  28. package/content/agents/agent-multi-agent.md +136 -0
  29. package/content/agents/agent-properties.md +174 -0
  30. package/content/agents/agent-server-hooks.md +336 -0
  31. package/content/agents/agentchat.md +515 -0
  32. package/content/agents/agentconversations.md +148 -0
  33. package/content/concepts/ai-agent-docs.md +190 -0
  34. package/content/concepts/cli.md +213 -0
  35. package/content/concepts/connections-and-requests.md +7 -0
  36. package/content/concepts/custom-html.md +3 -0
  37. package/content/concepts/custom-styling.md +161 -0
  38. package/content/concepts/events-and-actions.md +271 -0
  39. package/content/concepts/hosting-files.md +18 -0
  40. package/content/concepts/i18n.md +320 -0
  41. package/content/concepts/keyboard-shortcuts.md +218 -0
  42. package/content/concepts/layout-overview.md +478 -0
  43. package/content/concepts/lists.md +144 -0
  44. package/content/concepts/logger.md +43 -0
  45. package/content/concepts/lowdefy-schema.md +365 -0
  46. package/content/concepts/menus.md +144 -0
  47. package/content/concepts/module-authoring.md +564 -0
  48. package/content/concepts/modules.md +338 -0
  49. package/content/concepts/operators.md +45 -0
  50. package/content/concepts/overview.md +19 -0
  51. package/content/concepts/references-and-templates.md +207 -0
  52. package/content/concepts/secrets.md +24 -0
  53. package/content/concepts/selectors.md +143 -0
  54. package/content/connections/amazonredshift.md +176 -0
  55. package/content/connections/anthropic.md +232 -0
  56. package/content/connections/awss3.md +313 -0
  57. package/content/connections/azureblobstorage.md +133 -0
  58. package/content/connections/elasticsearch.md +371 -0
  59. package/content/connections/google.md +228 -0
  60. package/content/connections/googlecloudstorage.md +139 -0
  61. package/content/connections/googlesheet.md +313 -0
  62. package/content/connections/knex.md +206 -0
  63. package/content/connections/mariadb.md +177 -0
  64. package/content/connections/mcp.md +134 -0
  65. package/content/connections/mongodb.md +739 -0
  66. package/content/connections/mssql.md +191 -0
  67. package/content/connections/mysql.md +192 -0
  68. package/content/connections/openai-connection.md +228 -0
  69. package/content/connections/postgresql.md +200 -0
  70. package/content/connections/redis.md +116 -0
  71. package/content/connections/sendgridmail.md +94 -0
  72. package/content/connections/smtp.md +149 -0
  73. package/content/connections/sqlite.md +187 -0
  74. package/content/connections/stripe.md +115 -0
  75. package/content/container-blocks/affix.md +413 -0
  76. package/content/container-blocks/alert.md +937 -0
  77. package/content/container-blocks/badge.md +1222 -0
  78. package/content/container-blocks/box.md +1453 -0
  79. package/content/container-blocks/card.md +1200 -0
  80. package/content/container-blocks/carousel.md +2247 -0
  81. package/content/container-blocks/collapse.md +1335 -0
  82. package/content/container-blocks/configprovider.md +1070 -0
  83. package/content/container-blocks/confirmmodal.md +1159 -0
  84. package/content/container-blocks/content.md +597 -0
  85. package/content/container-blocks/descriptions.md +870 -0
  86. package/content/container-blocks/drawer.md +1379 -0
  87. package/content/container-blocks/dropdownmenu.md +643 -0
  88. package/content/container-blocks/flex.md +1510 -0
  89. package/content/container-blocks/footer.md +380 -0
  90. package/content/container-blocks/googlemaps.md +546 -0
  91. package/content/container-blocks/googlemapsheatmap.md +607 -0
  92. package/content/container-blocks/googlemapsscript.md +61 -0
  93. package/content/container-blocks/header.md +302 -0
  94. package/content/container-blocks/label.md +739 -0
  95. package/content/container-blocks/layout.md +604 -0
  96. package/content/container-blocks/masonry.md +1090 -0
  97. package/content/container-blocks/mobilemenu.md +1244 -0
  98. package/content/container-blocks/modal.md +1180 -0
  99. package/content/container-blocks/pageheadermenu.md +614 -0
  100. package/content/container-blocks/pagesidebarlayout.md +438 -0
  101. package/content/container-blocks/pagesidermenu.md +651 -0
  102. package/content/container-blocks/popover.md +1421 -0
  103. package/content/container-blocks/result.md +972 -0
  104. package/content/container-blocks/sider.md +1064 -0
  105. package/content/container-blocks/span.md +747 -0
  106. package/content/container-blocks/spinner.md +267 -0
  107. package/content/container-blocks/splitter.md +1735 -0
  108. package/content/container-blocks/tabs.md +1718 -0
  109. package/content/container-blocks/tooltip.md +1274 -0
  110. package/content/container-blocks/watermark.md +515 -0
  111. package/content/controls/for.md +103 -0
  112. package/content/controls/if.md +107 -0
  113. package/content/controls/log.md +50 -0
  114. package/content/controls/parallel.md +71 -0
  115. package/content/controls/parallel_for.md +36 -0
  116. package/content/controls/reject.md +56 -0
  117. package/content/controls/return.md +66 -0
  118. package/content/controls/set_state.md +98 -0
  119. package/content/controls/switch.md +90 -0
  120. package/content/controls/throw.md +79 -0
  121. package/content/controls/try.md +88 -0
  122. package/content/deployment/docker.md +149 -0
  123. package/content/deployment/node-server.md +27 -0
  124. package/content/deployment/vercel.md +101 -0
  125. package/content/display-blocks/aggrid.md +1459 -0
  126. package/content/display-blocks/anchor.md +336 -0
  127. package/content/display-blocks/avatar.md +1154 -0
  128. package/content/display-blocks/breadcrumb.md +517 -0
  129. package/content/display-blocks/button.md +758 -0
  130. package/content/display-blocks/calendar.md +156 -0
  131. package/content/display-blocks/dangeroushtml.md +314 -0
  132. package/content/display-blocks/dangerousmarkdown.md +423 -0
  133. package/content/display-blocks/diffgit.md +44 -0
  134. package/content/display-blocks/difflist.md +225 -0
  135. package/content/display-blocks/diffsidebyside.md +56 -0
  136. package/content/display-blocks/difftimeline.md +94 -0
  137. package/content/display-blocks/divider.md +406 -0
  138. package/content/display-blocks/download.md +60 -0
  139. package/content/display-blocks/dropdownbutton.md +661 -0
  140. package/content/display-blocks/echart.md +418 -0
  141. package/content/display-blocks/floatbutton.md +545 -0
  142. package/content/display-blocks/html.md +311 -0
  143. package/content/display-blocks/icon.md +717 -0
  144. package/content/display-blocks/img.md +479 -0
  145. package/content/display-blocks/markdown.md +520 -0
  146. package/content/display-blocks/markdownwithcode.md +730 -0
  147. package/content/display-blocks/menu.md +1123 -0
  148. package/content/display-blocks/message.md +941 -0
  149. package/content/display-blocks/notification.md +1410 -0
  150. package/content/display-blocks/paragraph.md +643 -0
  151. package/content/display-blocks/progress.md +818 -0
  152. package/content/display-blocks/qrcode.md +519 -0
  153. package/content/display-blocks/s3download.md +240 -0
  154. package/content/display-blocks/search.md +360 -0
  155. package/content/display-blocks/skeleton.md +272 -0
  156. package/content/display-blocks/skeletonavatar.md +222 -0
  157. package/content/display-blocks/skeletonbutton.md +245 -0
  158. package/content/display-blocks/skeletoninput.md +223 -0
  159. package/content/display-blocks/skeletonparagraph.md +201 -0
  160. package/content/display-blocks/statistic.md +485 -0
  161. package/content/display-blocks/steps.md +585 -0
  162. package/content/display-blocks/tag.md +620 -0
  163. package/content/display-blocks/title.md +654 -0
  164. package/content/display-blocks/tour.md +2359 -0
  165. package/content/input-blocks/autocomplete.md +786 -0
  166. package/content/input-blocks/buttonselector.md +964 -0
  167. package/content/input-blocks/checkboxselector.md +765 -0
  168. package/content/input-blocks/checkboxswitch.md +497 -0
  169. package/content/input-blocks/colorselector.md +884 -0
  170. package/content/input-blocks/daterangeselector.md +777 -0
  171. package/content/input-blocks/dateselector.md +693 -0
  172. package/content/input-blocks/datetimeselector.md +791 -0
  173. package/content/input-blocks/inputgallery.md +528 -0
  174. package/content/input-blocks/monthselector.md +717 -0
  175. package/content/input-blocks/multipleselector.md +1337 -0
  176. package/content/input-blocks/numberinput.md +855 -0
  177. package/content/input-blocks/pagination.md +679 -0
  178. package/content/input-blocks/paragraphinput.md +1664 -0
  179. package/content/input-blocks/passwordinput.md +480 -0
  180. package/content/input-blocks/phonenumberinput.md +688 -0
  181. package/content/input-blocks/radioselector.md +820 -0
  182. package/content/input-blocks/ratingslider.md +684 -0
  183. package/content/input-blocks/s3uploadbutton.md +384 -0
  184. package/content/input-blocks/s3uploaddragger.md +305 -0
  185. package/content/input-blocks/s3uploadphoto.md +288 -0
  186. package/content/input-blocks/segmentedselector.md +782 -0
  187. package/content/input-blocks/selector.md +1162 -0
  188. package/content/input-blocks/switch.md +552 -0
  189. package/content/input-blocks/textarea.md +714 -0
  190. package/content/input-blocks/textinput.md +639 -0
  191. package/content/input-blocks/tiptapinput.md +226 -0
  192. package/content/input-blocks/tiptapmentioninput.md +471 -0
  193. package/content/input-blocks/titleinput.md +1094 -0
  194. package/content/input-blocks/treeinput.md +144 -0
  195. package/content/input-blocks/treemultipleselector.md +162 -0
  196. package/content/input-blocks/treeselector.md +185 -0
  197. package/content/input-blocks/upload.md +149 -0
  198. package/content/input-blocks/uploaddragger.md +85 -0
  199. package/content/input-blocks/uploadphoto.md +84 -0
  200. package/content/input-blocks/weekselector.md +630 -0
  201. package/content/list-blocks/controlledlist.md +498 -0
  202. package/content/list-blocks/list.md +529 -0
  203. package/content/list-blocks/listselector.md +301 -0
  204. package/content/list-blocks/masonrylist.md +230 -0
  205. package/content/migration/upgrade-guide.md +106 -0
  206. package/content/migration/v4-to-v5.md +589 -0
  207. package/content/migration/v5-to-v6.md +36 -0
  208. package/content/operators/_actions.md +58 -0
  209. package/content/operators/_and.md +76 -0
  210. package/content/operators/_api.md +254 -0
  211. package/content/operators/_app.md +114 -0
  212. package/content/operators/_args.md +65 -0
  213. package/content/operators/_array.md +331 -0
  214. package/content/operators/_base64.md +49 -0
  215. package/content/operators/_boolean.md +33 -0
  216. package/content/operators/_build.md +166 -0
  217. package/content/operators/_change_case.md +357 -0
  218. package/content/operators/_date.md +415 -0
  219. package/content/operators/_dayjs.md +128 -0
  220. package/content/operators/_diff.md +61 -0
  221. package/content/operators/_divide.md +32 -0
  222. package/content/operators/_eq.md +52 -0
  223. package/content/operators/_event.md +86 -0
  224. package/content/operators/_function.md +52 -0
  225. package/content/operators/_get.md +92 -0
  226. package/content/operators/_global.md +86 -0
  227. package/content/operators/_gt.md +50 -0
  228. package/content/operators/_gte.md +50 -0
  229. package/content/operators/_hash.md +112 -0
  230. package/content/operators/_if.md +30 -0
  231. package/content/operators/_if_none.md +47 -0
  232. package/content/operators/_index.md +48 -0
  233. package/content/operators/_input.md +86 -0
  234. package/content/operators/_intl.md +135 -0
  235. package/content/operators/_item.md +166 -0
  236. package/content/operators/_js.md +113 -0
  237. package/content/operators/_json.md +120 -0
  238. package/content/operators/_jsonata.md +152 -0
  239. package/content/operators/_locale.md +65 -0
  240. package/content/operators/_location.md +40 -0
  241. package/content/operators/_log.md +22 -0
  242. package/content/operators/_lt.md +50 -0
  243. package/content/operators/_lte.md +50 -0
  244. package/content/operators/_math.md +407 -0
  245. package/content/operators/_media.md +83 -0
  246. package/content/operators/_menu.md +62 -0
  247. package/content/operators/_module.md +340 -0
  248. package/content/operators/_mql.md +95 -0
  249. package/content/operators/_ne.md +62 -0
  250. package/content/operators/_not.md +33 -0
  251. package/content/operators/_number.md +159 -0
  252. package/content/operators/_nunjucks.md +117 -0
  253. package/content/operators/_object.md +253 -0
  254. package/content/operators/_operator.md +33 -0
  255. package/content/operators/_or.md +67 -0
  256. package/content/operators/_product.md +45 -0
  257. package/content/operators/_random.md +90 -0
  258. package/content/operators/_ref.md +80 -0
  259. package/content/operators/_regex.md +69 -0
  260. package/content/operators/_request.md +35 -0
  261. package/content/operators/_request_details.md +29 -0
  262. package/content/operators/_secret.md +56 -0
  263. package/content/operators/_state.md +134 -0
  264. package/content/operators/_step.md +98 -0
  265. package/content/operators/_string.md +327 -0
  266. package/content/operators/_subtract.md +24 -0
  267. package/content/operators/_sum.md +45 -0
  268. package/content/operators/_switch.md +37 -0
  269. package/content/operators/_t.md +96 -0
  270. package/content/operators/_theme.md +65 -0
  271. package/content/operators/_type.md +78 -0
  272. package/content/operators/_uri.md +49 -0
  273. package/content/operators/_url_query.md +92 -0
  274. package/content/operators/_user.md +154 -0
  275. package/content/operators/_uuid.md +118 -0
  276. package/content/operators/_var.md +88 -0
  277. package/content/operators/_yaml.md +96 -0
  278. package/content/other/introduction.md +39 -0
  279. package/content/other/next-auth-providers.md +3 -0
  280. package/content/other/updatesession.md +26 -0
  281. package/content/plugins/plugins-actions.md +80 -0
  282. package/content/plugins/plugins-connections.md +98 -0
  283. package/content/plugins/plugins-dev.md +138 -0
  284. package/content/plugins/plugins-introduction.md +29 -0
  285. package/content/plugins/plugins-operators.md +71 -0
  286. package/content/testing/e2e-auth.md +108 -0
  287. package/content/testing/e2e-configuration.md +107 -0
  288. package/content/testing/e2e-getting-started.md +96 -0
  289. package/content/testing/e2e-introduction.md +53 -0
  290. package/content/testing/e2e-mocking.md +155 -0
  291. package/content/testing/e2e-writing-tests.md +214 -0
  292. package/content/tutorial/tutorial-actions-operators.md +222 -0
  293. package/content/tutorial/tutorial-add-blocks.md +86 -0
  294. package/content/tutorial/tutorial-create-page.md +57 -0
  295. package/content/tutorial/tutorial-display-data-page.md +181 -0
  296. package/content/tutorial/tutorial-next-steps.md +53 -0
  297. package/content/tutorial/tutorial-requests-sql.md +22 -0
  298. package/content/tutorial/tutorial-start.md +71 -0
  299. package/content/user-authentication/auth-providers.md +15 -0
  300. package/content/user-authentication/login-and-logout.md +122 -0
  301. package/content/user-authentication/users-introduction.md +31 -0
  302. package/index.json +2281 -0
  303. package/package.json +34 -0
  304. package/scripts/extractAgentDocs.js +130 -0
@@ -0,0 +1,371 @@
1
+ # Elasticsearch
2
+
3
+ ## Connections
4
+
5
+ Connection types:
6
+ - Elasticsearch
7
+
8
+ ### Elasticsearch
9
+
10
+ [`Elasticsearch`](https://www.elastic.co/elasticsearch/) is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data for lightning fast search, fine‑tuned relevancy, and powerful analytics that scale with ease.
11
+
12
+ The Elasticsearch connection can be used to search for documents in your Elasticsearch cluster. Lowdefy integrates with Elasticsearch using the official [Node.js client from Elastic Co.](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/introduction.html), and provides direct access to the full query DSL supported by Elasticsearch.
13
+
14
+ #### Properties
15
+ - `node: string|string[]`: __Required__ - Elasticsearch node(s) to connect to.
16
+ - `index: string`: The default index to query. You can also provide a per-request index to override this setting.
17
+ - `auth: BasicAuth|CloudAuth`: The authentication data as an object, containing either basic auth credentials (as `username` and `password`), an API key (as `apiKey`), or Elastic Cloud credentials.
18
+ - `maxRetries: number`: Max number of retries for each request.
19
+ - `requestTimeout: number`: Max request timeout in milliseconds for each request.
20
+
21
+ The connection accepts many more advanced configuration options. They will be passed to the Elasticsearch client verbatim, so check out the [configuration instructions](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/basic-config.html) provided by Elastic.
22
+
23
+ #### Examples
24
+
25
+ ###### Authenticated connection with reads and writes:
26
+ ```yaml
27
+ connections:
28
+ - id: elasticsearch
29
+ type: Elasticsearch
30
+ properties:
31
+ write: true
32
+ node:
33
+ _secret: ELASTICSEARCH_HOST
34
+ auth:
35
+ username:
36
+ _secret: ELASTICSEARCH_USER
37
+ password:
38
+ _secret: ELASTICSEARCH_PASSWORD
39
+ ```
40
+ Environment variables:
41
+ ```
42
+ LOWDEFY_SECRET_ELASTICSEARCH_HOST = http://localhost:9200
43
+ LOWDEFY_SECRET_ELASTICSEARCH_USER = es
44
+ LOWDEFY_SECRET_ELASTICSEARCH_PASSWORD = password
45
+ ```
46
+
47
+ ###### Unauthenticated connection with default index:
48
+ ```yaml
49
+ connections:
50
+ - id: elasticsearch
51
+ type: Elasticsearch
52
+ properties:
53
+ write: true
54
+ node:
55
+ _secret: ELASTICSEARCH_HOST
56
+ index:
57
+ _secret: ELASTICSEARCH_INDEX
58
+ ```
59
+ Environment variables:
60
+ ```
61
+ LOWDEFY_SECRET_ELASTICSEARCH_HOST = http://localhost:9200
62
+ LOWDEFY_SECRET_ELASTICSEARCH_INDEX = articles
63
+ ```
64
+
65
+ ## Requests
66
+
67
+ Request types:
68
+ - ElasticsearchDelete
69
+ - ElasticsearchDeleteByQuery
70
+ - ElasticsearchIndex
71
+ - ElasticsearchSearch
72
+ - ElasticsearchUpdate
73
+ - ElasticsearchUpdateByQuery
74
+
75
+ ### ElasticsearchDelete
76
+
77
+ The `ElasticsearchDelete` request removes a JSON document from the specified index.
78
+
79
+ #### Properties
80
+ - `id: string|number`: __Required__ - Unique identifier for the document to be deleted.
81
+ - `if_seq_no: number` Only perform the operation if the document has this sequence number. See [Optimistic concurrency control](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#optimistic-concurrency-control-index).
82
+ - `if_primary_term: number` Only perform the operation if the document has this primary term. See [Optimistic concurrency control](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#optimistic-concurrency-control-index).
83
+ - `refresh: string|boolean` If `true`, Elasticsearch refreshes the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` do nothing with refreshes. Valid values: `true`, `false`, `wait_for`. Default: `false`.
84
+ - `routing: string` Custom value used to route operations to a specific shard.
85
+ - `timeout: string` Period to [wait for active shards](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#index-wait-for-active-shards). Defaults to 1m (one minute).
86
+ - `version: integer` Explicit version number for concurrency control. The specified version must match the current version of the document for the request to succeed.
87
+ - `version_type` Specific version type: `external`, `external_gte`.
88
+ - `wait_for_active_shards: string` The number of shard copies that must be active before proceeding with the operation. Set to `all` or any positive integer up to the total number of shards in the index (`number_of_replicas+1`). Default: `1`, the primary shard.
89
+ See [Active Shards](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#index-wait-for-active-shards).
90
+
91
+ #### Examples
92
+
93
+ ###### Delete a document:
94
+ ```yaml
95
+ requests:
96
+ - id: delete_document
97
+ type: ElasticsearchDelete
98
+ payload:
99
+ selected_id:
100
+ _state: selected_id
101
+ properties:
102
+ id:
103
+ _payload: selected_id
104
+ ```
105
+
106
+ ### ElasticsearchDeleteByQuery
107
+
108
+ The `ElasticsearchDeleteByQuery` request deletes documents that match the specified query.
109
+
110
+ #### Properties
111
+ - `body: object` The Elasticsearch query body, expressed in the [JSON Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html).
112
+ - `query: object`: The Elasticsearch query.
113
+ - `_source: string|string[]|boolean`: True or false to return the `_source` field or not, or a list of fields to return.
114
+ - `_source_excludes: string|string[]`: A list of fields to exclude from the returned `_source` field.
115
+ - `_source_includes: string|string[]`: A list of fields to extract and return from the `_source` field.
116
+ - `allow_no_indices: boolean`: Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes _all string or when no indices have been specified).
117
+ - `max_docs: number` Maximum number of documents to process. Defaults to all documents.
118
+ - `refresh: string|boolean` If `true`, Elasticsearch refreshes the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` do nothing with refreshes. Valid values: `true`, `false`, `wait_for`. Default: `false`.
119
+ - `requests_per_second: number` The throttle for this request in sub-requests per second. Defaults to -1 (no throttle).
120
+ - `analyzer: string`: The analyzer to use for the query string
121
+ - `default_operator: string`: The default operator for query string query (AND or OR).
122
+ - `df: string`: The field to use as default where no field prefix is given in the query string.
123
+ - `from: number`: Starting offset.
124
+ - `size: number`: Number of hits to return.
125
+ - `index: string|string[]`: A comma-separated list of index names to search; use _all or empty string to perform the operation on all indices.
126
+ - `lenient: boolean`: Specify whether format-based query failures (such as providing text to a numeric field) should be ignored.
127
+ - `scroll: string`: Specify how long a consistent view of the index should be maintained for scrolled search.
128
+ - `sort: string|string[]`: A comma-separated list of <field>:<direction> pairs.
129
+
130
+ The request accepts many more advanced configuration options. They will be passed to the Elasticsearch client verbatim, so check out the [available options](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-delete-by-query.html#docs-delete-by-query-api-query-params) provided by Elastic.
131
+
132
+ #### Examples
133
+
134
+ ###### Delete all comments by a user:
135
+ ```yaml
136
+ requests:
137
+ - id: delete_multiple
138
+ type: ElasticsearchUpdate
139
+ payload:
140
+ selected_user:
141
+ _state: selected_user
142
+ properties:
143
+ body:
144
+ query:
145
+ term:
146
+ user.id:
147
+ _payload: selected_user
148
+ ```
149
+
150
+ ### ElasticsearchIndex
151
+
152
+ The `ElasticsearchIndex` request adds a JSON document to the specified data stream or index and makes it searchable. If the target is an index and the document already exists, the request updates the document and increments its version.
153
+
154
+ #### Properties
155
+ - `body: object` The Elasticsearch request body contains the JSON source for the document data.
156
+ - `if_seq_no: number` Only perform the operation if the document has this sequence number. See [Optimistic concurrency control](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#optimistic-concurrency-control-index).
157
+ - `if_primary_term: number` Only perform the operation if the document has this primary term. See [Optimistic concurrency control](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#optimistic-concurrency-control-index).
158
+ - `op_type: 'create'|'index'` Set to `create` to only index the document if it does not already exist (_put if absent_). If a document with the specified `_id` already exists, the indexing operation will fail. Same as using the `<index>/_create` endpoint. Valid values: `index`, `create`. If document id is specified, it defaults to `index`. Otherwise, it defaults to `create`.
159
+ - `pipeline: string` ID of the pipeline to use to preprocess incoming documents.
160
+ - `refresh: string|boolean` If `true`, Elasticsearch refreshes the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` do nothing with refreshes. Valid values: `true`, `false`, `wait_for`. Default: `false`.
161
+ - `routing: string` Custom value used to route operations to a specific shard.
162
+ - `timeout: string` Period the request waits for the following operations:
163
+ - [Automatic index creation](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#index-creation)
164
+ - [Dynamic mapping](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/dynamic-mapping.html) updates
165
+ - [Waiting for active shards](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#index-wait-for-active-shards)
166
+ Defaults to `1m` (one minute). This guarantees Elasticsearch waits for at least the timeout before failing. The actual wait time could be longer, particularly when multiple waits occur.
167
+ - `version: integer` Explicit version number for concurrency control. The specified version must match the current version of the document for the request to succeed.
168
+ - `version_type` Specific version type: `external`, `external_gte`.
169
+ - `wait_for_active_shards: string` The number of shard copies that must be active before proceeding with the operation. Set to `all` or any positive integer up to the total number of shards in the index (`number_of_replicas+1`). Default: `1`, the primary shard.
170
+ See [Active Shards](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#index-wait-for-active-shards).
171
+ - `require_alias: boolean` If `true`, the destination must be an [index alias](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/alias.html). Defaults to `false`.
172
+
173
+ #### Examples
174
+
175
+ ###### Index a new document.
176
+ ```yaml
177
+ requests:
178
+ - id: insert_new_comment
179
+ type: Elasticsearch
180
+ connectionId: elasticsearch
181
+ payload:
182
+ comment:
183
+ _state: comment_input
184
+ properties:
185
+ body:
186
+ comment:
187
+ _payload: comment
188
+ user_id:
189
+ _user: id
190
+ timestamp:
191
+ _date: now
192
+ ```
193
+
194
+ ### ElasticsearchSearch
195
+
196
+ The `ElasticsearchSearch` request searches the Elasticsearch index.
197
+
198
+ #### Properties
199
+ - `body: object` The Elasticsearch query body, expressed in the [JSON Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html).
200
+ - `query: object`: The Elasticsearch query.
201
+ - `aggs: object`: The [aggregations](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html) to request from the server.
202
+ - `_source: string|string[]|boolean`: True or false to return the _source field or not, or a list of fields to return.
203
+ - `_source_excludes: string|string[]`: A list of fields to exclude from the returned _source field.
204
+ - `_source_includes: string|string[]`: A list of fields to extract and return from the _source field.
205
+ - `allow_no_indices: boolean`: Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes _all string or when no indices have been specified).
206
+ - `allow_partial_search_results: boolean`: Indicate if an error should be returned if there is a partial search failure or timeout.
207
+ - `analyzer: string`: The analyzer to use for the query string
208
+ - `default_operator: string`: The default operator for query string query (AND or OR).
209
+ - `df: string`: The field to use as default where no field prefix is given in the query string.
210
+ - `from: number`: Starting offset.
211
+ - `size: number`: Number of hits to return.
212
+ - `index: string|string[]`: A comma-separated list of index names to search; use _all or empty string to perform the operation on all indices.
213
+ - `lenient: boolean`: Specify whether format-based query failures (such as providing text to a numeric field) should be ignored.
214
+ - `scroll: string`: Specify how long a consistent view of the index should be maintained for scrolled search.
215
+ - `sort: string|string[]`: A comma-separated list of <field>:<direction> pairs.
216
+
217
+ The request accepts many more advanced configuration options. They will be passed to the Elasticsearch client verbatim, so check out the [available options](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#_search) provided by Elastic.
218
+
219
+ #### Examples
220
+
221
+ ###### Fetch the first 10 matching documents.
222
+ ```yaml
223
+ requests:
224
+ - id: fetch_docs
225
+ type: Elasticsearch
226
+ connectionId: elasticsearch
227
+ properties:
228
+ size: 10
229
+ body:
230
+ query:
231
+ match_all: {}
232
+ ```
233
+
234
+ ###### Find a document with ID 42.
235
+ ```yaml
236
+ requests:
237
+ - id: fetch_docs
238
+ type: Elasticsearch
239
+ connectionId: elasticsearch
240
+ properties:
241
+ size: 1
242
+ body:
243
+ query:
244
+ term:
245
+ _id: 42
246
+ ```
247
+
248
+ ###### Fetch articles between yesterday and today, aggregate by author.
249
+ ```yaml
250
+ requests:
251
+ - id: fetch_docs
252
+ type: Elasticsearch
253
+ connectionId: elasticsearch
254
+ properties:
255
+ size: 1
256
+ type: article
257
+ body:
258
+ query:
259
+ range:
260
+ timestamp:
261
+ gte: now-1d/d
262
+ lt: now/d
263
+ aggs:
264
+ author_aggregation:
265
+ terms:
266
+ field: author
267
+ ```
268
+
269
+ ### ElasticsearchUpdate
270
+
271
+ The `ElasticsearchUpdate` request updates a document using a script or partial document.
272
+
273
+ #### Properties
274
+ - `id: string|number` Unique identifier for the document to be updated.
275
+ - `body: object` The Elasticsearch request body contains either a [script](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/modules-scripting-using.html) or a `doc` property with fields to update.
276
+ - `if_seq_no: number` Only perform the operation if the document has this sequence number. See [Optimistic concurrency control](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#optimistic-concurrency-control-index).
277
+ - `if_primary_term: number` Only perform the operation if the document has this primary term. See [Optimistic concurrency control](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#optimistic-concurrency-control-index).
278
+ - `require_alias: boolean` If `true`, the destination must be an [index alias](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/alias.html). Defaults to `false`.
279
+ - `refresh: string|boolean` If `true`, Elasticsearch refreshes the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` do nothing with refreshes. Valid values: `true`, `false`, `wait_for`. Default: `false`.
280
+ - `retry_on_conflict: boolean` Specify how many times should the operation be retried when a conflict occurs. Default: `0`.
281
+ - `routing: string` Custom value used to route operations to a specific shard.
282
+ - `_source: string[]|boolean` Set to `false` to disable source retrieval (default: `true`). You can also specify a comma-separated list of the fields you want to retrieve.
283
+ - `_source_excludes: string[]` Specify the source fields you want to exclude.
284
+ - `_source_includes: string[]` Specify the source fields you want to include.
285
+ - `timeout: string` Period the request waits for the following operations:
286
+ - [Dynamic mapping](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/dynamic-mapping.html) updates
287
+ - [Waiting for active shards](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#index-wait-for-active-shards)
288
+ Defaults to `1m` (one minute). This guarantees Elasticsearch waits for at least the timeout before failing. The actual wait time could be longer, particularly when multiple waits occur.
289
+ - `wait_for_active_shards: string` The number of shard copies that must be active before proceeding with the operation. Set to `all` or any positive integer up to the total number of shards in the index (`number_of_replicas+1`). Default: `1`, the primary shard.
290
+ See [Active Shards](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-index_.html#index-wait-for-active-shards).
291
+
292
+ #### Examples
293
+
294
+ ###### Update a document:
295
+ ```yaml
296
+ requests:
297
+ - id: update
298
+ type: ElasticsearchUpdate
299
+ payload:
300
+ id:
301
+ _state: _id
302
+ name:
303
+ _state: name
304
+ properties:
305
+ id:
306
+ _payload: id
307
+ body:
308
+ doc:
309
+ _payload: name
310
+ ```
311
+
312
+ ###### Increase the like counter using a script:
313
+ ```yaml
314
+ requests:
315
+ - id: increase_like_counter
316
+ type: ElasticsearchUpdate
317
+ payload:
318
+ id:
319
+ _state: _id
320
+ properties:
321
+ id:
322
+ _payload: id
323
+ body:
324
+ script:
325
+ source: |
326
+ ctx._source.likes++
327
+ ```
328
+
329
+ ### ElasticsearchUpdateByQuery
330
+
331
+ The `ElasticsearchUpdateByQuery` request updates documents that match the specified query. If no query is specified, performs an update on every document in the data stream or index without modifying the source, which is useful for picking up mapping changes.
332
+
333
+ #### Properties
334
+ - `body: object` The Elasticsearch query body, expressed in the [JSON Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html).
335
+ - `query: object`: The Elasticsearch query.
336
+ - `script: object` A [script](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/modules-scripting-using.html) to update documents.
337
+ - `_source: string|string[]|boolean`: True or false to return the `_source` field or not, or a list of fields to return.
338
+ - `_source_excludes: string|string[]`: A list of fields to exclude from the returned `_source` field.
339
+ - `_source_includes: string|string[]`: A list of fields to extract and return from the `_source` field.
340
+ - `allow_no_indices: boolean`: Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes _all string or when no indices have been specified).
341
+ - `max_docs: number` Maximum number of documents to process. Defaults to all documents.
342
+ - `refresh: string|boolean` If `true`, Elasticsearch refreshes the affected shards to make this operation visible to search, if `wait_for` then wait for a refresh to make this operation visible to search, if `false` do nothing with refreshes. Valid values: `true`, `false`, `wait_for`. Default: `false`.
343
+ - `requests_per_second: number` The throttle for this request in sub-requests per second. Defaults to -1 (no throttle).
344
+ - `analyzer: string`: The analyzer to use for the query string
345
+ - `default_operator: string`: The default operator for query string query (AND or OR).
346
+ - `df: string`: The field to use as default where no field prefix is given in the query string.
347
+ - `from: number`: Starting offset.
348
+ - `size: number`: Number of hits to return.
349
+ - `index: string|string[]`: A comma-separated list of index names to search; use _all or empty string to perform the operation on all indices.
350
+ - `lenient: boolean`: Specify whether format-based query failures (such as providing text to a numeric field) should be ignored.
351
+ - `scroll: string`: Specify how long a consistent view of the index should be maintained for scrolled search.
352
+ - `sort: string|string[]`: A comma-separated list of <field>:<direction> pairs.
353
+
354
+ The request accepts many more advanced configuration options. They will be passed to the Elasticsearch client verbatim, so check out the [available options](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-update-by-query.html#docs-update-by-query-api-query-params) provided by Elastic.
355
+
356
+ #### Examples
357
+
358
+ ###### Update all red cars:
359
+ ```yaml
360
+ requests:
361
+ - id: update_red_cars
362
+ type: ElasticsearchUpdateByQuery
363
+ properties:
364
+ body:
365
+ query:
366
+ term:
367
+ color:
368
+ value: red
369
+ script:
370
+ source: 'ctx._source.out_of_stock=true'
371
+ ```
@@ -0,0 +1,228 @@
1
+ # Google
2
+
3
+ The Google connection connects to the [Google Gemini API](https://ai.google.dev/docs) and provides the `GeminiAgent` agent type for use with [Lowdefy agents](/agents-introduction).
4
+
5
+ > The Google connection is provided by the `@lowdefy/connection-google` package, which is included by default.
6
+
7
+ ## Connections
8
+
9
+ ### Google
10
+
11
+ #### Properties
12
+ - `apiKey: string`: __Required__ - Google API key. Use [`_secret`](/_secret) to reference this securely.
13
+ - `baseURL: string`: Optional base URL for the Google API.
14
+
15
+ ###### Connection example:
16
+ ```yaml
17
+ connections:
18
+ - id: google
19
+ type: Google
20
+ properties:
21
+ apiKey:
22
+ _secret: GOOGLE_API_KEY
23
+ ```
24
+
25
+ ## Agent Types
26
+
27
+ ### GeminiAgent
28
+
29
+ The `GeminiAgent` supports all [common agent properties](/agents-introduction) plus the following:
30
+
31
+ | Property | Type | Description |
32
+ | --- | --- | --- |
33
+ | `thinkingConfig` | object | Configuration for the model's thinking process. |
34
+ | `thinkingConfig.thinkingBudget` | integer | Maximum thinking tokens (Gemini 2.5 models). Set to `0` to disable. |
35
+ | `thinkingConfig.thinkingLevel` | string | Thinking depth (Gemini 3 models): `'minimal'`, `'low'`, `'medium'`, or `'high'`. |
36
+ | `thinkingConfig.includeThoughts` | boolean | Return thought summaries in the response. |
37
+ | `safetySettings` | object[] | Safety filter settings. |
38
+ | `safetySettings[].category` | string | Safety category (e.g. `'HARM_CATEGORY_DANGEROUS_CONTENT'`). |
39
+ | `safetySettings[].threshold` | string | Block threshold (e.g. `'BLOCK_ONLY_HIGH'`, `'BLOCK_NONE'`). |
40
+
41
+ ###### Agent with thinking enabled:
42
+ ```yaml
43
+ connections:
44
+ - id: google
45
+ type: Google
46
+ properties:
47
+ apiKey:
48
+ _secret: GOOGLE_API_KEY
49
+
50
+ agents:
51
+ - id: research_agent
52
+ type: GeminiAgent
53
+ connectionId: google
54
+ properties:
55
+ model: gemini-2.5-pro
56
+ thinkingConfig:
57
+ thinkingBudget: 8000
58
+ includeThoughts: true
59
+ instructions: |
60
+ You are a research assistant. Search for information
61
+ and provide well-sourced answers. Think through
62
+ complex questions step by step.
63
+ maxSteps: 8
64
+ tools:
65
+ - search-knowledge-base
66
+ - get-document
67
+ ```
68
+
69
+ ###### Agent with safety settings:
70
+ ```yaml
71
+ agents:
72
+ - id: creative_writer
73
+ type: GeminiAgent
74
+ connectionId: google
75
+ properties:
76
+ model: gemini-2.5-pro
77
+ temperature: 0.9
78
+ safetySettings:
79
+ - category: HARM_CATEGORY_DANGEROUS_CONTENT
80
+ threshold: BLOCK_ONLY_HIGH
81
+ instructions: You are a creative writing assistant.
82
+ ```
83
+
84
+ ## Requests
85
+
86
+ Request types:
87
+
88
+ - GenerateText
89
+ - GenerateObject
90
+
91
+ All AI provider connections (`Anthropic`, `OpenAI`, `Google`, `AIGateway`) provide the same `GenerateText` and `GenerateObject` request types — the `connectionId` selects the provider. These make a single, one-shot model call and return the result. They can be used as page requests, or as steps in [API endpoint routines](/api) — useful for classify, extract, summarize, or decide steps where the surrounding logic stays in your routine.
92
+
93
+ For multi-step tool use, see [agents](/agents-introduction) instead.
94
+
95
+ ### GenerateText
96
+
97
+ Generates text from a prompt.
98
+
99
+ #### Properties
100
+
101
+ - `model: string`: **Required** - Model id to generate with.
102
+ - `prompt: string`: Text prompt. Use either `prompt` or `messages`, not both.
103
+ - `messages: object[]`: Model messages (`{ role, content }`). Use either `prompt` or `messages`, not both.
104
+ - `system: string`: System prompt.
105
+ - `maxOutputTokens: number`: Maximum number of tokens to generate.
106
+ - `temperature: number`: Sampling temperature (0 to 2).
107
+ - `topP: number`: Nucleus sampling.
108
+ - `topK: number`: Only sample from the top K options for each subsequent token.
109
+ - `frequencyPenalty: number`: Penalize repeated tokens by frequency.
110
+ - `presencePenalty: number`: Penalize tokens that have already appeared.
111
+ - `seed: number`: Seed for deterministic sampling, if supported by the model.
112
+ - `stopSequences: string[]`: Sequences that stop generation.
113
+ - `maxRetries: number`: Maximum number of retries. Defaults to 2.
114
+ - `providerOptions: object`: Provider-specific options, keyed by provider (e.g. `anthropic`, `openai`, `google`).
115
+
116
+ #### Response
117
+
118
+ ```yaml
119
+ text: string # The generated text.
120
+ reasoningText: string # Reasoning text, when the model produced any.
121
+ finishReason: string # 'stop', 'length', 'content-filter', ...
122
+ usage: object # Token usage ({ inputTokens, outputTokens, totalTokens, ... }).
123
+ providerMetadata: object # Provider-specific metadata, when returned.
124
+ warnings: array # Call warnings from the provider, when returned.
125
+ ```
126
+
127
+ #### Examples
128
+
129
+ ###### Summarize text in an API endpoint routine:
130
+
131
+ ```yaml
132
+ api:
133
+ - id: summarize-text
134
+ type: Api
135
+ routine:
136
+ - id: summarize
137
+ type: GenerateText
138
+ connectionId: claude
139
+ properties:
140
+ model: claude-haiku-4-5
141
+ system: You are a concise summarizer.
142
+ prompt:
143
+ _payload: text
144
+ - ':return':
145
+ summary:
146
+ _step: summarize.text
147
+ ```
148
+
149
+ ###### Text generation as a page request:
150
+
151
+ ```yaml
152
+ requests:
153
+ - id: generate_reply
154
+ type: GenerateText
155
+ connectionId: claude
156
+ payload:
157
+ message:
158
+ _state: customer_message
159
+ properties:
160
+ model: claude-haiku-4-5
161
+ system: Draft a friendly reply to the customer message.
162
+ prompt:
163
+ _payload: message
164
+ ```
165
+
166
+ ### GenerateObject
167
+
168
+ Generates a structured object matching a JSON Schema. Ideal for classification, extraction, and routing decisions — the result lands in `_step` (or `_request`) as plain data your config can act on.
169
+
170
+ #### Properties
171
+
172
+ Takes the same properties as `GenerateText`, except `stopSequences`, plus:
173
+
174
+ - `schema: object`: **Required** - JSON Schema describing the object the model must generate.
175
+ - `schemaName: string`: Optional name for the output schema, passed to the model.
176
+ - `schemaDescription: string`: Optional description of the output schema, passed to the model.
177
+
178
+ #### Response
179
+
180
+ ```yaml
181
+ object: object # The generated object, matching the schema.
182
+ reasoningText: string # Reasoning text, when the model produced any.
183
+ finishReason: string # 'stop', 'length', 'content-filter', ...
184
+ usage: object # Token usage ({ inputTokens, outputTokens, totalTokens, ... }).
185
+ providerMetadata: object # Provider-specific metadata, when returned.
186
+ warnings: array # Call warnings from the provider, when returned.
187
+ ```
188
+
189
+ #### Examples
190
+
191
+ ###### Classify then route in an API endpoint routine:
192
+
193
+ ```yaml
194
+ api:
195
+ - id: triage-ticket
196
+ type: Api
197
+ routine:
198
+ - id: classify
199
+ type: GenerateObject
200
+ connectionId: claude
201
+ properties:
202
+ model: claude-haiku-4-5
203
+ prompt:
204
+ _payload: ticket_text
205
+ schema:
206
+ type: object
207
+ properties:
208
+ category:
209
+ type: string
210
+ enum:
211
+ - billing
212
+ - technical
213
+ - other
214
+ urgent:
215
+ type: boolean
216
+ - ':if':
217
+ _eq:
218
+ - _step: classify.object.urgent
219
+ - true
220
+ ':then':
221
+ - id: escalate
222
+ type: CallApi
223
+ properties:
224
+ endpointId: escalate-ticket
225
+ payload:
226
+ category:
227
+ _step: classify.object.category
228
+ ```