@zackbart/connecta 0.34.0 → 0.35.0

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 (428) hide show
  1. package/CHANGELOG.md +393 -0
  2. package/README.md +62 -105
  3. package/SECURITY.md +3 -2
  4. package/bin/connecta.mjs +41 -16
  5. package/bin/version.mjs +1 -1
  6. package/dist/access-tokens.d.ts +2 -1
  7. package/dist/access-tokens.js +66 -30
  8. package/dist/activity.d.ts +1 -1
  9. package/dist/activity.js +2 -0
  10. package/dist/agent-config.d.ts +23 -0
  11. package/dist/agent-config.js +59 -0
  12. package/dist/agent-description.js +16 -0
  13. package/dist/agent-identity.js +4 -4
  14. package/dist/agent-observation.js +39 -0
  15. package/dist/auth/clerk-sdk/client.d.ts +2 -0
  16. package/dist/auth/clerk-sdk/generated.js +554 -563
  17. package/dist/auth/clerk-transport.js +70 -3
  18. package/dist/auth/clerk.d.ts +13 -0
  19. package/dist/auth/clerk.js +653 -246
  20. package/dist/auth/cloudflare-access.js +46 -42
  21. package/dist/auth/downstream-client-metadata.js +2 -2
  22. package/dist/auth/downstream-oauth.js +2051 -1160
  23. package/dist/auth/downstream-revocation.js +88 -88
  24. package/dist/auth/native-call.js +20 -0
  25. package/dist/auth/native.js +184 -0
  26. package/dist/auth/oauth-start-reset.js +11 -5
  27. package/dist/auth/oauth-token-response.js +121 -102
  28. package/dist/auth/oauth-v2-migration.js +97 -78
  29. package/dist/auth/renewable-grant.js +10 -0
  30. package/dist/auth/static-oauth.js +663 -271
  31. package/dist/auth/vercel-agent.js +266 -0
  32. package/dist/auth-admission.js +204 -0
  33. package/dist/auth-elicitation.js +350 -241
  34. package/dist/authorization-handoff.js +164 -90
  35. package/dist/call-admission-context.js +3 -10
  36. package/dist/call-admission.js +2 -0
  37. package/dist/call-classification.js +9 -0
  38. package/dist/call-recovery.js +32 -13
  39. package/dist/canonical-json.js +8 -0
  40. package/dist/catalog-cache.js +369 -213
  41. package/dist/catalog-service.js +659 -530
  42. package/dist/catalog.js +5 -1
  43. package/dist/concurrency.js +0 -25
  44. package/dist/config-defaults.d.ts +1 -0
  45. package/dist/config-defaults.js +1 -0
  46. package/dist/config-schema.d.ts +3 -1
  47. package/dist/config-schema.js +13 -3
  48. package/dist/config.d.ts +40 -6
  49. package/dist/config.js +40 -26
  50. package/dist/connector-caller.d.ts +4 -0
  51. package/dist/connector-caller.js +17 -4
  52. package/dist/connectors/api-connector.d.ts +15 -7
  53. package/dist/connectors/api-connector.js +147 -57
  54. package/dist/connectors/guarded-fetch.d.ts +51 -17
  55. package/dist/connectors/guarded-fetch.js +215 -121
  56. package/dist/connectors/negotiation-cache.js +20 -10
  57. package/dist/connectors/option-shapes.js +1 -1
  58. package/dist/connectors/remote-mcp.d.ts +12 -30
  59. package/dist/connectors/remote-mcp.js +960 -564
  60. package/dist/d1.js +10 -243
  61. package/dist/derived-context.js +5 -0
  62. package/dist/describe-config.d.ts +5 -1
  63. package/dist/describe-config.js +3 -0
  64. package/dist/downstream-input.js +347 -260
  65. package/dist/errors.d.ts +87 -6
  66. package/dist/errors.js +114 -4
  67. package/dist/execute.js +87 -50
  68. package/dist/executor-admission.js +3 -0
  69. package/dist/executors/quickjs.js +163 -112
  70. package/dist/guarded-transport.js +50 -0
  71. package/dist/guest-runtime.js +1 -1
  72. package/dist/http/client.js +439 -0
  73. package/dist/http/errors.js +558 -0
  74. package/dist/http/fields.js +49 -0
  75. package/dist/http/hatch-paging.js +318 -0
  76. package/dist/http/hatch.js +1279 -0
  77. package/dist/http/json-schema.js +267 -0
  78. package/dist/http/node-transport.js +241 -0
  79. package/dist/http/oauth.js +162 -0
  80. package/dist/http/paging.js +228 -0
  81. package/dist/http/provider.js +221 -0
  82. package/dist/http/safety.js +82 -0
  83. package/dist/http/services.js +79 -0
  84. package/dist/http/tools.js +383 -0
  85. package/dist/http/vendor-index.js +138 -0
  86. package/dist/http/vendor.js +448 -0
  87. package/dist/http/write-request.js +66 -0
  88. package/dist/http-policy.d.ts +11 -0
  89. package/dist/http-policy.js +45 -0
  90. package/dist/inbound-credential.js +1 -1
  91. package/dist/index.d.ts +2 -2
  92. package/dist/index.js +4 -0
  93. package/dist/invocation-auth.js +30 -19
  94. package/dist/invocation.js +221 -87
  95. package/dist/mcp-result.js +0 -4
  96. package/dist/membership.d.ts +4 -0
  97. package/dist/meta-output.js +1 -1
  98. package/dist/meta-tools.js +534 -408
  99. package/dist/native-recovery.js +52 -0
  100. package/dist/native-tools.js +382 -0
  101. package/dist/node.d.ts +4 -3
  102. package/dist/node.js +45 -8
  103. package/dist/oauth-handoff.js +177 -104
  104. package/dist/oauth-partition.js +6 -20
  105. package/dist/oauth-sealing.js +6 -7
  106. package/dist/operation-vocabulary.js +101 -0
  107. package/dist/operator-record.d.ts +2 -2
  108. package/dist/operator-record.js +17 -4
  109. package/dist/operator-ui/agents.d.ts +5 -4
  110. package/dist/operator-ui/agents.js +17 -7
  111. package/dist/operator-ui/config-summary.js +8 -4
  112. package/dist/operator-ui/connection-map.js +9 -6
  113. package/dist/operator-ui/contract.d.ts +7 -3
  114. package/dist/operator-ui/endpoints.js +5 -14
  115. package/dist/operator-ui/fix-prompts.d.ts +1 -1
  116. package/dist/operator-ui/fix-prompts.js +0 -8
  117. package/dist/operator-ui/generated.js +3 -3
  118. package/dist/operator-ui/health.js +52 -0
  119. package/dist/operator-ui/model.d.ts +2 -3
  120. package/dist/operator-ui/overview.js +11 -19
  121. package/dist/operator-ui/setup-commands.js +0 -4
  122. package/dist/operator-ui/view.d.ts +5 -29
  123. package/dist/operator-ui/view.js +3 -59
  124. package/dist/program-writes.js +47 -26
  125. package/dist/provider-call-facts.d.ts +115 -0
  126. package/dist/provider-call-facts.js +182 -0
  127. package/dist/provider-call.d.ts +112 -0
  128. package/dist/provider-call.js +271 -0
  129. package/dist/provider.d.ts +71 -32
  130. package/dist/provider.js +134 -40
  131. package/dist/providers/_shared/google/hatch.js +91 -0
  132. package/dist/providers/_shared/google/kit.js +537 -0
  133. package/dist/providers/_shared/google/result-size.js +15 -2
  134. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  135. package/dist/providers/_shared/google/service-account.js +8 -4
  136. package/dist/providers/_shared/google/workspace.d.ts +8 -209
  137. package/dist/providers/_shared/google/workspace.js +7 -426
  138. package/dist/providers/_shared/rest/compact-index.js +86 -0
  139. package/dist/providers/_shared/rest/dispatch.js +3 -23
  140. package/dist/providers/_shared/rest/kit.js +546 -0
  141. package/dist/providers/_shared/rest/operation-index.js +230 -14
  142. package/dist/providers/_shared/rest/response-media.js +11 -0
  143. package/dist/providers/_shared/rest/tools.js +101 -78
  144. package/dist/providers/_shared/rest/value-safety.js +353 -195
  145. package/dist/providers/_shared/sensitive-fields.js +27 -0
  146. package/dist/providers/breeze/api.js +584 -0
  147. package/dist/providers/breeze/index.d.ts +3 -3
  148. package/dist/providers/breeze/index.js +67 -1420
  149. package/dist/providers/breeze/openapi.generated.js +60 -0
  150. package/dist/providers/breeze/skill.generated.js +2 -6
  151. package/dist/providers/breeze/tools.js +696 -0
  152. package/dist/providers/ccb/api.js +496 -0
  153. package/dist/providers/ccb/index.d.ts +17 -37
  154. package/dist/providers/ccb/index.js +77 -1702
  155. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  156. package/dist/providers/ccb/lib/constants.js +74 -0
  157. package/dist/providers/ccb/lib/guide.js +9 -0
  158. package/dist/providers/ccb/lib/verdicts.js +387 -0
  159. package/dist/providers/ccb/openapi.generated.js +397 -0
  160. package/dist/providers/ccb/safety.js +295 -0
  161. package/dist/providers/ccb/skill.generated.js +2 -6
  162. package/dist/providers/ccb/tools.js +853 -0
  163. package/dist/providers/cloudflare/api.js +1066 -0
  164. package/dist/providers/cloudflare/index.d.ts +7 -22
  165. package/dist/providers/cloudflare/index.js +80 -194
  166. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  167. package/dist/providers/cloudflare/lib/config.js +2 -0
  168. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  169. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  170. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  171. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  172. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  173. package/dist/providers/cloudflare/openapi.generated.js +3299 -3208
  174. package/dist/providers/cloudflare/{value-safety.js → safety.js} +538 -18
  175. package/dist/providers/cloudflare/skill.generated.js +2 -10
  176. package/dist/providers/cloudflare/tools.js +360 -0
  177. package/dist/providers/docs/api.js +51 -0
  178. package/dist/providers/docs/index.d.ts +1 -12
  179. package/dist/providers/docs/index.js +53 -1165
  180. package/dist/providers/docs/lib/constants.d.ts +18 -0
  181. package/dist/providers/docs/lib/constants.js +18 -0
  182. package/dist/providers/docs/lib/discovery.js +26 -0
  183. package/dist/providers/docs/lib/requests.js +48 -0
  184. package/dist/providers/docs/lib/schemas.js +168 -0
  185. package/dist/providers/docs/openapi.generated.js +16 -0
  186. package/dist/providers/docs/safety.js +54 -0
  187. package/dist/providers/docs/skill.generated.js +2 -6
  188. package/dist/providers/docs/tools.js +802 -0
  189. package/dist/providers/drive/api.js +177 -0
  190. package/dist/providers/drive/index.d.ts +1 -12
  191. package/dist/providers/drive/index.js +38 -1448
  192. package/dist/providers/drive/lib/constants.d.ts +6 -0
  193. package/dist/providers/drive/lib/constants.js +6 -0
  194. package/dist/providers/drive/lib/contracts.js +532 -0
  195. package/dist/providers/drive/lib/hatch.js +197 -0
  196. package/dist/providers/drive/openapi.generated.js +77 -0
  197. package/dist/providers/drive/safety.js +90 -0
  198. package/dist/providers/drive/skill.generated.js +2 -6
  199. package/dist/providers/drive/tools.js +1290 -0
  200. package/dist/providers/forms/api.js +71 -0
  201. package/dist/providers/forms/index.d.ts +1 -12
  202. package/dist/providers/forms/index.js +49 -1145
  203. package/dist/providers/forms/lib/constants.d.ts +14 -0
  204. package/dist/providers/forms/lib/constants.js +19 -0
  205. package/dist/providers/forms/lib/hatch.js +72 -0
  206. package/dist/providers/forms/openapi.generated.js +23 -0
  207. package/dist/providers/forms/safety.js +34 -0
  208. package/dist/providers/forms/skill.generated.js +2 -8
  209. package/dist/providers/forms/tools.js +1024 -0
  210. package/dist/providers/github/api.js +150 -0
  211. package/dist/providers/github/index.d.ts +4 -5
  212. package/dist/providers/github/index.js +30 -87
  213. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  214. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  215. package/dist/providers/github/lib/discovery.js +132 -0
  216. package/dist/providers/github/lib/operations.js +58 -0
  217. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  218. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  219. package/dist/providers/github/openapi.generated.js +1216 -0
  220. package/dist/providers/github/safety.js +216 -0
  221. package/dist/providers/github/skill.generated.js +2 -5
  222. package/dist/providers/github/tools.js +506 -0
  223. package/dist/providers/gmail/api.js +114 -0
  224. package/dist/providers/gmail/index.d.ts +1 -12
  225. package/dist/providers/gmail/index.js +73 -1621
  226. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  227. package/dist/providers/gmail/lib/constants.js +16 -0
  228. package/dist/providers/gmail/lib/index.js +173 -0
  229. package/dist/providers/gmail/lib/schemas.js +176 -0
  230. package/dist/providers/gmail/lib/threading.js +120 -0
  231. package/dist/providers/gmail/openapi.generated.js +92 -0
  232. package/dist/providers/gmail/safety.js +21 -0
  233. package/dist/providers/gmail/skill.generated.js +2 -6
  234. package/dist/providers/gmail/tools.js +1435 -0
  235. package/dist/providers/overflow/api.js +1008 -0
  236. package/dist/providers/overflow/index.d.ts +3 -17
  237. package/dist/providers/overflow/index.js +60 -1488
  238. package/dist/providers/overflow/skill.generated.js +2 -5
  239. package/dist/providers/overflow/tools.js +873 -0
  240. package/dist/providers/planning-center/api.js +467 -0
  241. package/dist/providers/planning-center/index.d.ts +6 -35
  242. package/dist/providers/planning-center/index.js +69 -2445
  243. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  244. package/dist/providers/planning-center/lib/constants.js +83 -0
  245. package/dist/providers/planning-center/lib/discovery.js +40 -0
  246. package/dist/providers/planning-center/lib/guide.js +39 -0
  247. package/dist/providers/planning-center/lib/json-api.js +83 -0
  248. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  249. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  250. package/dist/providers/planning-center/safety.js +188 -0
  251. package/dist/providers/planning-center/skill.generated.js +2 -27
  252. package/dist/providers/planning-center/tools.js +1010 -0
  253. package/dist/providers/sheets/api.js +133 -0
  254. package/dist/providers/sheets/index.d.ts +4 -16
  255. package/dist/providers/sheets/index.js +61 -1172
  256. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  257. package/dist/providers/sheets/lib/constants.js +14 -0
  258. package/dist/providers/sheets/lib/hatch.js +163 -0
  259. package/dist/providers/sheets/lib/requests.js +105 -0
  260. package/dist/providers/sheets/lib/schemas.js +138 -0
  261. package/dist/providers/sheets/openapi.generated.js +30 -0
  262. package/dist/providers/sheets/safety.js +27 -0
  263. package/dist/providers/sheets/skill.generated.js +2 -7
  264. package/dist/providers/sheets/tools.js +734 -0
  265. package/dist/providers/slides/api.js +147 -0
  266. package/dist/providers/slides/index.d.ts +2 -10
  267. package/dist/providers/slides/index.js +48 -2555
  268. package/dist/providers/slides/lib/constants.d.ts +11 -0
  269. package/dist/providers/slides/lib/constants.js +11 -0
  270. package/dist/providers/slides/lib/requests.js +60 -0
  271. package/dist/providers/slides/lib/schemas.js +565 -0
  272. package/dist/providers/slides/openapi.generated.js +18 -0
  273. package/dist/providers/slides/skill.generated.js +2 -6
  274. package/dist/providers/slides/tools.js +1968 -0
  275. package/dist/providers/stripe/api.js +401 -0
  276. package/dist/providers/stripe/index.d.ts +7 -27
  277. package/dist/providers/stripe/index.js +75 -191
  278. package/dist/providers/stripe/lib/config.d.ts +4 -0
  279. package/dist/providers/stripe/lib/config.js +2 -0
  280. package/dist/providers/stripe/openapi.generated.js +4 -3
  281. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  282. package/dist/providers/stripe/skill.generated.js +2 -10
  283. package/dist/providers/stripe/tools.js +77 -0
  284. package/dist/providers/tithely/api.js +531 -0
  285. package/dist/providers/tithely/index.d.ts +19 -0
  286. package/dist/providers/tithely/index.js +86 -965
  287. package/dist/providers/tithely/skill.generated.js +2 -5
  288. package/dist/providers/tithely/tools.js +426 -0
  289. package/dist/providers/vercel/api.js +551 -0
  290. package/dist/providers/vercel/index.d.ts +11 -25
  291. package/dist/providers/vercel/index.js +67 -261
  292. package/dist/providers/vercel/lib/config.d.ts +2 -0
  293. package/dist/providers/vercel/lib/config.js +2 -0
  294. package/dist/providers/vercel/lib/index.js +117 -0
  295. package/dist/providers/vercel/lib/logs.js +100 -0
  296. package/dist/providers/vercel/lib/pin.js +270 -0
  297. package/dist/providers/vercel/openapi.generated.js +398 -376
  298. package/dist/providers/vercel/{value-safety.js → safety.js} +261 -42
  299. package/dist/providers/vercel/skill.generated.js +2 -7
  300. package/dist/providers/vercel/tools.js +642 -0
  301. package/dist/redaction-identity.js +47 -0
  302. package/dist/redaction-marker.js +125 -0
  303. package/dist/registry.d.ts +30 -28
  304. package/dist/registry.js +446 -413
  305. package/dist/routes/access-tokens.js +1 -1
  306. package/dist/routes/actor-labels.js +1 -1
  307. package/dist/routes/connect.js +1 -1
  308. package/dist/routes/dispatch.js +103 -0
  309. package/dist/routes/mcp.js +170 -79
  310. package/dist/routes/oauth.js +3 -1
  311. package/dist/routes/operator.js +2 -2
  312. package/dist/routes/shared.d.ts +5 -4
  313. package/dist/routes/shared.js +244 -177
  314. package/dist/routes/skills.js +10 -8
  315. package/dist/routes/ui-config.js +27 -3
  316. package/dist/routes/ui-data.js +29 -22
  317. package/dist/routes/ui.js +1 -1
  318. package/dist/runtime/call-admission.js +0 -26
  319. package/dist/runtime/call-entry.js +30 -0
  320. package/dist/runtime/call.js +556 -0
  321. package/dist/runtime/connector-scope.js +7 -0
  322. package/dist/runtime/credential-probe.js +34 -0
  323. package/dist/runtime/executor.js +40 -0
  324. package/dist/runtime/native-storage.js +63 -0
  325. package/dist/runtime/registry.js +27 -0
  326. package/dist/runtime/request-scope.js +72 -0
  327. package/dist/runtime/run.js +15 -7
  328. package/dist/runtime/shared-read.js +34 -5
  329. package/dist/runtime/storage.js +34 -21
  330. package/dist/sent-secrets.d.ts +194 -37
  331. package/dist/sent-secrets.js +1743 -340
  332. package/dist/server.js +5 -56
  333. package/dist/skills.js +330 -224
  334. package/dist/sqlite.js +15 -14
  335. package/dist/storage/d1-copy.js +255 -0
  336. package/dist/storage/d1-driver.js +15 -0
  337. package/dist/storage/keys.js +28 -0
  338. package/dist/storage/sql-driver.js +88 -0
  339. package/dist/storage/sql-native.js +544 -0
  340. package/dist/storage/sql-schema.d.ts +6 -0
  341. package/dist/storage/sql-schema.js +15 -0
  342. package/dist/storage/sql.d.ts +14 -20
  343. package/dist/storage/sql.js +29 -535
  344. package/dist/timeout.js +0 -26
  345. package/dist/tool-safety.js +20 -10
  346. package/dist/types.d.ts +11 -99
  347. package/dist/upward.js +3 -0
  348. package/dist/usage-guide.js +3 -1
  349. package/dist/validate.d.ts +4 -2
  350. package/dist/validate.js +86 -9
  351. package/dist/version.d.ts +1 -1
  352. package/dist/version.js +1 -1
  353. package/dist/worker.js +312 -292
  354. package/dist/workspace-subject.js +5 -1
  355. package/dist/write-outcome.js +454 -34
  356. package/documentation/README.md +27 -7
  357. package/documentation/architecture.md +2550 -186
  358. package/documentation/auth.md +821 -98
  359. package/documentation/code-mode.md +56 -21
  360. package/documentation/deploying.md +164 -20
  361. package/documentation/hosted-mcp-migration.md +460 -0
  362. package/documentation/integrating.md +144 -105
  363. package/documentation/meta-tools.md +411 -34
  364. package/documentation/operating.md +28 -4
  365. package/documentation/operator-tests.md +11 -2
  366. package/documentation/operator-ui.md +103 -33
  367. package/documentation/provider-auth-migration.md +38 -63
  368. package/documentation/provider-migration-0.29.md +10 -5
  369. package/documentation/provider-migration-0.35.md +975 -0
  370. package/documentation/providers.md +965 -0
  371. package/examples/worker/AGENTS.md +23 -9
  372. package/examples/worker/README.md +254 -135
  373. package/examples/worker/alchemy.run.ts +116 -0
  374. package/examples/worker/gitignore +10 -0
  375. package/examples/worker/src/connecta.config.ts +23 -21
  376. package/examples/worker/wrangler.jsonc +14 -5
  377. package/guides/connecting-agents.md +157 -0
  378. package/guides/how-it-works.md +156 -0
  379. package/guides/safety-and-trust.md +153 -0
  380. package/package.json +27 -42
  381. package/templates/node/.env.example +3 -0
  382. package/templates/node/README.md +22 -2
  383. package/templates/node/docker-compose.yml +1 -0
  384. package/templates/node/package.json +3 -2
  385. package/templates/node/src/connecta.config.ts +8 -0
  386. package/dist/catalog-drift.d.ts +0 -134
  387. package/dist/catalog-drift.js +0 -493
  388. package/dist/providers/_shared/request-token.js +0 -83
  389. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  390. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  391. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  392. package/dist/providers/basecamp/index.d.ts +0 -43
  393. package/dist/providers/basecamp/index.js +0 -997
  394. package/dist/providers/basecamp/skill.generated.js +0 -9
  395. package/dist/providers/cloudflare/rest.d.ts +0 -37
  396. package/dist/providers/cloudflare/rest.js +0 -1078
  397. package/dist/providers/github/hosted.js +0 -218
  398. package/dist/providers/github/rest.js +0 -321
  399. package/dist/providers/infisical/index.d.ts +0 -7
  400. package/dist/providers/infisical/index.js +0 -713
  401. package/dist/providers/infisical/skill.generated.js +0 -8
  402. package/dist/providers/linear/index.d.ts +0 -55
  403. package/dist/providers/linear/index.js +0 -352
  404. package/dist/providers/linear/skill.generated.js +0 -8
  405. package/dist/providers/mixpanel/index.d.ts +0 -57
  406. package/dist/providers/mixpanel/index.js +0 -468
  407. package/dist/providers/mixpanel/operations.js +0 -20
  408. package/dist/providers/mixpanel/rest.js +0 -603
  409. package/dist/providers/mixpanel/skill.generated.js +0 -10
  410. package/dist/providers/mixpanel/value-safety.js +0 -16
  411. package/dist/providers/notion/index.d.ts +0 -65
  412. package/dist/providers/notion/index.js +0 -368
  413. package/dist/providers/notion/openapi.generated.js +0 -75
  414. package/dist/providers/notion/rest.d.ts +0 -24
  415. package/dist/providers/notion/rest.js +0 -1226
  416. package/dist/providers/notion/skill.generated.js +0 -11
  417. package/dist/providers/notion/value-safety.js +0 -56
  418. package/dist/providers/revenuecat/index.d.ts +0 -49
  419. package/dist/providers/revenuecat/index.js +0 -557
  420. package/dist/providers/revenuecat/skill.generated.js +0 -11
  421. package/dist/providers/stripe/rest.d.ts +0 -14
  422. package/dist/providers/stripe/rest.js +0 -402
  423. package/dist/providers/vercel/rest.d.ts +0 -20
  424. package/dist/providers/vercel/rest.js +0 -1020
  425. package/dist/providers/wispr-flow/index.d.ts +0 -14
  426. package/dist/providers/wispr-flow/index.js +0 -117
  427. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  428. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -0,0 +1,92 @@
1
+ import { compactOpenApi } from "../_shared/rest/compact-index.js";
2
+ export const openapi = compactOpenApi({
3
+ source: "https://gmail.googleapis.com/$discovery/rest?version=v1",
4
+ revision: "20261019",
5
+ digest: "sha256:bf66f903acb058f8380b96697dcc08c778a3929182f7ec07f246b77f51cf2d97",
6
+ version: "v1",
7
+ servers: ["https://gmail.googleapis.com/gmail/v1/users/me"],
8
+ tags: ["users.drafts", "users.history", "users.labels", "users.messages", "users.messages.attachments", "users", "users.settings", "users.settings.cse.identities", "users.settings.cse.keypairs", "users.settings.delegates", "users.settings.filters", "users.settings.forwardingAddresses", "users.settings.sendAs", "users.settings.sendAs.smimeInfo", "users.threads"],
9
+ ops: [
10
+ ["GET", "/drafts", "gmail.users.drafts.list", "Find saved drafts with Gmail query filters.", 0],
11
+ ["POST", "/drafts", "gmail.users.drafts.create", "Refused: reply to email or save a draft via the hatch; use create_draft or update_draft.", 0],
12
+ ["POST", "/drafts/send", "gmail.users.drafts.send", "Refused: send mail; sending is never available; use create_draft or update_draft to save for review.", 0],
13
+ ["GET", "/drafts/{id}", "gmail.users.drafts.get", "Read a saved draft with headers, MIME parts and body metadata.", 0],
14
+ ["PUT", "/drafts/{id}", "gmail.users.drafts.update", "Refused: edit a draft via the hatch; use update_draft or create_draft.", 0],
15
+ ["DELETE", "/drafts/{id}", "gmail.users.drafts.delete", "Refused: delete drafts; use create_draft or update_draft only for drafts.", 0],
16
+ ["GET", "/history", "gmail.users.history.list", "List mail history changes after a history id.", 1],
17
+ ["GET", "/labels", "gmail.users.labels.list", "List Gmail labels and their human names.", 2],
18
+ ["POST", "/labels", "gmail.users.labels.create", "Refused: create labels; use create_draft or update_draft only for drafts.", 2],
19
+ ["GET", "/labels/{id}", "gmail.users.labels.get", "Read a mailbox label name and message or thread counts.", 2],
20
+ ["PUT", "/labels/{id}", "gmail.users.labels.update", "Refused: update labels; use create_draft or update_draft only for drafts.", 2],
21
+ ["PATCH", "/labels/{id}", "gmail.users.labels.patch", "Refused: patch labels; use create_draft or update_draft only for drafts.", 2],
22
+ ["DELETE", "/labels/{id}", "gmail.users.labels.delete", "Refused: delete labels; use create_draft or update_draft only for drafts.", 2],
23
+ ["GET", "/messages", "gmail.users.messages.list", "Search mail for unread messages by sender, subject, date and Gmail query filters.", 3],
24
+ ["POST", "/messages", "gmail.users.messages.insert", "Refused: insert messages; use create_draft or update_draft only for drafts.", 3],
25
+ ["POST", "/messages/batchDelete", "gmail.users.messages.batchDelete", "Refused: batch delete messages; use create_draft or update_draft only for drafts.", 3],
26
+ ["POST", "/messages/batchModify", "gmail.users.messages.batchModify", "Refused: batch modify messages; use create_draft or update_draft only for drafts.", 3],
27
+ ["POST", "/messages/import", "gmail.users.messages.import", "Refused: import messages; use create_draft or update_draft only for drafts.", 3],
28
+ ["POST", "/messages/send", "gmail.users.messages.send", "Refused: send mail; sending is never available; use create_draft or update_draft to save for review.", 3],
29
+ ["GET", "/messages/{id}", "gmail.users.messages.get", "Read RFC message headers, including custom or X- headers, labels, full MIME parts and body metadata.", 3],
30
+ ["DELETE", "/messages/{id}", "gmail.users.messages.delete", "Refused: delete messages; use create_draft or update_draft only for drafts.", 3],
31
+ ["POST", "/messages/{id}/modify", "gmail.users.messages.modify", "Refused: modify messages; use create_draft or update_draft only for drafts.", 3],
32
+ ["POST", "/messages/{id}/trash", "gmail.users.messages.trash", "Refused: trash messages; use create_draft or update_draft only for drafts.", 3],
33
+ ["POST", "/messages/{id}/untrash", "gmail.users.messages.untrash", "Refused: untrash messages; use create_draft or update_draft only for drafts.", 3],
34
+ ["GET", "/messages/{messageId}/attachments/{id}", "gmail.users.messages.attachments.get", "Download message attachments as base64url JSON data.", 4],
35
+ ["GET", "/profile", "gmail.users.getProfile", "Read mailbox profile email address and message counts.", 5],
36
+ ["GET", "/settings/autoForwarding", "gmail.users.settings.getAutoForwarding", "Refused: get auto forwarding settings; use create_draft or update_draft only for drafts.", 6],
37
+ ["PUT", "/settings/autoForwarding", "gmail.users.settings.updateAutoForwarding", "Refused: update auto forwarding settings; use create_draft or update_draft only for drafts.", 6],
38
+ ["GET", "/settings/cse/identities", "gmail.users.settings.cse.identities.list", "Refused: list settings cse identities; use create_draft or update_draft only for drafts.", 7],
39
+ ["POST", "/settings/cse/identities", "gmail.users.settings.cse.identities.create", "Refused: create settings cse identities; use create_draft or update_draft only for drafts.", 7],
40
+ ["GET", "/settings/cse/identities/{cseEmailAddress}", "gmail.users.settings.cse.identities.get", "Refused: get settings cse identities; use create_draft or update_draft only for drafts.", 7],
41
+ ["DELETE", "/settings/cse/identities/{cseEmailAddress}", "gmail.users.settings.cse.identities.delete", "Refused: delete settings cse identities; use create_draft or update_draft only for drafts.", 7],
42
+ ["PATCH", "/settings/cse/identities/{emailAddress}", "gmail.users.settings.cse.identities.patch", "Refused: patch settings cse identities; use create_draft or update_draft only for drafts.", 7],
43
+ ["GET", "/settings/cse/keypairs", "gmail.users.settings.cse.keypairs.list", "Refused: list settings cse keypairs; use create_draft or update_draft only for drafts.", 8],
44
+ ["POST", "/settings/cse/keypairs", "gmail.users.settings.cse.keypairs.create", "Refused: create settings cse keypairs; use create_draft or update_draft only for drafts.", 8],
45
+ ["GET", "/settings/cse/keypairs/{keyPairId}", "gmail.users.settings.cse.keypairs.get", "Refused: get settings cse keypairs; use create_draft or update_draft only for drafts.", 8],
46
+ ["POST", "/settings/cse/keypairs/{keyPairId}:disable", "gmail.users.settings.cse.keypairs.disable", "Refused: disable settings cse keypairs; use create_draft or update_draft only for drafts.", 8],
47
+ ["POST", "/settings/cse/keypairs/{keyPairId}:enable", "gmail.users.settings.cse.keypairs.enable", "Refused: enable settings cse keypairs; use create_draft or update_draft only for drafts.", 8],
48
+ ["POST", "/settings/cse/keypairs/{keyPairId}:obliterate", "gmail.users.settings.cse.keypairs.obliterate", "Refused: obliterate settings cse keypairs; use create_draft or update_draft only for drafts.", 8],
49
+ ["GET", "/settings/delegates", "gmail.users.settings.delegates.list", "Refused: list settings delegates; use create_draft or update_draft only for drafts.", 9],
50
+ ["POST", "/settings/delegates", "gmail.users.settings.delegates.create", "Refused: create settings delegates; use create_draft or update_draft only for drafts.", 9],
51
+ ["GET", "/settings/delegates/{delegateEmail}", "gmail.users.settings.delegates.get", "Refused: get settings delegates; use create_draft or update_draft only for drafts.", 9],
52
+ ["DELETE", "/settings/delegates/{delegateEmail}", "gmail.users.settings.delegates.delete", "Refused: delete settings delegates; use create_draft or update_draft only for drafts.", 9],
53
+ ["GET", "/settings/filters", "gmail.users.settings.filters.list", "Refused: list settings filters; use create_draft or update_draft only for drafts.", 10],
54
+ ["POST", "/settings/filters", "gmail.users.settings.filters.create", "Refused: create settings filters; use create_draft or update_draft only for drafts.", 10],
55
+ ["GET", "/settings/filters/{id}", "gmail.users.settings.filters.get", "Refused: get settings filters; use create_draft or update_draft only for drafts.", 10],
56
+ ["DELETE", "/settings/filters/{id}", "gmail.users.settings.filters.delete", "Refused: delete settings filters; use create_draft or update_draft only for drafts.", 10],
57
+ ["GET", "/settings/forwardingAddresses", "gmail.users.settings.forwardingAddresses.list", "Refused: list settings forwarding addresses; use create_draft or update_draft only for drafts.", 11],
58
+ ["POST", "/settings/forwardingAddresses", "gmail.users.settings.forwardingAddresses.create", "Refused: create settings forwarding addresses; use create_draft or update_draft only for drafts.", 11],
59
+ ["GET", "/settings/forwardingAddresses/{forwardingEmail}", "gmail.users.settings.forwardingAddresses.get", "Refused: get settings forwarding addresses; use create_draft or update_draft only for drafts.", 11],
60
+ ["DELETE", "/settings/forwardingAddresses/{forwardingEmail}", "gmail.users.settings.forwardingAddresses.delete", "Refused: delete settings forwarding addresses; use create_draft or update_draft only for drafts.", 11],
61
+ ["GET", "/settings/imap", "gmail.users.settings.getImap", "Refused: get imap settings; use create_draft or update_draft only for drafts.", 6],
62
+ ["PUT", "/settings/imap", "gmail.users.settings.updateImap", "Refused: update imap settings; use create_draft or update_draft only for drafts.", 6],
63
+ ["GET", "/settings/language", "gmail.users.settings.getLanguage", "Refused: get language settings; use create_draft or update_draft only for drafts.", 6],
64
+ ["PUT", "/settings/language", "gmail.users.settings.updateLanguage", "Refused: update language settings; use create_draft or update_draft only for drafts.", 6],
65
+ ["GET", "/settings/pop", "gmail.users.settings.getPop", "Refused: get pop settings; use create_draft or update_draft only for drafts.", 6],
66
+ ["PUT", "/settings/pop", "gmail.users.settings.updatePop", "Refused: update pop settings; use create_draft or update_draft only for drafts.", 6],
67
+ ["GET", "/settings/sendAs", "gmail.users.settings.sendAs.list", "Refused: list settings send as; use create_draft or update_draft only for drafts.", 12],
68
+ ["POST", "/settings/sendAs", "gmail.users.settings.sendAs.create", "Refused: create settings send as; use create_draft or update_draft only for drafts.", 12],
69
+ ["GET", "/settings/sendAs/{sendAsEmail}", "gmail.users.settings.sendAs.get", "Refused: get settings send as; use create_draft or update_draft only for drafts.", 12],
70
+ ["PUT", "/settings/sendAs/{sendAsEmail}", "gmail.users.settings.sendAs.update", "Refused: update settings send as; use create_draft or update_draft only for drafts.", 12],
71
+ ["PATCH", "/settings/sendAs/{sendAsEmail}", "gmail.users.settings.sendAs.patch", "Refused: patch settings send as; use create_draft or update_draft only for drafts.", 12],
72
+ ["DELETE", "/settings/sendAs/{sendAsEmail}", "gmail.users.settings.sendAs.delete", "Refused: delete settings send as; use create_draft or update_draft only for drafts.", 12],
73
+ ["GET", "/settings/sendAs/{sendAsEmail}/smimeInfo", "gmail.users.settings.sendAs.smimeInfo.list", "Refused: list settings send as smime info; use create_draft or update_draft only for drafts.", 13],
74
+ ["POST", "/settings/sendAs/{sendAsEmail}/smimeInfo", "gmail.users.settings.sendAs.smimeInfo.insert", "Refused: insert settings send as smime info; use create_draft or update_draft only for drafts.", 13],
75
+ ["GET", "/settings/sendAs/{sendAsEmail}/smimeInfo/{id}", "gmail.users.settings.sendAs.smimeInfo.get", "Refused: get settings send as smime info; use create_draft or update_draft only for drafts.", 13],
76
+ ["DELETE", "/settings/sendAs/{sendAsEmail}/smimeInfo/{id}", "gmail.users.settings.sendAs.smimeInfo.delete", "Refused: delete settings send as smime info; use create_draft or update_draft only for drafts.", 13],
77
+ ["POST", "/settings/sendAs/{sendAsEmail}/smimeInfo/{id}/setDefault", "gmail.users.settings.sendAs.smimeInfo.setDefault", "Refused: set default settings send as smime info; use create_draft or update_draft only for drafts.", 13],
78
+ ["POST", "/settings/sendAs/{sendAsEmail}/verify", "gmail.users.settings.sendAs.verify", "Refused: verify settings send as; use create_draft or update_draft only for drafts.", 12],
79
+ ["GET", "/settings/vacation", "gmail.users.settings.getVacation", "Refused: get vacation settings; use create_draft or update_draft only for drafts.", 6],
80
+ ["PUT", "/settings/vacation", "gmail.users.settings.updateVacation", "Refused: update vacation settings; use create_draft or update_draft only for drafts.", 6],
81
+ ["POST", "/stop", "gmail.users.stop", "Refused: stop mailbox notifications; use create_draft or update_draft only for drafts.", 5],
82
+ ["GET", "/threads", "gmail.users.threads.list", "Search mail for unread threads by sender, subject, date and Gmail query filters.", 14],
83
+ ["GET", "/threads/{id}", "gmail.users.threads.get", "Read thread messages with headers, labels, MIME parts and body metadata.", 14],
84
+ ["DELETE", "/threads/{id}", "gmail.users.threads.delete", "Refused: delete threads; use create_draft or update_draft only for drafts.", 14],
85
+ ["POST", "/threads/{id}/modify", "gmail.users.threads.modify", "Refused: modify threads; use create_draft or update_draft only for drafts.", 14],
86
+ ["POST", "/threads/{id}/trash", "gmail.users.threads.trash", "Refused: trash threads; use create_draft or update_draft only for drafts.", 14],
87
+ ["POST", "/threads/{id}/untrash", "gmail.users.threads.untrash", "Refused: untrash threads; use create_draft or update_draft only for drafts.", 14],
88
+ ["POST", "/watch", "gmail.users.watch", "Refused: watch mailbox notifications; use create_draft or update_draft only for drafts.", 5],
89
+ ],
90
+ fields: "{\"p\":[\"accessWindow\",\"action\",\"attachmentId\",\"autoExpunge\",\"classificationLabelValues\",\"classificationLabelValues[].fields\",\"classificationLabelValues[].labelId\",\"color\",\"criteria\",\"cseIdentities\",\"cseIdentities[].emailAddress\",\"cseIdentities[].primaryKeyPairId\",\"cseIdentities[].signAndEncryptKeyPairs\",\"cseKeyPairs\",\"cseKeyPairs[].disableTime\",\"cseKeyPairs[].enablementState\",\"cseKeyPairs[].keyPairId\",\"cseKeyPairs[].pem\",\"cseKeyPairs[].pkcs7\",\"cseKeyPairs[].privateKeyMetadata\",\"cseKeyPairs[].subjectEmailAddresses\",\"data\",\"delegateEmail\",\"delegates\",\"delegates[].delegateEmail\",\"delegates[].verificationStatus\",\"disableTime\",\"displayLanguage\",\"displayName\",\"disposition\",\"drafts\",\"drafts[].id\",\"drafts[].message\",\"emailAddress\",\"enableAutoReply\",\"enabled\",\"enablementState\",\"encryptedKeyPassword\",\"endTime\",\"expiration\",\"expungeBehavior\",\"filter\",\"filter[].action\",\"filter[].criteria\",\"filter[].id\",\"forwardingAddresses\",\"forwardingAddresses[].forwardingEmail\",\"forwardingAddresses[].verificationStatus\",\"forwardingEmail\",\"history\",\"historyId\",\"history[].id\",\"history[].labelsAdded\",\"history[].labelsRemoved\",\"history[].messages\",\"history[].messagesAdded\",\"history[].messagesDeleted\",\"id\",\"internalDate\",\"isDefault\",\"isPrimary\",\"issuerCn\",\"keyPairId\",\"labelIds\",\"labelListVisibility\",\"labels\",\"labels[].color\",\"labels[].id\",\"labels[].labelListVisibility\",\"labels[].messageListVisibility\",\"labels[].messagesTotal\",\"labels[].messagesUnread\",\"labels[].name\",\"labels[].threadsTotal\",\"labels[].threadsUnread\",\"labels[].type\",\"maxFolderSize\",\"message\",\"messageListVisibility\",\"messages\",\"messagesTotal\",\"messagesUnread\",\"messages[].classificationLabelValues\",\"messages[].historyId\",\"messages[].id\",\"messages[].internalDate\",\"messages[].labelIds\",\"messages[].payload\",\"messages[].raw\",\"messages[].sizeEstimate\",\"messages[].snippet\",\"messages[].threadId\",\"name\",\"nextPageToken\",\"payload\",\"pem\",\"pkcs12\",\"pkcs7\",\"primaryKeyPairId\",\"privateKeyMetadata\",\"privateKeyMetadata[].hardwareKeyMetadata\",\"privateKeyMetadata[].kaclsKeyMetadata\",\"privateKeyMetadata[].privateKeyMetadataId\",\"raw\",\"replyToAddress\",\"responseBodyHtml\",\"responseBodyPlainText\",\"responseSubject\",\"restrictToContacts\",\"restrictToDomain\",\"resultSizeEstimate\",\"sendAs\",\"sendAsEmail\",\"sendAs[].displayName\",\"sendAs[].isDefault\",\"sendAs[].isPrimary\",\"sendAs[].replyToAddress\",\"sendAs[].sendAsEmail\",\"sendAs[].signature\",\"sendAs[].smtpMsa\",\"sendAs[].treatAsAlias\",\"sendAs[].verificationStatus\",\"signAndEncryptKeyPairs\",\"signature\",\"size\",\"sizeEstimate\",\"smimeInfo\",\"smimeInfo[].encryptedKeyPassword\",\"smimeInfo[].expiration\",\"smimeInfo[].id\",\"smimeInfo[].isDefault\",\"smimeInfo[].issuerCn\",\"smimeInfo[].pem\",\"smimeInfo[].pkcs12\",\"smtpMsa\",\"snippet\",\"startTime\",\"subjectEmailAddresses\",\"threadId\",\"threads\",\"threadsTotal\",\"threadsUnread\",\"threads[].historyId\",\"threads[].id\",\"threads[].messages\",\"threads[].snippet\",\"treatAsAlias\",\"type\",\"verificationStatus\"],\"d\":[[30,31,32,93,110],[57,77],[4,5,6,50,57,58,63,94,103,125,135,138],[],[49,50,51,52,53,54,55,56,93],[65,66,67,68,69,70,71,72,73,74,75],[7,57,64,78,80,81,92,140,141,147],[79,82,83,84,85,86,87,88,89,90,91,93,110],[2,21,124],[33,50,80,140],[29,33,35],[9,10,11,12,93],[33,98,122],[13,14,15,16,17,18,19,20,93],[26,36,62,95,97,99,100,101,102,137],[23,24,25],[22,148],[41,42,43,44],[1,8,57],[45,46,47],[48,148],[3,35,40,76],[27],[0,29],[111,113,114,115,116,117,118,119,120,121],[28,59,60,104,112,123,134,146,148],[126,127,128,129,130,131,132,133],[37,39,57,59,61,95,96],[34,38,105,106,107,108,109,136],[93,110,139,142,143,144,145],[50,57,79,82,83,84,85,86,87,88,89,90,91,135],[39,50]],\"o\":[0,1,2,1,1,3,4,5,6,6,6,6,3,7,2,3,3,2,2,2,3,2,2,2,8,9,10,10,11,12,12,3,12,13,14,14,14,14,3,15,16,16,3,17,18,18,3,19,20,20,3,21,21,22,22,23,23,24,25,25,25,25,3,26,27,27,3,3,3,28,28,3,29,30,3,30,30,30,31]}",
91
+ requestSchemas: "{\"definitions\":{\"Input_Draft\":{\"description\":\"A draft email in the user's mailbox.\",\"properties\":{\"id\":{\"description\":\"The immutable ID of the draft.\",\"type\":\"string\"},\"message\":{\"description\":\"The message content of the draft.\",\"$ref\":\"#/$defs/Input_Message\"}},\"type\":\"object\"},\"Input_Message\":{\"description\":\"An email message.\",\"properties\":{\"classificationLabelValues\":{\"description\":\"Classification Label values on the message.\",\"items\":{\"$ref\":\"#/$defs/Input_ClassificationLabelValue\"},\"type\":\"array\"},\"historyId\":{\"description\":\"The ID of the last history record that modified this message.\",\"format\":\"uint64\",\"type\":\"string\"},\"id\":{\"description\":\"The immutable ID of the message.\",\"type\":\"string\"},\"internalDate\":{\"description\":\"The internal message creation timestamp (epoch ms), which determines ordering in the inbox.\",\"format\":\"int64\",\"type\":\"string\"},\"labelIds\":{\"description\":\"List of IDs of labels applied to this message.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"payload\":{\"description\":\"The parsed email structure in the message parts.\",\"$ref\":\"#/$defs/Input_MessagePart\"},\"raw\":{\"description\":\"The entire email message in an RFC 2822 formatted and base64url encoded string.\",\"format\":\"byte\",\"type\":\"string\"},\"sizeEstimate\":{\"description\":\"Estimated size in bytes of the message.\",\"format\":\"int32\",\"type\":\"integer\"},\"snippet\":{\"description\":\"A short part of the message text.\",\"type\":\"string\"},\"threadId\":{\"description\":\"The ID of the thread the message belongs to.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_ClassificationLabelValue\":{\"description\":\"Classification Labels applied to the email message.\",\"properties\":{\"fields\":{\"description\":\"Field values for the given classification label ID.\",\"items\":{\"$ref\":\"#/$defs/Input_ClassificationLabelFieldValue\"},\"type\":\"array\"},\"labelId\":{\"description\":\"Required.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_ClassificationLabelFieldValue\":{\"description\":\"Field values for a classification label.\",\"properties\":{\"fieldId\":{\"description\":\"Required.\",\"type\":\"string\"},\"selection\":{\"description\":\"Selection choice ID for the selection option.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_MessagePart\":{\"description\":\"A single MIME message part.\",\"properties\":{\"body\":{\"description\":\"The message part body for this part, which may be empty for container MIME message parts.\",\"$ref\":\"#/$defs/Input_MessagePartBody\"},\"filename\":{\"description\":\"The filename of the attachment.\",\"type\":\"string\"},\"headers\":{\"description\":\"List of headers on this message part.\",\"items\":{\"$ref\":\"#/$defs/Input_MessagePartHeader\"},\"type\":\"array\"},\"mimeType\":{\"description\":\"The MIME type of the message part.\",\"type\":\"string\"},\"partId\":{\"description\":\"The immutable ID of the message part.\",\"type\":\"string\"},\"parts\":{\"description\":\"The child MIME message parts of this part.\",\"items\":{\"$ref\":\"#/$defs/Input_MessagePart\"},\"type\":\"array\"}},\"type\":\"object\"},\"Input_MessagePartBody\":{\"description\":\"The body of a single MIME message part.\",\"properties\":{\"attachmentId\":{\"description\":\"When present, contains the ID of an external attachment that can be retrieved in a separate `messages.attachments.get` request.\",\"type\":\"string\"},\"data\":{\"description\":\"The body data of a MIME message part as a base64url encoded string.\",\"format\":\"byte\",\"type\":\"string\"},\"size\":{\"description\":\"Number of bytes for the message part data (encoding notwithstanding).\",\"format\":\"int32\",\"type\":\"integer\"}},\"type\":\"object\"},\"Input_MessagePartHeader\":{\"properties\":{\"name\":{\"description\":\"The name of the header before the `:` separator.\",\"type\":\"string\"},\"value\":{\"description\":\"The value of the header after the `:` separator.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_gmail_users_drafts_send_Draft\":{\"description\":\"A draft email in the user's mailbox.\",\"properties\":{\"id\":{\"description\":\"The immutable ID of the draft.\",\"type\":\"string\"},\"message\":{\"description\":\"The message content of the draft.\",\"$ref\":\"#/$defs/Input_Message\"}},\"required\":[\"id\"],\"type\":\"object\"},\"Input_gmail_users_labels_create_Label\":{\"description\":\"Labels are used to categorize messages and threads within the user's mailbox.\",\"properties\":{\"color\":{\"description\":\"The color to assign to the label.\",\"$ref\":\"#/$defs/Input_LabelColor\"},\"id\":{\"description\":\"The immutable ID of the label.\",\"type\":\"string\"},\"labelListVisibility\":{\"description\":\"The visibility of the label in the label list in the Gmail web interface.\",\"enum\":[\"labelShow\",\"labelShowIfUnread\",\"labelHide\"],\"type\":\"string\"},\"messageListVisibility\":{\"description\":\"The visibility of messages with this label in the message list in the Gmail web interface.\",\"enum\":[\"show\",\"hide\"],\"type\":\"string\"},\"messagesTotal\":{\"description\":\"The total number of messages with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"messagesUnread\":{\"description\":\"The number of unread messages with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"name\":{\"description\":\"The display name of the label.\",\"type\":\"string\"},\"threadsTotal\":{\"description\":\"The total number of threads with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"threadsUnread\":{\"description\":\"The number of unread threads with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"type\":{\"description\":\"The owner type for the label.\",\"enum\":[\"system\",\"user\"],\"type\":\"string\"}},\"required\":[\"messageListVisibility\",\"labelListVisibility\",\"name\"],\"type\":\"object\"},\"Input_LabelColor\":{\"properties\":{\"backgroundColor\":{\"description\":\"The background color represented as hex string #RRGGBB (ex #000000).\",\"type\":\"string\"},\"textColor\":{\"description\":\"The text color of the label, represented as hex string.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_gmail_users_labels_update_Label\":{\"description\":\"Labels are used to categorize messages and threads within the user's mailbox.\",\"properties\":{\"color\":{\"description\":\"The color to assign to the label.\",\"$ref\":\"#/$defs/Input_LabelColor\"},\"id\":{\"description\":\"The immutable ID of the label.\",\"type\":\"string\"},\"labelListVisibility\":{\"description\":\"The visibility of the label in the label list in the Gmail web interface.\",\"enum\":[\"labelShow\",\"labelShowIfUnread\",\"labelHide\"],\"type\":\"string\"},\"messageListVisibility\":{\"description\":\"The visibility of messages with this label in the message list in the Gmail web interface.\",\"enum\":[\"show\",\"hide\"],\"type\":\"string\"},\"messagesTotal\":{\"description\":\"The total number of messages with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"messagesUnread\":{\"description\":\"The number of unread messages with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"name\":{\"description\":\"The display name of the label.\",\"type\":\"string\"},\"threadsTotal\":{\"description\":\"The total number of threads with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"threadsUnread\":{\"description\":\"The number of unread threads with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"type\":{\"description\":\"The owner type for the label.\",\"enum\":[\"system\",\"user\"],\"type\":\"string\"}},\"required\":[\"id\",\"messageListVisibility\",\"labelListVisibility\",\"name\"],\"type\":\"object\"},\"Input_Label\":{\"description\":\"Labels are used to categorize messages and threads within the user's mailbox.\",\"properties\":{\"color\":{\"description\":\"The color to assign to the label.\",\"$ref\":\"#/$defs/Input_LabelColor\"},\"id\":{\"description\":\"The immutable ID of the label.\",\"type\":\"string\"},\"labelListVisibility\":{\"description\":\"The visibility of the label in the label list in the Gmail web interface.\",\"enum\":[\"labelShow\",\"labelShowIfUnread\",\"labelHide\"],\"type\":\"string\"},\"messageListVisibility\":{\"description\":\"The visibility of messages with this label in the message list in the Gmail web interface.\",\"enum\":[\"show\",\"hide\"],\"type\":\"string\"},\"messagesTotal\":{\"description\":\"The total number of messages with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"messagesUnread\":{\"description\":\"The number of unread messages with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"name\":{\"description\":\"The display name of the label.\",\"type\":\"string\"},\"threadsTotal\":{\"description\":\"The total number of threads with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"threadsUnread\":{\"description\":\"The number of unread threads with the label.\",\"format\":\"int32\",\"type\":\"integer\"},\"type\":{\"description\":\"The owner type for the label.\",\"enum\":[\"system\",\"user\"],\"type\":\"string\"}},\"type\":\"object\"},\"Input_gmail_users_messages_insert_Message\":{\"description\":\"An email message.\",\"properties\":{\"classificationLabelValues\":{\"description\":\"Classification Label values on the message.\",\"items\":{\"$ref\":\"#/$defs/Input_ClassificationLabelValue\"},\"type\":\"array\"},\"historyId\":{\"description\":\"The ID of the last history record that modified this message.\",\"format\":\"uint64\",\"type\":\"string\"},\"id\":{\"description\":\"The immutable ID of the message.\",\"type\":\"string\"},\"internalDate\":{\"description\":\"The internal message creation timestamp (epoch ms), which determines ordering in the inbox.\",\"format\":\"int64\",\"type\":\"string\"},\"labelIds\":{\"description\":\"List of IDs of labels applied to this message.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"payload\":{\"description\":\"The parsed email structure in the message parts.\",\"$ref\":\"#/$defs/Input_MessagePart\"},\"raw\":{\"description\":\"The entire email message in an RFC 2822 formatted and base64url encoded string.\",\"format\":\"byte\",\"type\":\"string\"},\"sizeEstimate\":{\"description\":\"Estimated size in bytes of the message.\",\"format\":\"int32\",\"type\":\"integer\"},\"snippet\":{\"description\":\"A short part of the message text.\",\"type\":\"string\"},\"threadId\":{\"description\":\"The ID of the thread the message belongs to.\",\"type\":\"string\"}},\"required\":[\"raw\"],\"type\":\"object\"},\"Input_BatchDeleteMessagesRequest\":{\"properties\":{\"ids\":{\"description\":\"The IDs of the messages to delete.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"type\":\"object\"},\"Input_BatchModifyMessagesRequest\":{\"properties\":{\"addClassificationLabels\":{\"description\":\"A list of Classification Label values to add.\",\"items\":{\"$ref\":\"#/$defs/Input_ClassificationLabelValue\"},\"type\":\"array\"},\"addLabelIds\":{\"description\":\"A list of label IDs to add to messages.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"ids\":{\"description\":\"The IDs of the messages to modify.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"removeClassificationLabelIds\":{\"description\":\"A list of Classification Label values to remove from messages.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"removeLabelIds\":{\"description\":\"A list of label IDs to remove from messages.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"type\":\"object\"},\"Input_gmail_users_messages_send_Message\":{\"description\":\"An email message.\",\"properties\":{\"classificationLabelValues\":{\"description\":\"Classification Label values on the message.\",\"items\":{\"$ref\":\"#/$defs/Input_ClassificationLabelValue\"},\"type\":\"array\"},\"historyId\":{\"description\":\"The ID of the last history record that modified this message.\",\"format\":\"uint64\",\"type\":\"string\"},\"id\":{\"description\":\"The immutable ID of the message.\",\"type\":\"string\"},\"internalDate\":{\"description\":\"The internal message creation timestamp (epoch ms), which determines ordering in the inbox.\",\"format\":\"int64\",\"type\":\"string\"},\"labelIds\":{\"description\":\"List of IDs of labels applied to this message.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"payload\":{\"description\":\"The parsed email structure in the message parts.\",\"$ref\":\"#/$defs/Input_MessagePart\"},\"raw\":{\"description\":\"The entire email message in an RFC 2822 formatted and base64url encoded string.\",\"format\":\"byte\",\"type\":\"string\"},\"sizeEstimate\":{\"description\":\"Estimated size in bytes of the message.\",\"format\":\"int32\",\"type\":\"integer\"},\"snippet\":{\"description\":\"A short part of the message text.\",\"type\":\"string\"},\"threadId\":{\"description\":\"The ID of the thread the message belongs to.\",\"type\":\"string\"}},\"required\":[\"raw\"],\"type\":\"object\"},\"Input_ModifyMessageRequest\":{\"properties\":{\"addClassificationLabels\":{\"description\":\"A list of classification label values to add.\",\"items\":{\"$ref\":\"#/$defs/Input_ClassificationLabelValue\"},\"type\":\"array\"},\"addLabelIds\":{\"description\":\"A list of IDs of labels to add to this message.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"removeClassificationLabelIds\":{\"description\":\"A list of Classification Label values to remove from this message.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"removeLabelIds\":{\"description\":\"A list IDs of labels to remove from this message.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"type\":\"object\"},\"Input_AutoForwarding\":{\"description\":\"Auto-forwarding settings for an account.\",\"properties\":{\"disposition\":{\"description\":\"The state that a message should be left in after it has been forwarded.\",\"enum\":[\"dispositionUnspecified\",\"leaveInInbox\",\"archive\",\"trash\",\"markRead\"],\"type\":\"string\"},\"emailAddress\":{\"description\":\"Email address to which all incoming messages are forwarded.\",\"type\":\"string\"},\"enabled\":{\"description\":\"Whether all incoming mail is automatically forwarded to another address.\",\"type\":\"boolean\"}},\"type\":\"object\"},\"Input_CseIdentity\":{\"description\":\"The client-side encryption (CSE) configuration for the email address of an authenticated user.\",\"properties\":{\"emailAddress\":{\"description\":\"The email address for the sending identity.\",\"type\":\"string\"},\"primaryKeyPairId\":{\"description\":\"If a key pair is associated, the ID of the key pair, CseKeyPair.\",\"type\":\"string\"},\"signAndEncryptKeyPairs\":{\"description\":\"The configuration of a CSE identity that uses different key pairs for signing and encryption.\",\"$ref\":\"#/$defs/Input_SignAndEncryptKeyPairs\"}},\"type\":\"object\"},\"Input_SignAndEncryptKeyPairs\":{\"description\":\"The configuration of a CSE identity that uses different key pairs for signing and encryption.\",\"properties\":{\"encryptionKeyPairId\":{\"description\":\"The ID of the CseKeyPair that encrypts signed outgoing mail.\",\"type\":\"string\"},\"signingKeyPairId\":{\"description\":\"The ID of the CseKeyPair that signs outgoing mail.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_CseKeyPair\":{\"description\":\"A client-side encryption S/MIME key pair, which is comprised of a public key, its certificate chain, and metadata for its paired private key.\",\"properties\":{\"pkcs7\":{\"description\":\"Input only.\",\"type\":\"string\"},\"privateKeyMetadata\":{\"description\":\"Metadata for instances of this key pair's private key.\",\"items\":{\"$ref\":\"#/$defs/Input_CsePrivateKeyMetadata\"},\"type\":\"array\"}},\"type\":\"object\"},\"Input_CsePrivateKeyMetadata\":{\"description\":\"Metadata for a private key instance.\",\"properties\":{\"hardwareKeyMetadata\":{\"description\":\"Metadata for hardware keys.\",\"$ref\":\"#/$defs/Input_HardwareKeyMetadata\"},\"kaclsKeyMetadata\":{\"description\":\"Metadata for a private key instance managed by an external key access control list service.\",\"$ref\":\"#/$defs/Input_KaclsKeyMetadata\"}},\"type\":\"object\"},\"Input_HardwareKeyMetadata\":{\"description\":\"Metadata for hardware keys.\",\"properties\":{\"description\":{\"description\":\"Description about the hardware key.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_KaclsKeyMetadata\":{\"description\":\"Metadata for a cryptographic key managed by an external key access control list service.\",\"properties\":{\"kaclsData\":{\"description\":\"Opaque data generated and used by the key access control list service.\",\"type\":\"string\"},\"kaclsUri\":{\"description\":\"The URI of the key access control list service that manages the key.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_DisableCseKeyPairRequest\":{\"additionalProperties\":true,\"description\":\"Requests to turn off a client-side encryption key pair.\",\"properties\":{},\"type\":\"object\"},\"Input_EnableCseKeyPairRequest\":{\"additionalProperties\":true,\"description\":\"Requests to turn on a client-side encryption key pair.\",\"properties\":{},\"type\":\"object\"},\"Input_ObliterateCseKeyPairRequest\":{\"additionalProperties\":true,\"description\":\"Request to obliterate a CSE key pair.\",\"properties\":{},\"type\":\"object\"},\"Input_Delegate\":{\"description\":\"Settings for a delegate.\",\"properties\":{\"delegateEmail\":{\"description\":\"The email address of the delegate.\",\"type\":\"string\"},\"verificationStatus\":{\"description\":\"Indicates whether this address has been verified and can act as a delegate for the account.\",\"enum\":[\"verificationStatusUnspecified\",\"accepted\",\"pending\",\"rejected\",\"expired\"],\"type\":\"string\"}},\"type\":\"object\"},\"Input_Filter\":{\"description\":\"Resource definition for Gmail filters.\",\"properties\":{\"action\":{\"description\":\"Action that the filter performs.\",\"$ref\":\"#/$defs/Input_FilterAction\"},\"criteria\":{\"description\":\"Matching criteria for the filter.\",\"$ref\":\"#/$defs/Input_FilterCriteria\"},\"id\":{\"description\":\"The server assigned ID of the filter.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_FilterAction\":{\"description\":\"A set of actions to perform on a message.\",\"properties\":{\"addLabelIds\":{\"description\":\"List of labels to add to the message.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"forward\":{\"description\":\"Email address that the message should be forwarded to.\",\"type\":\"string\"},\"removeLabelIds\":{\"description\":\"List of labels to remove from the message.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"type\":\"object\"},\"Input_FilterCriteria\":{\"description\":\"Message matching criteria.\",\"properties\":{\"excludeChats\":{\"description\":\"Whether the response should exclude chats.\",\"type\":\"boolean\"},\"from\":{\"description\":\"The sender's display name or email address.\",\"type\":\"string\"},\"hasAttachment\":{\"description\":\"Whether the message has any attachment.\",\"type\":\"boolean\"},\"negatedQuery\":{\"description\":\"Only return messages not matching the specified query.\",\"type\":\"string\"},\"query\":{\"description\":\"Only return messages matching the specified query.\",\"type\":\"string\"},\"size\":{\"description\":\"The size of the entire RFC822 message in bytes, including all headers and attachments.\",\"format\":\"int32\",\"type\":\"integer\"},\"sizeComparison\":{\"description\":\"How the message size in bytes should be in relation to the size field.\",\"enum\":[\"unspecified\",\"smaller\",\"larger\"],\"type\":\"string\"},\"subject\":{\"description\":\"Case-insensitive phrase found in the message's subject.\",\"type\":\"string\"},\"to\":{\"description\":\"The recipient's display name or email address.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_ForwardingAddress\":{\"description\":\"Settings for a forwarding address.\",\"properties\":{\"forwardingEmail\":{\"description\":\"An email address to which messages can be forwarded.\",\"type\":\"string\"},\"verificationStatus\":{\"description\":\"Indicates whether this address has been verified and is usable for forwarding.\",\"enum\":[\"verificationStatusUnspecified\",\"accepted\",\"pending\"],\"type\":\"string\"}},\"type\":\"object\"},\"Input_ImapSettings\":{\"description\":\"IMAP settings for an account.\",\"properties\":{\"autoExpunge\":{\"description\":\"If this value is true, Gmail will immediately expunge a message when it is marked as deleted in IMAP.\",\"type\":\"boolean\"},\"enabled\":{\"description\":\"Whether IMAP is enabled for the account.\",\"type\":\"boolean\"},\"expungeBehavior\":{\"description\":\"The action that will be executed on a message when it is marked as deleted and expunged from the last visible IMAP folder.\",\"enum\":[\"expungeBehaviorUnspecified\",\"archive\",\"trash\",\"deleteForever\"],\"type\":\"string\"},\"maxFolderSize\":{\"description\":\"An optional limit on the number of messages that an IMAP folder may contain.\",\"format\":\"int32\",\"type\":\"integer\"}},\"type\":\"object\"},\"Input_LanguageSettings\":{\"description\":\"Language settings for an account.\",\"properties\":{\"displayLanguage\":{\"description\":\"The language to display Gmail in, formatted as an RFC 3066 Language Tag (for example `en-GB`, `fr` or `ja` for British English, French, or Japanese respectivel…\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_PopSettings\":{\"description\":\"POP settings for an account.\",\"properties\":{\"accessWindow\":{\"description\":\"The range of messages which are accessible via POP.\",\"enum\":[\"accessWindowUnspecified\",\"disabled\",\"fromNowOn\",\"allMail\"],\"type\":\"string\"},\"disposition\":{\"description\":\"The action that will be executed on a message after it has been fetched via POP.\",\"enum\":[\"dispositionUnspecified\",\"leaveInInbox\",\"archive\",\"trash\",\"markRead\"],\"type\":\"string\"}},\"type\":\"object\"},\"Input_SendAs\":{\"description\":\"Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom \\\"from\\\" address.\",\"properties\":{\"displayName\":{\"description\":\"A name that appears in the \\\"From:\\\" header for mail sent using this alias.\",\"type\":\"string\"},\"isDefault\":{\"description\":\"Whether this address is selected as the default \\\"From:\\\" address in situations such as composing a new message or sending a vacation auto-reply.\",\"type\":\"boolean\"},\"isPrimary\":{\"description\":\"Whether this address is the primary address used to login to the account.\",\"type\":\"boolean\"},\"replyToAddress\":{\"description\":\"An optional email address that is included in a \\\"Reply-To:\\\" header for mail sent using this alias.\",\"type\":\"string\"},\"sendAsEmail\":{\"description\":\"The email address that appears in the \\\"From:\\\" header for mail sent using this alias.\",\"type\":\"string\"},\"signature\":{\"description\":\"An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.\",\"type\":\"string\"},\"smtpMsa\":{\"description\":\"An optional SMTP service that will be used as an outbound relay for mail sent using this alias.\",\"$ref\":\"#/$defs/Input_SmtpMsa\"},\"treatAsAlias\":{\"description\":\"Whether Gmail should treat this address as an alias for the user's primary email address.\",\"type\":\"boolean\"},\"verificationStatus\":{\"description\":\"Indicates whether this address has been verified for use as a send-as alias.\",\"enum\":[\"verificationStatusUnspecified\",\"accepted\",\"pending\"],\"type\":\"string\"}},\"type\":\"object\"},\"Input_SmtpMsa\":{\"description\":\"Configuration for communication with an SMTP service.\",\"properties\":{\"host\":{\"description\":\"The hostname of the SMTP service.\",\"type\":\"string\"},\"password\":{\"description\":\"The password that will be used for authentication with the SMTP service.\",\"type\":\"string\"},\"port\":{\"description\":\"The port of the SMTP service.\",\"format\":\"int32\",\"type\":\"integer\"},\"securityMode\":{\"description\":\"The protocol that will be used to secure communication with the SMTP service.\",\"enum\":[\"securityModeUnspecified\",\"none\",\"ssl\",\"starttls\"],\"type\":\"string\"},\"username\":{\"description\":\"The username that will be used for authentication with the SMTP service.\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_SmimeInfo\":{\"description\":\"An S/MIME email config.\",\"properties\":{\"encryptedKeyPassword\":{\"description\":\"Encrypted key password, when key is encrypted.\",\"type\":\"string\"},\"expiration\":{\"description\":\"When the certificate expires (in milliseconds since epoch).\",\"format\":\"int64\",\"type\":\"string\"},\"id\":{\"description\":\"The immutable ID for the SmimeInfo.\",\"type\":\"string\"},\"isDefault\":{\"description\":\"Whether this SmimeInfo is the default one for this user's send-as address.\",\"type\":\"boolean\"},\"issuerCn\":{\"description\":\"The S/MIME certificate issuer's common name.\",\"type\":\"string\"},\"pem\":{\"description\":\"PEM formatted X509 concatenated certificate string (standard base64 encoding).\",\"type\":\"string\"},\"pkcs12\":{\"description\":\"PKCS#12 format containing a single private/public key pair and certificate chain.\",\"format\":\"byte\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_VacationSettings\":{\"description\":\"Vacation auto-reply settings for an account.\",\"properties\":{\"enableAutoReply\":{\"description\":\"Flag that controls whether Gmail automatically replies to messages.\",\"type\":\"boolean\"},\"endTime\":{\"description\":\"An optional end time for sending auto-replies (epoch ms).\",\"format\":\"int64\",\"type\":\"string\"},\"responseBodyHtml\":{\"description\":\"Response body in HTML format.\",\"type\":\"string\"},\"responseBodyPlainText\":{\"description\":\"Response body in plain text format.\",\"type\":\"string\"},\"responseSubject\":{\"description\":\"Optional text to prepend to the subject line in vacation responses.\",\"type\":\"string\"},\"restrictToContacts\":{\"description\":\"Flag that determines whether responses are sent to recipients who are not in the user's list of contacts.\",\"type\":\"boolean\"},\"restrictToDomain\":{\"description\":\"Flag that determines whether responses are sent to recipients who are outside of the user's domain.\",\"type\":\"boolean\"},\"startTime\":{\"description\":\"An optional start time for sending auto-replies (epoch ms).\",\"format\":\"int64\",\"type\":\"string\"}},\"type\":\"object\"},\"Input_ModifyThreadRequest\":{\"properties\":{\"addLabelIds\":{\"description\":\"A list of IDs of labels to add to this thread.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"removeLabelIds\":{\"description\":\"A list of IDs of labels to remove from this thread.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"}},\"type\":\"object\"},\"Input_WatchRequest\":{\"description\":\"Set up or update a new push notification watch on this user's mailbox.\",\"properties\":{\"labelFilterAction\":{\"deprecated\":true,\"description\":\"Filtering behavior of `labelIds list` specified.\",\"enum\":[\"include\",\"exclude\"],\"type\":\"string\"},\"labelFilterBehavior\":{\"description\":\"Filtering behavior of `labelIds list` specified.\",\"enum\":[\"include\",\"exclude\"],\"type\":\"string\"},\"labelIds\":{\"description\":\"List of label_ids to restrict notifications about.\",\"items\":{\"type\":\"string\"},\"type\":\"array\"},\"topicName\":{\"description\":\"A fully qualified Google Cloud Pub/Sub API topic name to publish the events to.\",\"type\":\"string\"}},\"type\":\"object\"}},\"roots\":[null,{\"$ref\":\"#/$defs/Input_Draft\"},{\"$ref\":\"#/$defs/Input_gmail_users_drafts_send_Draft\"},null,{\"$ref\":\"#/$defs/Input_Draft\"},null,null,null,{\"$ref\":\"#/$defs/Input_gmail_users_labels_create_Label\"},null,{\"$ref\":\"#/$defs/Input_gmail_users_labels_update_Label\"},{\"$ref\":\"#/$defs/Input_Label\"},null,null,{\"$ref\":\"#/$defs/Input_gmail_users_messages_insert_Message\"},{\"$ref\":\"#/$defs/Input_BatchDeleteMessagesRequest\"},{\"$ref\":\"#/$defs/Input_BatchModifyMessagesRequest\"},{\"$ref\":\"#/$defs/Input_Message\"},{\"$ref\":\"#/$defs/Input_gmail_users_messages_send_Message\"},null,null,{\"$ref\":\"#/$defs/Input_ModifyMessageRequest\"},null,null,null,null,null,{\"$ref\":\"#/$defs/Input_AutoForwarding\"},null,{\"$ref\":\"#/$defs/Input_CseIdentity\"},null,null,{\"$ref\":\"#/$defs/Input_CseIdentity\"},null,{\"$ref\":\"#/$defs/Input_CseKeyPair\"},null,{\"$ref\":\"#/$defs/Input_DisableCseKeyPairRequest\"},{\"$ref\":\"#/$defs/Input_EnableCseKeyPairRequest\"},{\"$ref\":\"#/$defs/Input_ObliterateCseKeyPairRequest\"},null,{\"$ref\":\"#/$defs/Input_Delegate\"},null,null,null,{\"$ref\":\"#/$defs/Input_Filter\"},null,null,null,{\"$ref\":\"#/$defs/Input_ForwardingAddress\"},null,null,null,{\"$ref\":\"#/$defs/Input_ImapSettings\"},null,{\"$ref\":\"#/$defs/Input_LanguageSettings\"},null,{\"$ref\":\"#/$defs/Input_PopSettings\"},null,{\"$ref\":\"#/$defs/Input_SendAs\"},null,{\"$ref\":\"#/$defs/Input_SendAs\"},{\"$ref\":\"#/$defs/Input_SendAs\"},null,null,{\"$ref\":\"#/$defs/Input_SmimeInfo\"},null,null,null,null,null,{\"$ref\":\"#/$defs/Input_VacationSettings\"},null,null,null,null,{\"$ref\":\"#/$defs/Input_ModifyThreadRequest\"},null,null,{\"$ref\":\"#/$defs/Input_WatchRequest\"}]}",
92
+ }, { "length": 38470, "definitions": "[{\"t\":\"object\",\"p\":{\"id\":{\"t\":\"string\",\"d\":\"The immutable ID of the draft.\"},\"message\":{\"$\":1}}},{\"t\":\"object\",\"d\":\"An email message.\",\"p\":{\"classificationLabelValues\":{\"$\":2},\"historyId\":{\"t\":\"string\",\"f\":\"uint64\"},\"id\":{\"t\":\"string\"},\"internalDate\":{\"t\":\"string\",\"f\":\"int64\"},\"labelIds\":{\"t\":\"array\",\"i\":{\"t\":\"string\"}},\"payload\":{\"$\":4},\"raw\":{\"t\":\"string\",\"f\":\"byte\"},\"sizeEstimate\":{\"t\":\"integer\",\"f\":\"int32\"},\"snippet\":{\"t\":\"string\"},\"threadId\":{\"t\":\"string\"}}},{\"t\":\"array\",\"i\":{\"$\":3}},{\"t\":\"object\",\"p\":{\"fields\":{\"t\":\"array\",\"i\":{\"t\":\"object\",\"x\":1}},\"labelId\":{\"t\":\"string\"}}},{\"t\":\"object\",\"p\":{\"body\":{\"$\":5},\"filename\":{\"t\":\"string\"},\"headers\":{\"$\":6},\"mimeType\":{\"t\":\"string\"},\"partId\":{\"t\":\"string\"},\"parts\":{\"$\":8}}},{\"t\":\"object\",\"p\":{\"attachmentId\":{\"t\":\"string\"},\"data\":{\"t\":\"string\",\"f\":\"byte\"},\"size\":{\"t\":\"integer\",\"f\":\"int32\"}}},{\"t\":\"array\",\"i\":{\"$\":7}},{\"t\":\"object\",\"p\":{\"name\":{\"t\":\"string\"},\"value\":{\"t\":\"string\"}}},{\"t\":\"array\",\"i\":{\"$\":9}},{\"t\":\"object\",\"p\":{\"body\":{\"t\":\"object\",\"x\":1},\"filename\":{\"t\":\"string\"},\"headers\":{\"t\":\"array\",\"x\":1},\"mimeType\":{\"t\":\"string\"},\"partId\":{\"t\":\"string\"},\"parts\":{\"t\":\"array\",\"x\":1}}},{\"t\":\"object\",\"p\":{\"backgroundColor\":{\"t\":\"string\"},\"textColor\":{\"t\":\"string\"}}},{\"t\":\"string\",\"e\":[\"labelShow\",\"labelShowIfUnread\",\"labelHide\"],\"d\":\"The visibility of the label in the label list in the Gmail web interface.\"},{\"t\":\"string\",\"e\":[\"show\",\"hide\"],\"d\":\"The visibility of messages with this label in the message list in the Gmail web interface.\"},{\"t\":\"integer\",\"f\":\"int32\",\"d\":\"The total number of messages with the label.\"},{\"t\":\"integer\",\"f\":\"int32\",\"d\":\"The number of unread messages with the label.\"},{\"t\":\"integer\",\"f\":\"int32\",\"d\":\"The total number of threads with the label.\"},{\"t\":\"integer\",\"f\":\"int32\",\"d\":\"The number of unread threads with the label.\"},{\"t\":\"string\",\"e\":[\"system\",\"user\"],\"d\":\"The owner type for the label.\"},{\"t\":\"object\",\"p\":{\"classificationLabelValues\":{\"$\":19},\"historyId\":{\"$\":23},\"id\":{\"t\":\"string\",\"d\":\"The immutable ID of the message.\"},\"internalDate\":{\"$\":24},\"labelIds\":{\"$\":25},\"payload\":{\"$\":26},\"raw\":{\"$\":29},\"sizeEstimate\":{\"$\":30},\"snippet\":{\"t\":\"string\",\"d\":\"A short part of the message text.\"},\"threadId\":{\"$\":31}},\"r\":[\"raw\"]},{\"t\":\"array\",\"d\":\"Classification Label values on the message.\",\"i\":{\"$\":20}},{\"t\":\"object\",\"p\":{\"fields\":{\"$\":21},\"labelId\":{\"t\":\"string\"}}},{\"t\":\"array\",\"i\":{\"$\":22}},{\"t\":\"object\",\"p\":{\"fieldId\":{\"t\":\"string\"},\"selection\":{\"t\":\"string\"}}},{\"t\":\"string\",\"f\":\"uint64\",\"d\":\"The ID of the last history record that modified this message.\"},{\"t\":\"string\",\"f\":\"int64\",\"d\":\"The internal message creation timestamp (epoch ms), which determines ordering in the inbox.\"},{\"t\":\"array\",\"d\":\"List of IDs of labels applied to this message.\",\"i\":{\"t\":\"string\"}},{\"t\":\"object\",\"d\":\"A single MIME message part.\",\"p\":{\"body\":{\"$\":5},\"filename\":{\"t\":\"string\"},\"headers\":{\"$\":6},\"mimeType\":{\"t\":\"string\"},\"partId\":{\"t\":\"string\"},\"parts\":{\"$\":27}}},{\"t\":\"array\",\"i\":{\"$\":28}},{\"t\":\"object\",\"p\":{\"body\":{\"$\":5},\"filename\":{\"t\":\"string\"},\"headers\":{\"t\":\"array\",\"i\":{\"t\":\"object\",\"x\":1}},\"mimeType\":{\"t\":\"string\"},\"partId\":{\"t\":\"string\"},\"parts\":{\"t\":\"array\",\"i\":{\"t\":\"object\",\"x\":1}}}},{\"t\":\"string\",\"f\":\"byte\",\"d\":\"The entire email message in an RFC 2822 formatted and base64url encoded string.\"},{\"t\":\"integer\",\"f\":\"int32\",\"d\":\"Estimated size in bytes of the message.\"},{\"t\":\"string\",\"d\":\"The ID of the thread the message belongs to.\"},{\"t\":\"object\",\"p\":{\"emailAddress\":{\"$\":33},\"primaryKeyPairId\":{\"$\":34},\"signAndEncryptKeyPairs\":{\"$\":35}}},{\"t\":\"string\",\"d\":\"The email address for the sending identity.\"},{\"t\":\"string\",\"d\":\"If a key pair is associated, the ID of the key pair, CseKeyPair.\"},{\"t\":\"object\",\"d\":\"The configuration of a CSE identity that uses different key pairs for signing and encryption.\",\"p\":{\"encryptionKeyPairId\":{\"t\":\"string\"},\"signingKeyPairId\":{\"t\":\"string\"}}},{\"t\":\"object\",\"p\":{\"displayName\":{\"$\":37},\"isDefault\":{\"$\":38},\"isPrimary\":{\"$\":39},\"replyToAddress\":{\"$\":40},\"sendAsEmail\":{\"$\":41},\"signature\":{\"$\":42},\"smtpMsa\":{\"$\":43},\"treatAsAlias\":{\"$\":45},\"verificationStatus\":{\"$\":46}}},{\"t\":\"string\",\"d\":\"A name that appears in the \\\"From:\\\" header for mail sent using this alias.\"},{\"t\":\"boolean\",\"d\":\"Whether this address is selected as the default \\\"From:\\\" address in situations such as composing a new message or sending a vacation auto-reply.\"},{\"t\":\"boolean\",\"d\":\"Whether this address is the primary address used to login to the account.\"},{\"t\":\"string\",\"d\":\"An optional email address that is included in a \\\"Reply-To:\\\" header for mail sent using this alias.\"},{\"t\":\"string\",\"d\":\"The email address that appears in the \\\"From:\\\" header for mail sent using this alias.\"},{\"t\":\"string\",\"d\":\"An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.\"},{\"t\":\"object\",\"d\":\"Configuration for communication with an SMTP service.\",\"p\":{\"host\":{\"t\":\"string\"},\"password\":{\"t\":\"string\"},\"port\":{\"t\":\"integer\",\"f\":\"int32\"},\"securityMode\":{\"$\":44},\"username\":{\"t\":\"string\"}}},{\"t\":\"string\",\"e\":[\"securityModeUnspecified\",\"none\",\"ssl\",\"starttls\"]},{\"t\":\"boolean\",\"d\":\"Whether Gmail should treat this address as an alias for the user's primary email address.\"},{\"t\":\"string\",\"e\":[\"verificationStatusUnspecified\",\"accepted\",\"pending\"],\"d\":\"Indicates whether this address has been verified for use as a send-as alias.\"}]", "parameters": ["[\"prettyPrint\",\"query\",0,{\"t\":\"boolean\"},\"Returns response with indentations and line breaks.\"]", "[\"fields\",\"query\",0,{\"t\":\"string\"},\"Selector specifying which fields to include in a partial response.\"]", "[\"q\",\"query\",0,{\"t\":\"string\"},\"Only return draft messages matching the specified query.\"]", "[\"includeSpamTrash\",\"query\",0,{\"t\":\"boolean\"},\"Include drafts from `SPAM` and `TRASH` in the results.\"]", "[\"pageToken\",\"query\",0,{\"t\":\"string\"},\"Page token to retrieve a specific page of results in the list.\"]", "[\"maxResults\",\"query\",0,{\"t\":\"integer\",\"f\":\"uint32\"},\"Maximum number of drafts to return.\"]", "[\"format\",\"query\",0,{\"t\":\"string\",\"e\":[\"minimal\",\"full\",\"raw\",\"metadata\"]},\"The format to return the draft in.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the draft to retrieve.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the draft to update.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the draft to delete.\"]", "[\"historyTypes\",\"query\",0,{\"t\":\"array\",\"i\":{\"t\":\"string\",\"e\":[\"messageAdded\",\"messageDeleted\",\"labelAdded\",\"labelRemoved\"]}},\"History types to be returned by the function\"]", "[\"startHistoryId\",\"query\",0,{\"t\":\"string\",\"f\":\"uint64\"},\"Required.\"]", "[\"labelId\",\"query\",0,{\"t\":\"string\"},\"Only return messages with a label matching the ID.\"]", "[\"maxResults\",\"query\",0,{\"t\":\"integer\",\"f\":\"uint32\"},\"Maximum number of history records to return.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the label to retrieve.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the label to update.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the label to delete.\"]", "[\"includeSpamTrash\",\"query\",0,{\"t\":\"boolean\"},\"Include messages from `SPAM` and `TRASH` in the results.\"]", "[\"q\",\"query\",0,{\"t\":\"string\"},\"Only return messages matching the specified query.\"]", "[\"maxResults\",\"query\",0,{\"t\":\"integer\",\"f\":\"uint32\"},\"Maximum number of messages to return.\"]", "[\"labelIds\",\"query\",0,{\"t\":\"array\",\"i\":{\"t\":\"string\"}},\"Only return messages with labels that match all of the specified label IDs.\"]", "[\"deleted\",\"query\",0,{\"t\":\"boolean\"},\"Mark the email as permanently deleted (not TRASH) and only visible in Google Vault to a Vault administrator.\"]", "[\"internalDateSource\",\"query\",0,{\"t\":\"string\",\"e\":[\"receivedTime\",\"dateHeader\"]},\"Source for Gmail's internal date of the message.\"]", "[\"neverMarkSpam\",\"query\",0,{\"t\":\"boolean\"},\"Ignore the Gmail spam classifier decision and never mark this email as SPAM in the mailbox.\"]", "[\"processForCalendar\",\"query\",0,{\"t\":\"boolean\"},\"Process calendar invites in the email and add any extracted meetings to the Google Calendar for this user.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the message to retrieve.\"]", "[\"metadataHeaders\",\"query\",0,{\"t\":\"array\",\"i\":{\"t\":\"string\"}},\"When given and format is `METADATA`, only include headers specified.\"]", "[\"format\",\"query\",0,{\"t\":\"string\",\"e\":[\"minimal\",\"full\",\"raw\",\"metadata\"]},\"The format to return the message in.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the message to delete.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the message to modify.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the message to Trash.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the message to remove from Trash.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the attachment.\"]", "[\"messageId\",\"path\",1,{\"t\":\"string\"},\"The ID of the message containing the attachment.\"]", "[\"pageToken\",\"query\",0,{\"t\":\"string\"},\"Pagination token indicating which page of identities to return.\"]", "[\"pageSize\",\"query\",0,{\"t\":\"integer\",\"f\":\"int32\"},\"The number of identities to return.\"]", "[\"cseEmailAddress\",\"path\",1,{\"t\":\"string\"},\"The primary email address associated with the client-side encryption identity configuration that's retrieved.\"]", "[\"cseEmailAddress\",\"path\",1,{\"t\":\"string\"},\"The primary email address associated with the client-side encryption identity configuration that's removed.\"]", "[\"emailAddress\",\"path\",1,{\"t\":\"string\"},\"The email address of the client-side encryption identity to update.\"]", "[\"pageToken\",\"query\",0,{\"t\":\"string\"},\"Pagination token indicating which page of key pairs to return.\"]", "[\"pageSize\",\"query\",0,{\"t\":\"integer\",\"f\":\"int32\"},\"The number of key pairs to return.\"]", "[\"chainValidation\",\"query\",0,{\"t\":\"string\",\"e\":[\"all\",\"none\"]},\"The type of certificate chain validation to perform at creation.\"]", "[\"keyPairId\",\"path\",1,{\"t\":\"string\"},\"The identifier of the key pair to retrieve.\"]", "[\"keyPairId\",\"path\",1,{\"t\":\"string\"},\"The identifier of the key pair to turn off.\"]", "[\"keyPairId\",\"path\",1,{\"t\":\"string\"},\"The identifier of the key pair to turn on.\"]", "[\"keyPairId\",\"path\",1,{\"t\":\"string\"},\"The identifier of the key pair to obliterate.\"]", "[\"delegateEmail\",\"path\",1,{\"t\":\"string\"},\"The email address of the user whose delegate relationship is to be retrieved.\"]", "[\"delegateEmail\",\"path\",1,{\"t\":\"string\"},\"The email address of the user to be removed as a delegate.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the filter to be fetched.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the filter to be deleted.\"]", "[\"forwardingEmail\",\"path\",1,{\"t\":\"string\"},\"The forwarding address to be retrieved.\"]", "[\"forwardingEmail\",\"path\",1,{\"t\":\"string\"},\"The forwarding address to be deleted.\"]", "[\"sendAsEmail\",\"path\",1,{\"t\":\"string\"},\"The send-as alias to be retrieved.\"]", "[\"sendAsEmail\",\"path\",1,{\"t\":\"string\"},\"The send-as alias to be updated.\"]", "[\"sendAsEmail\",\"path\",1,{\"t\":\"string\"},\"The send-as alias to be deleted.\"]", "[\"sendAsEmail\",\"path\",1,{\"t\":\"string\"},\"The email address that appears in the \\\"From:\\\" header for mail sent using this alias.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The immutable ID for the SmimeInfo.\"]", "[\"sendAsEmail\",\"path\",1,{\"t\":\"string\"},\"The send-as alias to be verified.\"]", "[\"q\",\"query\",0,{\"t\":\"string\"},\"Only return threads matching the specified query.\"]", "[\"maxResults\",\"query\",0,{\"t\":\"integer\",\"f\":\"uint32\"},\"Maximum number of threads to return.\"]", "[\"includeSpamTrash\",\"query\",0,{\"t\":\"boolean\"},\"Include threads from `SPAM` and `TRASH` in the results.\"]", "[\"labelIds\",\"query\",0,{\"t\":\"array\",\"i\":{\"t\":\"string\"}},\"Only return threads with labels that match all of the specified label IDs.\"]", "[\"metadataHeaders\",\"query\",0,{\"t\":\"array\",\"i\":{\"t\":\"string\"}},\"When given and format is METADATA, only include headers specified.\"]", "[\"format\",\"query\",0,{\"t\":\"string\",\"e\":[\"full\",\"metadata\",\"minimal\"]},\"The format to return the messages in.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the thread to retrieve.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"ID of the Thread to delete.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the thread to modify.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the thread to Trash.\"]", "[\"id\",\"path\",1,{\"t\":\"string\"},\"The ID of the thread to remove from Trash.\"]"], "operations": [[[0, 1, 2, 3, 4, 5], "0"], [[0, 1], "[\"application/json\",{\"$\":0},1]"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"id\":{\"t\":\"string\",\"d\":\"The immutable ID of the draft.\"},\"message\":{\"$\":1}},\"r\":[\"id\"]},1]"], [[0, 1, 6, 7], "0"], [[0, 1, 8], "[\"application/json\",{\"$\":0},1]"], [[0, 1, 9], "0"], [[0, 1, 10, 11, 12, 13, 4], "0"], [[0, 1], "0"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"color\":{\"$\":10},\"id\":{\"t\":\"string\",\"d\":\"The immutable ID of the label.\"},\"labelListVisibility\":{\"$\":11},\"messageListVisibility\":{\"$\":12},\"messagesTotal\":{\"$\":13},\"messagesUnread\":{\"$\":14},\"name\":{\"t\":\"string\",\"d\":\"The display name of the label.\"},\"threadsTotal\":{\"$\":15},\"threadsUnread\":{\"$\":16},\"type\":{\"$\":17}},\"r\":[\"messageListVisibility\",\"labelListVisibility\",\"name\"]},1]"], [[0, 1, 14], "0"], [[0, 1, 15], "[\"application/json\",{\"t\":\"object\",\"p\":{\"color\":{\"$\":10},\"id\":{\"t\":\"string\",\"d\":\"The immutable ID of the label.\"},\"labelListVisibility\":{\"$\":11},\"messageListVisibility\":{\"$\":12},\"messagesTotal\":{\"$\":13},\"messagesUnread\":{\"$\":14},\"name\":{\"t\":\"string\",\"d\":\"The display name of the label.\"},\"threadsTotal\":{\"$\":15},\"threadsUnread\":{\"$\":16},\"type\":{\"$\":17}},\"r\":[\"id\",\"messageListVisibility\",\"labelListVisibility\",\"name\"]},1]"], [[0, 1, 15], "[\"application/json\",{\"t\":\"object\",\"p\":{\"color\":{\"$\":10},\"id\":{\"t\":\"string\",\"d\":\"The immutable ID of the label.\"},\"labelListVisibility\":{\"$\":11},\"messageListVisibility\":{\"$\":12},\"messagesTotal\":{\"$\":13},\"messagesUnread\":{\"$\":14},\"name\":{\"t\":\"string\",\"d\":\"The display name of the label.\"},\"threadsTotal\":{\"$\":15},\"threadsUnread\":{\"$\":16},\"type\":{\"$\":17}}},1]"], [[0, 1, 16], "0"], [[0, 1, 17, 4, 18, 19, 20], "0"], [[0, 1, 21, 22], "[\"application/json\",{\"$\":18},1]"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"ids\":{\"t\":\"array\",\"d\":\"The IDs of the messages to delete.\",\"i\":{\"t\":\"string\"}}}},1]"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"addClassificationLabels\":{\"t\":\"array\",\"d\":\"A list of Classification Label values to add.\",\"i\":{\"$\":20}},\"addLabelIds\":{\"t\":\"array\",\"d\":\"A list of label IDs to add to messages.\",\"i\":{\"t\":\"string\"}},\"ids\":{\"t\":\"array\",\"d\":\"The IDs of the messages to modify.\",\"i\":{\"t\":\"string\"}},\"removeClassificationLabelIds\":{\"t\":\"array\",\"d\":\"A list of Classification Label values to remove from messages.\",\"i\":{\"t\":\"string\"}},\"removeLabelIds\":{\"t\":\"array\",\"d\":\"A list of label IDs to remove from messages.\",\"i\":{\"t\":\"string\"}}}},1]"], [[0, 1, 22, 23, 21, 24], "[\"application/json\",{\"t\":\"object\",\"p\":{\"classificationLabelValues\":{\"$\":19},\"historyId\":{\"$\":23},\"id\":{\"t\":\"string\",\"d\":\"The immutable ID of the message.\"},\"internalDate\":{\"$\":24},\"labelIds\":{\"$\":25},\"payload\":{\"$\":26},\"raw\":{\"$\":29},\"sizeEstimate\":{\"$\":30},\"snippet\":{\"t\":\"string\",\"d\":\"A short part of the message text.\"},\"threadId\":{\"$\":31}}},1]"], [[0, 1], "[\"application/json\",{\"$\":18},1]"], [[0, 1, 25, 26, 27], "0"], [[0, 1, 28], "0"], [[0, 1, 29], "[\"application/json\",{\"t\":\"object\",\"p\":{\"addClassificationLabels\":{\"t\":\"array\",\"d\":\"A list of classification label values to add.\",\"i\":{\"$\":20}},\"addLabelIds\":{\"t\":\"array\",\"d\":\"A list of IDs of labels to add to this message.\",\"i\":{\"t\":\"string\"}},\"removeClassificationLabelIds\":{\"t\":\"array\",\"d\":\"A list of Classification Label values to remove from this message.\",\"i\":{\"t\":\"string\"}},\"removeLabelIds\":{\"t\":\"array\",\"d\":\"A list IDs of labels to remove from this message.\",\"i\":{\"t\":\"string\"}}}},1]"], [[0, 1, 30], "0"], [[0, 1, 31], "0"], [[0, 1, 32, 33], "0"], [[0, 1], "0"], [[0, 1], "0"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"disposition\":{\"t\":\"string\",\"e\":[\"dispositionUnspecified\",\"leaveInInbox\",\"archive\",\"trash\",\"markRead\"],\"d\":\"The state that a message should be left in after it has been forwarded.\"},\"emailAddress\":{\"t\":\"string\",\"d\":\"Email address to which all incoming messages are forwarded.\"},\"enabled\":{\"t\":\"boolean\",\"d\":\"Whether all incoming mail is automatically forwarded to another address.\"}}},1]"], [[0, 1, 34, 35], "0"], [[0, 1], "[\"application/json\",{\"$\":32},1]"], [[0, 1, 36], "0"], [[0, 1, 37], "0"], [[0, 1, 38], "[\"application/json\",{\"$\":32},1]"], [[0, 1, 39, 40], "0"], [[0, 1, 41], "[\"application/json\",{\"t\":\"object\",\"p\":{\"pkcs7\":{\"t\":\"string\",\"d\":\"Input only.\"},\"privateKeyMetadata\":{\"t\":\"array\",\"d\":\"Metadata for instances of this key pair's private key.\",\"i\":{\"t\":\"object\",\"p\":{\"hardwareKeyMetadata\":{\"t\":\"object\",\"p\":{\"description\":{\"t\":\"string\"}}},\"kaclsKeyMetadata\":{\"t\":\"object\",\"p\":{\"kaclsData\":{\"t\":\"string\"},\"kaclsUri\":{\"t\":\"string\"}}}}}}}},1]"], [[0, 1, 42], "0"], [[0, 1, 43], "[\"application/json\",{\"t\":\"object\",\"p\":{},\"m\":{}},1]"], [[0, 1, 44], "[\"application/json\",{\"t\":\"object\",\"p\":{},\"m\":{}},1]"], [[0, 1, 45], "[\"application/json\",{\"t\":\"object\",\"p\":{},\"m\":{}},1]"], [[0, 1], "0"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"delegateEmail\":{\"t\":\"string\",\"d\":\"The email address of the delegate.\"},\"verificationStatus\":{\"t\":\"string\",\"e\":[\"verificationStatusUnspecified\",\"accepted\",\"pending\",\"rejected\",\"expired\"],\"d\":\"Indicates whether this address has been verified and can act as a delegate for the account.\"}}},1]"], [[0, 1, 46], "0"], [[0, 1, 47], "0"], [[0, 1], "0"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"action\":{\"t\":\"object\",\"d\":\"A set of actions to perform on a message.\",\"p\":{\"addLabelIds\":{\"t\":\"array\",\"i\":{\"t\":\"string\"}},\"forward\":{\"t\":\"string\"},\"removeLabelIds\":{\"t\":\"array\",\"i\":{\"t\":\"string\"}}}},\"criteria\":{\"t\":\"object\",\"d\":\"Message matching criteria.\",\"p\":{\"excludeChats\":{\"t\":\"boolean\"},\"from\":{\"t\":\"string\"},\"hasAttachment\":{\"t\":\"boolean\"},\"negatedQuery\":{\"t\":\"string\"},\"query\":{\"t\":\"string\"},\"size\":{\"t\":\"integer\",\"f\":\"int32\"},\"sizeComparison\":{\"t\":\"string\",\"e\":[\"unspecified\",\"smaller\",\"larger\"]},\"subject\":{\"t\":\"string\"},\"to\":{\"t\":\"string\"}}},\"id\":{\"t\":\"string\",\"d\":\"The server assigned ID of the filter.\"}}},1]"], [[0, 1, 48], "0"], [[0, 1, 49], "0"], [[0, 1], "0"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"forwardingEmail\":{\"t\":\"string\",\"d\":\"An email address to which messages can be forwarded.\"},\"verificationStatus\":{\"t\":\"string\",\"e\":[\"verificationStatusUnspecified\",\"accepted\",\"pending\"],\"d\":\"Indicates whether this address has been verified and is usable for forwarding.\"}}},1]"], [[0, 1, 50], "0"], [[0, 1, 51], "0"], [[0, 1], "0"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"autoExpunge\":{\"t\":\"boolean\",\"d\":\"If this value is true, Gmail will immediately expunge a message when it is marked as deleted in IMAP.\"},\"enabled\":{\"t\":\"boolean\",\"d\":\"Whether IMAP is enabled for the account.\"},\"expungeBehavior\":{\"t\":\"string\",\"e\":[\"expungeBehaviorUnspecified\",\"archive\",\"trash\",\"deleteForever\"],\"d\":\"The action that will be executed on a message when it is marked as deleted and expunged from the last visible IMAP folder.\"},\"maxFolderSize\":{\"t\":\"integer\",\"f\":\"int32\",\"d\":\"An optional limit on the number of messages that an IMAP folder may contain.\"}}},1]"], [[0, 1], "0"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"displayLanguage\":{\"t\":\"string\",\"d\":\"The language to display Gmail in, formatted as an RFC 3066 Language Tag (for example `en-GB`, `fr` or `ja` for British English, French, or Japanese respectivel…\"}}},1]"], [[0, 1], "0"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"accessWindow\":{\"t\":\"string\",\"e\":[\"accessWindowUnspecified\",\"disabled\",\"fromNowOn\",\"allMail\"],\"d\":\"The range of messages which are accessible via POP.\"},\"disposition\":{\"t\":\"string\",\"e\":[\"dispositionUnspecified\",\"leaveInInbox\",\"archive\",\"trash\",\"markRead\"],\"d\":\"The action that will be executed on a message after it has been fetched via POP.\"}}},1]"], [[0, 1], "0"], [[0, 1], "[\"application/json\",{\"$\":36},1]"], [[0, 1, 52], "0"], [[0, 1, 53], "[\"application/json\",{\"$\":36},1]"], [[0, 1, 53], "[\"application/json\",{\"$\":36},1]"], [[0, 1, 54], "0"], [[0, 1, 55], "0"], [[0, 1, 55], "[\"application/json\",{\"t\":\"object\",\"p\":{\"encryptedKeyPassword\":{\"t\":\"string\",\"d\":\"Encrypted key password, when key is encrypted.\"},\"expiration\":{\"t\":\"string\",\"f\":\"int64\",\"d\":\"When the certificate expires (in milliseconds since epoch).\"},\"id\":{\"t\":\"string\",\"d\":\"The immutable ID for the SmimeInfo.\"},\"isDefault\":{\"t\":\"boolean\",\"d\":\"Whether this SmimeInfo is the default one for this user's send-as address.\"},\"issuerCn\":{\"t\":\"string\",\"d\":\"The S/MIME certificate issuer's common name.\"},\"pem\":{\"t\":\"string\",\"d\":\"PEM formatted X509 concatenated certificate string (standard base64 encoding).\"},\"pkcs12\":{\"t\":\"string\",\"f\":\"byte\",\"d\":\"PKCS#12 format containing a single private/public key pair and certificate chain.\"}}},1]"], [[0, 1, 55, 56], "0"], [[0, 1, 55, 56], "0"], [[0, 1, 56, 55], "0"], [[0, 1, 57], "0"], [[0, 1], "0"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"enableAutoReply\":{\"t\":\"boolean\",\"d\":\"Flag that controls whether Gmail automatically replies to messages.\"},\"endTime\":{\"t\":\"string\",\"f\":\"int64\",\"d\":\"An optional end time for sending auto-replies (epoch ms).\"},\"responseBodyHtml\":{\"t\":\"string\",\"d\":\"Response body in HTML format.\"},\"responseBodyPlainText\":{\"t\":\"string\",\"d\":\"Response body in plain text format.\"},\"responseSubject\":{\"t\":\"string\",\"d\":\"Optional text to prepend to the subject line in vacation responses.\"},\"restrictToContacts\":{\"t\":\"boolean\",\"d\":\"Flag that determines whether responses are sent to recipients who are not in the user's list of contacts.\"},\"restrictToDomain\":{\"t\":\"boolean\",\"d\":\"Flag that determines whether responses are sent to recipients who are outside of the user's domain.\"},\"startTime\":{\"t\":\"string\",\"f\":\"int64\",\"d\":\"An optional start time for sending auto-replies (epoch ms).\"}}},1]"], [[0, 1], "0"], [[0, 1, 4, 58, 59, 60, 61], "0"], [[0, 1, 62, 63, 64], "0"], [[0, 1, 65], "0"], [[0, 1, 66], "[\"application/json\",{\"t\":\"object\",\"p\":{\"addLabelIds\":{\"t\":\"array\",\"d\":\"A list of IDs of labels to add to this thread.\",\"i\":{\"t\":\"string\"}},\"removeLabelIds\":{\"t\":\"array\",\"d\":\"A list of IDs of labels to remove from this thread.\",\"i\":{\"t\":\"string\"}}}},1]"], [[0, 1, 67], "0"], [[0, 1, 68], "0"], [[0, 1], "[\"application/json\",{\"t\":\"object\",\"p\":{\"labelFilterAction\":{\"t\":\"string\",\"e\":[\"include\",\"exclude\"],\"deprecated\":true,\"d\":\"Filtering behavior of `labelIds list` specified.\"},\"labelFilterBehavior\":{\"t\":\"string\",\"e\":[\"include\",\"exclude\"],\"d\":\"Filtering behavior of `labelIds list` specified.\"},\"labelIds\":{\"t\":\"array\",\"d\":\"List of label_ids to restrict notifications about.\",\"i\":{\"t\":\"string\"}},\"topicName\":{\"t\":\"string\",\"d\":\"A fully qualified Google Cloud Pub/Sub API topic name to publish the events to.\"}}},1]"]] });
@@ -0,0 +1,21 @@
1
+ import { ConnectorCallError } from "../../errors.js";
2
+ import { googleSafety } from "../_shared/google/kit.js";
3
+ import { index, verdicts, refusalReasons } from "./lib/index.js";
4
+ /** Mail headers and page tokens are data; only the reviewed mailbox routes execute. */
5
+ export function gmailSafety(operations) {
6
+ const base = googleSafety("Gmail", operations);
7
+ return {
8
+ ...base,
9
+ reviewed: {
10
+ ...base.reviewed,
11
+ resolve: (method, path) => {
12
+ const { op } = index.resolve(method, path);
13
+ const key = `${op.method} ${op.path}`;
14
+ // The two MIME writers are named-only. The hatch refuses them before send.
15
+ if (verdicts[key] !== "read" && key !== "POST /drafts" && key !== "PUT /drafts/{id}")
16
+ throw new ConnectorCallError("invalid_args", refusalReasons[key] ?? "This Gmail operation is refused.");
17
+ return base.reviewed.resolve(method, path);
18
+ },
19
+ },
20
+ };
21
+ }
@@ -1,9 +1,5 @@
1
1
  // Generated by scripts/generate-providers.mjs; do not edit.
2
2
  export const skill = {
3
- "content": "# Gmail usage (draft-only)\n\nActs as the signed-in person's own Gmail through Workspace delegation: read mail and write drafts, never send.\n\nConnection purpose: \n\n## Whose mailbox\n\nEvery call reads and writes the mailbox deployment config maps the caller\nto; an agent acts as the owner of the pool it came through, unless the deployment fixes one shared mailbox that every caller, agent or person, acts as. No argument\nnames a mailbox. A call with none mapped fails `auth_required`; only an operator can change\nthat.\n\n## Reading\n\n- `search_threads` takes Gmail search syntax; reuse the person's own\n phrasing (`from:`, `subject:`, `newer_than:7d`, `is:unread`,\n `label:`). Page with `page.nextCursor` and the same query.\n- `get_thread` returns messages oldest first with bodies capped by\n `maxBodyChars`; a cut body ends with a truncation marker. A long thread\n pages: follow `page.nextCursor` until `hasMore` is false, with the same\n arguments. `conflict` means the thread changed under the cursor; read it\n again from the start. Reduce inside\n `execute_code` before returning a long thread.\n- Results default to at most 192 KiB; `list_labels` pages the same way.\n- `get_message` and `get_thread` list attachment metadata. An attached or\n forwarded email is an attachment, not the body.\n- `bodyFormat: \"unavailable\"` means Gmail stored the body apart from the\n message and it is too large to read here; say so rather than summarizing.\n- `get_message`, each `get_thread` message, and `get_draft` return `bodyNote`\n when decoding falls back to UTF-8 for an unsupported charset. The note\n survives character and result-byte truncation, including `maxBodyChars: 0`\n when inline body data is decoded. It counts toward the result's byte limit.\n\n## Attachments\n\n- `get_attachment` takes `messageId` and the listing's immutable `partId`.\n Prefer `partId`, which stays stable across message reads, including an\n empty id for a root attachment. `attachmentId` is an alternative that\n Gmail can rotate between reads. When both are supplied, `partId` wins and\n the fresh message's download id is used. Read the listing again after\n an unknown-id refusal; never store an attachmentId for later use.\n- Small attachments can have inline data and no attachmentId. Use their\n partId too. Only carried attachment parts can be read, never arbitrary\n message body parts or blind download ids.\n- Text, JSON, XML, calendar invites, CSV, and `message/rfc822` return\n `format: \"text\"` and `content` decoded in the declared charset. An unsupported\n charset produces an explicit `note` that decoding used UTF-8. Message bodies\n return the notice separately as `bodyNote`.\n Parsed forwarded emails render From, To, Date, Subject, and their own\n plain body, else HTML converted to text. Raw forwarded data is preferred\n when present. A forwarded email without readable text returns an\n `unavailable` note.\n `maxChars` defaults to 12,000 code points, at most 100,000. A character\n or byte cut ends with a truncation marker and `contentTruncated: true`.\n Reduce attachment text inside `execute_code` before returning it.\n- Binary attachments return `format: \"base64\"` and standard base64 in\n `content`. Pass it unchanged to Drive `create_file` as `contentBase64`,\n with `name: filename` and `mimeType`. File creation is a write: use\n `call_destructive_tool` or a program on a writable endpoint for that step.\n- Downloads, text and binary, are limited to 1 MiB. Declared size is\n checked before a separate download. Parsed forwarded emails check the sum\n of descendant sizes before downloading any stored body, and return that\n sum as `size`. Attachment data must match both the message part's declared\n size and the download response's size when supplied; inconsistent payloads\n fail rather than return incomplete files. Binary content must also fit the\n whole-result `maxBytes`, which defaults to 192 KiB. `format: \"unavailable\"`\n returns a note and no content when it cannot fit. Raising `maxChars`\n or `maxBytes` cannot bypass the download cap.\n- Raise `maxBytes` only for a direct `call_tool` read, from 64 KiB up to\n 4 MiB, as with Drive `get_file_content`. `execute_code` cannot receive\n large results; keep the default there. Direct-call results may be paged.\n\n## Drafting\n\n- `create_draft` saves a draft and never sends it; tell the person it is\n waiting in Drafts. There is no send, delete, or label tool.\n- To reply, pass `replyToMessageId`: the draft joins that thread with\n In-Reply-To and References set, and subject (Re: …) and `to` default\n from that message's Reply-To, else its From. Keep the Re: subject or Gmail\n may start a new thread.\n- `update_draft` replaces the body entirely; send the full new text.\n From, To, Cc, Bcc, Reply-To, Subject, the thread, and reply headers are\n kept unless restated; no other header is. A draft with attachments or\n inline images is refused, unchanged — Gmail's update would delete them.\n- Gmail sets From to the mailbox itself; there is no From argument.\n",
4
- "instructionsHeading": "Connection instructions",
5
- "fragments": {
6
- "guide_0": "# Gmail usage (draft-only)\n\nActs as the signed-in person's own Gmail through Workspace delegation: read mail and write drafts, never send.\n\nConnection purpose: ",
7
- "guide_1": "\n\n## Whose mailbox\n\nEvery call reads and writes the mailbox deployment config maps the caller\nto; an agent acts as the owner of the pool it came through, unless the deployment fixes one shared mailbox that every caller, agent or person, acts as. No argument\nnames a mailbox. A call with none mapped fails `auth_required`; only an operator can change\nthat.\n\n## Reading\n\n- `search_threads` takes Gmail search syntax; reuse the person's own\n phrasing (`from:`, `subject:`, `newer_than:7d`, `is:unread`,\n `label:`). Page with `page.nextCursor` and the same query.\n- `get_thread` returns messages oldest first with bodies capped by\n `maxBodyChars`; a cut body ends with a truncation marker. A long thread\n pages: follow `page.nextCursor` until `hasMore` is false, with the same\n arguments. `conflict` means the thread changed under the cursor; read it\n again from the start. Reduce inside\n `execute_code` before returning a long thread.\n- Results default to at most 192 KiB; `list_labels` pages the same way.\n- `get_message` and `get_thread` list attachment metadata. An attached or\n forwarded email is an attachment, not the body.\n- `bodyFormat: \"unavailable\"` means Gmail stored the body apart from the\n message and it is too large to read here; say so rather than summarizing.\n- `get_message`, each `get_thread` message, and `get_draft` return `bodyNote`\n when decoding falls back to UTF-8 for an unsupported charset. The note\n survives character and result-byte truncation, including `maxBodyChars: 0`\n when inline body data is decoded. It counts toward the result's byte limit.\n\n## Attachments\n\n- `get_attachment` takes `messageId` and the listing's immutable `partId`.\n Prefer `partId`, which stays stable across message reads, including an\n empty id for a root attachment. `attachmentId` is an alternative that\n Gmail can rotate between reads. When both are supplied, `partId` wins and\n the fresh message's download id is used. Read the listing again after\n an unknown-id refusal; never store an attachmentId for later use.\n- Small attachments can have inline data and no attachmentId. Use their\n partId too. Only carried attachment parts can be read, never arbitrary\n message body parts or blind download ids.\n- Text, JSON, XML, calendar invites, CSV, and `message/rfc822` return\n `format: \"text\"` and `content` decoded in the declared charset. An unsupported\n charset produces an explicit `note` that decoding used UTF-8. Message bodies\n return the notice separately as `bodyNote`.\n Parsed forwarded emails render From, To, Date, Subject, and their own\n plain body, else HTML converted to text. Raw forwarded data is preferred\n when present. A forwarded email without readable text returns an\n `unavailable` note.\n `maxChars` defaults to 12,000 code points, at most 100,000. A character\n or byte cut ends with a truncation marker and `contentTruncated: true`.\n Reduce attachment text inside `execute_code` before returning it.\n- Binary attachments return `format: \"base64\"` and standard base64 in\n `content`. Pass it unchanged to Drive `create_file` as `contentBase64`,\n with `name: filename` and `mimeType`. File creation is a write: use\n `call_destructive_tool` or a program on a writable endpoint for that step.\n- Downloads, text and binary, are limited to 1 MiB. Declared size is\n checked before a separate download. Parsed forwarded emails check the sum\n of descendant sizes before downloading any stored body, and return that\n sum as `size`. Attachment data must match both the message part's declared\n size and the download response's size when supplied; inconsistent payloads\n fail rather than return incomplete files. Binary content must also fit the\n whole-result `maxBytes`, which defaults to 192 KiB. `format: \"unavailable\"`\n returns a note and no content when it cannot fit. Raising `maxChars`\n or `maxBytes` cannot bypass the download cap.\n- Raise `maxBytes` only for a direct `call_tool` read, from 64 KiB up to\n 4 MiB, as with Drive `get_file_content`. `execute_code` cannot receive\n large results; keep the default there. Direct-call results may be paged.\n\n## Drafting\n\n- `create_draft` saves a draft and never sends it; tell the person it is\n waiting in Drafts. There is no send, delete, or label tool.\n- To reply, pass `replyToMessageId`: the draft joins that thread with\n In-Reply-To and References set, and subject (Re: …) and `to` default\n from that message's Reply-To, else its From. Keep the Re: subject or Gmail\n may start a new thread.\n- `update_draft` replaces the body entirely; send the full new text.\n From, To, Cc, Bcc, Reply-To, Subject, the thread, and reply headers are\n kept unless restated; no other header is. A draft with attachments or\n inline images is refused, unchanged — Gmail's update would delete them.\n- Gmail sets From to the mailbox itself; there is no From argument.\n"
8
- }
3
+ "content": "Use Gmail search for mail; use Drive for files and sharing.\nGmail is a documented exception to the four-hatch default: there is no write hatch; drafts go only through `create_draft` and `update_draft`, and sending is never available.\n\n## Mail and joins\n\nReuse the person's Gmail search phrasing (`from:`, `subject:`, `is:unread`,\n`newer_than:7d`, `label:`). Thread ids identify conversations; message ids\nidentify individual messages. Join a message's label ids to label names.\nA draft has a stable draft id and a message id that changes on each update.\nUse the draft id to reconcile a save.\n\n`search_threads.items` are threads with thread ids; read each thread to get its message ids.\n`get_thread` pages long threads: while `page.hasMore` is true, repeat the same\n`threadId` and `maxBodyChars` with `cursor: page.nextCursor` until it is false.\nThe page remains present when `fields` narrows the result.\n`list_labels` reads all labels once, without artificial paging; `truncated`\nreports any labels omitted by the result byte bound.\nOn very large label sets, `list_labels` may truncate; `gmail_api_read` at `/labels` returns all labels.\n\nNamed reads interpret MIME, charsets, HTML and attachment metadata. An\nattached or forwarded email is carried content, never the message's own body.\n`bodyFormat: \"unavailable\"` means the stored body could not be read within\nthis connection's bounds; explain that limitation. `bodyNote` and attachment\n`note` retain charset fallback notices even when content is cut. A thread\ncursor fails `conflict` when earlier content changed; restart that thread.\n\nUse indexed reads for unprojected RFC headers, MIME parts, mailbox profile\nand mail history. Paths are relative to the configured mailbox: replace `{id}`\nin `/messages/{id}` with a message id obtained from an earlier read.\nThe index also shows refused operations and named alternatives. A discovered\noperation is executable only when its verdict says read. Delegation never\nlets arguments choose a different mailbox.\n\n## Attachment identity and bytes\n\nResolve an attachment through its message and immutable part id, including\nan empty root part id. Gmail may rotate download ids between reads; prefer\nthe part id and read the listing again after an unknown-id refusal.\nOnly carried parts can be read by the named attachment workflow.\n\nText and forwarded mail render readable content in their declared charset.\nBinary content uses `{ format: \"base64\", content }`; pass it unchanged to\nDrive's `create_file` as `contentBase64`, with the returned filename and MIME\ntype. That file creation is a separate write. Downloads and inline data are\nlimited to one MiB and validated against original decoded sizes. Raising\nresult budgets never bypasses that cap. `format: \"unavailable\"` supplies a\nreason and no content. Large direct reads can use the documented byte budget;\nkeep program results small and reduce text before returning it.\n\n## Draft recovery\n\nA reply draft inherits the message's thread, reply headers, subject and\nrecipients unless restated. Keep the reply subject to retain the Gmail thread.\nCopied threading headers must remain intact ASCII. RFC message ids, comments\nand legacy threading phrases are accepted; damaged or withheld tokens cause\na refusal before any draft write.\n\nUpdating a draft replaces its full body. The guarded workflow preserves\nsender, recipients, Reply-To, subject and threading headers, and refuses\nattachments or inline images because replacement would discard them. Edit\nsuch a draft in Gmail or save a separate new draft. After an uncertain save,\nread the stable draft id and inspect its body before deciding whether another\nwrite is needed. A saved draft remains in Gmail for the person to review.\n\n## Conventions\n\n- **Paging:** while `page.hasMore` is true, continue with `page.nextCursor` unchanged. For `get_thread`, `gmail_api_details`, `gmail_api_read`, `gmail_api_search`, `list_drafts`, `search_threads`, pass it as the top-level `cursor`; omit raw paging anchors on continuations. Keep the original method, path, filters, page size, fields and headers. Paged `list_*` and `search_*` reads take `limit` (default 10, at most 25). The last page has no `nextCursor`. If `page.hasMore` is true without a cursor, the data is incomplete and continuation was withheld. When approaching execute_code's per-program call limit, return page.nextCursor before the call that would exceed it and continue in the next program; don't restart.\n- **Results:** `fields` narrows a read's result to the dot paths you name. `truncated` lists the dot paths a result cut for size; the ids that fetch what was cut stay in the result.\n- **Hatch:** `gmail_api_search` finds this API's operations and reads no account data, `gmail_api_details` shows one operation's contract, and `gmail_api_read` calls a reviewed read. An operation without a reviewed verdict is refused. 68 operations are refused by design; use `gmail_api_details` with the method and path to inspect the original operation summary and its separate refusal. Use details for refused methods outside the read/write call schemas; those methods remain unavailable.\n- **Writes:** a write is sent once and never retried. When its outcome is unknown, read the target before repeating it. Writes take no idempotency key.\n- **Errors:** codes come from the vendor's statuses and error facts, never its prose. `not_found` means the record does not exist; this API tells absence from a permission gap. `conflict` means: A thread changed before its content cursor.\n- **Withheld values:** a value withheld for safety reads `\"[redacted]\"`. Writes refuse whole marker values and withheld links; longer prose may mention the marker. Paths and queries refuse any containment.",
4
+ "instructionsHeading": "Connection instructions"
9
5
  };