@oomol-lab/open-connector 1.9.0 → 1.9.2

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 (844) hide show
  1. package/assets/open-connector/catalog/apps/agentearth.json +441 -0
  2. package/assets/open-connector/catalog/apps/aisa.json +1946 -56
  3. package/assets/open-connector/catalog/apps/akta.json +1181 -0
  4. package/assets/open-connector/catalog/apps/appgrowing_mcp.json +863 -0
  5. package/assets/open-connector/catalog/apps/arcmira.json +610 -0
  6. package/assets/open-connector/catalog/apps/asana.json +110 -0
  7. package/assets/open-connector/catalog/apps/bainiu.json +654 -0
  8. package/assets/open-connector/catalog/apps/calendly.json +103 -0
  9. package/assets/open-connector/catalog/apps/chaport.json +331 -0
  10. package/assets/open-connector/catalog/apps/clickup.json +104 -0
  11. package/assets/open-connector/catalog/apps/cloro.json +9289 -0
  12. package/assets/open-connector/catalog/apps/cnb.json +1408 -0
  13. package/assets/open-connector/catalog/apps/contextdev.json +20670 -0
  14. package/assets/open-connector/catalog/apps/crtsh.json +123 -0
  15. package/assets/open-connector/catalog/apps/deepseek.json +177 -0
  16. package/assets/open-connector/catalog/apps/defillama.json +23747 -0
  17. package/assets/open-connector/catalog/apps/eastmoney_miaoxiang.json +406 -0
  18. package/assets/open-connector/catalog/apps/fastmoss_mcp.json +876 -876
  19. package/assets/open-connector/catalog/apps/fireflies.json +103 -0
  20. package/assets/open-connector/catalog/apps/ftshare.json +1162 -0
  21. package/assets/open-connector/catalog/apps/fundable.json +7926 -0
  22. package/assets/open-connector/catalog/apps/fusion-api.json +143 -0
  23. package/assets/open-connector/catalog/apps/fxbaogao.json +308 -0
  24. package/assets/open-connector/catalog/apps/github.json +38 -3
  25. package/assets/open-connector/catalog/apps/hrmos_kintai.json +7519 -0
  26. package/assets/open-connector/catalog/apps/humor_api.json +351 -0
  27. package/assets/open-connector/catalog/apps/intercom.json +110 -0
  28. package/assets/open-connector/catalog/apps/jira.json +110 -0
  29. package/assets/open-connector/catalog/apps/kaonavi.json +1723 -0
  30. package/assets/open-connector/catalog/apps/keenable.json +235 -0
  31. package/assets/open-connector/catalog/apps/kolsprite_mcp.json +1227 -0
  32. package/assets/open-connector/catalog/apps/linear_mcp.json +882 -22
  33. package/assets/open-connector/catalog/apps/listinggood.json +362 -0
  34. package/assets/open-connector/catalog/apps/litescrape.json +52514 -0
  35. package/assets/open-connector/catalog/apps/magichour.json +5926 -0
  36. package/assets/open-connector/catalog/apps/minimax.json +24 -14
  37. package/assets/open-connector/catalog/apps/notion.json +731 -76
  38. package/assets/open-connector/catalog/apps/notion_mcp.json +338 -1
  39. package/assets/open-connector/catalog/apps/octen.json +5248 -0
  40. package/assets/open-connector/catalog/apps/openrouter.json +10 -0
  41. package/assets/open-connector/catalog/apps/orbit.json +3574 -0
  42. package/assets/open-connector/catalog/apps/outlook.json +414 -0
  43. package/assets/open-connector/catalog/apps/pandadoc.json +68 -0
  44. package/assets/open-connector/catalog/apps/pipedrive.json +86 -0
  45. package/assets/open-connector/catalog/apps/ploid.json +9802 -0
  46. package/assets/open-connector/catalog/apps/porteden.json +1258 -0
  47. package/assets/open-connector/catalog/apps/qiuxiaoce.json +915 -0
  48. package/assets/open-connector/catalog/apps/qqmusic.json +1834 -0
  49. package/assets/open-connector/catalog/apps/rakuraku_seisan.json +217 -0
  50. package/assets/open-connector/catalog/apps/redfox.json +9661 -897
  51. package/assets/open-connector/catalog/apps/resend.json +100 -0
  52. package/assets/open-connector/catalog/apps/salesforce.json +7275 -0
  53. package/assets/open-connector/catalog/apps/sansan.json +4594 -0
  54. package/assets/open-connector/catalog/apps/saperly.json +7056 -0
  55. package/assets/open-connector/catalog/apps/search1api.json +2382 -0
  56. package/assets/open-connector/catalog/apps/sentry.json +129 -0
  57. package/assets/open-connector/catalog/apps/slackbot.json +230 -1
  58. package/assets/open-connector/catalog/apps/smarthr.json +8071 -0
  59. package/assets/open-connector/catalog/apps/smooth.json +914 -0
  60. package/assets/open-connector/catalog/apps/surf.json +11378 -0
  61. package/assets/open-connector/catalog/apps/tally.json +113 -0
  62. package/assets/open-connector/catalog/apps/tapd.json +727 -0
  63. package/assets/open-connector/catalog/apps/tencent_meeting_mcp.json +1301 -0
  64. package/assets/open-connector/catalog/apps/threatfox.json +203 -0
  65. package/assets/open-connector/catalog/apps/tinyfish.json +6154 -0
  66. package/assets/open-connector/catalog/apps/tradebee.json +915 -0
  67. package/assets/open-connector/catalog/apps/twittrapi.json +4914 -0
  68. package/assets/open-connector/catalog/apps/typeform.json +90 -1
  69. package/assets/open-connector/catalog/apps/urlhaus.json +246 -0
  70. package/assets/open-connector/catalog/apps/vaquill.json +5944 -0
  71. package/assets/open-connector/catalog/apps/vercel.json +110 -0
  72. package/assets/open-connector/catalog/apps/weixin_store.json +1256 -7
  73. package/assets/open-connector/catalog/apps/weread.json +1514 -0
  74. package/assets/open-connector/catalog/apps/whatsapp.json +12 -0
  75. package/assets/open-connector/catalog/apps/zhiliaobiaoxun.json +812 -0
  76. package/assets/open-connector/catalog/apps/zoom.json +112 -0
  77. package/assets/open-connector/catalog/apps-index.json +1 -1
  78. package/package.json +2 -1
  79. package/src/connection-service.js +55 -11
  80. package/src/core/json-schema.d.ts +11 -3
  81. package/src/core/json-schema.js +13 -3
  82. package/src/core/provider-error-codes.d.ts +9 -0
  83. package/src/core/provider-error-codes.js +13 -0
  84. package/src/core/request.d.ts +2 -0
  85. package/src/core/request.js +11 -2
  86. package/src/mail/imap-smtp/protocol.js +4 -3
  87. package/src/oauth/oauth-flow-service.js +1 -0
  88. package/src/oauth/oauth-token.d.ts +2 -0
  89. package/src/providers/17track/runtime.js +17 -20
  90. package/src/providers/action-contracts.generated.d.ts +58 -11
  91. package/src/providers/agentearth/actions.d.ts +2 -0
  92. package/src/providers/agentearth/actions.js +100 -0
  93. package/src/providers/agentearth/executors.d.ts +4 -0
  94. package/src/providers/agentearth/executors.js +109 -0
  95. package/src/providers/aisa/executors.js +238 -6
  96. package/src/providers/aisa/firecrawl-actions.d.ts +9 -0
  97. package/src/providers/aisa/firecrawl-actions.js +115 -0
  98. package/src/providers/akta/actions.d.ts +9 -0
  99. package/src/providers/akta/actions.js +420 -0
  100. package/src/providers/akta/executors.d.ts +4 -0
  101. package/src/providers/akta/executors.js +103 -0
  102. package/src/providers/appgrowing_mcp/actions.d.ts +2 -0
  103. package/src/providers/appgrowing_mcp/actions.js +175 -0
  104. package/src/providers/appgrowing_mcp/executors.d.ts +4 -0
  105. package/src/providers/appgrowing_mcp/executors.js +66 -0
  106. package/src/providers/arcmira/executors.d.ts +3 -0
  107. package/src/providers/arcmira/executors.js +8 -0
  108. package/src/providers/arcmira/runtime.d.ts +6 -0
  109. package/src/providers/arcmira/runtime.js +41 -0
  110. package/src/providers/asana/executors.d.ts +2 -0
  111. package/src/providers/asana/executors.js +2 -0
  112. package/src/providers/asana/trigger-on-task-event.d.ts +2 -0
  113. package/src/providers/asana/trigger-on-task-event.definition.d.ts +4 -0
  114. package/src/providers/asana/trigger-on-task-event.definition.js +42 -0
  115. package/src/providers/asana/trigger-on-task-event.js +160 -0
  116. package/src/providers/bainiu/actions.d.ts +2 -0
  117. package/src/providers/bainiu/actions.js +108 -0
  118. package/src/providers/bainiu/executors.d.ts +4 -0
  119. package/src/providers/bainiu/executors.js +113 -0
  120. package/src/providers/baixiao/executors.js +1 -1
  121. package/src/providers/bing_webmaster/executors.js +1 -1
  122. package/src/providers/calendly/executors.d.ts +2 -0
  123. package/src/providers/calendly/executors.js +2 -0
  124. package/src/providers/calendly/trigger-on-booking-event.d.ts +2 -0
  125. package/src/providers/calendly/trigger-on-booking-event.definition.d.ts +5 -0
  126. package/src/providers/calendly/trigger-on-booking-event.definition.js +42 -0
  127. package/src/providers/calendly/trigger-on-booking-event.js +144 -0
  128. package/src/providers/chaport/actions.d.ts +2 -0
  129. package/src/providers/chaport/actions.js +70 -0
  130. package/src/providers/chaport/executors.d.ts +4 -0
  131. package/src/providers/chaport/executors.js +128 -0
  132. package/src/providers/clickup/executors.d.ts +2 -0
  133. package/src/providers/clickup/executors.js +2 -0
  134. package/src/providers/clickup/runtime.js +49 -52
  135. package/src/providers/clickup/trigger-on-task-event.d.ts +2 -0
  136. package/src/providers/clickup/trigger-on-task-event.definition.d.ts +4 -0
  137. package/src/providers/clickup/trigger-on-task-event.definition.js +41 -0
  138. package/src/providers/clickup/trigger-on-task-event.js +94 -0
  139. package/src/providers/cloro/actions.d.ts +12 -0
  140. package/src/providers/cloro/actions.js +155 -0
  141. package/src/providers/cloro/executors.d.ts +4 -0
  142. package/src/providers/cloro/executors.js +67 -0
  143. package/src/providers/cloro/inputs.d.ts +10 -0
  144. package/src/providers/cloro/inputs.js +680 -0
  145. package/src/providers/cnb/actions.d.ts +2 -0
  146. package/src/providers/cnb/actions.js +341 -0
  147. package/src/providers/cnb/executors.d.ts +4 -0
  148. package/src/providers/cnb/executors.js +135 -0
  149. package/src/providers/contextdev/actions.d.ts +14 -0
  150. package/src/providers/contextdev/actions.js +647 -0
  151. package/src/providers/contextdev/executors.d.ts +4 -0
  152. package/src/providers/contextdev/executors.js +109 -0
  153. package/src/providers/contextdev/files.d.ts +3 -0
  154. package/src/providers/contextdev/files.js +49 -0
  155. package/src/providers/contextdev/input-schemas.d.ts +49 -0
  156. package/src/providers/contextdev/input-schemas.js +3082 -0
  157. package/src/providers/contextdev/output-schemas.d.ts +49 -0
  158. package/src/providers/contextdev/output-schemas.js +1599 -0
  159. package/src/providers/coupontools/runtime.js +11 -14
  160. package/src/providers/crtsh/executors.d.ts +3 -0
  161. package/src/providers/crtsh/executors.js +19 -0
  162. package/src/providers/crtsh/runtime.d.ts +17 -0
  163. package/src/providers/crtsh/runtime.js +84 -0
  164. package/src/providers/deepseek/executors.d.ts +0 -5
  165. package/src/providers/deepseek/executors.js +38 -25
  166. package/src/providers/defillama/actions.d.ts +24 -0
  167. package/src/providers/defillama/actions.js +24 -0
  168. package/src/providers/defillama/dimensions-definitions.d.ts +2 -0
  169. package/src/providers/defillama/dimensions-definitions.js +1387 -0
  170. package/src/providers/defillama/ecosystem-definitions.d.ts +2 -0
  171. package/src/providers/defillama/ecosystem-definitions.js +758 -0
  172. package/src/providers/defillama/equities-definitions.d.ts +2 -0
  173. package/src/providers/defillama/equities-definitions.js +733 -0
  174. package/src/providers/defillama/executors.d.ts +4 -0
  175. package/src/providers/defillama/executors.js +196 -0
  176. package/src/providers/defillama/markets-definitions.d.ts +2 -0
  177. package/src/providers/defillama/markets-definitions.js +624 -0
  178. package/src/providers/defillama/shared-schemas.d.ts +71 -0
  179. package/src/providers/defillama/shared-schemas.js +157 -0
  180. package/src/providers/defillama/tvl-definitions.d.ts +2 -0
  181. package/src/providers/defillama/tvl-definitions.js +546 -0
  182. package/src/providers/defillama/yields-definitions.d.ts +2 -0
  183. package/src/providers/defillama/yields-definitions.js +766 -0
  184. package/src/providers/eastmoney_miaoxiang/actions.d.ts +2 -0
  185. package/src/providers/eastmoney_miaoxiang/actions.js +95 -0
  186. package/src/providers/eastmoney_miaoxiang/executors.d.ts +4 -0
  187. package/src/providers/eastmoney_miaoxiang/executors.js +81 -0
  188. package/src/providers/fastmoss_mcp/actions-content.d.ts +2 -0
  189. package/src/providers/fastmoss_mcp/actions-content.js +140 -0
  190. package/src/providers/fastmoss_mcp/actions-creator.d.ts +2 -0
  191. package/src/providers/fastmoss_mcp/actions-creator.js +154 -0
  192. package/src/providers/fastmoss_mcp/actions-product.d.ts +2 -0
  193. package/src/providers/fastmoss_mcp/actions-product.js +167 -0
  194. package/src/providers/fastmoss_mcp/actions-research.d.ts +2 -0
  195. package/src/providers/fastmoss_mcp/actions-research.js +174 -0
  196. package/src/providers/fastmoss_mcp/actions-shop.d.ts +2 -0
  197. package/src/providers/fastmoss_mcp/actions-shop.js +142 -0
  198. package/src/providers/fastmoss_mcp/actions.js +11 -12
  199. package/src/providers/fastmoss_mcp/schemas.d.ts +51 -0
  200. package/src/providers/fastmoss_mcp/schemas.js +52 -0
  201. package/src/providers/feishu_app_bot/trigger-on-event.js +2 -0
  202. package/src/providers/fireflies/executors.d.ts +2 -0
  203. package/src/providers/fireflies/executors.js +2 -0
  204. package/src/providers/fireflies/trigger-on-meeting-ready.d.ts +2 -0
  205. package/src/providers/fireflies/trigger-on-meeting-ready.definition.d.ts +4 -0
  206. package/src/providers/fireflies/trigger-on-meeting-ready.definition.js +44 -0
  207. package/src/providers/fireflies/trigger-on-meeting-ready.js +60 -0
  208. package/src/providers/ftshare/actions.d.ts +2 -0
  209. package/src/providers/ftshare/actions.js +124 -0
  210. package/src/providers/ftshare/executors.d.ts +4 -0
  211. package/src/providers/ftshare/executors.js +102 -0
  212. package/src/providers/fundable/actions.d.ts +8 -0
  213. package/src/providers/fundable/actions.js +1515 -0
  214. package/src/providers/fundable/executors.d.ts +4 -0
  215. package/src/providers/fundable/executors.js +74 -0
  216. package/src/providers/fusion-api/operations.js +37 -0
  217. package/src/providers/fxbaogao/actions.d.ts +2 -0
  218. package/src/providers/fxbaogao/actions.js +74 -0
  219. package/src/providers/fxbaogao/executors.d.ts +4 -0
  220. package/src/providers/fxbaogao/executors.js +155 -0
  221. package/src/providers/github/app-installation.d.ts +37 -0
  222. package/src/providers/github/app-installation.js +233 -0
  223. package/src/providers/github/executors.js +93 -15
  224. package/src/providers/github/runtime-repository.js +21 -1
  225. package/src/providers/github/runtime-shared.d.ts +2 -0
  226. package/src/providers/github/runtime-shared.js +1 -0
  227. package/src/providers/gmail/message.d.ts +1 -6
  228. package/src/providers/gmail/message.js +1 -1
  229. package/src/providers/googledrive/runtime-request.js +3 -3
  230. package/src/providers/hrmos_kintai/actions.d.ts +2 -0
  231. package/src/providers/hrmos_kintai/actions.js +139 -0
  232. package/src/providers/hrmos_kintai/attendance-actions.d.ts +2 -0
  233. package/src/providers/hrmos_kintai/attendance-actions.js +276 -0
  234. package/src/providers/hrmos_kintai/business-actions.d.ts +2 -0
  235. package/src/providers/hrmos_kintai/business-actions.js +143 -0
  236. package/src/providers/hrmos_kintai/business-schemas.d.ts +4 -0
  237. package/src/providers/hrmos_kintai/business-schemas.js +320 -0
  238. package/src/providers/hrmos_kintai/executors.d.ts +4 -0
  239. package/src/providers/hrmos_kintai/executors.js +61 -0
  240. package/src/providers/hrmos_kintai/export-actions.d.ts +2 -0
  241. package/src/providers/hrmos_kintai/export-actions.js +58 -0
  242. package/src/providers/hrmos_kintai/operations.d.ts +9 -0
  243. package/src/providers/hrmos_kintai/operations.js +278 -0
  244. package/src/providers/hrmos_kintai/runtime.d.ts +10 -0
  245. package/src/providers/hrmos_kintai/runtime.js +217 -0
  246. package/src/providers/hrmos_kintai/schemas.d.ts +10 -0
  247. package/src/providers/hrmos_kintai/schemas.js +70 -0
  248. package/src/providers/humor_api/actions.d.ts +2 -0
  249. package/src/providers/humor_api/actions.js +96 -0
  250. package/src/providers/humor_api/executors.d.ts +4 -0
  251. package/src/providers/humor_api/executors.js +76 -0
  252. package/src/providers/intercom/executors.d.ts +2 -0
  253. package/src/providers/intercom/executors.js +2 -0
  254. package/src/providers/intercom/trigger-on-conversation-event.d.ts +2 -0
  255. package/src/providers/intercom/trigger-on-conversation-event.definition.d.ts +4 -0
  256. package/src/providers/intercom/trigger-on-conversation-event.definition.js +42 -0
  257. package/src/providers/intercom/trigger-on-conversation-event.js +23 -0
  258. package/src/providers/jira/executors.d.ts +2 -0
  259. package/src/providers/jira/executors.js +2 -0
  260. package/src/providers/jira/trigger-on-issue-event.d.ts +2 -0
  261. package/src/providers/jira/trigger-on-issue-event.definition.d.ts +4 -0
  262. package/src/providers/jira/trigger-on-issue-event.definition.js +44 -0
  263. package/src/providers/jira/trigger-on-issue-event.js +116 -0
  264. package/src/providers/jira/trigger-resource.d.ts +4 -0
  265. package/src/providers/jira/trigger-resource.js +141 -0
  266. package/src/providers/kaonavi/actions.d.ts +4 -0
  267. package/src/providers/kaonavi/actions.js +144 -0
  268. package/src/providers/kaonavi/additional-actions.d.ts +10 -0
  269. package/src/providers/kaonavi/additional-actions.js +203 -0
  270. package/src/providers/kaonavi/executors.d.ts +4 -0
  271. package/src/providers/kaonavi/executors.js +69 -0
  272. package/src/providers/kaonavi/runtime.d.ts +4 -0
  273. package/src/providers/kaonavi/runtime.js +69 -0
  274. package/src/providers/keenable/executors.d.ts +4 -0
  275. package/src/providers/keenable/executors.js +20 -0
  276. package/src/providers/keenable/runtime.d.ts +26 -0
  277. package/src/providers/keenable/runtime.js +89 -0
  278. package/src/providers/kolsprite_mcp/actions.d.ts +2 -0
  279. package/src/providers/kolsprite_mcp/actions.js +519 -0
  280. package/src/providers/kolsprite_mcp/executors.d.ts +4 -0
  281. package/src/providers/kolsprite_mcp/executors.js +89 -0
  282. package/src/providers/linear_mcp/actions.d.ts +14 -0
  283. package/src/providers/linear_mcp/actions.js +134 -0
  284. package/src/providers/linear_mcp/runtime-mcp.d.ts +7 -1
  285. package/src/providers/linear_mcp/runtime-mcp.js +140 -28
  286. package/src/providers/linkfox/runtime.js +48 -51
  287. package/src/providers/listinggood/actions.d.ts +2 -0
  288. package/src/providers/listinggood/actions.js +95 -0
  289. package/src/providers/listinggood/executors.d.ts +4 -0
  290. package/src/providers/listinggood/executors.js +99 -0
  291. package/src/providers/litescrape/actions.d.ts +12 -0
  292. package/src/providers/litescrape/actions.js +124 -0
  293. package/src/providers/litescrape/airbnb-schemas.d.ts +2 -0
  294. package/src/providers/litescrape/airbnb-schemas.js +72 -0
  295. package/src/providers/litescrape/aliexpress-schemas.d.ts +2 -0
  296. package/src/providers/litescrape/aliexpress-schemas.js +52 -0
  297. package/src/providers/litescrape/amazon-schemas.d.ts +2 -0
  298. package/src/providers/litescrape/amazon-schemas.js +358 -0
  299. package/src/providers/litescrape/apartments-schemas.d.ts +2 -0
  300. package/src/providers/litescrape/apartments-schemas.js +45 -0
  301. package/src/providers/litescrape/apple-schemas.d.ts +2 -0
  302. package/src/providers/litescrape/apple-schemas.js +215 -0
  303. package/src/providers/litescrape/ashby-schemas.d.ts +2 -0
  304. package/src/providers/litescrape/ashby-schemas.js +82 -0
  305. package/src/providers/litescrape/baidu-schemas.d.ts +2 -0
  306. package/src/providers/litescrape/baidu-schemas.js +31 -0
  307. package/src/providers/litescrape/bestbuy-schemas.d.ts +2 -0
  308. package/src/providers/litescrape/bestbuy-schemas.js +56 -0
  309. package/src/providers/litescrape/bing-schemas.d.ts +2 -0
  310. package/src/providers/litescrape/bing-schemas.js +315 -0
  311. package/src/providers/litescrape/brave-schemas.d.ts +2 -0
  312. package/src/providers/litescrape/brave-schemas.js +101 -0
  313. package/src/providers/litescrape/copilot-schemas.d.ts +2 -0
  314. package/src/providers/litescrape/copilot-schemas.js +590 -0
  315. package/src/providers/litescrape/duckduckgo-schemas.d.ts +2 -0
  316. package/src/providers/litescrape/duckduckgo-schemas.js +64 -0
  317. package/src/providers/litescrape/ebay-schemas.d.ts +2 -0
  318. package/src/providers/litescrape/ebay-schemas.js +300 -0
  319. package/src/providers/litescrape/etsy-schemas.d.ts +2 -0
  320. package/src/providers/litescrape/etsy-schemas.js +52 -0
  321. package/src/providers/litescrape/eventbrite-schemas.d.ts +2 -0
  322. package/src/providers/litescrape/eventbrite-schemas.js +43 -0
  323. package/src/providers/litescrape/executors.d.ts +4 -0
  324. package/src/providers/litescrape/executors.js +138 -0
  325. package/src/providers/litescrape/facebook-schemas.d.ts +2 -0
  326. package/src/providers/litescrape/facebook-schemas.js +283 -0
  327. package/src/providers/litescrape/glassdoor-schemas.d.ts +2 -0
  328. package/src/providers/litescrape/glassdoor-schemas.js +147 -0
  329. package/src/providers/litescrape/google-schemas.d.ts +2 -0
  330. package/src/providers/litescrape/google-schemas.js +1686 -0
  331. package/src/providers/litescrape/homedepot-schemas.d.ts +2 -0
  332. package/src/providers/litescrape/homedepot-schemas.js +58 -0
  333. package/src/providers/litescrape/homes-schemas.d.ts +2 -0
  334. package/src/providers/litescrape/homes-schemas.js +45 -0
  335. package/src/providers/litescrape/ikea-schemas.d.ts +2 -0
  336. package/src/providers/litescrape/ikea-schemas.js +56 -0
  337. package/src/providers/litescrape/indeed-schemas.d.ts +2 -0
  338. package/src/providers/litescrape/indeed-schemas.js +141 -0
  339. package/src/providers/litescrape/instagram-schemas.d.ts +2 -0
  340. package/src/providers/litescrape/instagram-schemas.js +234 -0
  341. package/src/providers/litescrape/kroger-schemas.d.ts +2 -0
  342. package/src/providers/litescrape/kroger-schemas.js +62 -0
  343. package/src/providers/litescrape/levels-schemas.d.ts +2 -0
  344. package/src/providers/litescrape/levels-schemas.js +153 -0
  345. package/src/providers/litescrape/naver-schemas.d.ts +2 -0
  346. package/src/providers/litescrape/naver-schemas.js +107 -0
  347. package/src/providers/litescrape/realtor-schemas.d.ts +2 -0
  348. package/src/providers/litescrape/realtor-schemas.js +47 -0
  349. package/src/providers/litescrape/redfin-schemas.d.ts +2 -0
  350. package/src/providers/litescrape/redfin-schemas.js +112 -0
  351. package/src/providers/litescrape/shared.d.ts +9 -0
  352. package/src/providers/litescrape/shared.js +1 -0
  353. package/src/providers/litescrape/sprouts-schemas.d.ts +2 -0
  354. package/src/providers/litescrape/sprouts-schemas.js +72 -0
  355. package/src/providers/litescrape/target-schemas.d.ts +2 -0
  356. package/src/providers/litescrape/target-schemas.js +56 -0
  357. package/src/providers/litescrape/tiktok-schemas.d.ts +2 -0
  358. package/src/providers/litescrape/tiktok-schemas.js +625 -0
  359. package/src/providers/litescrape/tools.d.ts +2 -0
  360. package/src/providers/litescrape/tools.js +88 -0
  361. package/src/providers/litescrape/tripadvisor-schemas.d.ts +2 -0
  362. package/src/providers/litescrape/tripadvisor-schemas.js +119 -0
  363. package/src/providers/litescrape/walmart-schemas.d.ts +2 -0
  364. package/src/providers/litescrape/walmart-schemas.js +52 -0
  365. package/src/providers/litescrape/wayfair-schemas.d.ts +2 -0
  366. package/src/providers/litescrape/wayfair-schemas.js +52 -0
  367. package/src/providers/litescrape/web-schemas.d.ts +2 -0
  368. package/src/providers/litescrape/web-schemas.js +463 -0
  369. package/src/providers/litescrape/wholefoods-schemas.d.ts +2 -0
  370. package/src/providers/litescrape/wholefoods-schemas.js +56 -0
  371. package/src/providers/litescrape/x-schemas.d.ts +2 -0
  372. package/src/providers/litescrape/x-schemas.js +128 -0
  373. package/src/providers/litescrape/yahoo-schemas.d.ts +2 -0
  374. package/src/providers/litescrape/yahoo-schemas.js +234 -0
  375. package/src/providers/litescrape/yandex-schemas.d.ts +2 -0
  376. package/src/providers/litescrape/yandex-schemas.js +179 -0
  377. package/src/providers/litescrape/yelp-schemas.d.ts +2 -0
  378. package/src/providers/litescrape/yelp-schemas.js +130 -0
  379. package/src/providers/litescrape/youtube-schemas.d.ts +2 -0
  380. package/src/providers/litescrape/youtube-schemas.js +128 -0
  381. package/src/providers/litescrape/zillow-schemas.d.ts +2 -0
  382. package/src/providers/litescrape/zillow-schemas.js +128 -0
  383. package/src/providers/litescrape/ziprecruiter-schemas.d.ts +2 -0
  384. package/src/providers/litescrape/ziprecruiter-schemas.js +96 -0
  385. package/src/providers/magichour/actions.d.ts +22 -0
  386. package/src/providers/magichour/actions.js +308 -0
  387. package/src/providers/magichour/audio-schemas.d.ts +2 -0
  388. package/src/providers/magichour/audio-schemas.js +54 -0
  389. package/src/providers/magichour/executors.d.ts +4 -0
  390. package/src/providers/magichour/executors.js +115 -0
  391. package/src/providers/magichour/image-schemas.d.ts +2 -0
  392. package/src/providers/magichour/image-schemas.js +443 -0
  393. package/src/providers/magichour/project-schemas.d.ts +8 -0
  394. package/src/providers/magichour/project-schemas.js +65 -0
  395. package/src/providers/magichour/shared-schemas.d.ts +8 -0
  396. package/src/providers/magichour/shared-schemas.js +18 -0
  397. package/src/providers/magichour/utility-schemas.d.ts +11 -0
  398. package/src/providers/magichour/utility-schemas.js +150 -0
  399. package/src/providers/magichour/video-schemas.d.ts +2 -0
  400. package/src/providers/magichour/video-schemas.js +629 -0
  401. package/src/providers/magichour/voices.d.ts +1 -0
  402. package/src/providers/magichour/voices.js +1268 -0
  403. package/src/providers/mcp-tools.d.ts +3 -0
  404. package/src/providers/mcp-tools.js +5 -4
  405. package/src/providers/minimax/executors.js +19 -4
  406. package/src/providers/minimax/text-models.d.ts +2 -0
  407. package/src/providers/minimax/text-models.js +34 -0
  408. package/src/providers/moneyforward_mcp/manifest.d.ts +0 -2
  409. package/src/providers/moneyforward_mcp/manifest.js +1 -1
  410. package/src/providers/notion/executors.js +36 -3
  411. package/src/providers/notion_mcp/executors.js +53 -24
  412. package/src/providers/notion_mcp/mcp-response.d.ts +26 -0
  413. package/src/providers/notion_mcp/mcp-response.js +95 -0
  414. package/src/providers/octen/actions.d.ts +6 -0
  415. package/src/providers/octen/actions.js +919 -0
  416. package/src/providers/octen/executors.d.ts +4 -0
  417. package/src/providers/octen/executors.js +125 -0
  418. package/src/providers/octen/inputs.d.ts +2 -0
  419. package/src/providers/octen/inputs.js +2434 -0
  420. package/src/providers/octen/research.d.ts +1 -0
  421. package/src/providers/octen/research.js +86 -0
  422. package/src/providers/omise/executors.js +1 -1
  423. package/src/providers/openrouter/executors.js +7 -4
  424. package/src/providers/orbit/actions.d.ts +2 -0
  425. package/src/providers/orbit/actions.js +3030 -0
  426. package/src/providers/orbit/executors.d.ts +4 -0
  427. package/src/providers/orbit/executors.js +106 -0
  428. package/src/providers/orbit/routes.d.ts +9 -0
  429. package/src/providers/orbit/routes.js +170 -0
  430. package/src/providers/outlook/executors.js +35 -2
  431. package/src/providers/pandadoc/executors.d.ts +2 -0
  432. package/src/providers/pandadoc/executors.js +2 -0
  433. package/src/providers/pandadoc/trigger-on-document-event.d.ts +2 -0
  434. package/src/providers/pandadoc/trigger-on-document-event.definition.d.ts +4 -0
  435. package/src/providers/pandadoc/trigger-on-document-event.definition.js +33 -0
  436. package/src/providers/pandadoc/trigger-on-document-event.js +96 -0
  437. package/src/providers/pipedrive/executors.d.ts +2 -0
  438. package/src/providers/pipedrive/executors.js +2 -0
  439. package/src/providers/pipedrive/trigger-on-crm-event.d.ts +2 -0
  440. package/src/providers/pipedrive/trigger-on-crm-event.definition.d.ts +4 -0
  441. package/src/providers/pipedrive/trigger-on-crm-event.definition.js +30 -0
  442. package/src/providers/pipedrive/trigger-on-crm-event.js +101 -0
  443. package/src/providers/ploid/actions.d.ts +16 -0
  444. package/src/providers/ploid/actions.js +23 -0
  445. package/src/providers/ploid/endpoints.json +8440 -0
  446. package/src/providers/ploid/executors.d.ts +4 -0
  447. package/src/providers/ploid/executors.js +119 -0
  448. package/src/providers/porteden/actions.d.ts +2 -0
  449. package/src/providers/porteden/actions.js +162 -0
  450. package/src/providers/porteden/executors.d.ts +4 -0
  451. package/src/providers/porteden/executors.js +140 -0
  452. package/src/providers/provider-runtime.d.ts +16 -2
  453. package/src/providers/provider-runtime.js +37 -4
  454. package/src/providers/pushover/runtime.js +28 -31
  455. package/src/providers/qianfan/runtime.js +16 -19
  456. package/src/providers/qiuxiaoce/actions.d.ts +2 -0
  457. package/src/providers/qiuxiaoce/actions.js +248 -0
  458. package/src/providers/qiuxiaoce/executors.d.ts +4 -0
  459. package/src/providers/qiuxiaoce/executors.js +76 -0
  460. package/src/providers/qiuxiaoce/routes.d.ts +1 -0
  461. package/src/providers/qiuxiaoce/routes.js +20 -0
  462. package/src/providers/qqmusic/actions.d.ts +2 -0
  463. package/src/providers/qqmusic/actions.js +229 -0
  464. package/src/providers/qqmusic/executors.d.ts +4 -0
  465. package/src/providers/qqmusic/executors.js +92 -0
  466. package/src/providers/qqmusic/report-schema.d.ts +4 -0
  467. package/src/providers/qqmusic/report-schema.js +119 -0
  468. package/src/providers/rakuraku_seisan/actions.d.ts +2 -0
  469. package/src/providers/rakuraku_seisan/actions.js +50 -0
  470. package/src/providers/rakuraku_seisan/executors.d.ts +4 -0
  471. package/src/providers/rakuraku_seisan/executors.js +40 -0
  472. package/src/providers/rakuraku_seisan/runtime.d.ts +8 -0
  473. package/src/providers/rakuraku_seisan/runtime.js +251 -0
  474. package/src/providers/redfox/actions-account.d.ts +2 -0
  475. package/src/providers/redfox/actions-account.js +24 -0
  476. package/src/providers/redfox/actions-autohome.d.ts +2 -0
  477. package/src/providers/redfox/actions-autohome.js +51 -0
  478. package/src/providers/redfox/actions-baijiahao.d.ts +2 -0
  479. package/src/providers/redfox/actions-baijiahao.js +58 -0
  480. package/src/providers/redfox/actions-bilibili.d.ts +2 -0
  481. package/src/providers/redfox/actions-bilibili.js +67 -0
  482. package/src/providers/redfox/actions-dongchedi.d.ts +2 -0
  483. package/src/providers/redfox/actions-dongchedi.js +49 -0
  484. package/src/providers/redfox/actions-douyin.d.ts +2 -0
  485. package/src/providers/redfox/actions-douyin.js +297 -0
  486. package/src/providers/redfox/actions-generation.d.ts +2 -0
  487. package/src/providers/redfox/actions-generation.js +293 -0
  488. package/src/providers/redfox/actions-instagram.d.ts +2 -0
  489. package/src/providers/redfox/actions-instagram.js +49 -0
  490. package/src/providers/redfox/actions-kuaishou.d.ts +2 -0
  491. package/src/providers/redfox/actions-kuaishou.js +53 -0
  492. package/src/providers/redfox/actions-search.d.ts +2 -0
  493. package/src/providers/redfox/actions-search.js +125 -0
  494. package/src/providers/redfox/actions-tiktok.d.ts +2 -0
  495. package/src/providers/redfox/actions-tiktok.js +136 -0
  496. package/src/providers/redfox/actions-tools.d.ts +2 -0
  497. package/src/providers/redfox/actions-tools.js +151 -0
  498. package/src/providers/redfox/actions-toutiao.d.ts +2 -0
  499. package/src/providers/redfox/actions-toutiao.js +68 -0
  500. package/src/providers/redfox/actions-transcription.d.ts +2 -0
  501. package/src/providers/redfox/actions-transcription.js +165 -0
  502. package/src/providers/redfox/actions-wechat-channel.d.ts +2 -0
  503. package/src/providers/redfox/actions-wechat-channel.js +63 -0
  504. package/src/providers/redfox/actions-wechat.d.ts +2 -0
  505. package/src/providers/redfox/actions-wechat.js +302 -0
  506. package/src/providers/redfox/actions-weibo.d.ts +2 -0
  507. package/src/providers/redfox/actions-weibo.js +61 -0
  508. package/src/providers/redfox/actions-x.d.ts +2 -0
  509. package/src/providers/redfox/actions-x.js +126 -0
  510. package/src/providers/redfox/actions-xiaohongshu.d.ts +2 -0
  511. package/src/providers/redfox/actions-xiaohongshu.js +244 -0
  512. package/src/providers/redfox/actions-yiche.d.ts +2 -0
  513. package/src/providers/redfox/actions-yiche.js +59 -0
  514. package/src/providers/redfox/actions-youtube.d.ts +2 -0
  515. package/src/providers/redfox/actions-youtube.js +64 -0
  516. package/src/providers/redfox/actions-zhihu.d.ts +2 -0
  517. package/src/providers/redfox/actions-zhihu.js +26 -0
  518. package/src/providers/redfox/actions.d.ts +2 -0
  519. package/src/providers/redfox/actions.js +49 -0
  520. package/src/providers/redfox/executors.d.ts +2 -14
  521. package/src/providers/redfox/executors.js +28 -551
  522. package/src/providers/redfox/routes.d.ts +11 -0
  523. package/src/providers/redfox/routes.js +329 -0
  524. package/src/providers/redfox/runtime.d.ts +6 -0
  525. package/src/providers/redfox/runtime.js +151 -0
  526. package/src/providers/redfox/schemas.d.ts +9 -0
  527. package/src/providers/redfox/schemas.js +40 -0
  528. package/src/providers/registry.generated.js +47 -0
  529. package/src/providers/resend/executors.d.ts +2 -0
  530. package/src/providers/resend/executors.js +2 -0
  531. package/src/providers/resend/trigger-on-email-event.d.ts +2 -0
  532. package/src/providers/resend/trigger-on-email-event.definition.d.ts +4 -0
  533. package/src/providers/resend/trigger-on-email-event.definition.js +37 -0
  534. package/src/providers/resend/trigger-on-email-event.js +125 -0
  535. package/src/providers/salesforce/chatter-routes.d.ts +107 -0
  536. package/src/providers/salesforce/chatter-routes.js +140 -0
  537. package/src/providers/salesforce/context.d.ts +16 -0
  538. package/src/providers/salesforce/context.js +61 -0
  539. package/src/providers/salesforce/executors.d.ts +5 -0
  540. package/src/providers/salesforce/executors.js +64 -0
  541. package/src/providers/salesforce/media.d.ts +9 -0
  542. package/src/providers/salesforce/media.js +66 -0
  543. package/src/providers/salesforce/oauth.d.ts +2 -0
  544. package/src/providers/salesforce/oauth.js +89 -0
  545. package/src/providers/salesforce/runtime-analytics.d.ts +2 -0
  546. package/src/providers/salesforce/runtime-analytics.js +60 -0
  547. package/src/providers/salesforce/runtime-approvals.d.ts +2 -0
  548. package/src/providers/salesforce/runtime-approvals.js +52 -0
  549. package/src/providers/salesforce/runtime-automation.d.ts +2 -0
  550. package/src/providers/salesforce/runtime-automation.js +64 -0
  551. package/src/providers/salesforce/runtime-base.d.ts +2 -0
  552. package/src/providers/salesforce/runtime-base.js +62 -0
  553. package/src/providers/salesforce/runtime-bulk.d.ts +2 -0
  554. package/src/providers/salesforce/runtime-bulk.js +98 -0
  555. package/src/providers/salesforce/runtime-chatter.d.ts +2 -0
  556. package/src/providers/salesforce/runtime-chatter.js +78 -0
  557. package/src/providers/salesforce/runtime-data.d.ts +2 -0
  558. package/src/providers/salesforce/runtime-data.js +207 -0
  559. package/src/providers/salesforce/runtime-files.d.ts +2 -0
  560. package/src/providers/salesforce/runtime-files.js +108 -0
  561. package/src/providers/salesforce/runtime-knowledge.d.ts +2 -0
  562. package/src/providers/salesforce/runtime-knowledge.js +34 -0
  563. package/src/providers/salesforce/runtime-leads.d.ts +2 -0
  564. package/src/providers/salesforce/runtime-leads.js +117 -0
  565. package/src/providers/salesforce/runtime-platform.d.ts +2 -0
  566. package/src/providers/salesforce/runtime-platform.js +67 -0
  567. package/src/providers/salesforce/transport.d.ts +9 -0
  568. package/src/providers/salesforce/transport.js +65 -0
  569. package/src/providers/sansan/actions.d.ts +2 -0
  570. package/src/providers/sansan/actions.js +165 -0
  571. package/src/providers/sansan/admin-actions.d.ts +2 -0
  572. package/src/providers/sansan/admin-actions.js +181 -0
  573. package/src/providers/sansan/admin.d.ts +2 -0
  574. package/src/providers/sansan/admin.js +42 -0
  575. package/src/providers/sansan/business-actions.d.ts +2 -0
  576. package/src/providers/sansan/business-actions.js +160 -0
  577. package/src/providers/sansan/business.d.ts +2 -0
  578. package/src/providers/sansan/business.js +51 -0
  579. package/src/providers/sansan/executors.d.ts +4 -0
  580. package/src/providers/sansan/executors.js +59 -0
  581. package/src/providers/sansan/file-schema.d.ts +2 -0
  582. package/src/providers/sansan/file-schema.js +8 -0
  583. package/src/providers/sansan/files.d.ts +11 -0
  584. package/src/providers/sansan/files.js +49 -0
  585. package/src/providers/sansan/organization-actions.d.ts +2 -0
  586. package/src/providers/sansan/organization-actions.js +198 -0
  587. package/src/providers/sansan/organization-columns.d.ts +2 -0
  588. package/src/providers/sansan/organization-columns.js +33 -0
  589. package/src/providers/sansan/organization.d.ts +2 -0
  590. package/src/providers/sansan/organization.js +88 -0
  591. package/src/providers/sansan/read.d.ts +2 -0
  592. package/src/providers/sansan/read.js +25 -0
  593. package/src/providers/sansan/request.d.ts +22 -0
  594. package/src/providers/sansan/request.js +94 -0
  595. package/src/providers/sansan/schemas.d.ts +7 -0
  596. package/src/providers/sansan/schemas.js +72 -0
  597. package/src/providers/saperly/actions.d.ts +17 -0
  598. package/src/providers/saperly/actions.js +869 -0
  599. package/src/providers/saperly/executors.d.ts +4 -0
  600. package/src/providers/saperly/executors.js +113 -0
  601. package/src/providers/saperly/schemas.d.ts +33 -0
  602. package/src/providers/saperly/schemas.js +601 -0
  603. package/src/providers/search1api/actions.d.ts +2 -0
  604. package/src/providers/search1api/actions.js +39 -0
  605. package/src/providers/search1api/executors.d.ts +4 -0
  606. package/src/providers/search1api/executors.js +72 -0
  607. package/src/providers/search1api/runtime.d.ts +3 -0
  608. package/src/providers/search1api/runtime.js +44 -0
  609. package/src/providers/search1api/schemas.d.ts +3 -0
  610. package/src/providers/search1api/schemas.js +1834 -0
  611. package/src/providers/sentry/executors.d.ts +2 -0
  612. package/src/providers/sentry/executors.js +2 -0
  613. package/src/providers/sentry/trigger-on-issue-alert.d.ts +2 -0
  614. package/src/providers/sentry/trigger-on-issue-alert.definition.d.ts +4 -0
  615. package/src/providers/sentry/trigger-on-issue-alert.definition.js +64 -0
  616. package/src/providers/sentry/trigger-on-issue-alert.js +80 -0
  617. package/src/providers/sf_express/runtime.d.ts +0 -16
  618. package/src/providers/sf_express/runtime.js +2 -2
  619. package/src/providers/shopee/runtime.d.ts +33 -29
  620. package/src/providers/shopee/runtime.js +166 -169
  621. package/src/providers/slack/runtime.d.ts +6 -1
  622. package/src/providers/slack/runtime.js +21 -0
  623. package/src/providers/slackbot/actions.js +17 -1
  624. package/src/providers/slackbot/executors.d.ts +2 -0
  625. package/src/providers/slackbot/executors.js +5 -1
  626. package/src/providers/slackbot/trigger-on-event.d.ts +2 -0
  627. package/src/providers/slackbot/trigger-on-event.definition.d.ts +4 -0
  628. package/src/providers/slackbot/trigger-on-event.definition.js +57 -0
  629. package/src/providers/slackbot/trigger-on-event.js +23 -0
  630. package/src/providers/smarthr/actions.d.ts +2 -0
  631. package/src/providers/smarthr/actions.js +286 -0
  632. package/src/providers/smarthr/employee-runtime.d.ts +1 -0
  633. package/src/providers/smarthr/employee-runtime.js +63 -0
  634. package/src/providers/smarthr/employee-schema.d.ts +3 -0
  635. package/src/providers/smarthr/employee-schema.js +222 -0
  636. package/src/providers/smarthr/executors.d.ts +4 -0
  637. package/src/providers/smarthr/executors.js +35 -0
  638. package/src/providers/smarthr/pagination.d.ts +1 -0
  639. package/src/providers/smarthr/pagination.js +84 -0
  640. package/src/providers/smarthr/resource-routes.d.ts +16 -0
  641. package/src/providers/smarthr/resource-routes.js +163 -0
  642. package/src/providers/smarthr/runtime.d.ts +13 -0
  643. package/src/providers/smarthr/runtime.js +242 -0
  644. package/src/providers/smarthr/supplemental-actions.d.ts +2 -0
  645. package/src/providers/smarthr/supplemental-actions.js +541 -0
  646. package/src/providers/smooth/actions.d.ts +2 -0
  647. package/src/providers/smooth/actions.js +138 -0
  648. package/src/providers/smooth/executors.d.ts +4 -0
  649. package/src/providers/smooth/executors.js +102 -0
  650. package/src/providers/surf/actions.d.ts +21 -0
  651. package/src/providers/surf/actions.js +26 -0
  652. package/src/providers/surf/discovery-definitions.d.ts +2 -0
  653. package/src/providers/surf/discovery-definitions.js +871 -0
  654. package/src/providers/surf/equity-definitions.d.ts +2 -0
  655. package/src/providers/surf/equity-definitions.js +322 -0
  656. package/src/providers/surf/executors.d.ts +4 -0
  657. package/src/providers/surf/executors.js +131 -0
  658. package/src/providers/surf/market-definitions.d.ts +2 -0
  659. package/src/providers/surf/market-definitions.js +885 -0
  660. package/src/providers/surf/onchain-definitions.d.ts +2 -0
  661. package/src/providers/surf/onchain-definitions.js +901 -0
  662. package/src/providers/surf/prediction-definitions.d.ts +2 -0
  663. package/src/providers/surf/prediction-definitions.js +683 -0
  664. package/src/providers/surf/shared-schemas.d.ts +18 -0
  665. package/src/providers/surf/shared-schemas.js +37 -0
  666. package/src/providers/tally/executors.d.ts +2 -0
  667. package/src/providers/tally/executors.js +2 -0
  668. package/src/providers/tally/trigger-on-form-response.d.ts +2 -0
  669. package/src/providers/tally/trigger-on-form-response.definition.d.ts +4 -0
  670. package/src/providers/tally/trigger-on-form-response.definition.js +54 -0
  671. package/src/providers/tally/trigger-on-form-response.js +166 -0
  672. package/src/providers/tapd/actions.d.ts +8 -0
  673. package/src/providers/tapd/actions.js +89 -0
  674. package/src/providers/tapd/executors.d.ts +4 -0
  675. package/src/providers/tapd/executors.js +137 -0
  676. package/src/providers/teable/runtime.js +12 -15
  677. package/src/providers/tencent_meeting_mcp/actions.d.ts +2 -0
  678. package/src/providers/tencent_meeting_mcp/actions.js +420 -0
  679. package/src/providers/tencent_meeting_mcp/executors.d.ts +4 -0
  680. package/src/providers/tencent_meeting_mcp/executors.js +117 -0
  681. package/src/providers/threatfox/executors.d.ts +4 -0
  682. package/src/providers/threatfox/executors.js +40 -0
  683. package/src/providers/threatfox/runtime.d.ts +15 -0
  684. package/src/providers/threatfox/runtime.js +128 -0
  685. package/src/providers/ticket_tailor/runtime.js +1 -1
  686. package/src/providers/ticketmaster/runtime.js +3 -6
  687. package/src/providers/timelinesai/runtime.js +13 -16
  688. package/src/providers/tinyfish/actions.d.ts +6 -0
  689. package/src/providers/tinyfish/actions.js +19 -0
  690. package/src/providers/tinyfish/agent-actions.d.ts +2 -0
  691. package/src/providers/tinyfish/agent-actions.js +268 -0
  692. package/src/providers/tinyfish/data-actions.d.ts +2 -0
  693. package/src/providers/tinyfish/data-actions.js +186 -0
  694. package/src/providers/tinyfish/data-schemas.d.ts +7 -0
  695. package/src/providers/tinyfish/data-schemas.js +103 -0
  696. package/src/providers/tinyfish/endpoints.d.ts +14 -0
  697. package/src/providers/tinyfish/endpoints.js +1 -0
  698. package/src/providers/tinyfish/executors.d.ts +4 -0
  699. package/src/providers/tinyfish/executors.js +133 -0
  700. package/src/providers/tinyfish/management-actions.d.ts +2 -0
  701. package/src/providers/tinyfish/management-actions.js +524 -0
  702. package/src/providers/tinyfish/monitor-schemas.d.ts +5 -0
  703. package/src/providers/tinyfish/monitor-schemas.js +65 -0
  704. package/src/providers/tinyfish/research-schemas.d.ts +6 -0
  705. package/src/providers/tinyfish/research-schemas.js +71 -0
  706. package/src/providers/tradebee/actions.d.ts +2 -0
  707. package/src/providers/tradebee/actions.js +176 -0
  708. package/src/providers/tradebee/executors.d.ts +4 -0
  709. package/src/providers/tradebee/executors.js +83 -0
  710. package/src/providers/trello/executors.js +5 -2
  711. package/src/providers/twittrapi/executors.d.ts +4 -0
  712. package/src/providers/twittrapi/executors.js +17 -0
  713. package/src/providers/twittrapi/runtime.d.ts +12 -0
  714. package/src/providers/twittrapi/runtime.js +203 -0
  715. package/src/providers/typeform/executors.d.ts +2 -0
  716. package/src/providers/typeform/executors.js +2 -0
  717. package/src/providers/typeform/trigger-on-form-response.d.ts +2 -0
  718. package/src/providers/typeform/trigger-on-form-response.definition.d.ts +4 -0
  719. package/src/providers/typeform/trigger-on-form-response.definition.js +40 -0
  720. package/src/providers/typeform/trigger-on-form-response.js +68 -0
  721. package/src/providers/urlhaus/executors.d.ts +4 -0
  722. package/src/providers/urlhaus/executors.js +40 -0
  723. package/src/providers/urlhaus/runtime.d.ts +15 -0
  724. package/src/providers/urlhaus/runtime.js +142 -0
  725. package/src/providers/vaquill/actions.d.ts +13 -0
  726. package/src/providers/vaquill/actions.js +529 -0
  727. package/src/providers/vaquill/executors.d.ts +4 -0
  728. package/src/providers/vaquill/executors.js +141 -0
  729. package/src/providers/vaquill/schemas.d.ts +67 -0
  730. package/src/providers/vaquill/schemas.js +4953 -0
  731. package/src/providers/vercel/executors.d.ts +2 -0
  732. package/src/providers/vercel/executors.js +2 -0
  733. package/src/providers/vercel/trigger-on-deployment-event.d.ts +2 -0
  734. package/src/providers/vercel/trigger-on-deployment-event.definition.d.ts +5 -0
  735. package/src/providers/vercel/trigger-on-deployment-event.definition.js +41 -0
  736. package/src/providers/vercel/trigger-on-deployment-event.js +102 -0
  737. package/src/providers/wangdian/runtime.js +16 -19
  738. package/src/providers/weixin_bot/runtime.d.ts +0 -1
  739. package/src/providers/weixin_bot/runtime.js +1 -1
  740. package/src/providers/weixin_store/access-token.d.ts +3 -3
  741. package/src/providers/weixin_store/access-token.js +15 -7
  742. package/src/providers/weixin_store/executors.js +214 -1
  743. package/src/providers/weread/actions.d.ts +2 -0
  744. package/src/providers/weread/actions.js +424 -0
  745. package/src/providers/weread/executors.d.ts +4 -0
  746. package/src/providers/weread/executors.js +98 -0
  747. package/src/providers/whatsapp/runtime.js +6 -1
  748. package/src/providers/workast/runtime.js +12 -17
  749. package/src/providers/youzan/runtime.js +21 -24
  750. package/src/providers/zenkit/runtime.js +13 -19
  751. package/src/providers/zhiliaobiaoxun/actions.d.ts +2 -0
  752. package/src/providers/zhiliaobiaoxun/actions.js +138 -0
  753. package/src/providers/zhiliaobiaoxun/executors.d.ts +4 -0
  754. package/src/providers/zhiliaobiaoxun/executors.js +78 -0
  755. package/src/providers/zoom/executors.d.ts +2 -0
  756. package/src/providers/zoom/executors.js +2 -0
  757. package/src/providers/zoom/trigger-on-recording-ready.d.ts +2 -0
  758. package/src/providers/zoom/trigger-on-recording-ready.definition.d.ts +4 -0
  759. package/src/providers/zoom/trigger-on-recording-ready.definition.js +44 -0
  760. package/src/providers/zoom/trigger-on-recording-ready.js +39 -0
  761. package/src/server/api/action-example.js +12 -1
  762. package/src/server/api/auth.d.ts +2 -0
  763. package/src/server/api/auth.js +2 -1
  764. package/src/server/api/console-catalog-routes.d.ts +17 -0
  765. package/src/server/api/console-catalog-routes.js +88 -0
  766. package/src/server/api/console-oauth-routes.d.ts +18 -0
  767. package/src/server/api/console-oauth-routes.js +298 -0
  768. package/src/server/api/docs-routes.d.ts +12 -0
  769. package/src/server/api/docs-routes.js +38 -0
  770. package/src/server/api/http-utils.d.ts +1 -0
  771. package/src/server/api/http-utils.js +8 -0
  772. package/src/server/api/marketplace-routes.d.ts +7 -0
  773. package/src/server/api/marketplace-routes.js +62 -0
  774. package/src/server/api/mcp-routes.d.ts +18 -0
  775. package/src/server/api/mcp-routes.js +37 -0
  776. package/src/server/api/pattern-example.js +35 -1
  777. package/src/server/api/policy-routes.d.ts +13 -0
  778. package/src/server/api/policy-routes.js +50 -0
  779. package/src/server/api/policy-snapshot.d.ts +14 -0
  780. package/src/server/api/policy-snapshot.js +30 -0
  781. package/src/server/api/run-log-routes.d.ts +7 -0
  782. package/src/server/api/run-log-routes.js +70 -0
  783. package/src/server/api/runtime-api.d.ts +0 -7
  784. package/src/server/api/runtime-api.js +0 -13
  785. package/src/server/api/runtime-app-routes.d.ts +10 -0
  786. package/src/server/api/runtime-app-routes.js +72 -0
  787. package/src/server/api/runtime-catalog-routes.d.ts +37 -0
  788. package/src/server/api/runtime-catalog-routes.js +133 -0
  789. package/src/server/api/runtime-execution-routes.d.ts +16 -0
  790. package/src/server/api/runtime-execution-routes.js +198 -0
  791. package/src/server/api/saas-oauth-routes.d.ts +9 -0
  792. package/src/server/api/saas-oauth-routes.js +27 -0
  793. package/src/server/api/saas-project-routes.d.ts +7 -0
  794. package/src/server/api/saas-project-routes.js +16 -0
  795. package/src/server/api/transit-file-routes.d.ts +9 -0
  796. package/src/server/api/transit-file-routes.js +49 -0
  797. package/src/server/api/trigger-routes.d.ts +15 -0
  798. package/src/server/api/trigger-routes.js +48 -0
  799. package/src/server/connect-app.d.ts +1 -0
  800. package/src/server/connect-app.js +4 -1
  801. package/src/server/connect-server.d.ts +3 -54
  802. package/src/server/connect-server.js +95 -1148
  803. package/src/triggers/common/integration.d.ts +15 -3
  804. package/src/triggers/common/integration.js +5 -0
  805. package/src/triggers/common/proxy.d.ts +7 -0
  806. package/src/triggers/managed-webhook.d.ts +13 -0
  807. package/src/triggers/managed-webhook.js +48 -0
  808. package/src/triggers/request.d.ts +5 -1
  809. package/src/triggers/request.js +2 -0
  810. package/src/triggers/resources.d.ts +8 -2
  811. package/src/triggers/resources.js +31 -0
  812. package/src/triggers/signature.d.ts +3 -3
  813. package/src/triggers/signature.js +4 -6
  814. package/src/triggers/sources/configuration-schema.d.ts +5 -0
  815. package/src/triggers/sources/configuration-schema.js +118 -0
  816. package/src/triggers/sources/configuration.d.ts +115 -0
  817. package/src/triggers/sources/configuration.js +1 -0
  818. package/src/triggers/sources/definition.d.ts +61 -0
  819. package/src/triggers/sources/definition.js +3 -0
  820. package/src/triggers/sources/feishu-demands.d.ts +6 -0
  821. package/src/triggers/sources/feishu-demands.js +24 -0
  822. package/src/triggers/sources/feishu-events.d.ts +19 -0
  823. package/src/triggers/sources/feishu-events.js +108 -0
  824. package/src/triggers/sources/feishu.d.ts +3 -0
  825. package/src/triggers/sources/feishu.js +85 -0
  826. package/src/triggers/sources/fireflies.d.ts +3 -0
  827. package/src/triggers/sources/fireflies.js +100 -0
  828. package/src/triggers/sources/intercom.d.ts +3 -0
  829. package/src/triggers/sources/intercom.js +86 -0
  830. package/src/triggers/sources/jira.d.ts +3 -0
  831. package/src/triggers/sources/jira.js +120 -0
  832. package/src/triggers/sources/operation.d.ts +42 -0
  833. package/src/triggers/sources/operation.js +146 -0
  834. package/src/triggers/sources/sentry.d.ts +3 -0
  835. package/src/triggers/sources/sentry.js +125 -0
  836. package/src/triggers/sources/signature.d.ts +1 -0
  837. package/src/triggers/sources/signature.js +10 -0
  838. package/src/triggers/sources/slack.d.ts +3 -0
  839. package/src/triggers/sources/slack.js +127 -0
  840. package/src/triggers/sources/zoom.d.ts +3 -0
  841. package/src/triggers/sources/zoom.js +113 -0
  842. package/src/triggers/trigger-runner.d.ts +2 -0
  843. package/src/triggers/trigger-runner.js +52 -16
  844. package/src/providers/fastmoss_mcp/official-tools.json +0 -2922
@@ -0,0 +1,1686 @@
1
+ import { s } from "../../core/json-schema.js";
2
+ export const googleTools = [
3
+ {
4
+ name: "google_ads",
5
+ path: "/api/google/ads",
6
+ description: "Get the ads shown on a Google search results page. This upstream API is Alpha.",
7
+ input: s.object("Google Ads parameters.", {
8
+ q: s.string("Google Ads search query, up to 2,048 characters with no controls."),
9
+ location: s.string("Human-readable location where the ad search originates, up to 63 UTF-8 bytes once Google-encoded.\n\nExample: Austin, Texas, United States."),
10
+ hl: s.string("Google interface and result language, such as en, en-GB, or de."),
11
+ safe: s.nullable(s.withEnum(s.unknown("Google adult-content filtering."), ["active", "off"])),
12
+ nfpr: s.nullable(s.withEnum(s.unknown("Google spelling auto-correction control. Set 1 to exclude corrected queries."), [
13
+ "0",
14
+ "1",
15
+ ])),
16
+ device: s.withEnum(s.unknown("Google returns its real layout for the selected device."), [
17
+ "desktop",
18
+ "tablet",
19
+ "mobile",
20
+ ]),
21
+ }, { required: ["q", "location"] }),
22
+ asyncInput: s.object("Google Ads asynchronous parameters.", {
23
+ q: s.string("Google Ads search query, up to 2,048 characters with no controls."),
24
+ location: s.string("Human-readable location where the ad search originates, up to 63 UTF-8 bytes once Google-encoded.\n\nExample: Austin, Texas, United States."),
25
+ hl: s.string("Google interface and result language, such as en, en-GB, or de."),
26
+ safe: s.withEnum(s.unknown("Google adult-content filtering."), ["active", "off"]),
27
+ nfpr: s.withEnum(s.unknown("Google spelling auto-correction control. Set 1 to exclude corrected queries."), [
28
+ "0",
29
+ "1",
30
+ ]),
31
+ device: s.withEnum(s.unknown("Google returns its real layout for the selected device."), [
32
+ "desktop",
33
+ "tablet",
34
+ "mobile",
35
+ ]),
36
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
37
+ }, { required: ["q", "location"] }),
38
+ output: s.looseObject("Google Ads response.", {
39
+ search_metadata: s.looseObject("search metadata value.", {}),
40
+ search_parameters: s.looseObject("search parameters value.", {}),
41
+ search_information: s.nullable(s.looseObject("search information value.", {})),
42
+ dmca_messages: s.nullable(s.looseObject("dmca messages value.", {})),
43
+ find_results_on: s.nullable(s.array("find results on value.", s.looseObject("find results on value. item.", {}))),
44
+ latest_posts: s.nullable(s.array("latest posts value.", s.looseObject("latest posts value. item.", {}))),
45
+ organic_results: s.nullable(s.array("organic results value.", s.looseObject("organic results value. item.", {}))),
46
+ ads: s.nullable(s.array("ads value.", s.looseObject("ads value. item.", {}))),
47
+ ai_overview: s.nullable(s.looseObject("ai overview value.", {})),
48
+ answer_box: s.nullable(s.looseObject("answer box value.", {})),
49
+ knowledge_graph: s.nullable(s.looseObject("knowledge graph value.", {})),
50
+ local_map: s.nullable(s.looseObject("local map value.", {})),
51
+ local_results: s.nullable(s.looseObject("local results value.", {})),
52
+ pagination: s.nullable(s.looseObject("pagination value.", {})),
53
+ related_questions: s.nullable(s.array("related questions value.", s.looseObject("related questions value. item.", {}))),
54
+ related_searches: s.nullable(s.array("related searches value.", s.looseObject("related searches value. item.", {}))),
55
+ ask_ai_mode: s.nullable(s.array("ask ai mode value.", s.looseObject("ask ai mode value. item.", {}))),
56
+ available_on: s.nullable(s.array("available on value.", s.looseObject("available on value. item.", {}))),
57
+ broaden_searches: s.nullable(s.array("broaden searches value.", s.looseObject("broaden searches value. item.", {}))),
58
+ complementary_results: s.nullable(s.array("complementary results value.", s.looseObject("complementary results value. item.", {}))),
59
+ discover_more_places: s.nullable(s.array("discover more places value.", s.looseObject("discover more places value. item.", {}))),
60
+ discussions_and_forums: s.nullable(s.array("discussions and forums value.", s.looseObject("discussions and forums value. item.", {}))),
61
+ episode_guide: s.nullable(s.array("episode guide value.", s.looseObject("episode guide value. item.", {}))),
62
+ events_results: s.nullable(s.array("events results value.", s.looseObject("events results value. item.", {}))),
63
+ filters: s.nullable(s.array("filters value.", s.looseObject("filters value. item.", {}))),
64
+ flight_result: s.nullable(s.looseObject("flight result value.", {})),
65
+ immersive_products: s.nullable(s.array("immersive products value.", s.looseObject("immersive products value. item.", {}))),
66
+ inline_images: s.nullable(s.array("inline images value.", s.looseObject("inline images value. item.", {}))),
67
+ inline_videos: s.nullable(s.array("inline videos value.", s.looseObject("inline videos value. item.", {}))),
68
+ jobs_results: s.nullable(s.looseObject("jobs results value.", {})),
69
+ news_results: s.nullable(s.array("news results value.", s.looseObject("news results value. item.", {}))),
70
+ perspectives: s.nullable(s.array("perspectives value.", s.looseObject("perspectives value. item.", {}))),
71
+ places_sites: s.nullable(s.array("places sites value.", s.looseObject("places sites value. item.", {}))),
72
+ recipes_results: s.nullable(s.array("recipes results value.", s.looseObject("recipes results value. item.", {}))),
73
+ refine_by: s.nullable(s.array("refine by value.", s.looseObject("refine by value. item.", {}))),
74
+ related_brands: s.nullable(s.array("related brands value.", s.looseObject("related brands value. item.", {}))),
75
+ related_categories: s.nullable(s.array("related categories value.", s.looseObject("related categories value. item.", {}))),
76
+ scholarly_articles: s.nullable(s.looseObject("scholarly articles value.", {})),
77
+ shopping_results: s.nullable(s.array("shopping results value.", s.looseObject("shopping results value. item.", {}))),
78
+ categorized_shopping_results: s.nullable(s.array("categorized shopping results value.", s.looseObject("categorized shopping results value. item.", {}))),
79
+ short_videos: s.nullable(s.array("short videos value.", s.looseObject("short videos value. item.", {}))),
80
+ sports_results: s.nullable(s.looseObject("sports results value.", {})),
81
+ top_sights: s.nullable(s.looseObject("top sights value.", {})),
82
+ top_stories: s.anyOf("top stories value.", [
83
+ s.array("top stories value.", s.looseObject("top stories value. item.", {})),
84
+ s.looseObject("top stories value.", {}),
85
+ s.literal(null, {
86
+ description: "top stories value.",
87
+ }),
88
+ ]),
89
+ video_results: s.nullable(s.array("video results value.", s.looseObject("video results value. item.", {}))),
90
+ finance_results: s.nullable(s.looseObject("finance results value.", {})),
91
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
92
+ format: "uri",
93
+ }),
94
+ }),
95
+ },
96
+ {
97
+ name: "google_ai_mode",
98
+ path: "/api/google/ai-mode",
99
+ description: "Get Google AI Mode answers with cited sources.",
100
+ input: s.object("Google AI Mode parameters.", {
101
+ q: s.string("The question to ask Google AI Mode, up to 2,048 characters with no controls."),
102
+ location: s.nullable(s.string("Named search origin, up to 512 characters and 63 UTF-8 bytes once Google-encoded. Conflicts with uule.")),
103
+ uule: s.nullable(s.string("Canonical Google location token, up to 2,048 characters. Conflicts with location.")),
104
+ google_domain: s.string("Validated first-party Google domain the request is served from."),
105
+ gl: s.nullable(s.string("Two-letter country localization, normalized to lowercase.")),
106
+ hl: s.string("Language code such as en, en-GB, or de."),
107
+ device: s.withEnum(s.unknown("Google returns its real layout for the selected device."), [
108
+ "desktop",
109
+ "tablet",
110
+ "mobile",
111
+ ]),
112
+ continuable: s.boolean("Return a subsequent_request_token so this answer can be followed up."),
113
+ subsequent_request_token: s.nullable(s.string("Continue a conversation from a previous continuable response. Requires a new question, and cannot be combined with image_url. Expires after 30 minutes.")),
114
+ image_url: s.nullable(s.string("Public http or https image to include in the prompt, up to 2,048 characters and 20 MB. Google Lens receives the image; the answer still comes from AI Mode.")),
115
+ }, { required: ["q"] }),
116
+ asyncInput: s.object("Google AI Mode asynchronous parameters.", {
117
+ q: s.string("The question to ask Google AI Mode, up to 2,048 characters with no controls."),
118
+ location: s.string("Named search origin, up to 512 characters and 63 UTF-8 bytes once Google-encoded. Conflicts with uule."),
119
+ uule: s.string("Canonical Google location token, up to 2,048 characters. Conflicts with location."),
120
+ google_domain: s.string("Validated first-party Google domain the request is served from."),
121
+ gl: s.string("Two-letter country localization, normalized to lowercase."),
122
+ hl: s.string("Language code such as en, en-GB, or de."),
123
+ device: s.withEnum(s.unknown("Google returns its real layout for the selected device."), [
124
+ "desktop",
125
+ "tablet",
126
+ "mobile",
127
+ ]),
128
+ continuable: s.boolean("Return a subsequent_request_token so this answer can be followed up."),
129
+ subsequent_request_token: s.string("Continue a conversation from a previous continuable response. Requires a new question, and cannot be combined with image_url. Expires after 30 minutes."),
130
+ image_url: s.string("Public http or https image to include in the prompt, up to 2,048 characters and 20 MB. Google Lens receives the image; the answer still comes from AI Mode."),
131
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
132
+ }, { required: ["q"] }),
133
+ output: s.looseObject("Google AI Mode response.", {
134
+ references: s.nullable(s.array("references value.", s.looseObject("references value. item.", {}))),
135
+ text_blocks: s.nullable(s.array("text blocks value.", s.looseObject("text blocks value. item.", {}))),
136
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
137
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
138
+ subsequent_request_token: s.nullable(s.string("subsequent request token value.")),
139
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
140
+ format: "uri",
141
+ }),
142
+ }),
143
+ },
144
+ {
145
+ name: "google_ai_overview",
146
+ path: "/api/google/ai-overview",
147
+ description: "Get Google's AI Overview for a query, with cited sources.",
148
+ input: s.object("Google AI Overview parameters.", {
149
+ q: s.nullable(s.string("Google Search query, up to 2,048 characters.\n\nRequired unless ludocid or kgmid is supplied.", {
150
+ maxLength: 2048,
151
+ })),
152
+ location: s.nullable(s.string("Human-readable city-level location encoded to UULE by Litescrape.\n\nConflicts with uule and lat/lon.", { maxLength: 512 })),
153
+ uule: s.nullable(s.string("Pre-encoded Google location value.\n\nConflicts with location and lat/lon.", {
154
+ maxLength: 2048,
155
+ })),
156
+ lat: s.nullable(s.number("Latitude from -90 through 90.\n\nRequires lon and conflicts with location and uule.", {
157
+ minimum: -90,
158
+ maximum: 90,
159
+ })),
160
+ lon: s.nullable(s.number("Longitude from -180 through 180.\n\nRequires lat and conflicts with location and uule.", {
161
+ minimum: -180,
162
+ maximum: 180,
163
+ })),
164
+ radius: s.nullable(s.number("Decimal search-bias radius in meters.\n\nRequires location or lat/lon. Desktop: 1–199; tablet/mobile: 1–1,000.", { minimum: 1, maximum: 1000 })),
165
+ ludocid: s.nullable(s.string("Google local CID used to search for one entity.", {
166
+ maxLength: 128,
167
+ pattern: "^\\d+$",
168
+ })),
169
+ lsig: s.nullable(s.string("Opaque Knowledge Graph or local-pack signature.", { maxLength: 4096 })),
170
+ kgmid: s.nullable(s.string("Google Knowledge Graph machine ID, such as /m/0k8z.", { maxLength: 512 })),
171
+ si: s.nullable(s.string("Opaque cached Google search context.", { maxLength: 4096 })),
172
+ ibp: s.nullable(s.string("Google layout or expansion control.", { maxLength: 4096 })),
173
+ uds: s.nullable(s.string("Opaque Google filter token.", { maxLength: 4096 })),
174
+ color_scheme: s.nullable(s.withEnum(s.unknown("Google result color presentation."), ["light", "dark"])),
175
+ google_domain: s.string("Results use google.com. Use gl, hl, cr, lr or geography for localization."),
176
+ gl: s.nullable(s.string("Lowercase two-letter country localization code.", { pattern: "^[a-z]{2}$" })),
177
+ hl: s.string("Google interface and result language code.", {
178
+ pattern: "^[a-z]{2,3}(?:-[A-Za-z]{2,8})?$",
179
+ }),
180
+ cr: s.nullable(s.string("One or more countryXX restrictions joined with |.", {
181
+ pattern: "^country[A-Z]{2}(?:\\|country[A-Z]{2})*$",
182
+ })),
183
+ lr: s.nullable(s.string("One or more lang_xx restrictions joined with |.", {
184
+ pattern: "^lang_[a-z]{2,3}(?:\\|lang_[a-z]{2,3})*$",
185
+ })),
186
+ tbs: s.nullable(s.string("Google native date or search filter string.", { maxLength: 4096 })),
187
+ safe: s.nullable(s.withEnum(s.unknown("Google adult-content filtering."), ["active", "off"])),
188
+ nfpr: s.nullable(s.withEnum(s.unknown("Google auto-correction control."), ["0", "1"])),
189
+ filter: s.nullable(s.withEnum(s.unknown("Google similar-result filtering control."), ["0", "1"])),
190
+ pws: s.nullable(s.withEnum(s.unknown("Google personalization control; 0 asks for non-personalized results."), ["0", "1"])),
191
+ peek_pws: s.nullable(s.withEnum(s.unknown("Google personalization peek flag, forwarded unchanged."), ["0", "1"])),
192
+ tbm: s.nullable(s.withEnum(s.unknown("Google vertical: lcl, vid, nws, shop, or pts. For image searches, use /api/google/images."), ["lcl", "vid", "nws", "shop", "pts"])),
193
+ start: s.integer("Non-negative Google result offset.", { minimum: 0 }),
194
+ num: s.nullable(s.integer("Best-effort first-page result count, 1 to 10.", { minimum: 1, maximum: 10 })),
195
+ device: s.withEnum(s.unknown("Request device profile and radius bound."), ["desktop", "tablet", "mobile"]),
196
+ oq: s.nullable(s.string("Original query associated with an autocomplete selection.", {
197
+ maxLength: 2048,
198
+ })),
199
+ gs_lp: s.nullable(s.string("Google gs_lp value associated with an autocomplete selection.", {
200
+ maxLength: 4096,
201
+ })),
202
+ sclient: s.nullable(s.string("Google client identifier such as gws-wiz-serp.", {
203
+ maxLength: 64,
204
+ pattern: "^[A-Za-z0-9._-]+$",
205
+ })),
206
+ as_dt: s.nullable(s.withEnum(s.unknown("Includes or excludes as_sitesearch.\n\nRequires as_sitesearch."), ["i", "e"])),
207
+ as_epq: s.nullable(s.string("Exact phrase query.", { maxLength: 2048 })),
208
+ as_eq: s.nullable(s.string("Excluded phrase query.", { maxLength: 2048 })),
209
+ as_lq: s.nullable(s.string("Require results that link to this URL.", { maxLength: 4096 })),
210
+ as_nlo: s.nullable(s.integer("Inclusive range lower bound.\n\nRequires as_nhi.", { minimum: 0 })),
211
+ as_nhi: s.nullable(s.integer("Inclusive range upper bound.\n\nRequires as_nlo.", { minimum: 0 })),
212
+ as_oq: s.nullable(s.string("Any-of search terms.", { maxLength: 2048 })),
213
+ as_q: s.nullable(s.string("Additional all-of search terms.", { maxLength: 2048 })),
214
+ as_qdr: s.nullable(s.string("Quick range d, w, m, or y with an optional positive count.", {
215
+ pattern: "^[dwmy](?:[1-9][0-9]*)?$",
216
+ })),
217
+ as_rq: s.nullable(s.string("Find pages related to this URL.", { maxLength: 4096 })),
218
+ as_sitesearch: s.nullable(s.string("Site hostname to include or exclude.", { maxLength: 253 })),
219
+ }, { required: [] }),
220
+ asyncInput: s.object("Google AI Overview asynchronous parameters.", {
221
+ q: s.string("Google Search query, up to 2,048 characters.\n\nRequired unless ludocid or kgmid is supplied.", {
222
+ maxLength: 2048,
223
+ }),
224
+ location: s.string("Human-readable city-level location encoded to UULE by Litescrape.\n\nConflicts with uule and lat/lon.", { maxLength: 512 }),
225
+ uule: s.string("Pre-encoded Google location value.\n\nConflicts with location and lat/lon.", {
226
+ maxLength: 2048,
227
+ }),
228
+ lat: s.number("Latitude from -90 through 90.\n\nRequires lon and conflicts with location and uule.", {
229
+ minimum: -90,
230
+ maximum: 90,
231
+ }),
232
+ lon: s.number("Longitude from -180 through 180.\n\nRequires lat and conflicts with location and uule.", {
233
+ minimum: -180,
234
+ maximum: 180,
235
+ }),
236
+ radius: s.number("Decimal search-bias radius in meters.\n\nRequires location or lat/lon. Desktop: 1–199; tablet/mobile: 1–1,000.", { minimum: 1, maximum: 1000 }),
237
+ ludocid: s.string("Google local CID used to search for one entity.", {
238
+ maxLength: 128,
239
+ pattern: "^\\d+$",
240
+ }),
241
+ lsig: s.string("Opaque Knowledge Graph or local-pack signature.", { maxLength: 4096 }),
242
+ kgmid: s.string("Google Knowledge Graph machine ID, such as /m/0k8z.", { maxLength: 512 }),
243
+ si: s.string("Opaque cached Google search context.", { maxLength: 4096 }),
244
+ ibp: s.string("Google layout or expansion control.", { maxLength: 4096 }),
245
+ uds: s.string("Opaque Google filter token.", { maxLength: 4096 }),
246
+ color_scheme: s.withEnum(s.unknown("Google result color presentation."), ["light", "dark"]),
247
+ google_domain: s.string("Results use google.com. Use gl, hl, cr, lr or geography for localization."),
248
+ gl: s.string("Lowercase two-letter country localization code.", { pattern: "^[a-z]{2}$" }),
249
+ hl: s.string("Google interface and result language code.", {
250
+ pattern: "^[a-z]{2,3}(?:-[A-Za-z]{2,8})?$",
251
+ }),
252
+ cr: s.string("One or more countryXX restrictions joined with |.", {
253
+ pattern: "^country[A-Z]{2}(?:\\|country[A-Z]{2})*$",
254
+ }),
255
+ lr: s.string("One or more lang_xx restrictions joined with |.", {
256
+ pattern: "^lang_[a-z]{2,3}(?:\\|lang_[a-z]{2,3})*$",
257
+ }),
258
+ tbs: s.string("Google native date or search filter string.", { maxLength: 4096 }),
259
+ safe: s.withEnum(s.unknown("Google adult-content filtering."), ["active", "off"]),
260
+ nfpr: s.withEnum(s.unknown("Google auto-correction control."), ["0", "1"]),
261
+ filter: s.withEnum(s.unknown("Google similar-result filtering control."), ["0", "1"]),
262
+ pws: s.withEnum(s.unknown("Google personalization control; 0 asks for non-personalized results."), ["0", "1"]),
263
+ peek_pws: s.withEnum(s.unknown("Google personalization peek flag, forwarded unchanged."), ["0", "1"]),
264
+ tbm: s.withEnum(s.unknown("Google vertical: lcl, vid, nws, shop, or pts. For image searches, use /api/google/images."), ["lcl", "vid", "nws", "shop", "pts"]),
265
+ start: s.integer("Non-negative Google result offset.", { minimum: 0 }),
266
+ num: s.integer("Best-effort first-page result count, 1 to 10.", {
267
+ minimum: 1,
268
+ maximum: 10,
269
+ }),
270
+ device: s.withEnum(s.unknown("Request device profile and radius bound."), ["desktop", "tablet", "mobile"]),
271
+ oq: s.string("Original query associated with an autocomplete selection.", {
272
+ maxLength: 2048,
273
+ }),
274
+ gs_lp: s.string("Google gs_lp value associated with an autocomplete selection.", {
275
+ maxLength: 4096,
276
+ }),
277
+ sclient: s.string("Google client identifier such as gws-wiz-serp.", {
278
+ maxLength: 64,
279
+ pattern: "^[A-Za-z0-9._-]+$",
280
+ }),
281
+ as_dt: s.withEnum(s.unknown("Includes or excludes as_sitesearch.\n\nRequires as_sitesearch."), ["i", "e"]),
282
+ as_epq: s.string("Exact phrase query.", { maxLength: 2048 }),
283
+ as_eq: s.string("Excluded phrase query.", { maxLength: 2048 }),
284
+ as_lq: s.string("Require results that link to this URL.", { maxLength: 4096 }),
285
+ as_nlo: s.integer("Inclusive range lower bound.\n\nRequires as_nhi.", { minimum: 0 }),
286
+ as_nhi: s.integer("Inclusive range upper bound.\n\nRequires as_nlo.", { minimum: 0 }),
287
+ as_oq: s.string("Any-of search terms.", { maxLength: 2048 }),
288
+ as_q: s.string("Additional all-of search terms.", { maxLength: 2048 }),
289
+ as_qdr: s.string("Quick range d, w, m, or y with an optional positive count.", {
290
+ pattern: "^[dwmy](?:[1-9][0-9]*)?$",
291
+ }),
292
+ as_rq: s.string("Find pages related to this URL.", { maxLength: 4096 }),
293
+ as_sitesearch: s.string("Site hostname to include or exclude.", { maxLength: 253 }),
294
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
295
+ }, { required: [] }),
296
+ output: s.looseObject("Google AI Overview response.", {
297
+ search_metadata: s.looseObject("search metadata value.", {}),
298
+ search_parameters: s.looseObject("search parameters value.", {}),
299
+ search_information: s.nullable(s.looseObject("search information value.", {})),
300
+ dmca_messages: s.nullable(s.looseObject("dmca messages value.", {})),
301
+ find_results_on: s.nullable(s.array("find results on value.", s.looseObject("find results on value. item.", {}))),
302
+ latest_posts: s.nullable(s.array("latest posts value.", s.looseObject("latest posts value. item.", {}))),
303
+ organic_results: s.nullable(s.array("organic results value.", s.looseObject("organic results value. item.", {}))),
304
+ ads: s.nullable(s.array("ads value.", s.looseObject("ads value. item.", {}))),
305
+ ai_overview: s.nullable(s.looseObject("ai overview value.", {})),
306
+ answer_box: s.nullable(s.looseObject("answer box value.", {})),
307
+ knowledge_graph: s.nullable(s.looseObject("knowledge graph value.", {})),
308
+ local_map: s.nullable(s.looseObject("local map value.", {})),
309
+ local_results: s.nullable(s.looseObject("local results value.", {})),
310
+ pagination: s.nullable(s.looseObject("pagination value.", {})),
311
+ related_questions: s.nullable(s.array("related questions value.", s.looseObject("related questions value. item.", {}))),
312
+ related_searches: s.nullable(s.array("related searches value.", s.looseObject("related searches value. item.", {}))),
313
+ ask_ai_mode: s.nullable(s.array("ask ai mode value.", s.looseObject("ask ai mode value. item.", {}))),
314
+ available_on: s.nullable(s.array("available on value.", s.looseObject("available on value. item.", {}))),
315
+ broaden_searches: s.nullable(s.array("broaden searches value.", s.looseObject("broaden searches value. item.", {}))),
316
+ complementary_results: s.nullable(s.array("complementary results value.", s.looseObject("complementary results value. item.", {}))),
317
+ discover_more_places: s.nullable(s.array("discover more places value.", s.looseObject("discover more places value. item.", {}))),
318
+ discussions_and_forums: s.nullable(s.array("discussions and forums value.", s.looseObject("discussions and forums value. item.", {}))),
319
+ episode_guide: s.nullable(s.array("episode guide value.", s.looseObject("episode guide value. item.", {}))),
320
+ events_results: s.nullable(s.array("events results value.", s.looseObject("events results value. item.", {}))),
321
+ filters: s.nullable(s.array("filters value.", s.looseObject("filters value. item.", {}))),
322
+ flight_result: s.nullable(s.looseObject("flight result value.", {})),
323
+ immersive_products: s.nullable(s.array("immersive products value.", s.looseObject("immersive products value. item.", {}))),
324
+ inline_images: s.nullable(s.array("inline images value.", s.looseObject("inline images value. item.", {}))),
325
+ inline_videos: s.nullable(s.array("inline videos value.", s.looseObject("inline videos value. item.", {}))),
326
+ jobs_results: s.nullable(s.looseObject("jobs results value.", {})),
327
+ news_results: s.nullable(s.array("news results value.", s.looseObject("news results value. item.", {}))),
328
+ perspectives: s.nullable(s.array("perspectives value.", s.looseObject("perspectives value. item.", {}))),
329
+ places_sites: s.nullable(s.array("places sites value.", s.looseObject("places sites value. item.", {}))),
330
+ recipes_results: s.nullable(s.array("recipes results value.", s.looseObject("recipes results value. item.", {}))),
331
+ refine_by: s.nullable(s.array("refine by value.", s.looseObject("refine by value. item.", {}))),
332
+ related_brands: s.nullable(s.array("related brands value.", s.looseObject("related brands value. item.", {}))),
333
+ related_categories: s.nullable(s.array("related categories value.", s.looseObject("related categories value. item.", {}))),
334
+ scholarly_articles: s.nullable(s.looseObject("scholarly articles value.", {})),
335
+ shopping_results: s.nullable(s.array("shopping results value.", s.looseObject("shopping results value. item.", {}))),
336
+ categorized_shopping_results: s.nullable(s.array("categorized shopping results value.", s.looseObject("categorized shopping results value. item.", {}))),
337
+ short_videos: s.nullable(s.array("short videos value.", s.looseObject("short videos value. item.", {}))),
338
+ sports_results: s.nullable(s.looseObject("sports results value.", {})),
339
+ top_sights: s.nullable(s.looseObject("top sights value.", {})),
340
+ top_stories: s.anyOf("top stories value.", [
341
+ s.array("top stories value.", s.looseObject("top stories value. item.", {})),
342
+ s.looseObject("top stories value.", {}),
343
+ s.literal(null, {
344
+ description: "top stories value.",
345
+ }),
346
+ ]),
347
+ video_results: s.nullable(s.array("video results value.", s.looseObject("video results value. item.", {}))),
348
+ finance_results: s.nullable(s.looseObject("finance results value.", {})),
349
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
350
+ format: "uri",
351
+ }),
352
+ }),
353
+ },
354
+ {
355
+ name: "google_contributor_reviews",
356
+ path: "/api/google/contributor-reviews",
357
+ description: "Get reviews written by a Google Maps contributor.",
358
+ input: s.object("Google Contributor Reviews parameters.", {
359
+ contributor_id: s.string("Required 10 to 32 digit ID from a Google Maps contributor URL."),
360
+ hl: s.string("Review and interface language such as en, en-US, or fr."),
361
+ gl: s.string("Two-letter country localization."),
362
+ limit: s.integer("Review count from 1 through the anonymous source maximum of 200."),
363
+ }, { required: ["contributor_id"] }),
364
+ asyncInput: s.object("Google Contributor Reviews asynchronous parameters.", {
365
+ contributor_id: s.string("Required 10 to 32 digit ID from a Google Maps contributor URL."),
366
+ hl: s.string("Review and interface language such as en, en-US, or fr."),
367
+ gl: s.string("Two-letter country localization."),
368
+ limit: s.integer("Review count from 1 through the anonymous source maximum of 200."),
369
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
370
+ }, { required: ["contributor_id"] }),
371
+ output: s.looseObject("Google Contributor Reviews response.", {
372
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
373
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
374
+ search_information: s.nullable(s.looseObject("search information value.", {})),
375
+ contributor: s.nullable(s.looseObject("contributor value.", {})),
376
+ reviews: s.nullable(s.array("reviews value.", s.looseObject("reviews value. item.", {}))),
377
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
378
+ format: "uri",
379
+ }),
380
+ }),
381
+ },
382
+ {
383
+ name: "google_gemini",
384
+ path: "/api/google/gemini",
385
+ description: "Get a completed text reply from Gemini.",
386
+ input: s.object("Gemini Chat parameters.", {
387
+ prompt: s.string("Text prompt for a new or continued Gemini conversation, up to 32,000 characters.\n\nText only. Use subsequent_request_token to continue a conversation. Uploads, Google account cookies and model selection are not accepted.", { minLength: 1, maxLength: 32000 }),
388
+ hl: s.string("Gemini web interface language code. Defaults to en; request a reply language in the prompt.", {
389
+ pattern: "^[a-zA-Z]{2,3}(?:-[a-zA-Z]{2,4})?$",
390
+ }),
391
+ continuable: s.boolean("Return a subsequent_request_token for continuing this conversation. Defaults to false.\n\nSet to true on the first request and on each follow-up that needs another token."),
392
+ subsequent_request_token: s.nullable(s.string("Token from the previous reply. Send it with your next prompt using the same API key.\n\nUse the newest token for each follow-up. Tokens expire one hour after they are issued; an upstream conversation can become unavailable sooner. Treat tokens as sensitive. Invalid, expired or unavailable continuations fail without starting a new conversation and are not billed.", { minLength: 1, maxLength: 32768 })),
393
+ }, { required: ["prompt"] }),
394
+ asyncInput: s.object("Gemini Chat asynchronous parameters.", {
395
+ prompt: s.string("Text prompt for a new or continued Gemini conversation, up to 32,000 characters.\n\nText only. Use subsequent_request_token to continue a conversation. Uploads, Google account cookies and model selection are not accepted.", { minLength: 1, maxLength: 32000 }),
396
+ hl: s.string("Gemini web interface language code. Defaults to en; request a reply language in the prompt.", {
397
+ pattern: "^[a-zA-Z]{2,3}(?:-[a-zA-Z]{2,4})?$",
398
+ }),
399
+ continuable: s.boolean("Return a subsequent_request_token for continuing this conversation. Defaults to false.\n\nSet to true on the first request and on each follow-up that needs another token."),
400
+ subsequent_request_token: s.string("Token from the previous reply. Send it with your next prompt using the same API key.\n\nUse the newest token for each follow-up. Tokens expire one hour after they are issued; an upstream conversation can become unavailable sooner. Treat tokens as sensitive. Invalid, expired or unavailable continuations fail without starting a new conversation and are not billed.", { minLength: 1, maxLength: 32768 }),
401
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
402
+ }, { required: ["prompt"] }),
403
+ output: s.looseObject("Gemini Chat response.", {
404
+ text: s.string("Gemini's completed text reply, preserving Markdown formatting.", {
405
+ minLength: 1,
406
+ }),
407
+ subsequent_request_token: s.nullable(s.string("Continuation token returned when continuable is true. Use the newest token for each follow-up; tokens expire after one hour.")),
408
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
409
+ format: "uri",
410
+ }),
411
+ }),
412
+ },
413
+ {
414
+ name: "google_images",
415
+ path: "/api/google/images",
416
+ description: "Search Google Images.",
417
+ input: s.object("Google Images parameters.", {
418
+ q: s.string("Image search query, up to 2,048 characters.", {
419
+ minLength: 1,
420
+ maxLength: 2048,
421
+ }),
422
+ hl: s.string("Language of the Google Images interface.", {
423
+ pattern: "^[a-z]{2,3}(?:-[A-Za-z]{2,8})?$",
424
+ }),
425
+ gl: s.nullable(s.string("Two-letter country code used to localize results.", { pattern: "^[a-z]{2}$" })),
426
+ safe: s.nullable(s.withEnum(s.unknown("Set active to filter explicit images, or off to disable SafeSearch."), [
427
+ "active",
428
+ "off",
429
+ ])),
430
+ tbs: s.nullable(s.string("Google image filters, such as isz:l for large images, itp:photo for photographs, or ic:trans for transparent images.", { maxLength: 4096 })),
431
+ start: s.integer("Google's page offset. For the next page, use pagination.next_start from the response and keep the same query and filters. This offset is independent of num and the number of returned images.", { minimum: 0, maximum: 1000 }),
432
+ num: s.integer("Maximum number of images returned from this page, from 1 to 100. This limits the parsed response; Google may supply fewer images.", { minimum: 1, maximum: 100 }),
433
+ device: s.withEnum(s.unknown("Device profile used for the image search."), ["desktop", "tablet", "mobile"]),
434
+ }, { required: ["q"] }),
435
+ asyncInput: s.object("Google Images asynchronous parameters.", {
436
+ q: s.string("Image search query, up to 2,048 characters.", {
437
+ minLength: 1,
438
+ maxLength: 2048,
439
+ }),
440
+ hl: s.string("Language of the Google Images interface.", {
441
+ pattern: "^[a-z]{2,3}(?:-[A-Za-z]{2,8})?$",
442
+ }),
443
+ gl: s.string("Two-letter country code used to localize results.", {
444
+ pattern: "^[a-z]{2}$",
445
+ }),
446
+ safe: s.withEnum(s.unknown("Set active to filter explicit images, or off to disable SafeSearch."), [
447
+ "active",
448
+ "off",
449
+ ]),
450
+ tbs: s.string("Google image filters, such as isz:l for large images, itp:photo for photographs, or ic:trans for transparent images.", { maxLength: 4096 }),
451
+ start: s.integer("Google's page offset. For the next page, use pagination.next_start from the response and keep the same query and filters. This offset is independent of num and the number of returned images.", { minimum: 0, maximum: 1000 }),
452
+ num: s.integer("Maximum number of images returned from this page, from 1 to 100. This limits the parsed response; Google may supply fewer images.", { minimum: 1, maximum: 100 }),
453
+ device: s.withEnum(s.unknown("Device profile used for the image search."), ["desktop", "tablet", "mobile"]),
454
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
455
+ }, { required: ["q"] }),
456
+ output: s.looseObject("Google Images response.", {
457
+ search_metadata: s.looseObject("search metadata value.", {}),
458
+ search_parameters: s.looseObject("search parameters value.", {}),
459
+ images_results: s.array("images results value.", s.looseObject("images results value. item.", {})),
460
+ pagination: s.nullable(s.looseObject("pagination value.", {})),
461
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
462
+ format: "uri",
463
+ }),
464
+ }),
465
+ },
466
+ {
467
+ name: "google_jobs",
468
+ path: "/api/google/jobs",
469
+ description: "Search Google Jobs listings by query and location.",
470
+ input: s.object("Google Jobs parameters.", {
471
+ q: s.string("Job search query, for example software engineer jobs in New York.", {
472
+ minLength: 1,
473
+ maxLength: 512,
474
+ }),
475
+ page: s.integer("One-based results page. Use next_page from the response to continue.", {
476
+ minimum: 1,
477
+ }),
478
+ page_token: s.nullable(s.string("Copy next_page_token with next_page and the same query to fetch the next batch directly.", {
479
+ minLength: 1,
480
+ maxLength: 32768,
481
+ pattern: "^[A-Za-z0-9+/=_-]+$",
482
+ })),
483
+ hl: s.string("Google interface language, for example en, de, fr, es or pt-BR.", {
484
+ pattern: "^[a-z]{2,3}(?:-[A-Za-z]{2,8})?$",
485
+ }),
486
+ gl: s.string("Two-letter country code.", { pattern: "^[a-z]{2}$" }),
487
+ location: s.nullable(s.string("Canonical Google location, such as London,England,United Kingdom. Use one of location, uule or lat/lon.", { minLength: 1, maxLength: 512 })),
488
+ uule: s.nullable(s.string("Explicit Google UULE location value. Mutually exclusive with location and coordinates.", {
489
+ minLength: 1,
490
+ maxLength: 2048,
491
+ })),
492
+ lat: s.nullable(s.number("Latitude of the search origin. Requires lon.", { minimum: -90, maximum: 90 })),
493
+ lon: s.nullable(s.number("Longitude of the search origin. Requires lat.", {
494
+ minimum: -180,
495
+ maximum: 180,
496
+ })),
497
+ radius: s.nullable(s.number("Coordinate accuracy radius in meters, requiring lat/lon. This locates the search origin; it is not a job-distance filter.", { minimum: 1, maximum: 199 })),
498
+ uds: s.nullable(s.string("Opaque Google refinement value returned in available_filters. Copy its q and uds together; filter choices vary by query and market.", { minLength: 1, maxLength: 16384 })),
499
+ tbs: s.nullable(s.string("Google search refinement string, for example qdr:w for the past week. Keep it unchanged through pagination.", { minLength: 1, maxLength: 2048 })),
500
+ include_filters: s.boolean("Return available Google Jobs filters with the q and uds parameters needed to apply each one."),
501
+ }, { required: ["q"] }),
502
+ asyncInput: s.object("Google Jobs asynchronous parameters.", {
503
+ q: s.string("Job search query, for example software engineer jobs in New York.", {
504
+ minLength: 1,
505
+ maxLength: 512,
506
+ }),
507
+ page: s.integer("One-based results page. Use next_page from the response to continue.", {
508
+ minimum: 1,
509
+ }),
510
+ page_token: s.string("Copy next_page_token with next_page and the same query to fetch the next batch directly.", { minLength: 1, maxLength: 32768, pattern: "^[A-Za-z0-9+/=_-]+$" }),
511
+ hl: s.string("Google interface language, for example en, de, fr, es or pt-BR.", {
512
+ pattern: "^[a-z]{2,3}(?:-[A-Za-z]{2,8})?$",
513
+ }),
514
+ gl: s.string("Two-letter country code.", { pattern: "^[a-z]{2}$" }),
515
+ location: s.string("Canonical Google location, such as London,England,United Kingdom. Use one of location, uule or lat/lon.", { minLength: 1, maxLength: 512 }),
516
+ uule: s.string("Explicit Google UULE location value. Mutually exclusive with location and coordinates.", {
517
+ minLength: 1,
518
+ maxLength: 2048,
519
+ }),
520
+ lat: s.number("Latitude of the search origin. Requires lon.", {
521
+ minimum: -90,
522
+ maximum: 90,
523
+ }),
524
+ lon: s.number("Longitude of the search origin. Requires lat.", {
525
+ minimum: -180,
526
+ maximum: 180,
527
+ }),
528
+ radius: s.number("Coordinate accuracy radius in meters, requiring lat/lon. This locates the search origin; it is not a job-distance filter.", { minimum: 1, maximum: 199 }),
529
+ uds: s.string("Opaque Google refinement value returned in available_filters. Copy its q and uds together; filter choices vary by query and market.", { minLength: 1, maxLength: 16384 }),
530
+ tbs: s.string("Google search refinement string, for example qdr:w for the past week. Keep it unchanged through pagination.", { minLength: 1, maxLength: 2048 }),
531
+ include_filters: s.boolean("Return available Google Jobs filters with the q and uds parameters needed to apply each one."),
532
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
533
+ }, { required: ["q"] }),
534
+ output: s.looseObject("Google Jobs response.", {
535
+ search_metadata: s.looseObject("search metadata value.", {}),
536
+ search_parameters: s.looseObject("search parameters value.", {}),
537
+ jobs_results: s.array("jobs results value.", s.looseObject("jobs results value. item.", {})),
538
+ search_information: s.looseObject("search information value.", {}),
539
+ pagination: s.looseObject("pagination value.", {}),
540
+ litescrape_pagination: s.looseObject("litescrape pagination value.", {}),
541
+ available_filters: s.nullable(s.array("available filters value.", s.looseObject("available filters value. item.", {}))),
542
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
543
+ format: "uri",
544
+ }),
545
+ }),
546
+ },
547
+ {
548
+ name: "google_local",
549
+ path: "/api/google/local",
550
+ description: "Get Google local results for a query and location.",
551
+ input: s.object("Google Local parameters.", {
552
+ q: s.string("Google Local query, up to 2,048 characters with no controls."),
553
+ location: s.nullable(s.string("Human-readable location, up to 512 characters.\n\nCannot be combined with uule.")),
554
+ uule: s.nullable(s.string("Canonical Google named-location token, up to 2,048 characters.\n\nCannot be combined with location.")),
555
+ google_domain: s.string("Validated Google domain.\n\nExamples: google.com, google.co.uk, google.fr."),
556
+ gl: s.nullable(s.string("Country localization normalized to lowercase.")),
557
+ hl: s.string("Google interface and result language."),
558
+ ludocid: s.nullable(s.string("Google local CID, up to 128 digits.")),
559
+ tbs: s.nullable(s.string("Google compatibility token forwarded unchanged; the provider may leave ranking unchanged.")),
560
+ start: s.integer("Local-result offset through 10,000; source-exhausted offsets above 1,000 return empty."),
561
+ device: s.withEnum(s.unknown("Compatibility value over device-invariant Maps data."), [
562
+ "desktop",
563
+ "tablet",
564
+ "mobile",
565
+ ]),
566
+ }, { required: ["q"] }),
567
+ asyncInput: s.object("Google Local asynchronous parameters.", {
568
+ q: s.string("Google Local query, up to 2,048 characters with no controls."),
569
+ location: s.string("Human-readable location, up to 512 characters.\n\nCannot be combined with uule."),
570
+ uule: s.string("Canonical Google named-location token, up to 2,048 characters.\n\nCannot be combined with location."),
571
+ google_domain: s.string("Validated Google domain.\n\nExamples: google.com, google.co.uk, google.fr."),
572
+ gl: s.string("Country localization normalized to lowercase."),
573
+ hl: s.string("Google interface and result language."),
574
+ ludocid: s.string("Google local CID, up to 128 digits."),
575
+ tbs: s.string("Google compatibility token forwarded unchanged; the provider may leave ranking unchanged."),
576
+ start: s.integer("Local-result offset through 10,000; source-exhausted offsets above 1,000 return empty."),
577
+ device: s.withEnum(s.unknown("Compatibility value over device-invariant Maps data."), [
578
+ "desktop",
579
+ "tablet",
580
+ "mobile",
581
+ ]),
582
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
583
+ }, { required: ["q"] }),
584
+ output: s.looseObject("Google Local response.", {
585
+ local_results: s.nullable(s.array("local results value.", s.looseObject("local results value. item.", {}))),
586
+ pagination: s.nullable(s.looseObject("pagination value.", {})),
587
+ ads_results: s.nullable(s.array("ads results value.", s.looseObject("ads results value. item.", {}))),
588
+ discover_more_places: s.nullable(s.array("discover more places value.", s.looseObject("discover more places value. item.", {}))),
589
+ local_map: s.nullable(s.looseObject("local map value.", {})),
590
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
591
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
592
+ litescrape_pagination: s.nullable(s.looseObject("litescrape pagination value.", {})),
593
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
594
+ format: "uri",
595
+ }),
596
+ }),
597
+ },
598
+ {
599
+ name: "google_maps",
600
+ path: "/api/google/maps",
601
+ description: "Search Google Maps places, or get one place by ID.",
602
+ input: s.object("Google Maps parameters.", {
603
+ q: s.nullable(s.string("The business, category, address, or natural-language query to search. Required when type is search.\n\nExamples: coffee shops in Austin, dentist near Denver")),
604
+ ll: s.nullable(s.string("A complete viewport containing latitude, longitude, and either zoom or radius.\n\nFormat: @lat,lon,14z or @lat,lon,5000m")),
605
+ location: s.nullable(s.string("A named geographic location resolved by the API. Cannot be combined with ll or lat/lon.\n\nRequires z or m.")),
606
+ lat: s.anyOf("Latitude for a coordinate-based viewport. Must be supplied with lon and either z or m.", [
607
+ s.string("Latitude for a coordinate-based viewport. Must be supplied with lon and either z or m."),
608
+ s.number("Latitude for a coordinate-based viewport. Must be supplied with lon and either z or m."),
609
+ s.literal(null, {
610
+ description: "Latitude for a coordinate-based viewport. Must be supplied with lon and either z or m.",
611
+ }),
612
+ ]),
613
+ lon: s.anyOf("Longitude for a coordinate-based viewport. Must be supplied with lat and either z or m.", [
614
+ s.string("Longitude for a coordinate-based viewport. Must be supplied with lat and either z or m."),
615
+ s.number("Longitude for a coordinate-based viewport. Must be supplied with lat and either z or m."),
616
+ s.literal(null, {
617
+ description: "Longitude for a coordinate-based viewport. Must be supplied with lat and either z or m.",
618
+ }),
619
+ ]),
620
+ z: s.anyOf("Google Maps zoom level for location or lat/lon geography.\n\nAccepted range: 3 through 30. Cannot be combined with m.", [
621
+ s.string("Google Maps zoom level for location or lat/lon geography.\n\nAccepted range: 3 through 30. Cannot be combined with m."),
622
+ s.number("Google Maps zoom level for location or lat/lon geography.\n\nAccepted range: 3 through 30. Cannot be combined with m."),
623
+ s.literal(null, {
624
+ description: "Google Maps zoom level for location or lat/lon geography.\n\nAccepted range: 3 through 30. Cannot be combined with m.",
625
+ }),
626
+ ]),
627
+ m: s.anyOf("Search radius in meters for location or lat/lon geography.\n\nAccepted range: 1 through 15,028,132. Cannot be combined with z.", [
628
+ s.string("Search radius in meters for location or lat/lon geography.\n\nAccepted range: 1 through 15,028,132. Cannot be combined with z."),
629
+ s.integer("Search radius in meters for location or lat/lon geography.\n\nAccepted range: 1 through 15,028,132. Cannot be combined with z."),
630
+ s.literal(null, {
631
+ description: "Search radius in meters for location or lat/lon geography.\n\nAccepted range: 1 through 15,028,132. Cannot be combined with z.",
632
+ }),
633
+ ]),
634
+ nearby: s.nullable(s.boolean("Uses the supplied geography as a nearby-search scope.\n\nRequires ll, location, or a lat/lon pair.")),
635
+ data: s.nullable(s.string("A Google Maps protobuf parameter sequence for search filters or an exact place.\n\nMaximum length: 8,192 characters. Exact-place data requires type=place.")),
636
+ place_id: s.nullable(s.string("A Google place identifier used to resolve one exact place or request live foot traffic.\n\nCannot be combined with data_cid or exact-place data on the primary Maps endpoint. It is the only required parameter on /api/google/maps/popular-times. Every response is fetched live; places without published data return popular_times: null.")),
637
+ data_cid: s.anyOf("A decimal Google CID used to resolve one exact place.\n\nCannot be combined with place_id or exact-place data.", [
638
+ s.string("A decimal Google CID used to resolve one exact place.\n\nCannot be combined with place_id or exact-place data."),
639
+ s.integer("A decimal Google CID used to resolve one exact place.\n\nCannot be combined with place_id or exact-place data."),
640
+ s.literal(null, {
641
+ description: "A decimal Google CID used to resolve one exact place.\n\nCannot be combined with place_id or exact-place data.",
642
+ }),
643
+ ]),
644
+ type: s.nullable(s.withEnum(s.unknown("Chooses a result search or an exact place response. Required for query and filter searches.\n\nUse place when sending an exact-place data sequence."), ["search", "place"])),
645
+ hl: s.nullable(s.string("Language used for Google Maps labels and returned text.\n\nExamples: en, es, fr, de")),
646
+ gl: s.nullable(s.string("Two-letter country code used for regional result localization.\n\nExamples: us, gb, ca, au")),
647
+ google_domain: s.nullable(s.string("Validated Google domain used for the request.\n\nExamples: google.com, google.co.uk, google.ca")),
648
+ start: s.anyOf("Native Maps result offset: 0, 20, 40, and so on. Each request returns up to 20 places and each successful request costs one credit.\n\nUse pagination.next when it is present instead of constructing the next request manually.", [
649
+ s.string("Native Maps result offset: 0, 20, 40, and so on. Each request returns up to 20 places and each successful request costs one credit.\n\nUse pagination.next when it is present instead of constructing the next request manually."),
650
+ s.integer("Native Maps result offset: 0, 20, 40, and so on. Each request returns up to 20 places and each successful request costs one credit.\n\nUse pagination.next when it is present instead of constructing the next request manually."),
651
+ s.literal(null, {
652
+ description: "Native Maps result offset: 0, 20, 40, and so on. Each request returns up to 20 places and each successful request costs one credit.\n\nUse pagination.next when it is present instead of constructing the next request manually.",
653
+ }),
654
+ ]),
655
+ min_price: s.anyOf("Minimum price level for returned places.\n\nMust be non-negative and cannot exceed max_price.", [
656
+ s.string("Minimum price level for returned places.\n\nMust be non-negative and cannot exceed max_price."),
657
+ s.integer("Minimum price level for returned places.\n\nMust be non-negative and cannot exceed max_price."),
658
+ s.literal(null, {
659
+ description: "Minimum price level for returned places.\n\nMust be non-negative and cannot exceed max_price.",
660
+ }),
661
+ ]),
662
+ max_price: s.anyOf("Maximum price level for returned places.\n\nMust be non-negative and cannot be lower than min_price.", [
663
+ s.string("Maximum price level for returned places.\n\nMust be non-negative and cannot be lower than min_price."),
664
+ s.integer("Maximum price level for returned places.\n\nMust be non-negative and cannot be lower than min_price."),
665
+ s.literal(null, {
666
+ description: "Maximum price level for returned places.\n\nMust be non-negative and cannot be lower than min_price.",
667
+ }),
668
+ ]),
669
+ min_rating: s.anyOf("Preferred minimum Google rating.\n\nGoogle treats this as a relevance preference.", [
670
+ s.string("Preferred minimum Google rating.\n\nGoogle treats this as a relevance preference."),
671
+ s.number("Preferred minimum Google rating.\n\nGoogle treats this as a relevance preference."),
672
+ s.literal(null, {
673
+ description: "Preferred minimum Google rating.\n\nGoogle treats this as a relevance preference.",
674
+ }),
675
+ ]),
676
+ open_state: s.nullable(s.withEnum(s.unknown("Filters by the current open state.\n\nCannot be combined with open_on_day or open_at_hour."), ["now", "24h"])),
677
+ open_on_day: s.nullable(s.withEnum(s.unknown("Filters for places open on a specific day."), [
678
+ "mon",
679
+ "tue",
680
+ "wed",
681
+ "thu",
682
+ "fri",
683
+ "sat",
684
+ "sun",
685
+ ])),
686
+ open_at_hour: s.anyOf("Filters for places open at a specific hour using 24-hour time.\n\nAccepted range: 0 through 23. Requires open_on_day.", [
687
+ s.string("Filters for places open at a specific hour using 24-hour time.\n\nAccepted range: 0 through 23. Requires open_on_day."),
688
+ s.integer("Filters for places open at a specific hour using 24-hour time.\n\nAccepted range: 0 through 23. Requires open_on_day."),
689
+ s.literal(null, {
690
+ description: "Filters for places open at a specific hour using 24-hour time.\n\nAccepted range: 0 through 23. Requires open_on_day.",
691
+ }),
692
+ ]),
693
+ }, { required: [] }),
694
+ asyncInput: s.object("Google Maps asynchronous parameters.", {
695
+ q: s.string("The business, category, address, or natural-language query to search. Required when type is search.\n\nExamples: coffee shops in Austin, dentist near Denver"),
696
+ ll: s.string("A complete viewport containing latitude, longitude, and either zoom or radius.\n\nFormat: @lat,lon,14z or @lat,lon,5000m"),
697
+ location: s.string("A named geographic location resolved by the API. Cannot be combined with ll or lat/lon.\n\nRequires z or m."),
698
+ lat: s.anyOf("Latitude for a coordinate-based viewport. Must be supplied with lon and either z or m.", [
699
+ s.string("Latitude for a coordinate-based viewport. Must be supplied with lon and either z or m."),
700
+ s.number("Latitude for a coordinate-based viewport. Must be supplied with lon and either z or m."),
701
+ ]),
702
+ lon: s.anyOf("Longitude for a coordinate-based viewport. Must be supplied with lat and either z or m.", [
703
+ s.string("Longitude for a coordinate-based viewport. Must be supplied with lat and either z or m."),
704
+ s.number("Longitude for a coordinate-based viewport. Must be supplied with lat and either z or m."),
705
+ ]),
706
+ z: s.anyOf("Google Maps zoom level for location or lat/lon geography.\n\nAccepted range: 3 through 30. Cannot be combined with m.", [
707
+ s.string("Google Maps zoom level for location or lat/lon geography.\n\nAccepted range: 3 through 30. Cannot be combined with m."),
708
+ s.number("Google Maps zoom level for location or lat/lon geography.\n\nAccepted range: 3 through 30. Cannot be combined with m."),
709
+ ]),
710
+ m: s.anyOf("Search radius in meters for location or lat/lon geography.\n\nAccepted range: 1 through 15,028,132. Cannot be combined with z.", [
711
+ s.string("Search radius in meters for location or lat/lon geography.\n\nAccepted range: 1 through 15,028,132. Cannot be combined with z."),
712
+ s.integer("Search radius in meters for location or lat/lon geography.\n\nAccepted range: 1 through 15,028,132. Cannot be combined with z."),
713
+ ]),
714
+ nearby: s.boolean("Uses the supplied geography as a nearby-search scope.\n\nRequires ll, location, or a lat/lon pair."),
715
+ data: s.string("A Google Maps protobuf parameter sequence for search filters or an exact place.\n\nMaximum length: 8,192 characters. Exact-place data requires type=place."),
716
+ place_id: s.string("A Google place identifier used to resolve one exact place or request live foot traffic.\n\nCannot be combined with data_cid or exact-place data on the primary Maps endpoint. It is the only required parameter on /api/google/maps/popular-times. Every response is fetched live; places without published data return popular_times: null."),
717
+ data_cid: s.anyOf("A decimal Google CID used to resolve one exact place.\n\nCannot be combined with place_id or exact-place data.", [
718
+ s.string("A decimal Google CID used to resolve one exact place.\n\nCannot be combined with place_id or exact-place data."),
719
+ s.integer("A decimal Google CID used to resolve one exact place.\n\nCannot be combined with place_id or exact-place data."),
720
+ ]),
721
+ type: s.withEnum(s.unknown("Chooses a result search or an exact place response. Required for query and filter searches.\n\nUse place when sending an exact-place data sequence."), ["search", "place"]),
722
+ hl: s.string("Language used for Google Maps labels and returned text.\n\nExamples: en, es, fr, de"),
723
+ gl: s.string("Two-letter country code used for regional result localization.\n\nExamples: us, gb, ca, au"),
724
+ google_domain: s.string("Validated Google domain used for the request.\n\nExamples: google.com, google.co.uk, google.ca"),
725
+ start: s.anyOf("Native Maps result offset: 0, 20, 40, and so on. Each request returns up to 20 places and each successful request costs one credit.\n\nUse pagination.next when it is present instead of constructing the next request manually.", [
726
+ s.string("Native Maps result offset: 0, 20, 40, and so on. Each request returns up to 20 places and each successful request costs one credit.\n\nUse pagination.next when it is present instead of constructing the next request manually."),
727
+ s.integer("Native Maps result offset: 0, 20, 40, and so on. Each request returns up to 20 places and each successful request costs one credit.\n\nUse pagination.next when it is present instead of constructing the next request manually."),
728
+ ]),
729
+ min_price: s.anyOf("Minimum price level for returned places.\n\nMust be non-negative and cannot exceed max_price.", [
730
+ s.string("Minimum price level for returned places.\n\nMust be non-negative and cannot exceed max_price."),
731
+ s.integer("Minimum price level for returned places.\n\nMust be non-negative and cannot exceed max_price."),
732
+ ]),
733
+ max_price: s.anyOf("Maximum price level for returned places.\n\nMust be non-negative and cannot be lower than min_price.", [
734
+ s.string("Maximum price level for returned places.\n\nMust be non-negative and cannot be lower than min_price."),
735
+ s.integer("Maximum price level for returned places.\n\nMust be non-negative and cannot be lower than min_price."),
736
+ ]),
737
+ min_rating: s.anyOf("Preferred minimum Google rating.\n\nGoogle treats this as a relevance preference.", [
738
+ s.string("Preferred minimum Google rating.\n\nGoogle treats this as a relevance preference."),
739
+ s.number("Preferred minimum Google rating.\n\nGoogle treats this as a relevance preference."),
740
+ ]),
741
+ open_state: s.withEnum(s.unknown("Filters by the current open state.\n\nCannot be combined with open_on_day or open_at_hour."), ["now", "24h"]),
742
+ open_on_day: s.withEnum(s.unknown("Filters for places open on a specific day."), [
743
+ "mon",
744
+ "tue",
745
+ "wed",
746
+ "thu",
747
+ "fri",
748
+ "sat",
749
+ "sun",
750
+ ]),
751
+ open_at_hour: s.anyOf("Filters for places open at a specific hour using 24-hour time.\n\nAccepted range: 0 through 23. Requires open_on_day.", [
752
+ s.string("Filters for places open at a specific hour using 24-hour time.\n\nAccepted range: 0 through 23. Requires open_on_day."),
753
+ s.integer("Filters for places open at a specific hour using 24-hour time.\n\nAccepted range: 0 through 23. Requires open_on_day."),
754
+ ]),
755
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
756
+ }, { required: [] }),
757
+ output: s.looseObject("Google Maps response.", {
758
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
759
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
760
+ search_information: s.nullable(s.looseObject("search information value.", {})),
761
+ local_results: s.nullable(s.array("local results value.", s.looseObject("local results value. item.", {}))),
762
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
763
+ format: "uri",
764
+ }),
765
+ }),
766
+ },
767
+ {
768
+ name: "google_maps_photo_meta",
769
+ path: "/api/google/maps/photo-meta",
770
+ description: "Get the place, contributor, and date of a Maps photo.",
771
+ input: s.object("Google Maps Photo Metadata parameters.", {
772
+ data_id: s.string("Required Google Maps photo ID. Follow photo_meta_link from a Maps place response."),
773
+ hl: s.nullable(s.string("Google interface and result language.")),
774
+ gl: s.nullable(s.string("Two-letter country localization code.")),
775
+ google_domain: s.nullable(s.string("A Google domain such as google.com or google.co.uk.")),
776
+ }, { required: ["data_id"] }),
777
+ asyncInput: s.object("Google Maps Photo Metadata asynchronous parameters.", {
778
+ data_id: s.string("Required Google Maps photo ID. Follow photo_meta_link from a Maps place response."),
779
+ hl: s.string("Google interface and result language."),
780
+ gl: s.string("Two-letter country localization code."),
781
+ google_domain: s.string("A Google domain such as google.com or google.co.uk."),
782
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
783
+ }, { required: ["data_id"] }),
784
+ output: s.looseObject("Google Maps Photo Metadata response.", {
785
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
786
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
787
+ user: s.nullable(s.looseObject("user value.", {})),
788
+ location: s.nullable(s.looseObject("location value.", {})),
789
+ date: s.nullable(s.string("date value.")),
790
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
791
+ format: "uri",
792
+ }),
793
+ }),
794
+ },
795
+ {
796
+ name: "google_maps_popular_times",
797
+ path: "/api/google/maps/popular-times",
798
+ description: "See how busy a place is right now.",
799
+ input: s.object("Google Maps Popular Times parameters.", {
800
+ place_id: s.string("Required Google Place ID. Every response is fetched live."),
801
+ hl: s.nullable(s.string("Google interface and result language.")),
802
+ gl: s.nullable(s.string("Two-letter country localization code.")),
803
+ google_domain: s.nullable(s.string("A Google domain such as google.com or google.co.uk.")),
804
+ }, { required: ["place_id"] }),
805
+ asyncInput: s.object("Google Maps Popular Times asynchronous parameters.", {
806
+ place_id: s.string("Required Google Place ID. Every response is fetched live."),
807
+ hl: s.string("Google interface and result language."),
808
+ gl: s.string("Two-letter country localization code."),
809
+ google_domain: s.string("A Google domain such as google.com or google.co.uk."),
810
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
811
+ }, { required: ["place_id"] }),
812
+ output: s.looseObject("Google Maps Popular Times response.", {
813
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
814
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
815
+ place: s.nullable(s.looseObject("place value.", {})),
816
+ popular_times: s.nullable(s.looseObject("popular times value.", {})),
817
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
818
+ format: "uri",
819
+ }),
820
+ }),
821
+ },
822
+ {
823
+ name: "google_maps_posts",
824
+ path: "/api/google/maps/posts",
825
+ description: "Read the posts published by a business.",
826
+ input: s.object("Google Maps Posts parameters.", {
827
+ data_id: s.string("Required hexadecimal Maps feature ID. Follow posts_link from a Maps place response."),
828
+ hl: s.nullable(s.string("Google interface and result language.")),
829
+ gl: s.nullable(s.string("Two-letter country localization code.")),
830
+ google_domain: s.nullable(s.string("A Google domain such as google.com or google.co.uk.")),
831
+ next_page_token: s.nullable(s.string("Continue a posts response with its opaque token.")),
832
+ }, { required: ["data_id"] }),
833
+ asyncInput: s.object("Google Maps Posts asynchronous parameters.", {
834
+ data_id: s.string("Required hexadecimal Maps feature ID. Follow posts_link from a Maps place response."),
835
+ hl: s.string("Google interface and result language."),
836
+ gl: s.string("Two-letter country localization code."),
837
+ google_domain: s.string("A Google domain such as google.com or google.co.uk."),
838
+ next_page_token: s.string("Continue a posts response with its opaque token."),
839
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
840
+ }, { required: ["data_id"] }),
841
+ output: s.looseObject("Google Maps Posts response.", {
842
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
843
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
844
+ posts: s.nullable(s.array("posts value.", s.looseObject("posts value. item.", {}))),
845
+ pagination: s.nullable(s.looseObject("pagination value.", {})),
846
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
847
+ format: "uri",
848
+ }),
849
+ }),
850
+ },
851
+ {
852
+ name: "google_play_apps",
853
+ path: "/api/google/play/apps",
854
+ description: "Search and browse Google Play apps.",
855
+ input: s.object("Google Play Apps parameters.", {
856
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
857
+ maxLength: 32,
858
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
859
+ }),
860
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
861
+ q: s.nullable(s.string("Optional query with 1 to 2,048 UTF-8 bytes of printable text. Excludes category. Omit it to browse the storefront. On the games endpoint, q uses shared Android app search; omit q or choose games_category to browse games.", { minLength: 1, maxLength: 2048 })),
862
+ chart: s.nullable(s.string("Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" })),
863
+ next_page_token: s.nullable(s.string("Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
864
+ section_page_token: s.nullable(s.string("Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
865
+ see_more_token: s.nullable(s.string("Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
866
+ apps_category: s.nullable(s.string("Native app category identifier, such as MEDICAL. Excludes q and an explicit store_device.", {
867
+ minLength: 1,
868
+ maxLength: 128,
869
+ pattern: "^[a-zA-Z0-9_-]+$",
870
+ })),
871
+ store_device: s.nullable(s.withEnum(s.unknown("Omit for the default phone storefront. An explicit selection excludes q and category."), ["phone", "tablet", "tv", "chromebook", "watch", "car"])),
872
+ age: s.nullable(s.withEnum(s.unknown("Children's age range. Requires apps_category=FAMILY."), [
873
+ "AGE_RANGE1",
874
+ "AGE_RANGE2",
875
+ "AGE_RANGE3",
876
+ ])),
877
+ }, { required: [] }),
878
+ asyncInput: s.object("Google Play Apps asynchronous parameters.", {
879
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
880
+ maxLength: 32,
881
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
882
+ }),
883
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
884
+ q: s.string("Optional query with 1 to 2,048 UTF-8 bytes of printable text. Excludes category. Omit it to browse the storefront. On the games endpoint, q uses shared Android app search; omit q or choose games_category to browse games.", { minLength: 1, maxLength: 2048 }),
885
+ chart: s.string("Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }),
886
+ next_page_token: s.string("Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
887
+ section_page_token: s.string("Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
888
+ see_more_token: s.string("Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
889
+ apps_category: s.string("Native app category identifier, such as MEDICAL. Excludes q and an explicit store_device.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }),
890
+ store_device: s.withEnum(s.unknown("Omit for the default phone storefront. An explicit selection excludes q and category."), ["phone", "tablet", "tv", "chromebook", "watch", "car"]),
891
+ age: s.withEnum(s.unknown("Children's age range. Requires apps_category=FAMILY."), [
892
+ "AGE_RANGE1",
893
+ "AGE_RANGE2",
894
+ "AGE_RANGE3",
895
+ ]),
896
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
897
+ }, { required: [] }),
898
+ output: s.looseObject("Google Play Apps response.", {
899
+ organic_results: s.nullable(s.array("organic results value.", s.looseObject("organic results value. item.", {}))),
900
+ _page_token: s.nullable(s.string(" page token value.")),
901
+ charts: s.nullable(s.array("charts value.", s.looseObject("charts value. item.", {}))),
902
+ items_highlight: s.nullable(s.array("items highlight value.", s.array("items highlight value. item.", s.looseObject("items highlight value. item. item.", {})))),
903
+ app_highlight: s.nullable(s.looseObject("app highlight value.", {})),
904
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
905
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
906
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
907
+ format: "uri",
908
+ }),
909
+ }),
910
+ },
911
+ {
912
+ name: "google_play_books",
913
+ path: "/api/google/play/books",
914
+ description: "Search and browse Google Play ebooks and audiobooks.",
915
+ input: s.object("Google Play Books parameters.", {
916
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
917
+ maxLength: 32,
918
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
919
+ }),
920
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
921
+ q: s.nullable(s.string("Optional query with 1 to 2,048 UTF-8 bytes of printable text. Excludes category. Omit it to browse the storefront. On the games endpoint, q uses shared Android app search; omit q or choose games_category to browse games.", { minLength: 1, maxLength: 2048 })),
922
+ chart: s.nullable(s.string("Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" })),
923
+ next_page_token: s.nullable(s.string("Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
924
+ section_page_token: s.nullable(s.string("Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
925
+ see_more_token: s.nullable(s.string("Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
926
+ books_category: s.nullable(s.string("Native book category identifier, such as coll_1689 for children's books. Excludes q.", {
927
+ minLength: 1,
928
+ maxLength: 128,
929
+ pattern: "^[a-zA-Z0-9_-]+$",
930
+ })),
931
+ age: s.nullable(s.withEnum(s.unknown("Children's age range. Requires books_category=coll_1689."), [
932
+ "AGE_RANGE1",
933
+ "AGE_RANGE2",
934
+ "AGE_RANGE3",
935
+ ])),
936
+ price: s.nullable(s.integer("1 for free books or 2 for paid books. Requires q.", {
937
+ minimum: 1,
938
+ maximum: 2,
939
+ })),
940
+ }, { required: [] }),
941
+ asyncInput: s.object("Google Play Books asynchronous parameters.", {
942
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
943
+ maxLength: 32,
944
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
945
+ }),
946
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
947
+ q: s.string("Optional query with 1 to 2,048 UTF-8 bytes of printable text. Excludes category. Omit it to browse the storefront. On the games endpoint, q uses shared Android app search; omit q or choose games_category to browse games.", { minLength: 1, maxLength: 2048 }),
948
+ chart: s.string("Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }),
949
+ next_page_token: s.string("Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
950
+ section_page_token: s.string("Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
951
+ see_more_token: s.string("Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
952
+ books_category: s.string("Native book category identifier, such as coll_1689 for children's books. Excludes q.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }),
953
+ age: s.withEnum(s.unknown("Children's age range. Requires books_category=coll_1689."), [
954
+ "AGE_RANGE1",
955
+ "AGE_RANGE2",
956
+ "AGE_RANGE3",
957
+ ]),
958
+ price: s.integer("1 for free books or 2 for paid books. Requires q.", {
959
+ minimum: 1,
960
+ maximum: 2,
961
+ }),
962
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
963
+ }, { required: [] }),
964
+ output: s.looseObject("Google Play Books response.", {
965
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
966
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
967
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
968
+ format: "uri",
969
+ }),
970
+ }),
971
+ },
972
+ {
973
+ name: "google_play_games",
974
+ path: "/api/google/play/games",
975
+ description: "Browse Google Play games by category and chart.",
976
+ input: s.object("Google Play Games parameters.", {
977
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
978
+ maxLength: 32,
979
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
980
+ }),
981
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
982
+ q: s.nullable(s.string("Optional query with 1 to 2,048 UTF-8 bytes of printable text. Excludes category. Omit it to browse the storefront. On the games endpoint, q uses shared Android app search; omit q or choose games_category to browse games.", { minLength: 1, maxLength: 2048 })),
983
+ chart: s.nullable(s.string("Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" })),
984
+ next_page_token: s.nullable(s.string("Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
985
+ section_page_token: s.nullable(s.string("Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
986
+ see_more_token: s.nullable(s.string("Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
987
+ games_category: s.nullable(s.string("Native game category identifier, such as GAME_PUZZLE. Excludes q and an explicit store_device.", {
988
+ minLength: 1,
989
+ maxLength: 128,
990
+ pattern: "^[a-zA-Z0-9_-]+$",
991
+ })),
992
+ store_device: s.nullable(s.withEnum(s.unknown("Omit for the default phone storefront. An explicit selection excludes q and category."), ["phone", "tablet", "tv", "chromebook", "watch", "windows"])),
993
+ }, { required: [] }),
994
+ asyncInput: s.object("Google Play Games asynchronous parameters.", {
995
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
996
+ maxLength: 32,
997
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
998
+ }),
999
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
1000
+ q: s.string("Optional query with 1 to 2,048 UTF-8 bytes of printable text. Excludes category. Omit it to browse the storefront. On the games endpoint, q uses shared Android app search; omit q or choose games_category to browse games.", { minLength: 1, maxLength: 2048 }),
1001
+ chart: s.string("Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }),
1002
+ next_page_token: s.string("Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
1003
+ section_page_token: s.string("Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
1004
+ see_more_token: s.string("Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
1005
+ games_category: s.string("Native game category identifier, such as GAME_PUZZLE. Excludes q and an explicit store_device.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }),
1006
+ store_device: s.withEnum(s.unknown("Omit for the default phone storefront. An explicit selection excludes q and category."), ["phone", "tablet", "tv", "chromebook", "watch", "windows"]),
1007
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
1008
+ }, { required: [] }),
1009
+ output: s.looseObject("Google Play Games response.", {
1010
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
1011
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
1012
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
1013
+ format: "uri",
1014
+ }),
1015
+ }),
1016
+ },
1017
+ {
1018
+ name: "google_play_movies",
1019
+ path: "/api/google/play/movies",
1020
+ description: "Search and browse Google Play movies and TV shows.",
1021
+ input: s.object("Google Play Movies parameters.", {
1022
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
1023
+ maxLength: 32,
1024
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
1025
+ }),
1026
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
1027
+ q: s.nullable(s.string("Optional query with 1 to 2,048 UTF-8 bytes of printable text. Excludes category. Omit it to browse the storefront. On the games endpoint, q uses shared Android app search; omit q or choose games_category to browse games.", { minLength: 1, maxLength: 2048 })),
1028
+ chart: s.nullable(s.string("Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" })),
1029
+ next_page_token: s.nullable(s.string("Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
1030
+ section_page_token: s.nullable(s.string("Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
1031
+ see_more_token: s.nullable(s.string("Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
1032
+ movies_category: s.nullable(s.string("Native movie category identifier, such as FAMILY for family movies. Excludes q.", {
1033
+ minLength: 1,
1034
+ maxLength: 128,
1035
+ pattern: "^[a-zA-Z0-9_-]+$",
1036
+ })),
1037
+ age: s.nullable(s.withEnum(s.unknown("Children's age range. Requires movies_category=FAMILY."), [
1038
+ "AGE_RANGE1",
1039
+ "AGE_RANGE2",
1040
+ "AGE_RANGE3",
1041
+ ])),
1042
+ }, { required: [] }),
1043
+ asyncInput: s.object("Google Play Movies asynchronous parameters.", {
1044
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
1045
+ maxLength: 32,
1046
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
1047
+ }),
1048
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
1049
+ q: s.string("Optional query with 1 to 2,048 UTF-8 bytes of printable text. Excludes category. Omit it to browse the storefront. On the games endpoint, q uses shared Android app search; omit q or choose games_category to browse games.", { minLength: 1, maxLength: 2048 }),
1050
+ chart: s.string("Chart identifier such as topselling_free, topselling_paid, or topgrossing. Excludes q and all pagination selectors. Apps and games charts require phone or an omitted store_device.", { minLength: 1, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }),
1051
+ next_page_token: s.string("Use the returned next_page_token with the same parameters. Excludes chart, section_page_token, and see_more_token.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
1052
+ section_page_token: s.string("Continue one result group using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
1053
+ see_more_token: s.string("Open a result collection using its returned token and the same parameters. Excludes the other pagination selectors and chart.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
1054
+ movies_category: s.string("Native movie category identifier, such as FAMILY for family movies. Excludes q.", {
1055
+ minLength: 1,
1056
+ maxLength: 128,
1057
+ pattern: "^[a-zA-Z0-9_-]+$",
1058
+ }),
1059
+ age: s.withEnum(s.unknown("Children's age range. Requires movies_category=FAMILY."), [
1060
+ "AGE_RANGE1",
1061
+ "AGE_RANGE2",
1062
+ "AGE_RANGE3",
1063
+ ]),
1064
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
1065
+ }, { required: [] }),
1066
+ output: s.looseObject("Google Play Movies response.", {
1067
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
1068
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
1069
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
1070
+ format: "uri",
1071
+ }),
1072
+ }),
1073
+ },
1074
+ {
1075
+ name: "google_play_product",
1076
+ path: "/api/google/play/product",
1077
+ description: "Get a Google Play app, book, movie or show by ID.",
1078
+ input: s.object("Google Play Product parameters.", {
1079
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
1080
+ maxLength: 32,
1081
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
1082
+ }),
1083
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
1084
+ product_id: s.string("Native Google Play product identifier, with 1 to 512 letters, digits, underscores, dots, or hyphens.", { minLength: 1, maxLength: 512, pattern: "^[a-zA-Z0-9_.-]+$" }),
1085
+ store: s.withEnum(s.unknown("Product catalog containing this identifier."), [
1086
+ "apps",
1087
+ "books",
1088
+ "audiobooks",
1089
+ "movies",
1090
+ "tv",
1091
+ ]),
1092
+ season_id: s.nullable(s.string("Native season identifier, such as tvseason-OVPad1njPzI.P. Requires store=tv.", {
1093
+ minLength: 1,
1094
+ maxLength: 512,
1095
+ pattern: "^[a-zA-Z0-9_.-]+$",
1096
+ })),
1097
+ }, { required: ["product_id"] }),
1098
+ asyncInput: s.object("Google Play Product asynchronous parameters.", {
1099
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
1100
+ maxLength: 32,
1101
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
1102
+ }),
1103
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
1104
+ product_id: s.string("Native Google Play product identifier, with 1 to 512 letters, digits, underscores, dots, or hyphens.", { minLength: 1, maxLength: 512, pattern: "^[a-zA-Z0-9_.-]+$" }),
1105
+ store: s.withEnum(s.unknown("Product catalog containing this identifier."), [
1106
+ "apps",
1107
+ "books",
1108
+ "audiobooks",
1109
+ "movies",
1110
+ "tv",
1111
+ ]),
1112
+ season_id: s.string("Native season identifier, such as tvseason-OVPad1njPzI.P. Requires store=tv.", {
1113
+ minLength: 1,
1114
+ maxLength: 512,
1115
+ pattern: "^[a-zA-Z0-9_.-]+$",
1116
+ }),
1117
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
1118
+ }, { required: ["product_id"] }),
1119
+ output: s.looseObject("Google Play Product response.", {
1120
+ about_this_app: s.nullable(s.looseObject("about this app value.", {})),
1121
+ badges: s.nullable(s.array("badges value.", s.looseObject("badges value. item.", {}))),
1122
+ categories: s.nullable(s.array("categories value.", s.looseObject("categories value. item.", {}))),
1123
+ data_safety: s.nullable(s.array("data safety value.", s.looseObject("data safety value. item.", {}))),
1124
+ developer_contact: s.nullable(s.looseObject("developer contact value.", {})),
1125
+ media: s.nullable(s.looseObject("media value.", {})),
1126
+ permissions: s.nullable(s.array("permissions value.", s.looseObject("permissions value. item.", {}))),
1127
+ product_info: s.nullable(s.looseObject("product info value.", {})),
1128
+ ratings: s.nullable(s.array("ratings value.", s.looseObject("ratings value. item.", {}))),
1129
+ released_on: s.nullable(s.string("released on value.")),
1130
+ reviews: s.nullable(s.array("reviews value.", s.looseObject("reviews value. item.", {}))),
1131
+ similar_results: s.nullable(s.array("similar results value.", s.looseObject("similar results value. item.", {}))),
1132
+ updated_on: s.nullable(s.string("updated on value.")),
1133
+ what_s_new: s.nullable(s.looseObject("what s new value.", {})),
1134
+ about_the_author: s.nullable(s.looseObject("about the author value.", {})),
1135
+ about_this_audiobook: s.nullable(s.looseObject("about this audiobook value.", {})),
1136
+ information: s.nullable(s.array("information value.", s.looseObject("information value. item.", {}))),
1137
+ listening_information: s.nullable(s.array("listening information value.", s.looseObject("listening information value. item.", {}))),
1138
+ about_this_ebook: s.nullable(s.looseObject("about this ebook value.", {})),
1139
+ reading_information: s.nullable(s.array("reading information value.", s.looseObject("reading information value. item.", {}))),
1140
+ about_this_movie: s.nullable(s.looseObject("about this movie value.", {})),
1141
+ cast: s.nullable(s.array("cast value.", s.looseObject("cast value. item.", {}))),
1142
+ directors: s.nullable(s.array("directors value.", s.looseObject("directors value. item.", {}))),
1143
+ producers: s.nullable(s.array("producers value.", s.looseObject("producers value. item.", {}))),
1144
+ writers: s.nullable(s.array("writers value.", s.looseObject("writers value. item.", {}))),
1145
+ about_this_show: s.nullable(s.looseObject("about this show value.", {})),
1146
+ episodes: s.nullable(s.looseObject("episodes value.", {})),
1147
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
1148
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
1149
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
1150
+ format: "uri",
1151
+ }),
1152
+ }),
1153
+ },
1154
+ {
1155
+ name: "google_play_reviews",
1156
+ path: "/api/google/play/reviews",
1157
+ description: "Get reviews for a Google Play app.",
1158
+ input: s.object("Google Play Reviews parameters.", {
1159
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
1160
+ maxLength: 32,
1161
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
1162
+ }),
1163
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
1164
+ product_id: s.string("Native Google Play product identifier, with 1 to 512 letters, digits, underscores, dots, or hyphens.", { minLength: 1, maxLength: 512, pattern: "^[a-zA-Z0-9_.-]+$" }),
1165
+ store: s.withEnum(s.unknown("Product catalog containing this identifier."), [
1166
+ "apps",
1167
+ "books",
1168
+ "audiobooks",
1169
+ "movies",
1170
+ "tv",
1171
+ ]),
1172
+ platform: s.withEnum(s.unknown("Platform associated with the reviews."), [
1173
+ "phone",
1174
+ "tablet",
1175
+ "watch",
1176
+ "chromebook",
1177
+ "tv",
1178
+ ]),
1179
+ rating: s.nullable(s.integer("Only reviews with this rating, from 1 through 5.", { minimum: 1, maximum: 5 })),
1180
+ sort_by: s.integer("1 for relevant, 2 for newest, or 3 for rating.", {
1181
+ minimum: 1,
1182
+ maximum: 3,
1183
+ }),
1184
+ num: s.integer("Number of reviews, from 1 through 199.", { minimum: 1, maximum: 199 }),
1185
+ next_page_token: s.nullable(s.string("Returned review continuation. Preserve product, store, language, country, platform, rating, sort order, and count.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" })),
1186
+ }, { required: ["product_id"] }),
1187
+ asyncInput: s.object("Google Play Reviews asynchronous parameters.", {
1188
+ hl: s.string("Storefront language, such as en, de, or zh-TW. Maximum 32 characters.", {
1189
+ maxLength: 32,
1190
+ pattern: "^[a-zA-Z]{2,3}(?:[-_][a-zA-Z0-9]{2,8}){0,3}$",
1191
+ }),
1192
+ gl: s.string("Two-letter country code.", { pattern: "^[a-zA-Z]{2}$" }),
1193
+ product_id: s.string("Native Google Play product identifier, with 1 to 512 letters, digits, underscores, dots, or hyphens.", { minLength: 1, maxLength: 512, pattern: "^[a-zA-Z0-9_.-]+$" }),
1194
+ store: s.withEnum(s.unknown("Product catalog containing this identifier."), [
1195
+ "apps",
1196
+ "books",
1197
+ "audiobooks",
1198
+ "movies",
1199
+ "tv",
1200
+ ]),
1201
+ platform: s.withEnum(s.unknown("Platform associated with the reviews."), [
1202
+ "phone",
1203
+ "tablet",
1204
+ "watch",
1205
+ "chromebook",
1206
+ "tv",
1207
+ ]),
1208
+ rating: s.integer("Only reviews with this rating, from 1 through 5.", {
1209
+ minimum: 1,
1210
+ maximum: 5,
1211
+ }),
1212
+ sort_by: s.integer("1 for relevant, 2 for newest, or 3 for rating.", {
1213
+ minimum: 1,
1214
+ maximum: 3,
1215
+ }),
1216
+ num: s.integer("Number of reviews, from 1 through 199.", { minimum: 1, maximum: 199 }),
1217
+ next_page_token: s.string("Returned review continuation. Preserve product, store, language, country, platform, rating, sort order, and count.", { minLength: 1, maxLength: 65536, pattern: "^[a-zA-Z0-9_=+/:.-]+$" }),
1218
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
1219
+ }, { required: ["product_id"] }),
1220
+ output: s.looseObject("Google Play Reviews response.", {
1221
+ reviews: s.nullable(s.array("reviews value.", s.looseObject("reviews value. item.", {}))),
1222
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
1223
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
1224
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
1225
+ format: "uri",
1226
+ }),
1227
+ }),
1228
+ },
1229
+ {
1230
+ name: "google_reviews",
1231
+ path: "/api/google/reviews",
1232
+ description: "Get reviews for a Google Maps place.",
1233
+ input: s.object("Google Maps Reviews parameters.", {
1234
+ data_id: s.nullable(s.string("Hexadecimal Google Maps feature identifier.\n\nFormat: 0x123:0x456 Exactly one of data_id or place_id is required.")),
1235
+ place_id: s.nullable(s.string("Google place identifier for the business whose reviews should be returned.\n\nExactly one of place_id or data_id is required.")),
1236
+ hl: s.nullable(s.string("Language used for returned review labels and place context.")),
1237
+ gl: s.nullable(s.string("Lowercase two-letter country code used for regional localization.")),
1238
+ sort_by: s.nullable(s.withEnum(s.unknown("Controls the order of returned reviews."), [
1239
+ "qualityScore",
1240
+ "newestFirst",
1241
+ "ratingHigh",
1242
+ "ratingLow",
1243
+ ])),
1244
+ topic_id: s.nullable(s.string("Returns reviews associated with a topic ID from the topics response group.\n\nCannot be combined with query.")),
1245
+ query: s.nullable(s.string("Returns reviews matching a free-text query.\n\nCannot be combined with topic_id.")),
1246
+ num: s.anyOf("Requested number of unique reviews to return.\n\nInitial unfiltered requests accept 1 through 100; the default remains eight. Requests return one response with up to the requested number of available reviews. Filtered and continuation requests accept 1 through 20.", [
1247
+ s.integer("Requested number of unique reviews to return.\n\nInitial unfiltered requests accept 1 through 100; the default remains eight. Requests return one response with up to the requested number of available reviews. Filtered and continuation requests accept 1 through 20."),
1248
+ s.string("Requested number of unique reviews to return.\n\nInitial unfiltered requests accept 1 through 100; the default remains eight. Requests return one response with up to the requested number of available reviews. Filtered and continuation requests accept 1 through 20."),
1249
+ s.literal(null, {
1250
+ description: "Requested number of unique reviews to return.\n\nInitial unfiltered requests accept 1 through 100; the default remains eight. Requests return one response with up to the requested number of available reviews. Filtered and continuation requests accept 1 through 20.",
1251
+ }),
1252
+ ]),
1253
+ next_page_token: s.nullable(s.string("Opaque continuation token from pagination.next_page_token.\n\nPass the token back unchanged. Continuation requests default to ten reviews unless num is provided.")),
1254
+ source_metadata: s.anyOf("Includes additional review-provider icon and scale metadata when available.", [
1255
+ s.string("Includes additional review-provider icon and scale metadata when available."),
1256
+ s.boolean("Includes additional review-provider icon and scale metadata when available."),
1257
+ s.literal(null, {
1258
+ description: "Includes additional review-provider icon and scale metadata when available.",
1259
+ }),
1260
+ ]),
1261
+ }, { required: [] }),
1262
+ asyncInput: s.object("Google Maps Reviews asynchronous parameters.", {
1263
+ data_id: s.string("Hexadecimal Google Maps feature identifier.\n\nFormat: 0x123:0x456 Exactly one of data_id or place_id is required."),
1264
+ place_id: s.string("Google place identifier for the business whose reviews should be returned.\n\nExactly one of place_id or data_id is required."),
1265
+ hl: s.string("Language used for returned review labels and place context."),
1266
+ gl: s.string("Lowercase two-letter country code used for regional localization."),
1267
+ sort_by: s.withEnum(s.unknown("Controls the order of returned reviews."), [
1268
+ "qualityScore",
1269
+ "newestFirst",
1270
+ "ratingHigh",
1271
+ "ratingLow",
1272
+ ]),
1273
+ topic_id: s.string("Returns reviews associated with a topic ID from the topics response group.\n\nCannot be combined with query."),
1274
+ query: s.string("Returns reviews matching a free-text query.\n\nCannot be combined with topic_id."),
1275
+ num: s.anyOf("Requested number of unique reviews to return.\n\nInitial unfiltered requests accept 1 through 100; the default remains eight. Requests return one response with up to the requested number of available reviews. Filtered and continuation requests accept 1 through 20.", [
1276
+ s.integer("Requested number of unique reviews to return.\n\nInitial unfiltered requests accept 1 through 100; the default remains eight. Requests return one response with up to the requested number of available reviews. Filtered and continuation requests accept 1 through 20."),
1277
+ s.string("Requested number of unique reviews to return.\n\nInitial unfiltered requests accept 1 through 100; the default remains eight. Requests return one response with up to the requested number of available reviews. Filtered and continuation requests accept 1 through 20."),
1278
+ ]),
1279
+ next_page_token: s.string("Opaque continuation token from pagination.next_page_token.\n\nPass the token back unchanged. Continuation requests default to ten reviews unless num is provided."),
1280
+ source_metadata: s.anyOf("Includes additional review-provider icon and scale metadata when available.", [
1281
+ s.string("Includes additional review-provider icon and scale metadata when available."),
1282
+ s.boolean("Includes additional review-provider icon and scale metadata when available."),
1283
+ ]),
1284
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
1285
+ }, { required: [] }),
1286
+ output: s.looseObject("Google Maps Reviews response.", {
1287
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
1288
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
1289
+ place_info: s.nullable(s.looseObject("place info value.", {})),
1290
+ reviews: s.nullable(s.array("reviews value.", s.looseObject("reviews value. item.", {}))),
1291
+ topics: s.nullable(s.array("topics value.", s.looseObject("topics value. item.", {}))),
1292
+ source_summaries: s.nullable(s.array("source summaries value.", s.looseObject("source summaries value. item.", {}))),
1293
+ pagination: s.nullable(s.looseObject("pagination value.", {})),
1294
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
1295
+ format: "uri",
1296
+ }),
1297
+ }),
1298
+ },
1299
+ {
1300
+ name: "google_search",
1301
+ path: "/api/google/search",
1302
+ description: "Get Google search results, including the AI Overview and People also ask.",
1303
+ input: s.object("Google Search parameters.", {
1304
+ page_token: s.nullable(s.string("Opaque token from pagination.next_page_token. Send it alone to fetch the next page with the original search parameters.\n\nPrefer page_token to repeating the same search with start=10, start=20, or another offset. Send the token as soon as possible and no later than 5 minutes after receiving it. Available for ordinary Google Search, including fast mode; not available for tbm verticals. search_metadata.continuation is followed for a direct request. If Google omits a required link or the deadline expires, the request fails without billing.", { maxLength: 32768 })),
1305
+ q: s.nullable(s.string("Google Search query, up to 2,048 characters.\n\nRequired unless ludocid, kgmid, or page_token is supplied.", { maxLength: 2048 })),
1306
+ fast_mode: s.boolean("Return organic results only, skipping AI Overview and all other result groups.\n\nKeeps search metadata and parameters. Omits cross-module position_absolute."),
1307
+ location: s.nullable(s.string("Human-readable city-level location encoded to UULE by Litescrape.\n\nConflicts with uule and lat/lon.", { maxLength: 512 })),
1308
+ uule: s.nullable(s.string("Pre-encoded Google location value.\n\nConflicts with location and lat/lon.", {
1309
+ maxLength: 2048,
1310
+ })),
1311
+ lat: s.nullable(s.number("Latitude from -90 through 90.\n\nRequires lon and conflicts with location and uule.", {
1312
+ minimum: -90,
1313
+ maximum: 90,
1314
+ })),
1315
+ lon: s.nullable(s.number("Longitude from -180 through 180.\n\nRequires lat and conflicts with location and uule.", {
1316
+ minimum: -180,
1317
+ maximum: 180,
1318
+ })),
1319
+ radius: s.nullable(s.number("Decimal search-bias radius in meters.\n\nRequires location or lat/lon. Desktop: 1–199; tablet/mobile: 1–1,000.", { minimum: 1, maximum: 1000 })),
1320
+ ludocid: s.nullable(s.string("Google local CID used to search for one entity.", {
1321
+ maxLength: 128,
1322
+ pattern: "^\\d+$",
1323
+ })),
1324
+ lsig: s.nullable(s.string("Opaque Knowledge Graph or local-pack signature.", { maxLength: 4096 })),
1325
+ kgmid: s.nullable(s.string("Google Knowledge Graph machine ID, such as /m/0k8z.", { maxLength: 512 })),
1326
+ si: s.nullable(s.string("Opaque cached Google search context.", { maxLength: 4096 })),
1327
+ ibp: s.nullable(s.string("Google layout or expansion control.", { maxLength: 4096 })),
1328
+ uds: s.nullable(s.string("Opaque Google filter token.", { maxLength: 4096 })),
1329
+ color_scheme: s.nullable(s.withEnum(s.unknown("Google result color presentation."), ["light", "dark"])),
1330
+ google_domain: s.string("Results use google.com. Use gl, hl, cr, lr or geography for localization."),
1331
+ gl: s.nullable(s.string("Lowercase two-letter country localization code.", { pattern: "^[a-z]{2}$" })),
1332
+ hl: s.string("Google interface and result language code.", {
1333
+ pattern: "^[a-z]{2,3}(?:-[A-Za-z]{2,8})?$",
1334
+ }),
1335
+ cr: s.nullable(s.string("One or more countryXX restrictions joined with |.", {
1336
+ pattern: "^country[A-Z]{2}(?:\\|country[A-Z]{2})*$",
1337
+ })),
1338
+ lr: s.nullable(s.string("One or more lang_xx restrictions joined with |.", {
1339
+ pattern: "^lang_[a-z]{2,3}(?:\\|lang_[a-z]{2,3})*$",
1340
+ })),
1341
+ tbs: s.nullable(s.string("Google native date or search filter string.", { maxLength: 4096 })),
1342
+ safe: s.nullable(s.withEnum(s.unknown("Google adult-content filtering."), ["active", "off"])),
1343
+ nfpr: s.nullable(s.withEnum(s.unknown("Google auto-correction control."), ["0", "1"])),
1344
+ filter: s.nullable(s.withEnum(s.unknown("Google similar-result filtering control."), ["0", "1"])),
1345
+ pws: s.nullable(s.withEnum(s.unknown("Google personalization control; 0 asks for non-personalized results."), ["0", "1"])),
1346
+ peek_pws: s.nullable(s.withEnum(s.unknown("Google personalization peek flag, forwarded unchanged."), ["0", "1"])),
1347
+ tbm: s.nullable(s.withEnum(s.unknown("Google vertical: lcl, vid, nws, shop, or pts. For image searches, use /api/google/images."), ["lcl", "vid", "nws", "shop", "pts"])),
1348
+ start: s.integer("Non-negative Google result offset.\n\nPrefer page_token to repeating the same search with start=10, start=20, or another offset.", { minimum: 0 }),
1349
+ num: s.nullable(s.integer("Best-effort first-page result count, 1 to 10.", { minimum: 1, maximum: 10 })),
1350
+ device: s.withEnum(s.unknown("Request device profile and radius bound."), ["desktop", "tablet", "mobile"]),
1351
+ oq: s.nullable(s.string("Original query associated with an autocomplete selection.", {
1352
+ maxLength: 2048,
1353
+ })),
1354
+ gs_lp: s.nullable(s.string("Google gs_lp value associated with an autocomplete selection.", {
1355
+ maxLength: 4096,
1356
+ })),
1357
+ sclient: s.nullable(s.string("Google client identifier such as gws-wiz-serp.", {
1358
+ maxLength: 64,
1359
+ pattern: "^[A-Za-z0-9._-]+$",
1360
+ })),
1361
+ as_dt: s.nullable(s.withEnum(s.unknown("Includes or excludes as_sitesearch.\n\nRequires as_sitesearch."), ["i", "e"])),
1362
+ as_epq: s.nullable(s.string("Exact phrase query.", { maxLength: 2048 })),
1363
+ as_eq: s.nullable(s.string("Excluded phrase query.", { maxLength: 2048 })),
1364
+ as_lq: s.nullable(s.string("Require results that link to this URL.", { maxLength: 4096 })),
1365
+ as_nlo: s.nullable(s.integer("Inclusive range lower bound.\n\nRequires as_nhi.", { minimum: 0 })),
1366
+ as_nhi: s.nullable(s.integer("Inclusive range upper bound.\n\nRequires as_nlo.", { minimum: 0 })),
1367
+ as_oq: s.nullable(s.string("Any-of search terms.", { maxLength: 2048 })),
1368
+ as_q: s.nullable(s.string("Additional all-of search terms.", { maxLength: 2048 })),
1369
+ as_qdr: s.nullable(s.string("Quick range d, w, m, or y with an optional positive count.", {
1370
+ pattern: "^[dwmy](?:[1-9][0-9]*)?$",
1371
+ })),
1372
+ as_rq: s.nullable(s.string("Find pages related to this URL.", { maxLength: 4096 })),
1373
+ as_sitesearch: s.nullable(s.string("Site hostname to include or exclude.", { maxLength: 253 })),
1374
+ }, { required: [] }),
1375
+ asyncInput: s.object("Google Search asynchronous parameters.", {
1376
+ page_token: s.string("Opaque token from pagination.next_page_token. Send it alone to fetch the next page with the original search parameters.\n\nPrefer page_token to repeating the same search with start=10, start=20, or another offset. Send the token as soon as possible and no later than 5 minutes after receiving it. Available for ordinary Google Search, including fast mode; not available for tbm verticals. search_metadata.continuation is followed for a direct request. If Google omits a required link or the deadline expires, the request fails without billing.", { maxLength: 32768 }),
1377
+ q: s.string("Google Search query, up to 2,048 characters.\n\nRequired unless ludocid, kgmid, or page_token is supplied.", { maxLength: 2048 }),
1378
+ fast_mode: s.boolean("Return organic results only, skipping AI Overview and all other result groups.\n\nKeeps search metadata and parameters. Omits cross-module position_absolute."),
1379
+ location: s.string("Human-readable city-level location encoded to UULE by Litescrape.\n\nConflicts with uule and lat/lon.", { maxLength: 512 }),
1380
+ uule: s.string("Pre-encoded Google location value.\n\nConflicts with location and lat/lon.", {
1381
+ maxLength: 2048,
1382
+ }),
1383
+ lat: s.number("Latitude from -90 through 90.\n\nRequires lon and conflicts with location and uule.", {
1384
+ minimum: -90,
1385
+ maximum: 90,
1386
+ }),
1387
+ lon: s.number("Longitude from -180 through 180.\n\nRequires lat and conflicts with location and uule.", {
1388
+ minimum: -180,
1389
+ maximum: 180,
1390
+ }),
1391
+ radius: s.number("Decimal search-bias radius in meters.\n\nRequires location or lat/lon. Desktop: 1–199; tablet/mobile: 1–1,000.", { minimum: 1, maximum: 1000 }),
1392
+ ludocid: s.string("Google local CID used to search for one entity.", {
1393
+ maxLength: 128,
1394
+ pattern: "^\\d+$",
1395
+ }),
1396
+ lsig: s.string("Opaque Knowledge Graph or local-pack signature.", { maxLength: 4096 }),
1397
+ kgmid: s.string("Google Knowledge Graph machine ID, such as /m/0k8z.", { maxLength: 512 }),
1398
+ si: s.string("Opaque cached Google search context.", { maxLength: 4096 }),
1399
+ ibp: s.string("Google layout or expansion control.", { maxLength: 4096 }),
1400
+ uds: s.string("Opaque Google filter token.", { maxLength: 4096 }),
1401
+ color_scheme: s.withEnum(s.unknown("Google result color presentation."), ["light", "dark"]),
1402
+ google_domain: s.string("Results use google.com. Use gl, hl, cr, lr or geography for localization."),
1403
+ gl: s.string("Lowercase two-letter country localization code.", { pattern: "^[a-z]{2}$" }),
1404
+ hl: s.string("Google interface and result language code.", {
1405
+ pattern: "^[a-z]{2,3}(?:-[A-Za-z]{2,8})?$",
1406
+ }),
1407
+ cr: s.string("One or more countryXX restrictions joined with |.", {
1408
+ pattern: "^country[A-Z]{2}(?:\\|country[A-Z]{2})*$",
1409
+ }),
1410
+ lr: s.string("One or more lang_xx restrictions joined with |.", {
1411
+ pattern: "^lang_[a-z]{2,3}(?:\\|lang_[a-z]{2,3})*$",
1412
+ }),
1413
+ tbs: s.string("Google native date or search filter string.", { maxLength: 4096 }),
1414
+ safe: s.withEnum(s.unknown("Google adult-content filtering."), ["active", "off"]),
1415
+ nfpr: s.withEnum(s.unknown("Google auto-correction control."), ["0", "1"]),
1416
+ filter: s.withEnum(s.unknown("Google similar-result filtering control."), ["0", "1"]),
1417
+ pws: s.withEnum(s.unknown("Google personalization control; 0 asks for non-personalized results."), ["0", "1"]),
1418
+ peek_pws: s.withEnum(s.unknown("Google personalization peek flag, forwarded unchanged."), ["0", "1"]),
1419
+ tbm: s.withEnum(s.unknown("Google vertical: lcl, vid, nws, shop, or pts. For image searches, use /api/google/images."), ["lcl", "vid", "nws", "shop", "pts"]),
1420
+ start: s.integer("Non-negative Google result offset.\n\nPrefer page_token to repeating the same search with start=10, start=20, or another offset.", { minimum: 0 }),
1421
+ num: s.integer("Best-effort first-page result count, 1 to 10.", {
1422
+ minimum: 1,
1423
+ maximum: 10,
1424
+ }),
1425
+ device: s.withEnum(s.unknown("Request device profile and radius bound."), ["desktop", "tablet", "mobile"]),
1426
+ oq: s.string("Original query associated with an autocomplete selection.", {
1427
+ maxLength: 2048,
1428
+ }),
1429
+ gs_lp: s.string("Google gs_lp value associated with an autocomplete selection.", {
1430
+ maxLength: 4096,
1431
+ }),
1432
+ sclient: s.string("Google client identifier such as gws-wiz-serp.", {
1433
+ maxLength: 64,
1434
+ pattern: "^[A-Za-z0-9._-]+$",
1435
+ }),
1436
+ as_dt: s.withEnum(s.unknown("Includes or excludes as_sitesearch.\n\nRequires as_sitesearch."), ["i", "e"]),
1437
+ as_epq: s.string("Exact phrase query.", { maxLength: 2048 }),
1438
+ as_eq: s.string("Excluded phrase query.", { maxLength: 2048 }),
1439
+ as_lq: s.string("Require results that link to this URL.", { maxLength: 4096 }),
1440
+ as_nlo: s.integer("Inclusive range lower bound.\n\nRequires as_nhi.", { minimum: 0 }),
1441
+ as_nhi: s.integer("Inclusive range upper bound.\n\nRequires as_nlo.", { minimum: 0 }),
1442
+ as_oq: s.string("Any-of search terms.", { maxLength: 2048 }),
1443
+ as_q: s.string("Additional all-of search terms.", { maxLength: 2048 }),
1444
+ as_qdr: s.string("Quick range d, w, m, or y with an optional positive count.", {
1445
+ pattern: "^[dwmy](?:[1-9][0-9]*)?$",
1446
+ }),
1447
+ as_rq: s.string("Find pages related to this URL.", { maxLength: 4096 }),
1448
+ as_sitesearch: s.string("Site hostname to include or exclude.", { maxLength: 253 }),
1449
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
1450
+ }, { required: [] }),
1451
+ output: s.looseObject("Google Search response.", {
1452
+ search_metadata: s.looseObject("search metadata value.", {}),
1453
+ search_parameters: s.looseObject("search parameters value.", {}),
1454
+ search_information: s.nullable(s.looseObject("search information value.", {})),
1455
+ dmca_messages: s.nullable(s.looseObject("dmca messages value.", {})),
1456
+ find_results_on: s.nullable(s.array("find results on value.", s.looseObject("find results on value. item.", {}))),
1457
+ latest_posts: s.nullable(s.array("latest posts value.", s.looseObject("latest posts value. item.", {}))),
1458
+ organic_results: s.nullable(s.array("organic results value.", s.looseObject("organic results value. item.", {}))),
1459
+ ads: s.nullable(s.array("ads value.", s.looseObject("ads value. item.", {}))),
1460
+ ai_overview: s.nullable(s.looseObject("ai overview value.", {})),
1461
+ answer_box: s.nullable(s.looseObject("answer box value.", {})),
1462
+ knowledge_graph: s.nullable(s.looseObject("knowledge graph value.", {})),
1463
+ local_map: s.nullable(s.looseObject("local map value.", {})),
1464
+ local_results: s.nullable(s.looseObject("local results value.", {})),
1465
+ pagination: s.nullable(s.looseObject("pagination value.", {})),
1466
+ related_questions: s.nullable(s.array("related questions value.", s.looseObject("related questions value. item.", {}))),
1467
+ related_searches: s.nullable(s.array("related searches value.", s.looseObject("related searches value. item.", {}))),
1468
+ ask_ai_mode: s.nullable(s.array("ask ai mode value.", s.looseObject("ask ai mode value. item.", {}))),
1469
+ available_on: s.nullable(s.array("available on value.", s.looseObject("available on value. item.", {}))),
1470
+ broaden_searches: s.nullable(s.array("broaden searches value.", s.looseObject("broaden searches value. item.", {}))),
1471
+ complementary_results: s.nullable(s.array("complementary results value.", s.looseObject("complementary results value. item.", {}))),
1472
+ discover_more_places: s.nullable(s.array("discover more places value.", s.looseObject("discover more places value. item.", {}))),
1473
+ discussions_and_forums: s.nullable(s.array("discussions and forums value.", s.looseObject("discussions and forums value. item.", {}))),
1474
+ episode_guide: s.nullable(s.array("episode guide value.", s.looseObject("episode guide value. item.", {}))),
1475
+ events_results: s.nullable(s.array("events results value.", s.looseObject("events results value. item.", {}))),
1476
+ filters: s.nullable(s.array("filters value.", s.looseObject("filters value. item.", {}))),
1477
+ flight_result: s.nullable(s.looseObject("flight result value.", {})),
1478
+ immersive_products: s.nullable(s.array("immersive products value.", s.looseObject("immersive products value. item.", {}))),
1479
+ inline_images: s.nullable(s.array("inline images value.", s.looseObject("inline images value. item.", {}))),
1480
+ inline_videos: s.nullable(s.array("inline videos value.", s.looseObject("inline videos value. item.", {}))),
1481
+ jobs_results: s.nullable(s.looseObject("jobs results value.", {})),
1482
+ news_results: s.nullable(s.array("news results value.", s.looseObject("news results value. item.", {}))),
1483
+ perspectives: s.nullable(s.array("perspectives value.", s.looseObject("perspectives value. item.", {}))),
1484
+ places_sites: s.nullable(s.array("places sites value.", s.looseObject("places sites value. item.", {}))),
1485
+ recipes_results: s.nullable(s.array("recipes results value.", s.looseObject("recipes results value. item.", {}))),
1486
+ refine_by: s.nullable(s.array("refine by value.", s.looseObject("refine by value. item.", {}))),
1487
+ related_brands: s.nullable(s.array("related brands value.", s.looseObject("related brands value. item.", {}))),
1488
+ related_categories: s.nullable(s.array("related categories value.", s.looseObject("related categories value. item.", {}))),
1489
+ scholarly_articles: s.nullable(s.looseObject("scholarly articles value.", {})),
1490
+ shopping_results: s.nullable(s.array("shopping results value.", s.looseObject("shopping results value. item.", {}))),
1491
+ categorized_shopping_results: s.nullable(s.array("categorized shopping results value.", s.looseObject("categorized shopping results value. item.", {}))),
1492
+ short_videos: s.nullable(s.array("short videos value.", s.looseObject("short videos value. item.", {}))),
1493
+ sports_results: s.nullable(s.looseObject("sports results value.", {})),
1494
+ top_sights: s.nullable(s.looseObject("top sights value.", {})),
1495
+ top_stories: s.anyOf("top stories value.", [
1496
+ s.array("top stories value.", s.looseObject("top stories value. item.", {})),
1497
+ s.looseObject("top stories value.", {}),
1498
+ s.literal(null, {
1499
+ description: "top stories value.",
1500
+ }),
1501
+ ]),
1502
+ video_results: s.nullable(s.array("video results value.", s.looseObject("video results value. item.", {}))),
1503
+ finance_results: s.nullable(s.looseObject("finance results value.", {})),
1504
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
1505
+ format: "uri",
1506
+ }),
1507
+ }),
1508
+ },
1509
+ {
1510
+ name: "google_shopping",
1511
+ path: "/api/google/shopping",
1512
+ description: "Search Google Shopping products.",
1513
+ input: s.object("Google Shopping parameters.", {
1514
+ q: s.nullable(s.string("Product query, up to 2,048 characters with no controls. Optional when a shoprs token is supplied.")),
1515
+ location: s.nullable(s.string("Named search origin, up to 512 characters and 63 UTF-8 bytes once encoded. Conflicts with uule.")),
1516
+ uule: s.nullable(s.string("Canonical Google location token, up to 2,048 characters. Conflicts with location.")),
1517
+ google_domain: s.string("Validated first-party Google domain."),
1518
+ gl: s.nullable(s.string("Two-letter country code, normalized to lowercase.")),
1519
+ hl: s.nullable(s.string("Language code such as en, en-GB, or de.")),
1520
+ device: s.withEnum(s.unknown("Google returns its real layout for the selected device."), [
1521
+ "desktop",
1522
+ "tablet",
1523
+ "mobile",
1524
+ ]),
1525
+ shoprs: s.nullable(s.string("Google refinement token from a previous response, up to 4,096 characters. An explicit refinement replaces the one it carries.")),
1526
+ min_price: s.nullable(s.number("Lower price bound, 0 through 1,000,000,000. Excludes the other refinements.")),
1527
+ max_price: s.nullable(s.number("Upper price bound, at or above min_price. Excludes the other refinements.")),
1528
+ sort_by: s.nullable(s.withEnum(s.unknown("Price low to high, price high to low, rating high to low, or Google’s default relevance. Combines with one refinement."), ["", "1", "2", "3", "4"])),
1529
+ free_shipping: s.boolean("Only products with free shipping. Excludes the other refinements."),
1530
+ on_sale: s.boolean("Only products Google marks as on sale. Excludes the other refinements."),
1531
+ small_business: s.boolean("Only products from small businesses. Excludes the other refinements."),
1532
+ start: s.nullable(s.integer("Result offset from 0 through 1,000.")),
1533
+ num: s.nullable(s.integer("1 through 100. Responses are capped to this count and transparently consume Google’s fixed 40-product pages when needed.")),
1534
+ }, { required: [] }),
1535
+ asyncInput: s.object("Google Shopping asynchronous parameters.", {
1536
+ q: s.string("Product query, up to 2,048 characters with no controls. Optional when a shoprs token is supplied."),
1537
+ location: s.string("Named search origin, up to 512 characters and 63 UTF-8 bytes once encoded. Conflicts with uule."),
1538
+ uule: s.string("Canonical Google location token, up to 2,048 characters. Conflicts with location."),
1539
+ google_domain: s.string("Validated first-party Google domain."),
1540
+ gl: s.string("Two-letter country code, normalized to lowercase."),
1541
+ hl: s.string("Language code such as en, en-GB, or de."),
1542
+ device: s.withEnum(s.unknown("Google returns its real layout for the selected device."), [
1543
+ "desktop",
1544
+ "tablet",
1545
+ "mobile",
1546
+ ]),
1547
+ shoprs: s.string("Google refinement token from a previous response, up to 4,096 characters. An explicit refinement replaces the one it carries."),
1548
+ min_price: s.number("Lower price bound, 0 through 1,000,000,000. Excludes the other refinements."),
1549
+ max_price: s.number("Upper price bound, at or above min_price. Excludes the other refinements."),
1550
+ sort_by: s.withEnum(s.unknown("Price low to high, price high to low, rating high to low, or Google’s default relevance. Combines with one refinement."), ["", "1", "2", "3", "4"]),
1551
+ free_shipping: s.boolean("Only products with free shipping. Excludes the other refinements."),
1552
+ on_sale: s.boolean("Only products Google marks as on sale. Excludes the other refinements."),
1553
+ small_business: s.boolean("Only products from small businesses. Excludes the other refinements."),
1554
+ start: s.integer("Result offset from 0 through 1,000."),
1555
+ num: s.integer("1 through 100. Responses are capped to this count and transparently consume Google’s fixed 40-product pages when needed."),
1556
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
1557
+ }, { required: [] }),
1558
+ output: s.looseObject("Google Shopping response.", {
1559
+ inline_shopping_results: s.nullable(s.array("inline shopping results value.", s.looseObject("inline shopping results value. item.", {}))),
1560
+ search_information: s.nullable(s.looseObject("search information value.", {})),
1561
+ product_result: s.nullable(s.looseObject("product result value.", {})),
1562
+ shopping_results: s.nullable(s.array("shopping results value.", s.looseObject("shopping results value. item.", {}))),
1563
+ categorized_shopping_results: s.nullable(s.array("categorized shopping results value.", s.looseObject("categorized shopping results value. item.", {}))),
1564
+ carousel_filters: s.nullable(s.array("carousel filters value.", s.looseObject("carousel filters value. item.", {}))),
1565
+ filters: s.nullable(s.array("filters value.", s.looseObject("filters value. item.", {}))),
1566
+ offers: s.nullable(s.array("offers value.", s.looseObject("offers value. item.", {}))),
1567
+ product_reviews: s.nullable(s.array("product reviews value.", s.looseObject("product reviews value. item.", {}))),
1568
+ related_products: s.nullable(s.array("related products value.", s.looseObject("related products value. item.", {}))),
1569
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
1570
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
1571
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
1572
+ format: "uri",
1573
+ }),
1574
+ }),
1575
+ },
1576
+ {
1577
+ name: "google_shopping_merchant_urls",
1578
+ path: "/api/google/shopping/merchant-urls",
1579
+ description: "Get direct merchant URLs for Google Shopping offers.",
1580
+ input: s.object("Google Shopping Merchant URLs parameters.", {
1581
+ products: s.array("Send 1–100 headline offers. Each item requires merchant and headline_offer_docid from Shopping Search.", s.object("products value. item.", {
1582
+ gpcid: s.nullable(s.string("Optional product ID for correlation; not used for lookup.", {
1583
+ pattern: "^[0-9]{1,20}$",
1584
+ })),
1585
+ headline_offer_docid: s.string("Exact offer ID from Shopping Search; required.", {
1586
+ pattern: "^[0-9]{1,20}$",
1587
+ }),
1588
+ merchant: s.string("Copy source from Shopping Search; required for grouping offer lookups.", {
1589
+ minLength: 1,
1590
+ maxLength: 200,
1591
+ }),
1592
+ }, { required: ["headline_offer_docid", "merchant"] }), { minItems: 1, maxItems: 100 }),
1593
+ gl: s.string("Use the same country code as the original Shopping Search. Defaults to us.", {
1594
+ pattern: "^[a-zA-Z]{2}$",
1595
+ }),
1596
+ hl: s.string("Use the same language code as the original Shopping Search. Defaults to en.", {
1597
+ pattern: "^[a-zA-Z]{2,3}(?:-[a-zA-Z]{2,4})?$",
1598
+ }),
1599
+ }, { required: ["products"] }),
1600
+ asyncInput: s.object("Google Shopping Merchant URLs asynchronous parameters.", {
1601
+ products: s.array("Send 1–100 headline offers. Each item requires merchant and headline_offer_docid from Shopping Search.", s.object("products value. item.", {
1602
+ gpcid: s.nullable(s.string("Optional product ID for correlation; not used for lookup.", {
1603
+ pattern: "^[0-9]{1,20}$",
1604
+ })),
1605
+ headline_offer_docid: s.string("Exact offer ID from Shopping Search; required.", {
1606
+ pattern: "^[0-9]{1,20}$",
1607
+ }),
1608
+ merchant: s.string("Copy source from Shopping Search; required for grouping offer lookups.", {
1609
+ minLength: 1,
1610
+ maxLength: 200,
1611
+ }),
1612
+ }, { required: ["headline_offer_docid", "merchant"] }), { minItems: 1, maxItems: 100 }),
1613
+ gl: s.string("Use the same country code as the original Shopping Search. Defaults to us.", {
1614
+ pattern: "^[a-zA-Z]{2}$",
1615
+ }),
1616
+ hl: s.string("Use the same language code as the original Shopping Search. Defaults to en.", {
1617
+ pattern: "^[a-zA-Z]{2,3}(?:-[a-zA-Z]{2,4})?$",
1618
+ }),
1619
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
1620
+ }, { required: ["products"] }),
1621
+ output: s.looseObject("Google Shopping Merchant URLs response.", {
1622
+ results: s.array("results value.", s.looseObject("results value. item.", {})),
1623
+ summary: s.looseObject("summary value.", {}),
1624
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
1625
+ format: "uri",
1626
+ }),
1627
+ }),
1628
+ },
1629
+ {
1630
+ name: "google_shopping_product",
1631
+ path: "/api/google/shopping/product",
1632
+ description: "Get every merchant offer for a Google Shopping product.",
1633
+ input: s.object("Google Shopping Product parameters.", {
1634
+ q: s.nullable(s.string("The search term this product was found with, up to 2,048 characters. Google resolves the product viewer against it as well as the identifiers.")),
1635
+ location: s.nullable(s.string("Named search origin, up to 512 characters and 63 UTF-8 bytes once encoded. Conflicts with uule.")),
1636
+ uule: s.nullable(s.string("Canonical Google location token, up to 2,048 characters. Conflicts with location.")),
1637
+ google_domain: s.string("Validated first-party Google domain."),
1638
+ gl: s.nullable(s.string("Two-letter country code, normalized to lowercase.")),
1639
+ hl: s.nullable(s.string("Language code such as en, en-GB, or de.")),
1640
+ device: s.withEnum(s.unknown("Google returns its real layout for the selected device."), [
1641
+ "desktop",
1642
+ "tablet",
1643
+ "mobile",
1644
+ ]),
1645
+ gpcid: s.nullable(s.string("Product cluster ID from a shopping result, 1 to 20 decimal digits. Optional when a prds token is supplied.\n\nEvery Shopping result with a gpcid includes a ready-made litescrape_product_link.")),
1646
+ headline_offer_docid: s.nullable(s.string("Headline merchant offer document ID from the same shopping result, 1 to 20 decimal digits. Goes with gpcid rather than prds.")),
1647
+ image_docid: s.nullable(s.string("Image document ID from the same shopping result, 1 to 20 decimal digits. Goes with gpcid rather than prds.")),
1648
+ prds: s.nullable(s.string("Google product selector token from a previous response, up to 2,048 characters. Conflicts with gpcid and the identifiers above.")),
1649
+ }, { required: [] }),
1650
+ asyncInput: s.object("Google Shopping Product asynchronous parameters.", {
1651
+ q: s.string("The search term this product was found with, up to 2,048 characters. Google resolves the product viewer against it as well as the identifiers."),
1652
+ location: s.string("Named search origin, up to 512 characters and 63 UTF-8 bytes once encoded. Conflicts with uule."),
1653
+ uule: s.string("Canonical Google location token, up to 2,048 characters. Conflicts with location."),
1654
+ google_domain: s.string("Validated first-party Google domain."),
1655
+ gl: s.string("Two-letter country code, normalized to lowercase."),
1656
+ hl: s.string("Language code such as en, en-GB, or de."),
1657
+ device: s.withEnum(s.unknown("Google returns its real layout for the selected device."), [
1658
+ "desktop",
1659
+ "tablet",
1660
+ "mobile",
1661
+ ]),
1662
+ gpcid: s.string("Product cluster ID from a shopping result, 1 to 20 decimal digits. Optional when a prds token is supplied.\n\nEvery Shopping result with a gpcid includes a ready-made litescrape_product_link."),
1663
+ headline_offer_docid: s.string("Headline merchant offer document ID from the same shopping result, 1 to 20 decimal digits. Goes with gpcid rather than prds."),
1664
+ image_docid: s.string("Image document ID from the same shopping result, 1 to 20 decimal digits. Goes with gpcid rather than prds."),
1665
+ prds: s.string("Google product selector token from a previous response, up to 2,048 characters. Conflicts with gpcid and the identifiers above."),
1666
+ timeout: s.number("Execution budget in seconds for each attempt. Queue and retry backoff time do not consume it. Supply once, in the JSON body or query string.", { maximum: 90, exclusiveMinimum: 0 }),
1667
+ }, { required: [] }),
1668
+ output: s.looseObject("Google Shopping Product response.", {
1669
+ inline_shopping_results: s.nullable(s.array("inline shopping results value.", s.looseObject("inline shopping results value. item.", {}))),
1670
+ search_information: s.nullable(s.looseObject("search information value.", {})),
1671
+ product_result: s.nullable(s.looseObject("product result value.", {})),
1672
+ shopping_results: s.nullable(s.array("shopping results value.", s.looseObject("shopping results value. item.", {}))),
1673
+ categorized_shopping_results: s.nullable(s.array("categorized shopping results value.", s.looseObject("categorized shopping results value. item.", {}))),
1674
+ carousel_filters: s.nullable(s.array("carousel filters value.", s.looseObject("carousel filters value. item.", {}))),
1675
+ filters: s.nullable(s.array("filters value.", s.looseObject("filters value. item.", {}))),
1676
+ offers: s.nullable(s.array("offers value.", s.looseObject("offers value. item.", {}))),
1677
+ product_reviews: s.nullable(s.array("product reviews value.", s.looseObject("product reviews value. item.", {}))),
1678
+ related_products: s.nullable(s.array("related products value.", s.looseObject("related products value. item.", {}))),
1679
+ search_metadata: s.nullable(s.looseObject("search metadata value.", {})),
1680
+ search_parameters: s.nullable(s.looseObject("search parameters value.", {})),
1681
+ submit_feedback_for_this_response_here: s.string("Optional URL for submitting feedback about this result.", {
1682
+ format: "uri",
1683
+ }),
1684
+ }),
1685
+ },
1686
+ ];