pyfect-dev 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1265) hide show
  1. pyfect/__init__.py +729 -0
  2. pyfect/_all.py +242 -0
  3. pyfect/_background.py +28 -0
  4. pyfect/_binary_codecs.py +124 -0
  5. pyfect/_cached.py +165 -0
  6. pyfect/_catch.py +128 -0
  7. pyfect/_catch_reason.py +574 -0
  8. pyfect/_concurrency.py +291 -0
  9. pyfect/_context_effects.py +163 -0
  10. pyfect/_context_managers.py +76 -0
  11. pyfect/_core.py +368 -0
  12. pyfect/_digits.py +71 -0
  13. pyfect/_effect_args.py +46 -0
  14. pyfect/_effect_base.py +71 -0
  15. pyfect/_effect_concurrency.py +133 -0
  16. pyfect/_effect_eager.py +103 -0
  17. pyfect/_effect_errors.py +344 -0
  18. pyfect/_effect_folding.py +110 -0
  19. pyfect/_effect_hash.py +140 -0
  20. pyfect/_effect_logging.py +57 -0
  21. pyfect/_effect_metrics.py +102 -0
  22. pyfect/_effect_resources.py +179 -0
  23. pyfect/_effect_services.py +25 -0
  24. pyfect/_effect_timing.py +199 -0
  25. pyfect/_effect_tracing.py +99 -0
  26. pyfect/_equal.py +195 -0
  27. pyfect/_extras.py +43 -0
  28. pyfect/_fiber.py +969 -0
  29. pyfect/_fiber_all.py +134 -0
  30. pyfect/_fiber_collections.py +106 -0
  31. pyfect/_fn.py +706 -0
  32. pyfect/_hamt.py +174 -0
  33. pyfect/_interrupt_reason.py +33 -0
  34. pyfect/_isaac.py +149 -0
  35. pyfect/_iterables.py +231 -0
  36. pyfect/_js.py +263 -0
  37. pyfect/_js_date.py +87 -0
  38. pyfect/_json_text.py +286 -0
  39. pyfect/_json_value.py +9 -0
  40. pyfect/_layer_core.py +403 -0
  41. pyfect/_layer_for_life.py +33 -0
  42. pyfect/_layer_tracing.py +70 -0
  43. pyfect/_locked_ref.py +147 -0
  44. pyfect/_loop_thread.py +152 -0
  45. pyfect/_metric_ref.py +29 -0
  46. pyfect/_one_or_many.py +14 -0
  47. pyfect/_os_wait.py +118 -0
  48. pyfect/_path_posix.py +129 -0
  49. pyfect/_primitives.py +434 -0
  50. pyfect/_public.py +36 -0
  51. pyfect/_reasons.py +64 -0
  52. pyfect/_released.py +67 -0
  53. pyfect/_root.py +87 -0
  54. pyfect/_round_robin.py +73 -0
  55. pyfect/_some.py +17 -0
  56. pyfect/_stack.py +52 -0
  57. pyfect/_stack_frame.py +114 -0
  58. pyfect/_string_hash.py +35 -0
  59. pyfect/_subscriber_queue.py +47 -0
  60. pyfect/_tags.py +14 -0
  61. pyfect/_tracer_ref.py +21 -0
  62. pyfect/_tx_ops.py +77 -0
  63. pyfect/_unsubscripted.py +23 -0
  64. pyfect/_url.py +54 -0
  65. pyfect/_waiters.py +127 -0
  66. pyfect/_wake_tracking.py +98 -0
  67. pyfect/_wire_codec.py +123 -0
  68. pyfect/ai/__init__.py +73 -0
  69. pyfect/ai/_approvals.py +249 -0
  70. pyfect/ai/_decision_answers.py +185 -0
  71. pyfect/ai/_generated_client.py +298 -0
  72. pyfect/ai/_generated_support.py +84 -0
  73. pyfect/ai/_mcp/__init__.py +1 -0
  74. pyfect/ai/_mcp/batch.py +68 -0
  75. pyfect/ai/_mcp/client_transport.py +412 -0
  76. pyfect/ai/_mcp/client_wire.py +284 -0
  77. pyfect/ai/_mcp/core.py +490 -0
  78. pyfect/ai/_mcp/dispatch.py +1048 -0
  79. pyfect/ai/_mcp/http.py +462 -0
  80. pyfect/ai/_mcp/http_admission.py +269 -0
  81. pyfect/ai/_mcp/http_status.py +27 -0
  82. pyfect/ai/_mcp/input_wire.py +226 -0
  83. pyfect/ai/_mcp/log_levels.py +55 -0
  84. pyfect/ai/_mcp/param_headers.py +63 -0
  85. pyfect/ai/_mcp/projection.py +248 -0
  86. pyfect/ai/_mcp/register.py +683 -0
  87. pyfect/ai/_mcp/reverse_policy.py +155 -0
  88. pyfect/ai/_mcp/routing_header.py +24 -0
  89. pyfect/ai/_mcp/sessions.py +114 -0
  90. pyfect/ai/_mcp/stdio.py +110 -0
  91. pyfect/ai/_mcp/subscriptions.py +134 -0
  92. pyfect/ai/_mcp/tool_schema.py +35 -0
  93. pyfect/ai/_noul_answers.py +64 -0
  94. pyfect/ai/_openai_all_of.py +137 -0
  95. pyfect/ai/_openai_errors.py +233 -0
  96. pyfect/ai/_provider.py +439 -0
  97. pyfect/ai/_provider_tools.py +129 -0
  98. pyfect/ai/_stream_resolution.py +231 -0
  99. pyfect/ai/_structured_output_checks.py +138 -0
  100. pyfect/ai/_structured_output_codec.py +229 -0
  101. pyfect/ai/_structured_output_json.py +109 -0
  102. pyfect/ai/_tool_call_ids.py +80 -0
  103. pyfect/ai/ai_error.py +785 -0
  104. pyfect/ai/anthropic/__init__.py +28 -0
  105. pyfect/ai/anthropic/_errors.py +164 -0
  106. pyfect/ai/anthropic/_prompt.py +375 -0
  107. pyfect/ai/anthropic/_response.py +443 -0
  108. pyfect/ai/anthropic/_schema.py +206 -0
  109. pyfect/ai/anthropic/_stream.py +377 -0
  110. pyfect/ai/anthropic/_tools.py +248 -0
  111. pyfect/ai/anthropic/client.py +289 -0
  112. pyfect/ai/anthropic/config.py +32 -0
  113. pyfect/ai/anthropic/error.py +27 -0
  114. pyfect/ai/anthropic/language_model.py +366 -0
  115. pyfect/ai/anthropic/telemetry.py +51 -0
  116. pyfect/ai/anthropic/tool.py +570 -0
  117. pyfect/ai/anthropic_structured_output.py +138 -0
  118. pyfect/ai/chat.py +548 -0
  119. pyfect/ai/cloudflare/__init__.py +15 -0
  120. pyfect/ai/cloudflare/_errors.py +108 -0
  121. pyfect/ai/cloudflare/client.py +174 -0
  122. pyfect/ai/cloudflare/decision_model.py +117 -0
  123. pyfect/ai/cloudflare/schema.py +144 -0
  124. pyfect/ai/decision.py +290 -0
  125. pyfect/ai/decision_model.py +283 -0
  126. pyfect/ai/embedding_model.py +177 -0
  127. pyfect/ai/id_generator.py +79 -0
  128. pyfect/ai/language_model.py +1077 -0
  129. pyfect/ai/mcp_client.py +682 -0
  130. pyfect/ai/mcp_client_error.py +223 -0
  131. pyfect/ai/mcp_protocol.py +205 -0
  132. pyfect/ai/mcp_schema.py +1300 -0
  133. pyfect/ai/mcp_server.py +404 -0
  134. pyfect/ai/model.py +56 -0
  135. pyfect/ai/openai/__init__.py +49 -0
  136. pyfect/ai/openai/_errors.py +89 -0
  137. pyfect/ai/openai/_prompt.py +527 -0
  138. pyfect/ai/openai/_requests.py +34 -0
  139. pyfect/ai/openai/_response.py +569 -0
  140. pyfect/ai/openai/_schema.py +769 -0
  141. pyfect/ai/openai/_stream.py +771 -0
  142. pyfect/ai/openai/_tools.py +128 -0
  143. pyfect/ai/openai/_web_socket.py +295 -0
  144. pyfect/ai/openai/client.py +296 -0
  145. pyfect/ai/openai/client_generated.py +123 -0
  146. pyfect/ai/openai/config.py +34 -0
  147. pyfect/ai/openai/decision_model.py +177 -0
  148. pyfect/ai/openai/embedding_model.py +116 -0
  149. pyfect/ai/openai/error.py +8 -0
  150. pyfect/ai/openai/generated/__init__.py +7213 -0
  151. pyfect/ai/openai/generated/_recursive.py +18 -0
  152. pyfect/ai/openai/generated/_schemas_0.py +1015 -0
  153. pyfect/ai/openai/generated/_schemas_1.py +1016 -0
  154. pyfect/ai/openai/generated/_schemas_2.py +1017 -0
  155. pyfect/ai/openai/generated/_schemas_3.py +615 -0
  156. pyfect/ai/openai/generated/client.py +5298 -0
  157. pyfect/ai/openai/generated/types.py +8123 -0
  158. pyfect/ai/openai/language_model.py +304 -0
  159. pyfect/ai/openai/telemetry.py +19 -0
  160. pyfect/ai/openai/tool.py +391 -0
  161. pyfect/ai/openai_compat/__init__.py +25 -0
  162. pyfect/ai/openai_compat/_prompt.py +191 -0
  163. pyfect/ai/openai_compat/_request.py +153 -0
  164. pyfect/ai/openai_compat/_response.py +407 -0
  165. pyfect/ai/openai_compat/_schema.py +97 -0
  166. pyfect/ai/openai_compat/client.py +234 -0
  167. pyfect/ai/openai_compat/config.py +32 -0
  168. pyfect/ai/openai_compat/embedding_model.py +139 -0
  169. pyfect/ai/openai_compat/error.py +7 -0
  170. pyfect/ai/openai_compat/language_model.py +245 -0
  171. pyfect/ai/openai_compat/telemetry.py +51 -0
  172. pyfect/ai/openai_structured_output.py +118 -0
  173. pyfect/ai/openrouter/__init__.py +36 -0
  174. pyfect/ai/openrouter/_errors.py +186 -0
  175. pyfect/ai/openrouter/_prompt.py +272 -0
  176. pyfect/ai/openrouter/_response.py +226 -0
  177. pyfect/ai/openrouter/_stream.py +320 -0
  178. pyfect/ai/openrouter/client.py +283 -0
  179. pyfect/ai/openrouter/config.py +36 -0
  180. pyfect/ai/openrouter/decision_model.py +161 -0
  181. pyfect/ai/openrouter/error.py +23 -0
  182. pyfect/ai/openrouter/generated/__init__.py +3029 -0
  183. pyfect/ai/openrouter/generated/_recursive.py +15 -0
  184. pyfect/ai/openrouter/generated/_schemas_0.py +1015 -0
  185. pyfect/ai/openrouter/generated/_schemas_1.py +522 -0
  186. pyfect/ai/openrouter/generated/client.py +1445 -0
  187. pyfect/ai/openrouter/generated/types.py +4769 -0
  188. pyfect/ai/openrouter/language_model.py +345 -0
  189. pyfect/ai/openrouter/schema.py +165 -0
  190. pyfect/ai/prompt.py +664 -0
  191. pyfect/ai/response.py +768 -0
  192. pyfect/ai/response_id_tracker.py +82 -0
  193. pyfect/ai/telemetry.py +126 -0
  194. pyfect/ai/tokenizer.py +61 -0
  195. pyfect/ai/tool.py +536 -0
  196. pyfect/ai/toolkit.py +490 -0
  197. pyfect/ai/typesafe/__init__.py +17 -0
  198. pyfect/ai/typesafe/_errors.py +120 -0
  199. pyfect/ai/typesafe/client.py +146 -0
  200. pyfect/ai/typesafe/config.py +34 -0
  201. pyfect/ai/typesafe/decision_model.py +90 -0
  202. pyfect/ai/typesafe/schema.py +140 -0
  203. pyfect/batching/__init__.py +58 -0
  204. pyfect/batching/_api.py +71 -0
  205. pyfect/batching/_engine.py +229 -0
  206. pyfect/batching/_from_effect.py +76 -0
  207. pyfect/batching/_persisted.py +98 -0
  208. pyfect/batching/_request.py +133 -0
  209. pyfect/batching/_resolver.py +477 -0
  210. pyfect/batching/_with_cache.py +90 -0
  211. pyfect/big_decimal.py +500 -0
  212. pyfect/brand.py +114 -0
  213. pyfect/byte_size.py +354 -0
  214. pyfect/cache/__init__.py +29 -0
  215. pyfect/cache/_cache.py +426 -0
  216. pyfect/cache/_expiry.py +69 -0
  217. pyfect/cache/_scoped_cache.py +546 -0
  218. pyfect/case.py +174 -0
  219. pyfect/cause.py +462 -0
  220. pyfect/channel/__init__.py +155 -0
  221. pyfect/channel/_base.py +92 -0
  222. pyfect/channel/_catch.py +158 -0
  223. pyfect/channel/_catch_reason.py +572 -0
  224. pyfect/channel/_channel.py +158 -0
  225. pyfect/channel/_combinators.py +220 -0
  226. pyfect/channel/_concurrency_methods.py +217 -0
  227. pyfect/channel/_concurrent_map.py +118 -0
  228. pyfect/channel/_constructors.py +349 -0
  229. pyfect/channel/_context.py +232 -0
  230. pyfect/channel/_error_methods.py +336 -0
  231. pyfect/channel/_errors.py +180 -0
  232. pyfect/channel/_filters.py +225 -0
  233. pyfect/channel/_lifecycle.py +71 -0
  234. pyfect/channel/_lifecycle_methods.py +206 -0
  235. pyfect/channel/_loop.py +100 -0
  236. pyfect/channel/_merge.py +246 -0
  237. pyfect/channel/_repeat.py +154 -0
  238. pyfect/channel/_run.py +149 -0
  239. pyfect/channel/_run_methods.py +341 -0
  240. pyfect/channel/_sinks.py +88 -0
  241. pyfect/channel/_sources.py +238 -0
  242. pyfect/channel/_text.py +176 -0
  243. pyfect/channel/_transform_methods.py +415 -0
  244. pyfect/channel/_upstream.py +67 -0
  245. pyfect/channel_schema.py +131 -0
  246. pyfect/cli/__init__.py +79 -0
  247. pyfect/cli/_ansi.py +82 -0
  248. pyfect/cli/_command.py +469 -0
  249. pyfect/cli/_config.py +164 -0
  250. pyfect/cli/_environment.py +10 -0
  251. pyfect/cli/_help.py +195 -0
  252. pyfect/cli/_lexer.py +81 -0
  253. pyfect/cli/_parser.py +465 -0
  254. pyfect/cli/_settings.py +85 -0
  255. pyfect/cli/_suggest.py +33 -0
  256. pyfect/cli/_width.py +134 -0
  257. pyfect/cli/_wizard.py +317 -0
  258. pyfect/cli/argument.py +212 -0
  259. pyfect/cli/cli_config.py +40 -0
  260. pyfect/cli/cli_error.py +242 -0
  261. pyfect/cli/cli_output.py +305 -0
  262. pyfect/cli/command.py +440 -0
  263. pyfect/cli/completions/__init__.py +50 -0
  264. pyfect/cli/completions/_completer.ps1 +190 -0
  265. pyfect/cli/completions/_descriptor.py +182 -0
  266. pyfect/cli/completions/bash.py +300 -0
  267. pyfect/cli/completions/fish.py +164 -0
  268. pyfect/cli/completions/powershell.py +156 -0
  269. pyfect/cli/completions/zsh.py +189 -0
  270. pyfect/cli/flag.py +246 -0
  271. pyfect/cli/global_flag.py +99 -0
  272. pyfect/cli/help_doc.py +63 -0
  273. pyfect/cli/param.py +789 -0
  274. pyfect/cli/primitive.py +308 -0
  275. pyfect/cli/prompt/__init__.py +75 -0
  276. pyfect/cli/prompt/_auto_complete.py +205 -0
  277. pyfect/cli/prompt/_choices.py +104 -0
  278. pyfect/cli/prompt/_confirm.py +195 -0
  279. pyfect/cli/prompt/_core.py +512 -0
  280. pyfect/cli/prompt/_date.py +173 -0
  281. pyfect/cli/prompt/_date_parts.py +387 -0
  282. pyfect/cli/prompt/_file.py +372 -0
  283. pyfect/cli/prompt/_multi_select.py +204 -0
  284. pyfect/cli/prompt/_number.py +257 -0
  285. pyfect/cli/prompt/_select.py +117 -0
  286. pyfect/cli/prompt/_text.py +239 -0
  287. pyfect/cli/terminal_capabilities.py +118 -0
  288. pyfect/clock.py +150 -0
  289. pyfect/cluster/__init__.py +155 -0
  290. pyfect/cluster/_cluster_abandon.py +36 -0
  291. pyfect/cluster/_cluster_layer.py +122 -0
  292. pyfect/cluster/_entity_activation.py +16 -0
  293. pyfect/cluster/_entity_manager/__init__.py +22 -0
  294. pyfect/cluster/_entity_manager/_activation.py +540 -0
  295. pyfect/cluster/_entity_manager/_core.py +186 -0
  296. pyfect/cluster/_entity_manager/_decode.py +60 -0
  297. pyfect/cluster/_entity_manager/_manager.py +423 -0
  298. pyfect/cluster/_entity_manager/_state.py +113 -0
  299. pyfect/cluster/_entity_reaper.py +94 -0
  300. pyfect/cluster/_hash.py +13 -0
  301. pyfect/cluster/_interruptors.py +88 -0
  302. pyfect/cluster/_resource_map.py +179 -0
  303. pyfect/cluster/_resource_ref.py +266 -0
  304. pyfect/cluster/_shard_lock.py +14 -0
  305. pyfect/cluster/cluster_cron.py +230 -0
  306. pyfect/cluster/cluster_error.py +81 -0
  307. pyfect/cluster/cluster_http.py +210 -0
  308. pyfect/cluster/cluster_metrics.py +54 -0
  309. pyfect/cluster/cluster_schema.py +137 -0
  310. pyfect/cluster/cluster_socket.py +197 -0
  311. pyfect/cluster/cluster_workflow_engine/__init__.py +24 -0
  312. pyfect/cluster/cluster_workflow_engine/_engine.py +1099 -0
  313. pyfect/cluster/cluster_workflow_engine/_entities.py +298 -0
  314. pyfect/cluster/deliver_at.py +31 -0
  315. pyfect/cluster/entity/__init__.py +39 -0
  316. pyfect/cluster/entity/_entity.py +332 -0
  317. pyfect/cluster/entity/_handlers.py +168 -0
  318. pyfect/cluster/entity/_keep_alive.py +74 -0
  319. pyfect/cluster/entity/_queue.py +103 -0
  320. pyfect/cluster/entity/_request.py +34 -0
  321. pyfect/cluster/entity/_services.py +23 -0
  322. pyfect/cluster/entity/_test_client.py +237 -0
  323. pyfect/cluster/entity_address.py +25 -0
  324. pyfect/cluster/entity_id.py +20 -0
  325. pyfect/cluster/entity_proxy.py +161 -0
  326. pyfect/cluster/entity_proxy_server.py +103 -0
  327. pyfect/cluster/entity_resource.py +122 -0
  328. pyfect/cluster/entity_type.py +20 -0
  329. pyfect/cluster/envelope.py +307 -0
  330. pyfect/cluster/http_runner.py +254 -0
  331. pyfect/cluster/k8s_http_client.py +281 -0
  332. pyfect/cluster/k8s_types.py +1394 -0
  333. pyfect/cluster/machine_id.py +21 -0
  334. pyfect/cluster/message.py +219 -0
  335. pyfect/cluster/message_storage/__init__.py +67 -0
  336. pyfect/cluster/message_storage/_encoded.py +393 -0
  337. pyfect/cluster/message_storage/_memory.py +386 -0
  338. pyfect/cluster/message_storage/_noop.py +109 -0
  339. pyfect/cluster/message_storage/_service.py +388 -0
  340. pyfect/cluster/reply.py +236 -0
  341. pyfect/cluster/runner.py +32 -0
  342. pyfect/cluster/runner_address.py +23 -0
  343. pyfect/cluster/runner_health.py +93 -0
  344. pyfect/cluster/runner_server.py +286 -0
  345. pyfect/cluster/runner_storage.py +212 -0
  346. pyfect/cluster/runners/__init__.py +55 -0
  347. pyfect/cluster/runners/_local.py +460 -0
  348. pyfect/cluster/runners/_noop.py +57 -0
  349. pyfect/cluster/runners/_rpc.py +290 -0
  350. pyfect/cluster/runners/_service.py +113 -0
  351. pyfect/cluster/shard_id.py +39 -0
  352. pyfect/cluster/sharding/__init__.py +12 -0
  353. pyfect/cluster/sharding/_acquisition.py +490 -0
  354. pyfect/cluster/sharding/_clients.py +271 -0
  355. pyfect/cluster/sharding/_make.py +388 -0
  356. pyfect/cluster/sharding/_routing.py +296 -0
  357. pyfect/cluster/sharding/_runners_sync.py +198 -0
  358. pyfect/cluster/sharding/_service.py +91 -0
  359. pyfect/cluster/sharding/_singletons.py +183 -0
  360. pyfect/cluster/sharding/_state.py +296 -0
  361. pyfect/cluster/sharding/_storage_loop.py +421 -0
  362. pyfect/cluster/sharding_config.py +230 -0
  363. pyfect/cluster/sharding_registration_event.py +28 -0
  364. pyfect/cluster/single_runner.py +49 -0
  365. pyfect/cluster/singleton.py +36 -0
  366. pyfect/cluster/singleton_address.py +20 -0
  367. pyfect/cluster/snowflake.py +133 -0
  368. pyfect/cluster/socket_runner.py +67 -0
  369. pyfect/cluster/sql_message_storage.py +1001 -0
  370. pyfect/cluster/sql_runner_storage.py +841 -0
  371. pyfect/cluster/test_runner.py +23 -0
  372. pyfect/config/__init__.py +93 -0
  373. pyfect/config/_all.py +96 -0
  374. pyfect/config/_collections.py +291 -0
  375. pyfect/config/_config.py +261 -0
  376. pyfect/config/_constructors.py +106 -0
  377. pyfect/config/_error.py +27 -0
  378. pyfect/config/_leaf.py +92 -0
  379. pyfect/config/_scalars.py +193 -0
  380. pyfect/config/_schema.py +340 -0
  381. pyfect/config_provider/__init__.py +60 -0
  382. pyfect/config_provider/_dir.py +84 -0
  383. pyfect/config_provider/_dotenv.py +127 -0
  384. pyfect/config_provider/_env.py +79 -0
  385. pyfect/config_provider/_layers.py +80 -0
  386. pyfect/config_provider/_node.py +90 -0
  387. pyfect/config_provider/_provider.py +118 -0
  388. pyfect/config_provider/_unknown.py +62 -0
  389. pyfect/console/__init__.py +63 -0
  390. pyfect/console/_effects.py +134 -0
  391. pyfect/console/_live.py +156 -0
  392. pyfect/console/_service.py +49 -0
  393. pyfect/console/_table.py +90 -0
  394. pyfect/context.py +414 -0
  395. pyfect/cron/__init__.py +30 -0
  396. pyfect/cron/_model.py +183 -0
  397. pyfect/cron/_search.py +268 -0
  398. pyfect/cron/_text.py +202 -0
  399. pyfect/cron/_wall.py +42 -0
  400. pyfect/crypto.py +257 -0
  401. pyfect/date_time/__init__.py +77 -0
  402. pyfect/date_time/_calendar.py +209 -0
  403. pyfect/date_time/_current.py +118 -0
  404. pyfect/date_time/_epoch.py +22 -0
  405. pyfect/date_time/_iso.py +80 -0
  406. pyfect/date_time/_zones.py +135 -0
  407. pyfect/date_time/intl.py +144 -0
  408. pyfect/deferred.py +145 -0
  409. pyfect/devtools/__init__.py +24 -0
  410. pyfect/devtools/client.py +323 -0
  411. pyfect/devtools/layers.py +32 -0
  412. pyfect/devtools/schema.py +301 -0
  413. pyfect/devtools/server.py +72 -0
  414. pyfect/duration.py +295 -0
  415. pyfect/effect.py +565 -0
  416. pyfect/effectable.py +37 -0
  417. pyfect/encoding/__init__.py +62 -0
  418. pyfect/encoding/_archive.py +197 -0
  419. pyfect/encoding/_json_array_scanner.py +477 -0
  420. pyfect/encoding/base64.py +23 -0
  421. pyfect/encoding/base64_url.py +19 -0
  422. pyfect/encoding/encoding_error.py +17 -0
  423. pyfect/encoding/hex.py +28 -0
  424. pyfect/encoding/ini.py +188 -0
  425. pyfect/encoding/json_array.py +246 -0
  426. pyfect/encoding/ndjson.py +461 -0
  427. pyfect/encoding/schema_binary/__init__.py +257 -0
  428. pyfect/encoding/schema_binary/_channels.py +173 -0
  429. pyfect/encoding/schema_binary/_compile.py +584 -0
  430. pyfect/encoding/schema_binary/_decode.py +848 -0
  431. pyfect/encoding/schema_binary/_dictionary.py +90 -0
  432. pyfect/encoding/schema_binary/_encode.py +838 -0
  433. pyfect/encoding/schema_binary/_fingerprint.py +168 -0
  434. pyfect/encoding/schema_binary/_layout.py +350 -0
  435. pyfect/encoding/schema_binary/_literals.py +47 -0
  436. pyfect/encoding/schema_binary/_parser.py +163 -0
  437. pyfect/encoding/schema_binary/_reader.py +148 -0
  438. pyfect/encoding/schema_binary/_target.py +310 -0
  439. pyfect/encoding/schema_binary/_values.py +133 -0
  440. pyfect/encoding/schema_binary/_wire.py +253 -0
  441. pyfect/encoding/sse.py +476 -0
  442. pyfect/encoding/tar/__init__.py +396 -0
  443. pyfect/encoding/tar/_decoder.py +220 -0
  444. pyfect/encoding/tar/_encoder.py +83 -0
  445. pyfect/encoding/tar/_header.py +494 -0
  446. pyfect/encoding/tar/_model.py +82 -0
  447. pyfect/encoding/toml.py +375 -0
  448. pyfect/encoding/xml/__init__.py +222 -0
  449. pyfect/encoding/xml/_chars.py +119 -0
  450. pyfect/encoding/xml/_collector.py +106 -0
  451. pyfect/encoding/xml/_inputs.py +126 -0
  452. pyfect/encoding/xml/_model.py +114 -0
  453. pyfect/encoding/xml/_parser.py +694 -0
  454. pyfect/encoding/xml/_scanner.py +180 -0
  455. pyfect/encoding/xml/_writer.py +238 -0
  456. pyfect/encoding/yaml.py +739 -0
  457. pyfect/encoding/zip/__init__.py +392 -0
  458. pyfect/encoding/zip/_decoder.py +378 -0
  459. pyfect/encoding/zip/_format.py +122 -0
  460. pyfect/encoding/zip/_inflate.py +65 -0
  461. pyfect/encoding/zip/_model.py +86 -0
  462. pyfect/encoding/zip/_writer.py +311 -0
  463. pyfect/error_reporter.py +240 -0
  464. pyfect/errors.py +321 -0
  465. pyfect/eventlog/__init__.py +77 -0
  466. pyfect/eventlog/_conflicts.py +94 -0
  467. pyfect/eventlog/_crypto.py +64 -0
  468. pyfect/eventlog/_identity.py +26 -0
  469. pyfect/eventlog/_identity_derivation.py +79 -0
  470. pyfect/eventlog/_transferable_bytes.py +55 -0
  471. pyfect/eventlog/_uuid.py +33 -0
  472. pyfect/eventlog/event.py +115 -0
  473. pyfect/eventlog/event_group.py +55 -0
  474. pyfect/eventlog/event_journal.py +630 -0
  475. pyfect/eventlog/event_log.py +1039 -0
  476. pyfect/eventlog/event_log_encryption.py +219 -0
  477. pyfect/eventlog/event_log_message.py +357 -0
  478. pyfect/eventlog/event_log_remote.py +465 -0
  479. pyfect/eventlog/event_log_server.py +442 -0
  480. pyfect/eventlog/event_log_server_encrypted.py +322 -0
  481. pyfect/eventlog/event_log_server_unencrypted.py +814 -0
  482. pyfect/eventlog/event_log_session_auth.py +250 -0
  483. pyfect/eventlog/event_row.py +423 -0
  484. pyfect/eventlog/sql_event_journal.py +692 -0
  485. pyfect/eventlog/sql_event_log_server_encrypted.py +440 -0
  486. pyfect/eventlog/sql_event_log_server_unencrypted.py +568 -0
  487. pyfect/execution_plan/__init__.py +42 -0
  488. pyfect/execution_plan/_events.py +128 -0
  489. pyfect/execution_plan/_model.py +108 -0
  490. pyfect/execution_plan/_run.py +176 -0
  491. pyfect/exit.py +205 -0
  492. pyfect/fiber_handle.py +305 -0
  493. pyfect/fiber_map.py +350 -0
  494. pyfect/fiber_set.py +232 -0
  495. pyfect/file_system/__init__.py +69 -0
  496. pyfect/file_system/_copy.py +116 -0
  497. pyfect/file_system/_errors.py +32 -0
  498. pyfect/file_system/_file.py +177 -0
  499. pyfect/file_system/_live.py +351 -0
  500. pyfect/file_system/_model.py +72 -0
  501. pyfect/file_system/_noop.py +189 -0
  502. pyfect/file_system/_service.py +336 -0
  503. pyfect/file_system/_stat.py +69 -0
  504. pyfect/file_system/_watch.py +107 -0
  505. pyfect/filters.py +245 -0
  506. pyfect/graph/__init__.py +101 -0
  507. pyfect/graph/_all_pairs.py +150 -0
  508. pyfect/graph/_combine.py +259 -0
  509. pyfect/graph/_compact.py +143 -0
  510. pyfect/graph/_components.py +200 -0
  511. pyfect/graph/_cycles.py +144 -0
  512. pyfect/graph/_enumerate.py +168 -0
  513. pyfect/graph/_errors.py +51 -0
  514. pyfect/graph/_flow.py +164 -0
  515. pyfect/graph/_forest.py +109 -0
  516. pyfect/graph/_graph.py +269 -0
  517. pyfect/graph/_lowlink.py +98 -0
  518. pyfect/graph/_matching.py +101 -0
  519. pyfect/graph/_mutate.py +211 -0
  520. pyfect/graph/_query.py +138 -0
  521. pyfect/graph/_records.py +119 -0
  522. pyfect/graph/_render.py +109 -0
  523. pyfect/graph/_shortest.py +274 -0
  524. pyfect/graph/_snapshot.py +50 -0
  525. pyfect/graph/_store.py +136 -0
  526. pyfect/graph/_traverse.py +289 -0
  527. pyfect/graph/_view.py +384 -0
  528. pyfect/graph/_walker.py +70 -0
  529. pyfect/graphql/__init__.py +87 -0
  530. pyfect/graphql/_codec.py +117 -0
  531. pyfect/graphql/_http.py +309 -0
  532. pyfect/graphql/_schemas.py +39 -0
  533. pyfect/graphql/_slices.py +110 -0
  534. pyfect/graphql/_template.py +111 -0
  535. pyfect/graphql/_types.py +115 -0
  536. pyfect/graphql/_ws.py +395 -0
  537. pyfect/graphql/_ws_messages.py +120 -0
  538. pyfect/graphql/client.py +428 -0
  539. pyfect/graphql/client_error.py +285 -0
  540. pyfect/graphql/group.py +142 -0
  541. pyfect/graphql/middleware.py +98 -0
  542. pyfect/graphql/operation.py +409 -0
  543. pyfect/graphql/protocol.py +119 -0
  544. pyfect/graphql/resolver.py +574 -0
  545. pyfect/graphql/template.py +61 -0
  546. pyfect/hash_map.py +317 -0
  547. pyfect/hash_ring.py +206 -0
  548. pyfect/hash_set.py +163 -0
  549. pyfect/http/__init__.py +125 -0
  550. pyfect/http/_asgi_listener.py +272 -0
  551. pyfect/http/_authority.py +63 -0
  552. pyfect/http/_brotli.py +27 -0
  553. pyfect/http/_compression.py +52 -0
  554. pyfect/http/_field.py +18 -0
  555. pyfect/http/_foreign_path.py +27 -0
  556. pyfect/http/_form_data.py +34 -0
  557. pyfect/http/_httpx_options.py +120 -0
  558. pyfect/http/_in_memory.py +76 -0
  559. pyfect/http/_request_state.py +59 -0
  560. pyfect/http/_vary.py +14 -0
  561. pyfect/http/abort.py +65 -0
  562. pyfect/http/asgi/__init__.py +59 -0
  563. pyfect/http/asgi/_app.py +155 -0
  564. pyfect/http/asgi/_http.py +201 -0
  565. pyfect/http/asgi/_mount.py +263 -0
  566. pyfect/http/asgi/_scope.py +86 -0
  567. pyfect/http/asgi/_serve.py +72 -0
  568. pyfect/http/asgi/_types.py +13 -0
  569. pyfect/http/asgi/_web_socket.py +325 -0
  570. pyfect/http/body.py +437 -0
  571. pyfect/http/client/__init__.py +111 -0
  572. pyfect/http/client/_circuit_breaker.py +113 -0
  573. pyfect/http/client/_cookie_jar.py +120 -0
  574. pyfect/http/client/_make.py +252 -0
  575. pyfect/http/client/_rate_limit.py +423 -0
  576. pyfect/http/client/_redirects.py +93 -0
  577. pyfect/http/client/_retry.py +115 -0
  578. pyfect/http/client/_service.py +497 -0
  579. pyfect/http/cookies.py +444 -0
  580. pyfect/http/error.py +188 -0
  581. pyfect/http/etag.py +96 -0
  582. pyfect/http/file_like.py +49 -0
  583. pyfect/http/find_my_way/__init__.py +10 -0
  584. pyfect/http/find_my_way/_nodes.py +186 -0
  585. pyfect/http/find_my_way/_paths.py +43 -0
  586. pyfect/http/find_my_way/_query_string.py +67 -0
  587. pyfect/http/find_my_way/_router.py +401 -0
  588. pyfect/http/headers.py +343 -0
  589. pyfect/http/http_effect.py +198 -0
  590. pyfect/http/httpx_client.py +291 -0
  591. pyfect/http/hypercorn_server.py +122 -0
  592. pyfect/http/incoming_message.py +140 -0
  593. pyfect/http/live_server/__init__.py +191 -0
  594. pyfect/http/live_server/_body.py +164 -0
  595. pyfect/http/live_server/_exchange.py +321 -0
  596. pyfect/http/live_server/_head.py +194 -0
  597. pyfect/http/live_server/_inbound.py +156 -0
  598. pyfect/http/live_server/_listener.py +211 -0
  599. pyfect/http/live_server/_serve.py +225 -0
  600. pyfect/http/live_server/_timers.py +20 -0
  601. pyfect/http/live_server/_upgrade.py +108 -0
  602. pyfect/http/live_server/_websocket.py +286 -0
  603. pyfect/http/live_server/_ws_frames.py +242 -0
  604. pyfect/http/method.py +30 -0
  605. pyfect/http/middleware/__init__.py +61 -0
  606. pyfect/http/middleware/_compression.py +156 -0
  607. pyfect/http/middleware/_cors.py +129 -0
  608. pyfect/http/middleware/_decompression.py +274 -0
  609. pyfect/http/middleware/_forwarded.py +113 -0
  610. pyfect/http/middleware/_logger.py +73 -0
  611. pyfect/http/middleware/_search_params.py +34 -0
  612. pyfect/http/middleware/_tracer.py +153 -0
  613. pyfect/http/middleware/_types.py +16 -0
  614. pyfect/http/mime/__init__.py +69 -0
  615. pyfect/http/mime/_types.py +361 -0
  616. pyfect/http/multipart.py +613 -0
  617. pyfect/http/multipart_parser/__init__.py +348 -0
  618. pyfect/http/multipart_parser/_content_type.py +109 -0
  619. pyfect/http/multipart_parser/_headers.py +206 -0
  620. pyfect/http/multipart_parser/_search.py +85 -0
  621. pyfect/http/origin.py +146 -0
  622. pyfect/http/platform.py +593 -0
  623. pyfect/http/prometheus.py +34 -0
  624. pyfect/http/request.py +384 -0
  625. pyfect/http/response.py +474 -0
  626. pyfect/http/router/__init__.py +82 -0
  627. pyfect/http/router/_api.py +462 -0
  628. pyfect/http/router/_in_memory.py +76 -0
  629. pyfect/http/router/_markers.py +47 -0
  630. pyfect/http/router/_middleware.py +181 -0
  631. pyfect/http/router/_middleware_stack.py +51 -0
  632. pyfect/http/router/_provided.py +31 -0
  633. pyfect/http/router/_route.py +114 -0
  634. pyfect/http/router/_router.py +308 -0
  635. pyfect/http/schema.py +276 -0
  636. pyfect/http/server.py +199 -0
  637. pyfect/http/server_error.py +261 -0
  638. pyfect/http/server_request.py +729 -0
  639. pyfect/http/server_respondable.py +77 -0
  640. pyfect/http/server_response.py +569 -0
  641. pyfect/http/static_server/__init__.py +257 -0
  642. pyfect/http/static_server/_conditional.py +72 -0
  643. pyfect/http/static_server/_mime.py +55 -0
  644. pyfect/http/static_server/_range.py +53 -0
  645. pyfect/http/status.py +51 -0
  646. pyfect/http/template.py +161 -0
  647. pyfect/http/trace_context.py +91 -0
  648. pyfect/http/url.py +442 -0
  649. pyfect/http/url_params.py +304 -0
  650. pyfect/http/uvicorn_server.py +119 -0
  651. pyfect/http/web.py +171 -0
  652. pyfect/http/web_handler.py +463 -0
  653. pyfect/http/wire.py +209 -0
  654. pyfect/http_api/__init__.py +83 -0
  655. pyfect/http_api/_assets/scalar.js +8 -0
  656. pyfect/http_api/_assets/swagger-ui.css +3 -0
  657. pyfect/http_api/_assets/swagger-ui.js +4 -0
  658. pyfect/http_api/_client_method.py +220 -0
  659. pyfect/http_api/_client_payload.py +144 -0
  660. pyfect/http_api/_client_response.py +377 -0
  661. pyfect/http_api/_handlers.py +282 -0
  662. pyfect/http_api/_html.py +38 -0
  663. pyfect/http_api/_media_type.py +6 -0
  664. pyfect/http_api/_openapi_responses.py +164 -0
  665. pyfect/http_api/_openapi_schemas.py +163 -0
  666. pyfect/http_api/_path.py +102 -0
  667. pyfect/http_api/_payload.py +260 -0
  668. pyfect/http_api/_response.py +363 -0
  669. pyfect/http_api/_security.py +174 -0
  670. pyfect/http_api/api.py +265 -0
  671. pyfect/http_api/builder.py +447 -0
  672. pyfect/http_api/client.py +474 -0
  673. pyfect/http_api/endpoint.py +969 -0
  674. pyfect/http_api/error.py +280 -0
  675. pyfect/http_api/group.py +215 -0
  676. pyfect/http_api/middleware.py +232 -0
  677. pyfect/http_api/openapi.py +396 -0
  678. pyfect/http_api/scalar.py +143 -0
  679. pyfect/http_api/schema.py +713 -0
  680. pyfect/http_api/security.py +91 -0
  681. pyfect/http_api/swagger.py +69 -0
  682. pyfect/http_api/test.py +105 -0
  683. pyfect/json_patch.py +255 -0
  684. pyfect/json_pointer.py +100 -0
  685. pyfect/json_schema/__init__.py +66 -0
  686. pyfect/json_schema/_api.py +96 -0
  687. pyfect/json_schema/_converter.py +258 -0
  688. pyfect/json_schema/_draft04.py +198 -0
  689. pyfect/json_schema/_draft07.py +203 -0
  690. pyfect/json_schema/_keywords.py +202 -0
  691. pyfect/json_schema/_model.py +201 -0
  692. pyfect/json_schema/_openapi.py +208 -0
  693. pyfect/latch.py +127 -0
  694. pyfect/layer.py +479 -0
  695. pyfect/layer_map.py +279 -0
  696. pyfect/layer_ref.py +208 -0
  697. pyfect/logger/__init__.py +91 -0
  698. pyfect/logger/_batched.py +49 -0
  699. pyfect/logger/_console.py +116 -0
  700. pyfect/logger/_file.py +31 -0
  701. pyfect/logger/_formats.py +104 -0
  702. pyfect/logger/_layer.py +50 -0
  703. pyfect/logger/_level.py +53 -0
  704. pyfect/logger/_log.py +142 -0
  705. pyfect/logger/_model.py +163 -0
  706. pyfect/logger/_refs.py +78 -0
  707. pyfect/logger/_stdlib.py +54 -0
  708. pyfect/logger/_text.py +263 -0
  709. pyfect/logger/_tracer.py +35 -0
  710. pyfect/managed_runtime.py +393 -0
  711. pyfect/metric/__init__.py +119 -0
  712. pyfect/metric/_boundaries.py +27 -0
  713. pyfect/metric/_kinds.py +417 -0
  714. pyfect/metric/_metric.py +302 -0
  715. pyfect/metric/_prometheus.py +150 -0
  716. pyfect/metric/_refs.py +78 -0
  717. pyfect/metric/_runtime.py +75 -0
  718. pyfect/metric/_snapshot.py +97 -0
  719. pyfect/metric/_state.py +74 -0
  720. pyfect/msgspec.py +98 -0
  721. pyfect/mutable_hash_map.py +140 -0
  722. pyfect/mutable_hash_set.py +95 -0
  723. pyfect/net/__init__.py +18 -0
  724. pyfect/net/_errors.py +29 -0
  725. pyfect/net/address_resolver.py +179 -0
  726. pyfect/net/dns/__init__.py +92 -0
  727. pyfect/net/dns/_error.py +43 -0
  728. pyfect/net/dns/_records.py +335 -0
  729. pyfect/net/dns/_service.py +287 -0
  730. pyfect/net/dns/_system.py +89 -0
  731. pyfect/net/host.py +311 -0
  732. pyfect/net/ip_interface.py +202 -0
  733. pyfect/net/ip_network.py +250 -0
  734. pyfect/net/net_address/__init__.py +245 -0
  735. pyfect/net/net_address/_inet.py +412 -0
  736. pyfect/net/net_address/_ip.py +348 -0
  737. pyfect/net/net_address/_mac.py +119 -0
  738. pyfect/optic/__init__.py +50 -0
  739. pyfect/optic/_builtins.py +90 -0
  740. pyfect/optic/_data.py +97 -0
  741. pyfect/optic/_optic.py +422 -0
  742. pyfect/optic/_steps.py +151 -0
  743. pyfect/option.py +362 -0
  744. pyfect/otel/__init__.py +22 -0
  745. pyfect/otel/_attributes.py +67 -0
  746. pyfect/otel/_producer.py +322 -0
  747. pyfect/otel/_shutdown.py +26 -0
  748. pyfect/otel/_span.py +292 -0
  749. pyfect/otel/_wrapper.py +92 -0
  750. pyfect/otel/logger.py +154 -0
  751. pyfect/otel/metrics.py +126 -0
  752. pyfect/otel/resource.py +111 -0
  753. pyfect/otel/sdk.py +195 -0
  754. pyfect/otel/tracer.py +157 -0
  755. pyfect/partitioned_semaphore.py +211 -0
  756. pyfect/path.py +304 -0
  757. pyfect/persistence/__init__.py +77 -0
  758. pyfect/persistence/_columns.py +32 -0
  759. pyfect/persistence/_error.py +14 -0
  760. pyfect/persistence/_seconds.py +68 -0
  761. pyfect/persistence/_sql_keys.py +47 -0
  762. pyfect/persistence/circuit_breaker/__init__.py +120 -0
  763. pyfect/persistence/circuit_breaker/_breaker.py +317 -0
  764. pyfect/persistence/circuit_breaker/_errors.py +67 -0
  765. pyfect/persistence/circuit_breaker/_memory.py +243 -0
  766. pyfect/persistence/circuit_breaker/_redis.py +509 -0
  767. pyfect/persistence/circuit_breaker/_store.py +60 -0
  768. pyfect/persistence/circuit_breaker/_types.py +191 -0
  769. pyfect/persistence/key_value_store/__init__.py +51 -0
  770. pyfect/persistence/key_value_store/_layers.py +216 -0
  771. pyfect/persistence/key_value_store/_schema_store.py +91 -0
  772. pyfect/persistence/key_value_store/_sql.py +197 -0
  773. pyfect/persistence/key_value_store/_store.py +212 -0
  774. pyfect/persistence/persistable.py +164 -0
  775. pyfect/persistence/persisted_cache.py +159 -0
  776. pyfect/persistence/persisted_queue/__init__.py +75 -0
  777. pyfect/persistence/persisted_queue/_error.py +42 -0
  778. pyfect/persistence/persisted_queue/_mailbox.py +101 -0
  779. pyfect/persistence/persisted_queue/_memory.py +182 -0
  780. pyfect/persistence/persisted_queue/_queue.py +272 -0
  781. pyfect/persistence/persisted_queue/_redis.py +455 -0
  782. pyfect/persistence/persisted_queue/_redis_scripts.py +395 -0
  783. pyfect/persistence/persisted_queue/_sql.py +334 -0
  784. pyfect/persistence/persisted_queue/_sql_migrations.py +319 -0
  785. pyfect/persistence/persisted_queue/_sql_statements.py +441 -0
  786. pyfect/persistence/persisted_queue/_store.py +147 -0
  787. pyfect/persistence/persistence/__init__.py +84 -0
  788. pyfect/persistence/persistence/_kvs.py +135 -0
  789. pyfect/persistence/persistence/_memory.py +62 -0
  790. pyfect/persistence/persistence/_redis.py +162 -0
  791. pyfect/persistence/persistence/_service.py +276 -0
  792. pyfect/persistence/persistence/_sql.py +499 -0
  793. pyfect/persistence/rate_limiter/__init__.py +82 -0
  794. pyfect/persistence/rate_limiter/_errors.py +59 -0
  795. pyfect/persistence/rate_limiter/_limiter.py +325 -0
  796. pyfect/persistence/rate_limiter/_memory.py +217 -0
  797. pyfect/persistence/rate_limiter/_redis.py +485 -0
  798. pyfect/persistence/rate_limiter/_store.py +89 -0
  799. pyfect/persistence/redis/__init__.py +52 -0
  800. pyfect/persistence/redis/_error.py +12 -0
  801. pyfect/persistence/redis/_make.py +234 -0
  802. pyfect/persistence/redis/_script.py +78 -0
  803. pyfect/persistence/redis/_service.py +104 -0
  804. pyfect/persistence/redis_py.py +303 -0
  805. pyfect/persistence/user_directories.py +195 -0
  806. pyfect/platform.py +26 -0
  807. pyfect/platform_error.py +256 -0
  808. pyfect/pool/__init__.py +36 -0
  809. pyfect/pool/_pool.py +707 -0
  810. pyfect/pool/_state.py +161 -0
  811. pyfect/pool/_ttl.py +105 -0
  812. pyfect/pool/_waiters.py +116 -0
  813. pyfect/primary_key.py +35 -0
  814. pyfect/process/__init__.py +82 -0
  815. pyfect/process/_child.py +213 -0
  816. pyfect/process/_command.py +358 -0
  817. pyfect/process/_handle.py +77 -0
  818. pyfect/process/_live.py +455 -0
  819. pyfect/process/_os.py +78 -0
  820. pyfect/process/_pipes.py +291 -0
  821. pyfect/process/_spawner.py +75 -0
  822. pyfect/pubsub/__init__.py +33 -0
  823. pyfect/pubsub/_atomic.py +181 -0
  824. pyfect/pubsub/_hub.py +214 -0
  825. pyfect/pubsub/_pubsub.py +214 -0
  826. pyfect/pubsub/_replay.py +107 -0
  827. pyfect/pubsub/_subscription.py +226 -0
  828. pyfect/pull.py +132 -0
  829. pyfect/py.typed +0 -0
  830. pyfect/pydantic.py +188 -0
  831. pyfect/queue/__init__.py +33 -0
  832. pyfect/queue/_queue.py +525 -0
  833. pyfect/queue/_state.py +111 -0
  834. pyfect/queue/_views.py +55 -0
  835. pyfect/random.py +146 -0
  836. pyfect/rc_map.py +363 -0
  837. pyfect/rc_ref.py +271 -0
  838. pyfect/reactivity/__init__.py +53 -0
  839. pyfect/reactivity/_async_result_schema.py +227 -0
  840. pyfect/reactivity/_hydration.py +18 -0
  841. pyfect/reactivity/_live.py +21 -0
  842. pyfect/reactivity/_reactivity.py +256 -0
  843. pyfect/reactivity/_result_effect.py +17 -0
  844. pyfect/reactivity/_time.py +11 -0
  845. pyfect/reactivity/async_result.py +679 -0
  846. pyfect/reactivity/atom/__init__.py +143 -0
  847. pyfect/reactivity/atom/_combinators.py +223 -0
  848. pyfect/reactivity/atom/_constructors.py +80 -0
  849. pyfect/reactivity/atom/_conversions.py +79 -0
  850. pyfect/reactivity/atom/_effect.py +252 -0
  851. pyfect/reactivity/atom/_fn.py +341 -0
  852. pyfect/reactivity/atom/_kvs.py +101 -0
  853. pyfect/reactivity/atom/_optimistic.py +162 -0
  854. pyfect/reactivity/atom/_runtime.py +323 -0
  855. pyfect/reactivity/atom/_serializable.py +65 -0
  856. pyfect/reactivity/atom/_subscription_ref.py +102 -0
  857. pyfect/reactivity/atom/_swr.py +69 -0
  858. pyfect/reactivity/atom/_types.py +435 -0
  859. pyfect/reactivity/atom_http_api.py +667 -0
  860. pyfect/reactivity/atom_ref.py +260 -0
  861. pyfect/reactivity/atom_registry/__init__.py +219 -0
  862. pyfect/reactivity/atom_registry/_batch.py +96 -0
  863. pyfect/reactivity/atom_registry/_dispatcher.py +60 -0
  864. pyfect/reactivity/atom_registry/_lifetime.py +202 -0
  865. pyfect/reactivity/atom_registry/_node.py +423 -0
  866. pyfect/reactivity/atom_registry/_registry.py +380 -0
  867. pyfect/reactivity/atom_rpc.py +283 -0
  868. pyfect/reactivity/hydration.py +200 -0
  869. pyfect/redacted.py +83 -0
  870. pyfect/ref.py +129 -0
  871. pyfect/resource.py +98 -0
  872. pyfect/result.py +306 -0
  873. pyfect/rpc/__init__.py +64 -0
  874. pyfect/rpc/_encoded_schema.py +86 -0
  875. pyfect/rpc/_json_rpc.py +246 -0
  876. pyfect/rpc/_methods.py +177 -0
  877. pyfect/rpc/_rpc.py +498 -0
  878. pyfect/rpc/client/__init__.py +100 -0
  879. pyfect/rpc/client/_core.py +449 -0
  880. pyfect/rpc/client/_http.py +257 -0
  881. pyfect/rpc/client/_protocol.py +171 -0
  882. pyfect/rpc/client/_serialized.py +321 -0
  883. pyfect/rpc/client/_transports.py +328 -0
  884. pyfect/rpc/client/_worker.py +283 -0
  885. pyfect/rpc/client_error.py +35 -0
  886. pyfect/rpc/group.py +296 -0
  887. pyfect/rpc/message.py +299 -0
  888. pyfect/rpc/middleware.py +182 -0
  889. pyfect/rpc/schema.py +89 -0
  890. pyfect/rpc/serialization.py +366 -0
  891. pyfect/rpc/server/__init__.py +181 -0
  892. pyfect/rpc/server/_core.py +549 -0
  893. pyfect/rpc/server/_protocol.py +123 -0
  894. pyfect/rpc/server/_serialized.py +363 -0
  895. pyfect/rpc/server/_stdio.py +101 -0
  896. pyfect/rpc/server/_transports.py +427 -0
  897. pyfect/rpc/server/_worker.py +108 -0
  898. pyfect/rpc/test.py +74 -0
  899. pyfect/rpc/worker.py +92 -0
  900. pyfect/run.py +393 -0
  901. pyfect/schedule/__init__.py +91 -0
  902. pyfect/schedule/_combinators.py +168 -0
  903. pyfect/schedule/_constructors.py +223 -0
  904. pyfect/schedule/_cron.py +49 -0
  905. pyfect/schedule/_drive.py +191 -0
  906. pyfect/schedule/_model.py +405 -0
  907. pyfect/scheduler.py +575 -0
  908. pyfect/schema/__init__.py +866 -0
  909. pyfect/schema/_adapters.py +39 -0
  910. pyfect/schema/_arbitrary_constraint.py +242 -0
  911. pyfect/schema/_arbitrary_graph.py +325 -0
  912. pyfect/schema/_arbitrary_links.py +179 -0
  913. pyfect/schema/_arbitrary_number.py +112 -0
  914. pyfect/schema/_arrays.py +287 -0
  915. pyfect/schema/_assignable.py +118 -0
  916. pyfect/schema/_boolean_literals.py +31 -0
  917. pyfect/schema/_checks_number.py +216 -0
  918. pyfect/schema/_checks_order.py +140 -0
  919. pyfect/schema/_checks_size.py +277 -0
  920. pyfect/schema/_checks_string.py +241 -0
  921. pyfect/schema/_class.py +569 -0
  922. pyfect/schema/_codec_derivation.py +227 -0
  923. pyfect/schema/_codec_links.py +221 -0
  924. pyfect/schema/_codecs.py +316 -0
  925. pyfect/schema/_collections.py +172 -0
  926. pyfect/schema/_constructor_default.py +89 -0
  927. pyfect/schema/_data.py +440 -0
  928. pyfect/schema/_data_codecs.py +145 -0
  929. pyfect/schema/_decimal_regexp.py +243 -0
  930. pyfect/schema/_declare.py +68 -0
  931. pyfect/schema/_derive.py +292 -0
  932. pyfect/schema/_duration_codecs.py +27 -0
  933. pyfect/schema/_ecma_pattern.py +416 -0
  934. pyfect/schema/_error.py +26 -0
  935. pyfect/schema/_error_instance.py +222 -0
  936. pyfect/schema/_graph.py +271 -0
  937. pyfect/schema/_instances.py +240 -0
  938. pyfect/schema/_jsonschema/__init__.py +90 -0
  939. pyfect/schema/_jsonschema/_annotations.py +114 -0
  940. pyfect/schema/_jsonschema/_checks.py +253 -0
  941. pyfect/schema/_jsonschema/_compile.py +346 -0
  942. pyfect/schema/_jsonschema/_exact.py +19 -0
  943. pyfect/schema/_jsonschema/_merge.py +211 -0
  944. pyfect/schema/_jsonschema/_objects.py +231 -0
  945. pyfect/schema/_jsonschema/_references.py +221 -0
  946. pyfect/schema/_jsonschema/_template.py +69 -0
  947. pyfect/schema/_literals.py +147 -0
  948. pyfect/schema/_middleware.py +209 -0
  949. pyfect/schema/_net.py +522 -0
  950. pyfect/schema/_options.py +49 -0
  951. pyfect/schema/_parse.py +351 -0
  952. pyfect/schema/_parsed_text.py +37 -0
  953. pyfect/schema/_primitives.py +48 -0
  954. pyfect/schema/_record.py +41 -0
  955. pyfect/schema/_refine.py +81 -0
  956. pyfect/schema/_schema.py +158 -0
  957. pyfect/schema/_semver.py +144 -0
  958. pyfect/schema/_strategy/__init__.py +258 -0
  959. pyfect/schema/_strategy/_big_decimal.py +203 -0
  960. pyfect/schema/_strategy/_composites.py +119 -0
  961. pyfect/schema/_strategy/_leaves.py +94 -0
  962. pyfect/schema/_strategy/_net.py +133 -0
  963. pyfect/schema/_struct.py +87 -0
  964. pyfect/schema/_struct_keys.py +128 -0
  965. pyfect/schema/_tagged.py +254 -0
  966. pyfect/schema/_template_literal.py +172 -0
  967. pyfect/schema/_to_codec_array_from_single.py +115 -0
  968. pyfect/schema/_to_codec_go_json.py +174 -0
  969. pyfect/schema/_to_codec_json.py +73 -0
  970. pyfect/schema/_to_codec_string_tree.py +115 -0
  971. pyfect/schema/_to_differ_json_patch.py +44 -0
  972. pyfect/schema/_to_encoder_xml.py +119 -0
  973. pyfect/schema/_to_equivalence.py +186 -0
  974. pyfect/schema/_to_formatter.py +180 -0
  975. pyfect/schema/_to_iso.py +73 -0
  976. pyfect/schema/_to_strategy.py +31 -0
  977. pyfect/schema/_transform.py +210 -0
  978. pyfect/schema/_tree.py +27 -0
  979. pyfect/schema/_type_walk.py +53 -0
  980. pyfect/schema/_undefined.py +58 -0
  981. pyfect/schema/_value_codecs.py +84 -0
  982. pyfect/schema/_values.py +123 -0
  983. pyfect/schema/_void.py +86 -0
  984. pyfect/schema/ast/__init__.py +227 -0
  985. pyfect/schema/ast/_annotations.py +43 -0
  986. pyfect/schema/ast/_arrays.py +210 -0
  987. pyfect/schema/ast/_base.py +295 -0
  988. pyfect/schema/ast/_candidates.py +309 -0
  989. pyfect/schema/ast/_check.py +181 -0
  990. pyfect/schema/ast/_class.py +159 -0
  991. pyfect/schema/ast/_constructors.py +65 -0
  992. pyfect/schema/ast/_declaration.py +97 -0
  993. pyfect/schema/ast/_encoding.py +111 -0
  994. pyfect/schema/ast/_json.py +129 -0
  995. pyfect/schema/ast/_keywords.py +125 -0
  996. pyfect/schema/ast/_literal.py +157 -0
  997. pyfect/schema/ast/_objects.py +356 -0
  998. pyfect/schema/ast/_record.py +36 -0
  999. pyfect/schema/ast/_result.py +116 -0
  1000. pyfect/schema/ast/_steps.py +209 -0
  1001. pyfect/schema/ast/_suspend.py +65 -0
  1002. pyfect/schema/ast/_template_literal.py +256 -0
  1003. pyfect/schema/ast/_union.py +172 -0
  1004. pyfect/schema/getter/__init__.py +136 -0
  1005. pyfect/schema/getter/_binary.py +104 -0
  1006. pyfect/schema/getter/_coerce.py +196 -0
  1007. pyfect/schema/getter/_getter.py +243 -0
  1008. pyfect/schema/getter/_make.py +151 -0
  1009. pyfect/schema/getter/_text.py +141 -0
  1010. pyfect/schema/getter/_tree_record.py +170 -0
  1011. pyfect/schema/issue.py +420 -0
  1012. pyfect/schema/model/__init__.py +120 -0
  1013. pyfect/schema/model/_class.py +245 -0
  1014. pyfect/schema/model/_dates.py +103 -0
  1015. pyfect/schema/model/_fields.py +77 -0
  1016. pyfect/schema/model/_toolkit.py +114 -0
  1017. pyfect/schema/model/_uuid.py +69 -0
  1018. pyfect/schema/representation/__init__.py +424 -0
  1019. pyfect/schema/representation/_builtin_revivers.py +331 -0
  1020. pyfect/schema/representation/_code.py +106 -0
  1021. pyfect/schema/representation/_code_builtins.py +281 -0
  1022. pyfect/schema/representation/_code_document.py +563 -0
  1023. pyfect/schema/representation/_code_sort.py +111 -0
  1024. pyfect/schema/representation/_from.py +278 -0
  1025. pyfect/schema/representation/_import/__init__.py +78 -0
  1026. pyfect/schema/representation/_import/_finalize.py +121 -0
  1027. pyfect/schema/representation/_import/_intersect.py +467 -0
  1028. pyfect/schema/representation/_import/_js_order.py +66 -0
  1029. pyfect/schema/representation/_import/_keywords.py +224 -0
  1030. pyfect/schema/representation/_import/_nodes.py +199 -0
  1031. pyfect/schema/representation/_import/_translate.py +455 -0
  1032. pyfect/schema/representation/_json.py +520 -0
  1033. pyfect/schema/representation/_json_schema.py +178 -0
  1034. pyfect/schema/representation/_model.py +284 -0
  1035. pyfect/schema/representation/_revivers.py +89 -0
  1036. pyfect/schema/representation/_to.py +249 -0
  1037. pyfect/schema/transformation/__init__.py +99 -0
  1038. pyfect/schema/transformation/_builtins.py +314 -0
  1039. pyfect/schema/transformation/_durations.py +150 -0
  1040. pyfect/schema/transformation/_transformation.py +177 -0
  1041. pyfect/schema/variant_schema/__init__.py +69 -0
  1042. pyfect/schema/variant_schema/_class.py +188 -0
  1043. pyfect/schema/variant_schema/_defaults.py +30 -0
  1044. pyfect/schema/variant_schema/_field.py +32 -0
  1045. pyfect/schema/variant_schema/_struct.py +130 -0
  1046. pyfect/schema/variant_schema/_toolkit.py +160 -0
  1047. pyfect/scope.py +374 -0
  1048. pyfect/scoped_ref.py +124 -0
  1049. pyfect/semaphore.py +276 -0
  1050. pyfect/semver.py +403 -0
  1051. pyfect/semver_range.py +420 -0
  1052. pyfect/sink/__init__.py +131 -0
  1053. pyfect/sink/_combinators.py +151 -0
  1054. pyfect/sink/_constructors.py +187 -0
  1055. pyfect/sink/_context.py +87 -0
  1056. pyfect/sink/_folds.py +336 -0
  1057. pyfect/sink/_for_each.py +87 -0
  1058. pyfect/sink/_sink.py +265 -0
  1059. pyfect/sink/_steps.py +34 -0
  1060. pyfect/sink/_taking.py +183 -0
  1061. pyfect/socket/__init__.py +146 -0
  1062. pyfect/socket/_accepted.py +65 -0
  1063. pyfect/socket/_connection.py +384 -0
  1064. pyfect/socket/_errors.py +135 -0
  1065. pyfect/socket/_loop.py +66 -0
  1066. pyfect/socket/_net.py +281 -0
  1067. pyfect/socket/_socket.py +245 -0
  1068. pyfect/socket/_tls.py +88 -0
  1069. pyfect/socket/_tls_session.py +117 -0
  1070. pyfect/socket/_web_socket.py +555 -0
  1071. pyfect/socket/datagram/__init__.py +110 -0
  1072. pyfect/socket/datagram/_core.py +460 -0
  1073. pyfect/socket/datagram/_errors.py +102 -0
  1074. pyfect/socket/datagram/_live.py +675 -0
  1075. pyfect/socket/datagram/_model.py +217 -0
  1076. pyfect/socket/server.py +258 -0
  1077. pyfect/socket/ws.py +484 -0
  1078. pyfect/sql/__init__.py +60 -0
  1079. pyfect/sql/_loop.py +134 -0
  1080. pyfect/sql/clickhouse/__init__.py +74 -0
  1081. pyfect/sql/clickhouse/_connection.py +237 -0
  1082. pyfect/sql/clickhouse/_rows.py +87 -0
  1083. pyfect/sql/clickhouse/client.py +322 -0
  1084. pyfect/sql/clickhouse/config.py +241 -0
  1085. pyfect/sql/clickhouse/driver.py +434 -0
  1086. pyfect/sql/clickhouse/error.py +106 -0
  1087. pyfect/sql/clickhouse/migrator.py +47 -0
  1088. pyfect/sql/clickhouse/params.py +168 -0
  1089. pyfect/sql/client/__init__.py +35 -0
  1090. pyfect/sql/client/_client.py +309 -0
  1091. pyfect/sql/client/_sqlite_acquirers.py +130 -0
  1092. pyfect/sql/client/_transaction.py +410 -0
  1093. pyfect/sql/connection.py +87 -0
  1094. pyfect/sql/d1/__init__.py +48 -0
  1095. pyfect/sql/d1/api.py +270 -0
  1096. pyfect/sql/d1/client.py +344 -0
  1097. pyfect/sql/d1/config.py +55 -0
  1098. pyfect/sql/error.py +311 -0
  1099. pyfect/sql/libsql/__init__.py +58 -0
  1100. pyfect/sql/libsql/_connection.py +110 -0
  1101. pyfect/sql/libsql/_hrana.py +258 -0
  1102. pyfect/sql/libsql/_local.py +251 -0
  1103. pyfect/sql/libsql/_targets.py +28 -0
  1104. pyfect/sql/libsql/_values.py +46 -0
  1105. pyfect/sql/libsql/client.py +225 -0
  1106. pyfect/sql/libsql/config.py +170 -0
  1107. pyfect/sql/libsql/migrator.py +43 -0
  1108. pyfect/sql/libsql/sdk.py +123 -0
  1109. pyfect/sql/migrator.py +434 -0
  1110. pyfect/sql/model.py +324 -0
  1111. pyfect/sql/mssql/__init__.py +79 -0
  1112. pyfect/sql/mssql/_connection.py +169 -0
  1113. pyfect/sql/mssql/_driver.py +103 -0
  1114. pyfect/sql/mssql/_names.py +9 -0
  1115. pyfect/sql/mssql/_pool.py +125 -0
  1116. pyfect/sql/mssql/_tds.py +447 -0
  1117. pyfect/sql/mssql/_tds_params.py +155 -0
  1118. pyfect/sql/mssql/_worker.py +155 -0
  1119. pyfect/sql/mssql/client.py +344 -0
  1120. pyfect/sql/mssql/config.py +118 -0
  1121. pyfect/sql/mssql/error.py +111 -0
  1122. pyfect/sql/mssql/migrator.py +43 -0
  1123. pyfect/sql/mssql/parameter.py +44 -0
  1124. pyfect/sql/mssql/procedure.py +119 -0
  1125. pyfect/sql/mssql/types.py +137 -0
  1126. pyfect/sql/mysql/__init__.py +60 -0
  1127. pyfect/sql/mysql/_asyncmy.py +168 -0
  1128. pyfect/sql/mysql/_bind.py +76 -0
  1129. pyfect/sql/mysql/_connection.py +156 -0
  1130. pyfect/sql/mysql/_pool.py +63 -0
  1131. pyfect/sql/mysql/_session.py +262 -0
  1132. pyfect/sql/mysql/client.py +244 -0
  1133. pyfect/sql/mysql/config.py +108 -0
  1134. pyfect/sql/mysql/error.py +104 -0
  1135. pyfect/sql/mysql/migrator.py +44 -0
  1136. pyfect/sql/pg/__init__.py +82 -0
  1137. pyfect/sql/pg/_resolve.py +284 -0
  1138. pyfect/sql/pg/_session.py +380 -0
  1139. pyfect/sql/pg/client.py +398 -0
  1140. pyfect/sql/pg/config.py +142 -0
  1141. pyfect/sql/pg/connection.py +585 -0
  1142. pyfect/sql/pg/error.py +131 -0
  1143. pyfect/sql/pg/migrator.py +139 -0
  1144. pyfect/sql/pg/pool.py +265 -0
  1145. pyfect/sql/resolver.py +294 -0
  1146. pyfect/sql/result.py +24 -0
  1147. pyfect/sql/schema.py +116 -0
  1148. pyfect/sql/sqlite/__init__.py +26 -0
  1149. pyfect/sql/sqlite/_connection.py +230 -0
  1150. pyfect/sql/sqlite/_worker.py +71 -0
  1151. pyfect/sql/sqlite/client.py +248 -0
  1152. pyfect/sql/sqlite/migrator.py +43 -0
  1153. pyfect/sql/statement/__init__.py +144 -0
  1154. pyfect/sql/statement/_compiler.py +384 -0
  1155. pyfect/sql/statement/_segments.py +487 -0
  1156. pyfect/sql/statement/_statement.py +526 -0
  1157. pyfect/sql/statement/_transforms.py +93 -0
  1158. pyfect/sql/stream.py +88 -0
  1159. pyfect/stdio.py +206 -0
  1160. pyfect/stream/__init__.py +151 -0
  1161. pyfect/stream/_async_iterable.py +129 -0
  1162. pyfect/stream/_base.py +69 -0
  1163. pyfect/stream/_bridge_methods.py +139 -0
  1164. pyfect/stream/_catch.py +135 -0
  1165. pyfect/stream/_catch_reason.py +558 -0
  1166. pyfect/stream/_channel_methods.py +61 -0
  1167. pyfect/stream/_chunk_methods.py +169 -0
  1168. pyfect/stream/_chunking.py +310 -0
  1169. pyfect/stream/_concat.py +65 -0
  1170. pyfect/stream/_constructors.py +341 -0
  1171. pyfect/stream/_context.py +147 -0
  1172. pyfect/stream/_error_methods.py +254 -0
  1173. pyfect/stream/_execution_plan.py +199 -0
  1174. pyfect/stream/_fanout.py +154 -0
  1175. pyfect/stream/_fanout_methods.py +183 -0
  1176. pyfect/stream/_filter_methods.py +203 -0
  1177. pyfect/stream/_grouping.py +168 -0
  1178. pyfect/stream/_many.py +65 -0
  1179. pyfect/stream/_map_methods.py +233 -0
  1180. pyfect/stream/_mapping.py +126 -0
  1181. pyfect/stream/_run.py +114 -0
  1182. pyfect/stream/_run_methods.py +114 -0
  1183. pyfect/stream/_service_methods.py +36 -0
  1184. pyfect/stream/_sink_methods.py +151 -0
  1185. pyfect/stream/_sinking.py +277 -0
  1186. pyfect/stream/_sources.py +124 -0
  1187. pyfect/stream/_stream.py +162 -0
  1188. pyfect/stream/_taking.py +330 -0
  1189. pyfect/stream/_text.py +43 -0
  1190. pyfect/stream/_timing.py +294 -0
  1191. pyfect/stream/_timing_methods.py +252 -0
  1192. pyfect/stream/_zip_methods.py +279 -0
  1193. pyfect/stream/_zipping.py +213 -0
  1194. pyfect/subscription_ref.py +66 -0
  1195. pyfect/synchronized_ref.py +38 -0
  1196. pyfect/take.py +36 -0
  1197. pyfect/terminal/__init__.py +41 -0
  1198. pyfect/terminal/_keys.py +113 -0
  1199. pyfect/terminal/_live.py +223 -0
  1200. pyfect/terminal/_service.py +73 -0
  1201. pyfect/testing/__init__.py +122 -0
  1202. pyfect/testing/_assertions.py +92 -0
  1203. pyfect/testing/_clock.py +309 -0
  1204. pyfect/testing/_console.py +164 -0
  1205. pyfect/testing/_crypto.py +44 -0
  1206. pyfect/testing/_decorators.py +211 -0
  1207. pyfect/testing/_flaky.py +34 -0
  1208. pyfect/testing/_layers.py +153 -0
  1209. pyfect/testing/_prop.py +255 -0
  1210. pyfect/testing/_runners.py +84 -0
  1211. pyfect/testing/_runtime.py +174 -0
  1212. pyfect/testing/_schema.py +238 -0
  1213. pyfect/testing/plugin.py +59 -0
  1214. pyfect/tracer/__init__.py +107 -0
  1215. pyfect/tracer/_model.py +176 -0
  1216. pyfect/tracer/_native.py +172 -0
  1217. pyfect/tracer/_refs.py +87 -0
  1218. pyfect/tracer/_spans.py +269 -0
  1219. pyfect/transaction.py +340 -0
  1220. pyfect/trie.py +317 -0
  1221. pyfect/tx_chunk.py +127 -0
  1222. pyfect/tx_deferred.py +75 -0
  1223. pyfect/tx_hash_map.py +265 -0
  1224. pyfect/tx_hash_set.py +151 -0
  1225. pyfect/tx_priority_queue.py +224 -0
  1226. pyfect/tx_pubsub.py +194 -0
  1227. pyfect/tx_queue/__init__.py +27 -0
  1228. pyfect/tx_queue/_queue.py +359 -0
  1229. pyfect/tx_queue/_views.py +60 -0
  1230. pyfect/tx_reentrant_lock.py +201 -0
  1231. pyfect/tx_ref.py +79 -0
  1232. pyfect/tx_semaphore.py +136 -0
  1233. pyfect/tx_subscription_ref.py +118 -0
  1234. pyfect/workers/__init__.py +62 -0
  1235. pyfect/workers/_frames.py +82 -0
  1236. pyfect/workers/_mailbox.py +51 -0
  1237. pyfect/workers/_port.py +106 -0
  1238. pyfect/workers/_process.py +155 -0
  1239. pyfect/workers/_thread.py +100 -0
  1240. pyfect/workers/python_worker.py +133 -0
  1241. pyfect/workers/python_worker_runner.py +112 -0
  1242. pyfect/workers/transferable.py +103 -0
  1243. pyfect/workers/worker.py +273 -0
  1244. pyfect/workers/worker_error.py +86 -0
  1245. pyfect/workers/worker_runner.py +85 -0
  1246. pyfect/workflow/__init__.py +78 -0
  1247. pyfect/workflow/_crypto.py +23 -0
  1248. pyfect/workflow/_encoded.py +381 -0
  1249. pyfect/workflow/_memory.py +424 -0
  1250. pyfect/workflow/_result.py +43 -0
  1251. pyfect/workflow/_services.py +241 -0
  1252. pyfect/workflow/_suspension.py +153 -0
  1253. pyfect/workflow/activity.py +427 -0
  1254. pyfect/workflow/durable_clock.py +72 -0
  1255. pyfect/workflow/durable_deferred.py +403 -0
  1256. pyfect/workflow/durable_queue.py +259 -0
  1257. pyfect/workflow/workflow.py +509 -0
  1258. pyfect/workflow/workflow_engine.py +42 -0
  1259. pyfect/workflow/workflow_proxy.py +161 -0
  1260. pyfect/workflow/workflow_proxy_server.py +146 -0
  1261. pyfect_dev-0.1.0.dist-info/METADATA +296 -0
  1262. pyfect_dev-0.1.0.dist-info/RECORD +1265 -0
  1263. pyfect_dev-0.1.0.dist-info/WHEEL +4 -0
  1264. pyfect_dev-0.1.0.dist-info/entry_points.txt +3 -0
  1265. pyfect_dev-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,522 @@
1
+ """Schemas generated by ``scripts/gen_ai_schemas.py``; do not edit.
2
+ Import them from ``pyfect.ai.openrouter.generated``."""
3
+
4
+ # pyright: reportPrivateUsage=false, reportUnusedImport=false
5
+ from __future__ import annotations
6
+
7
+ import typing as _t
8
+
9
+ from pyfect import schema as _S
10
+ from pyfect.ai import _generated_support as _b
11
+ from pyfect.http.body import File as _File
12
+ from pyfect.ai.openrouter.generated import types as _T
13
+ from pyfect.schema._struct import StructSchema as _StructSchema
14
+
15
+ from pyfect.ai.openrouter.generated._schemas_0 import AppRankingsResponse, BadGatewayResponse, BadRequestResponse, BulkAddWorkspaceMembersRequest, BulkAddWorkspaceMembersResponse, BulkAssignKeysRequest, BulkAssignKeysResponse, BulkAssignMembersRequest, BulkAssignMembersResponse, BulkRemoveWorkspaceMembersRequest, BulkRemoveWorkspaceMembersResponse, BulkUnassignKeysRequest, BulkUnassignKeysResponse, BulkUnassignMembersRequest, BulkUnassignMembersResponse, ChatRequest, ConflictResponse, ContentPartInputAudio, ContentPartInputFile, ContentPartInputVideo, CostDetails, CreateGuardrailRequest, CreateGuardrailResponse, CreateObservabilityDestinationRequest, CreateObservabilityDestinationResponse, CreatePresetFromInferenceResponse, CreateWorkspaceRequest, CreateWorkspaceResponse, DeleteGuardrailResponse, DeleteObservabilityDestinationResponse, DeleteWorkspaceBudgetResponse, DeleteWorkspaceResponse, EdgeNetworkTimeoutResponse, FileDeleteResponse, FileListResponse, FileMetadata, ForbiddenResponse, GenerationContentResponse, GenerationResponse, GetGuardrailResponse, GetObservabilityDestinationResponse, GetPresetResponse, GetPresetVersionResponse, GetWorkspaceResponse, GoneResponse, ImageGenerationRequest, ImageGenerationResponse, ImageModelEndpointsResponse, ImageModelsListResponse, ImageStreamingResponse, InternalServerResponse, ListEndpointsResponse, ListGuardrailsResponse, ListKeyAssignmentsResponse, ListMemberAssignmentsResponse, ListObservabilityDestinationsResponse, ListPresetVersionsResponse, ListPresetsResponse, ListWorkspaceBudgetsResponse, ListWorkspaceMembersResponse, ListWorkspacesResponse, MessagesErrorResponse, MessagesRequest, MessagesResult, MessagesStreamingResponse, MetadataLevel, ModelResponse, ModelsCountResponse, ModelsListResponse, NotFoundResponse, OpenResponsesResult, PayloadTooLargeResponse, PaymentRequiredResponse, ProviderOverloadedResponse, ProviderPreferences, PublicEndpoint, RankingsDailyResponse, RequestTimeoutResponse, ResponsesRequest, ResponsesStreamingResponse, ServiceUnavailableResponse, SubmitGenerationFeedbackRequest, SubmitGenerationFeedbackResponse, TaskClassificationResponse, TooManyRequestsResponse, UnauthorizedResponse, UnprocessableEntityResponse, UpdateGuardrailRequest, UpdateGuardrailResponse, UpdateObservabilityDestinationRequest, UpdateObservabilityDestinationResponse, UpdateWorkspaceRequest, UpdateWorkspaceResponse, UpsertWorkspaceBudgetRequest, UpsertWorkspaceBudgetResponse, VideoGenerationRequest, VideoGenerationResponse, VideoModelsListResponse
16
+
17
+ SendChatCompletionRequest404: _S.Bottom[_T.SendChatCompletionRequest404, _t.Any] = NotFoundResponse
18
+ SendChatCompletionRequest408: _S.Bottom[_T.SendChatCompletionRequest408, _t.Any] = RequestTimeoutResponse
19
+ SendChatCompletionRequest413: _S.Bottom[_T.SendChatCompletionRequest413, _t.Any] = PayloadTooLargeResponse
20
+ SendChatCompletionRequest422: _S.Bottom[_T.SendChatCompletionRequest422, _t.Any] = UnprocessableEntityResponse
21
+ SendChatCompletionRequest429: _S.Bottom[_T.SendChatCompletionRequest429, _t.Any] = TooManyRequestsResponse
22
+ SendChatCompletionRequest500: _S.Bottom[_T.SendChatCompletionRequest500, _t.Any] = InternalServerResponse
23
+ SendChatCompletionRequest502: _S.Bottom[_T.SendChatCompletionRequest502, _t.Any] = BadGatewayResponse
24
+ SendChatCompletionRequest503: _S.Bottom[_T.SendChatCompletionRequest503, _t.Any] = ServiceUnavailableResponse
25
+ SendChatCompletionRequest524: _S.Bottom[_T.SendChatCompletionRequest524, _t.Any] = EdgeNetworkTimeoutResponse
26
+ SendChatCompletionRequest529: _S.Bottom[_T.SendChatCompletionRequest529, _t.Any] = ProviderOverloadedResponse
27
+ GetTaskClassificationsParams: _StructSchema[_T.GetTaskClassificationsParams, _t.Never, _t.Never] = _b.struct(_T.GetTaskClassificationsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "window": _b.literal("7d").annotate(description="Trailing time window for the classification data. Currently only `7d` (trailing 7 days) is supported.")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "window",))
28
+ GetTaskClassifications200: _S.Bottom[_T.GetTaskClassifications200, _t.Any] = TaskClassificationResponse
29
+ GetTaskClassifications400: _S.Bottom[_T.GetTaskClassifications400, _t.Any] = BadRequestResponse
30
+ GetTaskClassifications401: _S.Bottom[_T.GetTaskClassifications401, _t.Any] = UnauthorizedResponse
31
+ GetTaskClassifications429: _S.Bottom[_T.GetTaskClassifications429, _t.Any] = TooManyRequestsResponse
32
+ GetTaskClassifications500: _S.Bottom[_T.GetTaskClassifications500, _t.Any] = InternalServerResponse
33
+ GetCreditsParams: _StructSchema[_T.GetCreditsParams, _t.Never, _t.Never] = _b.struct(_T.GetCreditsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
34
+ GetCredits200: _StructSchema[_T.GetCredits200, _t.Never, _t.Never] = _b.struct(_T.GetCredits200, {"data": _b.struct(_T.GetCredits200__data, {"total_credits": _b.check(_S.Number.annotate(description="Total credits purchased", format="double"), _S.is_finite().annotate(expected="a finite number")), "total_usage": _b.check(_S.Number.annotate(description="Total credits used", format="double"), _S.is_finite().annotate(expected="a finite number"))})}).annotate(description="Total credits purchased and used")
35
+ GetCredits401: _S.Bottom[_T.GetCredits401, _t.Any] = UnauthorizedResponse
36
+ GetCredits403: _S.Bottom[_T.GetCredits403, _t.Any] = ForbiddenResponse
37
+ GetCredits500: _S.Bottom[_T.GetCredits500, _t.Any] = InternalServerResponse
38
+ CreateCoinbaseChargeParams: _StructSchema[_T.CreateCoinbaseChargeParams, _t.Never, _t.Never] = _b.struct(_T.CreateCoinbaseChargeParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
39
+ CreateCoinbaseCharge410: _S.Bottom[_T.CreateCoinbaseCharge410, _t.Any] = GoneResponse
40
+ GetAppRankingsParams: _StructSchema[_T.GetAppRankingsParams, _t.Never, _t.Never] = _b.struct(_T.GetAppRankingsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "category": _b.literals(["coding", "creative", "productivity", "entertainment"]).annotate(description="Marketplace category group to filter by (e.g. `coding`). Only apps tagged with a subcategory inside this group are returned. Mutually combinable with `subcategory` — when both are supplied the `subcategory` must belong to the `category` group."), "subcategory": _b.literals(["cli-agent", "ide-extension", "cloud-agent", "programming-app", "native-app-builder", "creative-writing", "video-gen", "image-gen", "audio-gen", "roleplay", "game", "writing-assistant", "general-chat", "personal-agent", "legal"]).annotate(description="Marketplace subcategory to filter by (e.g. `cli-agent`). Takes precedence over `category` for the actual filter; when `category` is also supplied the pair must be consistent."), "sort": _b.literals(["popular", "trending"]).annotate(description="`popular` ranks apps by total token volume inside the date window. `trending` ranks apps by absolute excess token growth: window volume minus the average volume of the three equal-length periods immediately preceding the window. Apps with no excess growth are omitted from `trending` results."), "start_date": _b.check(_S.String.annotate(description="Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in `meta.start_date`."), _b.js_pattern('^[0-9]{4}-[0-9]{2}-[0-9]{2}\\Z', '^\\d{4}-\\d{2}-\\d{2}$').annotate(expected="a string matching the RegExp ^\\d{4}-\\d{2}-\\d{2}$")), "end_date": _b.check(_S.String.annotate(description="End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must be on or after 2025-01-01; earlier values are rejected with a 400."), _b.js_pattern('^[0-9]{4}-[0-9]{2}-[0-9]{2}\\Z', '^\\d{4}-\\d{2}-\\d{2}$').annotate(expected="a string matching the RegExp ^\\d{4}-\\d{2}-\\d{2}$")), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of apps to return (1-100). Defaults to 50."), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100")), "offset": _b.union(_b.check(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100")), _S.Null).annotate(description="Number of ranked apps to skip before the first returned row (0-100). Defaults to 0. `rank` stays absolute, so the first row of `offset=50` is `rank: 51`.")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "category", "subcategory", "sort", "start_date", "end_date", "limit", "offset",))
41
+ GetAppRankings200: _S.Bottom[_T.GetAppRankings200, _t.Any] = AppRankingsResponse
42
+ GetAppRankings400: _S.Bottom[_T.GetAppRankings400, _t.Any] = BadRequestResponse
43
+ GetAppRankings401: _S.Bottom[_T.GetAppRankings401, _t.Any] = UnauthorizedResponse
44
+ GetAppRankings429: _S.Bottom[_T.GetAppRankings429, _t.Any] = TooManyRequestsResponse
45
+ GetAppRankings500: _S.Bottom[_T.GetAppRankings500, _t.Any] = InternalServerResponse
46
+ GetRankingsDailyParams: _StructSchema[_T.GetRankingsDailyParams, _t.Never, _t.Never] = _b.struct(_T.GetRankingsDailyParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "start_date": _b.check(_S.String.annotate(description="Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in `meta.start_date`."), _b.js_pattern('^[0-9]{4}-[0-9]{2}-[0-9]{2}\\Z', '^\\d{4}-\\d{2}-\\d{2}$').annotate(expected="a string matching the RegExp ^\\d{4}-\\d{2}-\\d{2}$")), "end_date": _b.check(_S.String.annotate(description="End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must be on or after 2025-01-01; earlier values are rejected with a 400."), _b.js_pattern('^[0-9]{4}-[0-9]{2}-[0-9]{2}\\Z', '^\\d{4}-\\d{2}-\\d{2}$').annotate(expected="a string matching the RegExp ^\\d{4}-\\d{2}-\\d{2}$")), "period": _b.literals(["day", "week", "month"]).annotate(description="Time grain of each row. `day` (default) returns the per-UTC-day series; `week` buckets by ISO week start; `month` buckets by month start. With `category` or `language_type` only `week` (default) and `month` are available — `day` is rejected with a 400 because those datasets are aggregated weekly. For those sampled datasets `period=month` buckets each week by its week-start month, so totals are approximate at month boundaries."), "modality": _b.literals(["text", "image", "image_output", "audio", "tool_calling"]).annotate(description="Restrict to models for a modality surface: `text` / `image_output` match output modality, `image` / `audio` match input modality, and `tool_calling` keeps only rows that recorded at least one tool call. Exact dataset — cannot be combined with `category` or `language_type`."), "context_bucket": _b.literals(["1K", "10K", "100K", "1M", "10M"]).annotate(description="Restrict to requests whose context length falls in this bucket (`1K`, `10K`, `100K`, `1M`, or `10M`). Exact dataset — cannot be combined with `category` or `language_type`."), "category": _b.literals(["programming", "roleplay", "marketing", "marketing/seo", "technology", "science", "translation", "legal", "finance", "health", "trivia", "academia"]).annotate(description="Restrict to a use-case category (e.g. `programming`, `roleplay`). Sourced from a sampled, upsampled dataset, so `total_tokens` is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic past `end_date`). Cannot be combined with `modality`, `context_bucket`, or `language_type`."), "language_type": _b.literals(["natural", "programming"]).annotate(description="Restrict to natural-language or programming-language tagged activity. Sourced from a sampled, upsampled dataset, so `total_tokens` is an estimate and is aggregated weekly (the trailing weekly bucket may include traffic past `end_date`). Cannot be combined with `modality`, `context_bucket`, or `category`.")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "start_date", "end_date", "period", "modality", "context_bucket", "category", "language_type",))
47
+ GetRankingsDaily200: _S.Bottom[_T.GetRankingsDaily200, _t.Any] = RankingsDailyResponse
48
+ GetRankingsDaily400: _S.Bottom[_T.GetRankingsDaily400, _t.Any] = BadRequestResponse
49
+ GetRankingsDaily401: _S.Bottom[_T.GetRankingsDaily401, _t.Any] = UnauthorizedResponse
50
+ GetRankingsDaily429: _S.Bottom[_T.GetRankingsDaily429, _t.Any] = TooManyRequestsResponse
51
+ GetRankingsDaily500: _S.Bottom[_T.GetRankingsDaily500, _t.Any] = InternalServerResponse
52
+ CreateEmbeddingsParams: _StructSchema[_T.CreateEmbeddingsParams, _t.Never, _t.Never] = _b.struct(_T.CreateEmbeddingsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
53
+ CreateEmbeddingsRequestJson: _StructSchema[_T.CreateEmbeddingsRequestJson, _t.Never, _t.Never] = _b.struct(_T.CreateEmbeddingsRequestJson, {"dimensions": _b.check(_b.check(_S.Number.annotate(description="The number of dimensions for the output embeddings"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), "encoding_format": _b.literals(["float", "base64"]).annotate(description="The format of the output embeddings"), "input": _b.union(_S.String, _b.array(_S.String), _b.array(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number"))), _b.array(_b.array(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")))), _b.array(_b.struct(_T.CreateEmbeddingsRequestJson__input__4__item, {"content": _b.array(_b.union(_b.struct(_T.CreateEmbeddingsRequestJson__input__4__item__content__item__0, {"text": _S.String, "type": _b.literal("text")}), _b.struct(_T.CreateEmbeddingsRequestJson__input__4__item__content__item__1, {"image_url": _b.struct(_T.CreateEmbeddingsRequestJson__input__4__item__content__item__1__image_url, {"url": _S.String}), "type": _b.literal("image_url")}), ContentPartInputAudio, ContentPartInputVideo, ContentPartInputFile, mode="one_of"))}))).annotate(description="Text, token, or multimodal input(s) to embed"), "input_type": _S.String.annotate(description="The type of input (e.g. search_query, search_document)"), "model": _S.String.annotate(description="The model to use for embeddings"), "provider": _b.suspend(lambda: ProviderPreferences).annotate(description="Provider routing preferences for the request."), "user": _S.String.annotate(description="A unique identifier for the end-user")}, optional=("dimensions", "encoding_format", "input_type", "provider", "user",)).annotate(description="Embeddings request input")
54
+ CreateEmbeddings200: _StructSchema[_T.CreateEmbeddings200, _t.Never, _t.Never] = _b.struct(_T.CreateEmbeddings200, {"data": _b.array(_b.struct(_T.CreateEmbeddings200__data__item, {"embedding": _b.union(_b.array(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number"))), _S.String).annotate(description="Embedding vector as an array of floats or a base64 string"), "index": _b.check(_S.Number.annotate(description="Index of the embedding in the input list"), _S.is_int().annotate(expected="an integer")), "object": _b.literal("embedding")}, optional=("index",)).annotate(description="A single embedding object")).annotate(description="List of embedding objects"), "id": _S.String.annotate(description="Unique identifier for the embeddings response"), "model": _S.String.annotate(description="The model used for embeddings"), "object": _b.literal("list"), "usage": _b.struct(_T.CreateEmbeddings200__usage, {"cost": _b.check(_S.Number.annotate(description="Cost of the request in credits", format="double"), _S.is_finite().annotate(expected="a finite number")), "cost_details": CostDetails, "is_byok": _S.Boolean.annotate(description="Whether a request was made using a Bring Your Own Key configuration"), "prompt_tokens": _b.check(_S.Number.annotate(description="Number of tokens in the input"), _S.is_int().annotate(expected="an integer")), "prompt_tokens_details": _b.struct(_T.CreateEmbeddings200__usage__prompt_tokens_details, {"audio_tokens": _b.check(_S.Number.annotate(description="Number of audio tokens in the input"), _S.is_int().annotate(expected="an integer")), "file_tokens": _b.check(_S.Number.annotate(description="Number of file/document tokens in the input"), _S.is_int().annotate(expected="an integer")), "image_tokens": _b.check(_S.Number.annotate(description="Number of image tokens in the input"), _S.is_int().annotate(expected="an integer")), "text_tokens": _b.check(_S.Number.annotate(description="Number of text tokens in the input"), _S.is_int().annotate(expected="an integer")), "video_tokens": _b.check(_S.Number.annotate(description="Number of video tokens in the input"), _S.is_int().annotate(expected="an integer"))}, optional=("audio_tokens", "file_tokens", "image_tokens", "text_tokens", "video_tokens",)).annotate(description="Per-modality token breakdown. Only present when the input contains 2+ modalities (e.g. text + image) and the upstream provider returns modality-level usage data. Only non-zero modality counts are included."), "total_tokens": _b.check(_S.Number.annotate(description="Total number of tokens used"), _S.is_int().annotate(expected="an integer"))}, optional=("cost", "cost_details", "is_byok", "prompt_tokens_details",)).annotate(description="Token usage statistics")}, optional=("id", "usage",)).annotate(description="Embeddings response containing embedding vectors")
55
+ CreateEmbeddings200Sse: _S.Bottom[_T.CreateEmbeddings200Sse, _t.Any] = _S.String.annotate(description="Not used for embeddings - embeddings do not support streaming")
56
+ CreateEmbeddings400: _S.Bottom[_T.CreateEmbeddings400, _t.Any] = BadRequestResponse
57
+ CreateEmbeddings401: _S.Bottom[_T.CreateEmbeddings401, _t.Any] = UnauthorizedResponse
58
+ CreateEmbeddings402: _S.Bottom[_T.CreateEmbeddings402, _t.Any] = PaymentRequiredResponse
59
+ CreateEmbeddings404: _S.Bottom[_T.CreateEmbeddings404, _t.Any] = NotFoundResponse
60
+ CreateEmbeddings429: _S.Bottom[_T.CreateEmbeddings429, _t.Any] = TooManyRequestsResponse
61
+ CreateEmbeddings500: _S.Bottom[_T.CreateEmbeddings500, _t.Any] = InternalServerResponse
62
+ CreateEmbeddings502: _S.Bottom[_T.CreateEmbeddings502, _t.Any] = BadGatewayResponse
63
+ CreateEmbeddings503: _S.Bottom[_T.CreateEmbeddings503, _t.Any] = ServiceUnavailableResponse
64
+ CreateEmbeddings524: _S.Bottom[_T.CreateEmbeddings524, _t.Any] = EdgeNetworkTimeoutResponse
65
+ CreateEmbeddings529: _S.Bottom[_T.CreateEmbeddings529, _t.Any] = ProviderOverloadedResponse
66
+ ListEmbeddingsModelsParams: _StructSchema[_T.ListEmbeddingsModelsParams, _t.Never, _t.Never] = _b.struct(_T.ListEmbeddingsModelsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(1000).annotate(expected="a value less than or equal to 1000"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
67
+ ListEmbeddingsModels200: _S.Bottom[_T.ListEmbeddingsModels200, _t.Any] = ModelsListResponse
68
+ ListEmbeddingsModels400: _S.Bottom[_T.ListEmbeddingsModels400, _t.Any] = BadRequestResponse
69
+ ListEmbeddingsModels500: _S.Bottom[_T.ListEmbeddingsModels500, _t.Any] = InternalServerResponse
70
+ ListEndpointsZdrParams: _StructSchema[_T.ListEndpointsZdrParams, _t.Never, _t.Never] = _b.struct(_T.ListEndpointsZdrParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
71
+ ListEndpointsZdr200: _StructSchema[_T.ListEndpointsZdr200, _t.Never, _t.Never] = _b.struct(_T.ListEndpointsZdr200, {"data": _b.array(PublicEndpoint)})
72
+ ListEndpointsZdr403: _S.Bottom[_T.ListEndpointsZdr403, _t.Any] = ForbiddenResponse
73
+ ListEndpointsZdr500: _S.Bottom[_T.ListEndpointsZdr500, _t.Any] = InternalServerResponse
74
+ ListFilesParams: _StructSchema[_T.ListFilesParams, _t.Never, _t.Never] = _b.struct(_T.ListFilesParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of files to return (1–1000)."), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(1000).annotate(expected="a value less than or equal to 1000")), "cursor": _S.String.annotate(description="Opaque pagination cursor from a previous response."), "workspace_id": _S.String.annotate(description="Workspace to scope the request to. Defaults to the caller’s default workspace.", format="uuid")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "limit", "cursor", "workspace_id",))
75
+ ListFiles200: _S.Bottom[_T.ListFiles200, _t.Any] = FileListResponse
76
+ ListFiles400: _S.Bottom[_T.ListFiles400, _t.Any] = BadRequestResponse
77
+ ListFiles401: _S.Bottom[_T.ListFiles401, _t.Any] = UnauthorizedResponse
78
+ ListFiles429: _S.Bottom[_T.ListFiles429, _t.Any] = TooManyRequestsResponse
79
+ ListFiles500: _S.Bottom[_T.ListFiles500, _t.Any] = InternalServerResponse
80
+ UploadFileParams: _StructSchema[_T.UploadFileParams, _t.Never, _t.Never] = _b.struct(_T.UploadFileParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "workspace_id": _S.String.annotate(description="Workspace to scope the request to. Defaults to the caller’s default workspace.", format="uuid")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "workspace_id",))
81
+ UploadFileRequestFormData: _StructSchema[_T.UploadFileRequestFormData, _t.Never, _t.Never] = _b.struct(_T.UploadFileRequestFormData, {"file": _S.String.annotate(format="binary")})
82
+ UploadFile200: _S.Bottom[_T.UploadFile200, _t.Any] = FileMetadata
83
+ UploadFile400: _S.Bottom[_T.UploadFile400, _t.Any] = BadRequestResponse
84
+ UploadFile401: _S.Bottom[_T.UploadFile401, _t.Any] = UnauthorizedResponse
85
+ UploadFile403: _S.Bottom[_T.UploadFile403, _t.Any] = ForbiddenResponse
86
+ UploadFile413: _S.Bottom[_T.UploadFile413, _t.Any] = PayloadTooLargeResponse
87
+ UploadFile429: _S.Bottom[_T.UploadFile429, _t.Any] = TooManyRequestsResponse
88
+ UploadFile500: _S.Bottom[_T.UploadFile500, _t.Any] = InternalServerResponse
89
+ GetFileMetadataParams: _StructSchema[_T.GetFileMetadataParams, _t.Never, _t.Never] = _b.struct(_T.GetFileMetadataParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "workspace_id": _S.String.annotate(description="Workspace to scope the request to. Defaults to the caller’s default workspace.", format="uuid")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "workspace_id",))
90
+ GetFileMetadata200: _S.Bottom[_T.GetFileMetadata200, _t.Any] = FileMetadata
91
+ GetFileMetadata401: _S.Bottom[_T.GetFileMetadata401, _t.Any] = UnauthorizedResponse
92
+ GetFileMetadata404: _S.Bottom[_T.GetFileMetadata404, _t.Any] = NotFoundResponse
93
+ GetFileMetadata429: _S.Bottom[_T.GetFileMetadata429, _t.Any] = TooManyRequestsResponse
94
+ GetFileMetadata500: _S.Bottom[_T.GetFileMetadata500, _t.Any] = InternalServerResponse
95
+ DeleteFileParams: _StructSchema[_T.DeleteFileParams, _t.Never, _t.Never] = _b.struct(_T.DeleteFileParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "workspace_id": _S.String.annotate(description="Workspace to scope the request to. Defaults to the caller’s default workspace.", format="uuid")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "workspace_id",))
96
+ DeleteFile200: _S.Bottom[_T.DeleteFile200, _t.Any] = FileDeleteResponse
97
+ DeleteFile401: _S.Bottom[_T.DeleteFile401, _t.Any] = UnauthorizedResponse
98
+ DeleteFile404: _S.Bottom[_T.DeleteFile404, _t.Any] = NotFoundResponse
99
+ DeleteFile429: _S.Bottom[_T.DeleteFile429, _t.Any] = TooManyRequestsResponse
100
+ DeleteFile500: _S.Bottom[_T.DeleteFile500, _t.Any] = InternalServerResponse
101
+ DownloadFileContentParams: _StructSchema[_T.DownloadFileContentParams, _t.Never, _t.Never] = _b.struct(_T.DownloadFileContentParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "workspace_id": _S.String.annotate(description="Workspace to scope the request to. Defaults to the caller’s default workspace.", format="uuid")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "workspace_id",))
102
+ DownloadFileContent400: _S.Bottom[_T.DownloadFileContent400, _t.Any] = BadRequestResponse
103
+ DownloadFileContent401: _S.Bottom[_T.DownloadFileContent401, _t.Any] = UnauthorizedResponse
104
+ DownloadFileContent404: _S.Bottom[_T.DownloadFileContent404, _t.Any] = NotFoundResponse
105
+ DownloadFileContent429: _S.Bottom[_T.DownloadFileContent429, _t.Any] = TooManyRequestsResponse
106
+ DownloadFileContent500: _S.Bottom[_T.DownloadFileContent500, _t.Any] = InternalServerResponse
107
+ GetGenerationParams: _StructSchema[_T.GetGenerationParams, _t.Never, _t.Never] = _b.struct(_T.GetGenerationParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "id": _b.check(_S.String.annotate(description="The generation ID"), _S.is_min_length(1).annotate(expected="a value with a length of at least 1"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
108
+ GetGeneration200: _S.Bottom[_T.GetGeneration200, _t.Any] = GenerationResponse
109
+ GetGeneration401: _S.Bottom[_T.GetGeneration401, _t.Any] = UnauthorizedResponse
110
+ GetGeneration402: _S.Bottom[_T.GetGeneration402, _t.Any] = PaymentRequiredResponse
111
+ GetGeneration404: _S.Bottom[_T.GetGeneration404, _t.Any] = NotFoundResponse
112
+ GetGeneration429: _S.Bottom[_T.GetGeneration429, _t.Any] = TooManyRequestsResponse
113
+ GetGeneration500: _S.Bottom[_T.GetGeneration500, _t.Any] = InternalServerResponse
114
+ GetGeneration502: _S.Bottom[_T.GetGeneration502, _t.Any] = BadGatewayResponse
115
+ GetGeneration524: _S.Bottom[_T.GetGeneration524, _t.Any] = EdgeNetworkTimeoutResponse
116
+ GetGeneration529: _S.Bottom[_T.GetGeneration529, _t.Any] = ProviderOverloadedResponse
117
+ ListGenerationContentParams: _StructSchema[_T.ListGenerationContentParams, _t.Never, _t.Never] = _b.struct(_T.ListGenerationContentParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "id": _b.check(_S.String.annotate(description="The generation ID"), _S.is_min_length(1).annotate(expected="a value with a length of at least 1"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
118
+ ListGenerationContent200: _S.Bottom[_T.ListGenerationContent200, _t.Any] = GenerationContentResponse
119
+ ListGenerationContent401: _S.Bottom[_T.ListGenerationContent401, _t.Any] = UnauthorizedResponse
120
+ ListGenerationContent403: _S.Bottom[_T.ListGenerationContent403, _t.Any] = ForbiddenResponse
121
+ ListGenerationContent404: _S.Bottom[_T.ListGenerationContent404, _t.Any] = NotFoundResponse
122
+ ListGenerationContent429: _S.Bottom[_T.ListGenerationContent429, _t.Any] = TooManyRequestsResponse
123
+ ListGenerationContent500: _S.Bottom[_T.ListGenerationContent500, _t.Any] = InternalServerResponse
124
+ ListGenerationContent502: _S.Bottom[_T.ListGenerationContent502, _t.Any] = BadGatewayResponse
125
+ ListGenerationContent524: _S.Bottom[_T.ListGenerationContent524, _t.Any] = EdgeNetworkTimeoutResponse
126
+ ListGenerationContent529: _S.Bottom[_T.ListGenerationContent529, _t.Any] = ProviderOverloadedResponse
127
+ SubmitGenerationFeedbackParams: _StructSchema[_T.SubmitGenerationFeedbackParams, _t.Never, _t.Never] = _b.struct(_T.SubmitGenerationFeedbackParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
128
+ SubmitGenerationFeedbackRequestJson: _S.Bottom[_T.SubmitGenerationFeedbackRequestJson, _t.Any] = SubmitGenerationFeedbackRequest
129
+ SubmitGenerationFeedback200: _S.Bottom[_T.SubmitGenerationFeedback200, _t.Any] = SubmitGenerationFeedbackResponse
130
+ SubmitGenerationFeedback400: _S.Bottom[_T.SubmitGenerationFeedback400, _t.Any] = BadRequestResponse
131
+ SubmitGenerationFeedback401: _S.Bottom[_T.SubmitGenerationFeedback401, _t.Any] = UnauthorizedResponse
132
+ SubmitGenerationFeedback404: _S.Bottom[_T.SubmitGenerationFeedback404, _t.Any] = NotFoundResponse
133
+ SubmitGenerationFeedback429: _S.Bottom[_T.SubmitGenerationFeedback429, _t.Any] = TooManyRequestsResponse
134
+ SubmitGenerationFeedback500: _S.Bottom[_T.SubmitGenerationFeedback500, _t.Any] = InternalServerResponse
135
+ ListGuardrailsParams: _StructSchema[_T.ListGuardrailsParams, _t.Never, _t.Never] = _b.struct(_T.ListGuardrailsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100")), "workspace_id": _S.String.annotate(description="Filter guardrails by workspace ID. By default, guardrails in the default workspace are returned.", format="uuid")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit", "workspace_id",))
136
+ ListGuardrails200: _S.Bottom[_T.ListGuardrails200, _t.Any] = ListGuardrailsResponse
137
+ ListGuardrails400: _S.Bottom[_T.ListGuardrails400, _t.Any] = BadRequestResponse
138
+ ListGuardrails401: _S.Bottom[_T.ListGuardrails401, _t.Any] = UnauthorizedResponse
139
+ ListGuardrails500: _S.Bottom[_T.ListGuardrails500, _t.Any] = InternalServerResponse
140
+ CreateGuardrailParams: _StructSchema[_T.CreateGuardrailParams, _t.Never, _t.Never] = _b.struct(_T.CreateGuardrailParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
141
+ CreateGuardrailRequestJson: _S.Bottom[_T.CreateGuardrailRequestJson, _t.Any] = CreateGuardrailRequest
142
+ CreateGuardrail201: _S.Bottom[_T.CreateGuardrail201, _t.Any] = CreateGuardrailResponse
143
+ CreateGuardrail400: _S.Bottom[_T.CreateGuardrail400, _t.Any] = BadRequestResponse
144
+ CreateGuardrail401: _S.Bottom[_T.CreateGuardrail401, _t.Any] = UnauthorizedResponse
145
+ CreateGuardrail403: _S.Bottom[_T.CreateGuardrail403, _t.Any] = ForbiddenResponse
146
+ CreateGuardrail500: _S.Bottom[_T.CreateGuardrail500, _t.Any] = InternalServerResponse
147
+ GetGuardrailParams: _StructSchema[_T.GetGuardrailParams, _t.Never, _t.Never] = _b.struct(_T.GetGuardrailParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
148
+ GetGuardrail200: _S.Bottom[_T.GetGuardrail200, _t.Any] = GetGuardrailResponse
149
+ GetGuardrail401: _S.Bottom[_T.GetGuardrail401, _t.Any] = UnauthorizedResponse
150
+ GetGuardrail404: _S.Bottom[_T.GetGuardrail404, _t.Any] = NotFoundResponse
151
+ GetGuardrail500: _S.Bottom[_T.GetGuardrail500, _t.Any] = InternalServerResponse
152
+ DeleteGuardrailParams: _StructSchema[_T.DeleteGuardrailParams, _t.Never, _t.Never] = _b.struct(_T.DeleteGuardrailParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
153
+ DeleteGuardrail200: _S.Bottom[_T.DeleteGuardrail200, _t.Any] = DeleteGuardrailResponse
154
+ DeleteGuardrail401: _S.Bottom[_T.DeleteGuardrail401, _t.Any] = UnauthorizedResponse
155
+ DeleteGuardrail404: _S.Bottom[_T.DeleteGuardrail404, _t.Any] = NotFoundResponse
156
+ DeleteGuardrail500: _S.Bottom[_T.DeleteGuardrail500, _t.Any] = InternalServerResponse
157
+ UpdateGuardrailParams: _StructSchema[_T.UpdateGuardrailParams, _t.Never, _t.Never] = _b.struct(_T.UpdateGuardrailParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
158
+ UpdateGuardrailRequestJson: _S.Bottom[_T.UpdateGuardrailRequestJson, _t.Any] = UpdateGuardrailRequest
159
+ UpdateGuardrail200: _S.Bottom[_T.UpdateGuardrail200, _t.Any] = UpdateGuardrailResponse
160
+ UpdateGuardrail400: _S.Bottom[_T.UpdateGuardrail400, _t.Any] = BadRequestResponse
161
+ UpdateGuardrail401: _S.Bottom[_T.UpdateGuardrail401, _t.Any] = UnauthorizedResponse
162
+ UpdateGuardrail404: _S.Bottom[_T.UpdateGuardrail404, _t.Any] = NotFoundResponse
163
+ UpdateGuardrail500: _S.Bottom[_T.UpdateGuardrail500, _t.Any] = InternalServerResponse
164
+ ListGuardrailKeyAssignmentsParams: _StructSchema[_T.ListGuardrailKeyAssignmentsParams, _t.Never, _t.Never] = _b.struct(_T.ListGuardrailKeyAssignmentsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
165
+ ListGuardrailKeyAssignments200: _S.Bottom[_T.ListGuardrailKeyAssignments200, _t.Any] = ListKeyAssignmentsResponse
166
+ ListGuardrailKeyAssignments401: _S.Bottom[_T.ListGuardrailKeyAssignments401, _t.Any] = UnauthorizedResponse
167
+ ListGuardrailKeyAssignments404: _S.Bottom[_T.ListGuardrailKeyAssignments404, _t.Any] = NotFoundResponse
168
+ ListGuardrailKeyAssignments500: _S.Bottom[_T.ListGuardrailKeyAssignments500, _t.Any] = InternalServerResponse
169
+ BulkAssignKeysToGuardrailParams: _StructSchema[_T.BulkAssignKeysToGuardrailParams, _t.Never, _t.Never] = _b.struct(_T.BulkAssignKeysToGuardrailParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
170
+ BulkAssignKeysToGuardrailRequestJson: _S.Bottom[_T.BulkAssignKeysToGuardrailRequestJson, _t.Any] = BulkAssignKeysRequest
171
+ BulkAssignKeysToGuardrail200: _S.Bottom[_T.BulkAssignKeysToGuardrail200, _t.Any] = BulkAssignKeysResponse
172
+ BulkAssignKeysToGuardrail400: _S.Bottom[_T.BulkAssignKeysToGuardrail400, _t.Any] = BadRequestResponse
173
+ BulkAssignKeysToGuardrail401: _S.Bottom[_T.BulkAssignKeysToGuardrail401, _t.Any] = UnauthorizedResponse
174
+ BulkAssignKeysToGuardrail404: _S.Bottom[_T.BulkAssignKeysToGuardrail404, _t.Any] = NotFoundResponse
175
+ BulkAssignKeysToGuardrail500: _S.Bottom[_T.BulkAssignKeysToGuardrail500, _t.Any] = InternalServerResponse
176
+ BulkUnassignKeysFromGuardrailParams: _StructSchema[_T.BulkUnassignKeysFromGuardrailParams, _t.Never, _t.Never] = _b.struct(_T.BulkUnassignKeysFromGuardrailParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
177
+ BulkUnassignKeysFromGuardrailRequestJson: _S.Bottom[_T.BulkUnassignKeysFromGuardrailRequestJson, _t.Any] = BulkUnassignKeysRequest
178
+ BulkUnassignKeysFromGuardrail200: _S.Bottom[_T.BulkUnassignKeysFromGuardrail200, _t.Any] = BulkUnassignKeysResponse
179
+ BulkUnassignKeysFromGuardrail400: _S.Bottom[_T.BulkUnassignKeysFromGuardrail400, _t.Any] = BadRequestResponse
180
+ BulkUnassignKeysFromGuardrail401: _S.Bottom[_T.BulkUnassignKeysFromGuardrail401, _t.Any] = UnauthorizedResponse
181
+ BulkUnassignKeysFromGuardrail404: _S.Bottom[_T.BulkUnassignKeysFromGuardrail404, _t.Any] = NotFoundResponse
182
+ BulkUnassignKeysFromGuardrail500: _S.Bottom[_T.BulkUnassignKeysFromGuardrail500, _t.Any] = InternalServerResponse
183
+ ListGuardrailMemberAssignmentsParams: _StructSchema[_T.ListGuardrailMemberAssignmentsParams, _t.Never, _t.Never] = _b.struct(_T.ListGuardrailMemberAssignmentsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
184
+ ListGuardrailMemberAssignments200: _S.Bottom[_T.ListGuardrailMemberAssignments200, _t.Any] = ListMemberAssignmentsResponse
185
+ ListGuardrailMemberAssignments401: _S.Bottom[_T.ListGuardrailMemberAssignments401, _t.Any] = UnauthorizedResponse
186
+ ListGuardrailMemberAssignments404: _S.Bottom[_T.ListGuardrailMemberAssignments404, _t.Any] = NotFoundResponse
187
+ ListGuardrailMemberAssignments500: _S.Bottom[_T.ListGuardrailMemberAssignments500, _t.Any] = InternalServerResponse
188
+ BulkAssignMembersToGuardrailParams: _StructSchema[_T.BulkAssignMembersToGuardrailParams, _t.Never, _t.Never] = _b.struct(_T.BulkAssignMembersToGuardrailParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
189
+ BulkAssignMembersToGuardrailRequestJson: _S.Bottom[_T.BulkAssignMembersToGuardrailRequestJson, _t.Any] = BulkAssignMembersRequest
190
+ BulkAssignMembersToGuardrail200: _S.Bottom[_T.BulkAssignMembersToGuardrail200, _t.Any] = BulkAssignMembersResponse
191
+ BulkAssignMembersToGuardrail400: _S.Bottom[_T.BulkAssignMembersToGuardrail400, _t.Any] = BadRequestResponse
192
+ BulkAssignMembersToGuardrail401: _S.Bottom[_T.BulkAssignMembersToGuardrail401, _t.Any] = UnauthorizedResponse
193
+ BulkAssignMembersToGuardrail404: _S.Bottom[_T.BulkAssignMembersToGuardrail404, _t.Any] = NotFoundResponse
194
+ BulkAssignMembersToGuardrail500: _S.Bottom[_T.BulkAssignMembersToGuardrail500, _t.Any] = InternalServerResponse
195
+ BulkUnassignMembersFromGuardrailParams: _StructSchema[_T.BulkUnassignMembersFromGuardrailParams, _t.Never, _t.Never] = _b.struct(_T.BulkUnassignMembersFromGuardrailParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
196
+ BulkUnassignMembersFromGuardrailRequestJson: _S.Bottom[_T.BulkUnassignMembersFromGuardrailRequestJson, _t.Any] = BulkUnassignMembersRequest
197
+ BulkUnassignMembersFromGuardrail200: _S.Bottom[_T.BulkUnassignMembersFromGuardrail200, _t.Any] = BulkUnassignMembersResponse
198
+ BulkUnassignMembersFromGuardrail400: _S.Bottom[_T.BulkUnassignMembersFromGuardrail400, _t.Any] = BadRequestResponse
199
+ BulkUnassignMembersFromGuardrail401: _S.Bottom[_T.BulkUnassignMembersFromGuardrail401, _t.Any] = UnauthorizedResponse
200
+ BulkUnassignMembersFromGuardrail404: _S.Bottom[_T.BulkUnassignMembersFromGuardrail404, _t.Any] = NotFoundResponse
201
+ BulkUnassignMembersFromGuardrail500: _S.Bottom[_T.BulkUnassignMembersFromGuardrail500, _t.Any] = InternalServerResponse
202
+ ListKeyAssignmentsParams: _StructSchema[_T.ListKeyAssignmentsParams, _t.Never, _t.Never] = _b.struct(_T.ListKeyAssignmentsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
203
+ ListKeyAssignments200: _S.Bottom[_T.ListKeyAssignments200, _t.Any] = ListKeyAssignmentsResponse
204
+ ListKeyAssignments401: _S.Bottom[_T.ListKeyAssignments401, _t.Any] = UnauthorizedResponse
205
+ ListKeyAssignments500: _S.Bottom[_T.ListKeyAssignments500, _t.Any] = InternalServerResponse
206
+ ListMemberAssignmentsParams: _StructSchema[_T.ListMemberAssignmentsParams, _t.Never, _t.Never] = _b.struct(_T.ListMemberAssignmentsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
207
+ ListMemberAssignments200: _S.Bottom[_T.ListMemberAssignments200, _t.Any] = ListMemberAssignmentsResponse
208
+ ListMemberAssignments401: _S.Bottom[_T.ListMemberAssignments401, _t.Any] = UnauthorizedResponse
209
+ ListMemberAssignments500: _S.Bottom[_T.ListMemberAssignments500, _t.Any] = InternalServerResponse
210
+ CreateImagesParams: _StructSchema[_T.CreateImagesParams, _t.Never, _t.Never] = _b.struct(_T.CreateImagesParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
211
+ CreateImagesRequestJson: _S.Bottom[_T.CreateImagesRequestJson, _t.Any] = ImageGenerationRequest
212
+ CreateImages200: _S.Bottom[_T.CreateImages200, _t.Any] = ImageGenerationResponse
213
+ CreateImages200Sse: _S.Bottom[_T.CreateImages200Sse, _t.Any] = ImageStreamingResponse
214
+ CreateImages400: _S.Bottom[_T.CreateImages400, _t.Any] = BadRequestResponse
215
+ CreateImages401: _S.Bottom[_T.CreateImages401, _t.Any] = UnauthorizedResponse
216
+ CreateImages402: _S.Bottom[_T.CreateImages402, _t.Any] = PaymentRequiredResponse
217
+ CreateImages403: _S.Bottom[_T.CreateImages403, _t.Any] = ForbiddenResponse
218
+ CreateImages404: _S.Bottom[_T.CreateImages404, _t.Any] = NotFoundResponse
219
+ CreateImages413: _S.Bottom[_T.CreateImages413, _t.Any] = PayloadTooLargeResponse
220
+ CreateImages429: _S.Bottom[_T.CreateImages429, _t.Any] = TooManyRequestsResponse
221
+ CreateImages500: _S.Bottom[_T.CreateImages500, _t.Any] = InternalServerResponse
222
+ CreateImages502: _S.Bottom[_T.CreateImages502, _t.Any] = BadGatewayResponse
223
+ CreateImages524: _S.Bottom[_T.CreateImages524, _t.Any] = EdgeNetworkTimeoutResponse
224
+ CreateImages529: _S.Bottom[_T.CreateImages529, _t.Any] = ProviderOverloadedResponse
225
+ ListImageModelsParams: _StructSchema[_T.ListImageModelsParams, _t.Never, _t.Never] = _b.struct(_T.ListImageModelsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
226
+ ListImageModels200: _S.Bottom[_T.ListImageModels200, _t.Any] = ImageModelsListResponse
227
+ ListImageModels500: _S.Bottom[_T.ListImageModels500, _t.Any] = InternalServerResponse
228
+ ListImageModelEndpointsParams: _StructSchema[_T.ListImageModelEndpointsParams, _t.Never, _t.Never] = _b.struct(_T.ListImageModelEndpointsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
229
+ ListImageModelEndpoints200: _S.Bottom[_T.ListImageModelEndpoints200, _t.Any] = ImageModelEndpointsResponse
230
+ ListImageModelEndpoints404: _S.Bottom[_T.ListImageModelEndpoints404, _t.Any] = NotFoundResponse
231
+ ListImageModelEndpoints500: _S.Bottom[_T.ListImageModelEndpoints500, _t.Any] = InternalServerResponse
232
+ GetCurrentKeyParams: _StructSchema[_T.GetCurrentKeyParams, _t.Never, _t.Never] = _b.struct(_T.GetCurrentKeyParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
233
+ GetCurrentKey200: _StructSchema[_T.GetCurrentKey200, _t.Never, _t.Never] = _b.struct(_T.GetCurrentKey200, {"data": _b.struct(_T.GetCurrentKey200__data, {"byok_usage": _b.check(_S.Number.annotate(description="Total external BYOK usage (in USD) for the API key", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_daily": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for the current UTC day", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_monthly": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for current UTC month", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_weekly": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for the current UTC week (Monday-Sunday)", format="double"), _S.is_finite().annotate(expected="a finite number")), "creator_user_id": _b.union(_S.String, _S.Null).annotate(description="The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID."), "expires_at": _b.union(_S.String, _S.Null).annotate(description="ISO 8601 UTC timestamp when the API key expires, or null if no expiration", format="date-time"), "include_byok_in_limit": _S.Boolean.annotate(description="Whether to include external BYOK usage in the credit limit"), "is_free_tier": _S.Boolean.annotate(description="Whether this is a free tier API key"), "is_management_key": _S.Boolean.annotate(description="Whether this is a management key"), "is_provisioning_key": _S.Boolean.annotate(description="Whether this is a management key"), "label": _S.String.annotate(description="Human-readable label for the API key"), "limit": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Spending limit for the API key in USD", format="double"), "limit_remaining": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Remaining spending limit in USD", format="double"), "limit_reset": _b.union(_S.String, _S.Null).annotate(description="Type of limit reset for the API key"), "rate_limit": _b.struct(_T.GetCurrentKey200__data__rate_limit, {"interval": _S.String.annotate(description="Rate limit interval"), "note": _S.String.annotate(description="Note about the rate limit"), "requests": _b.check(_S.Number.annotate(description="Number of requests allowed per interval"), _S.is_int().annotate(expected="an integer"))}).annotate(description="Legacy rate limit information about a key. Will always return -1."), "usage": _b.check(_S.Number.annotate(description="Total OpenRouter credit usage (in USD) for the API key", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_daily": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC day", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_monthly": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC month", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_weekly": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)", format="double"), _S.is_finite().annotate(expected="a finite number"))}, optional=("expires_at",)).annotate(description="Current API key information")})
234
+ GetCurrentKey401: _S.Bottom[_T.GetCurrentKey401, _t.Any] = UnauthorizedResponse
235
+ GetCurrentKey500: _S.Bottom[_T.GetCurrentKey500, _t.Any] = InternalServerResponse
236
+ ListParams: _StructSchema[_T.ListParams, _t.Never, _t.Never] = _b.struct(_T.ListParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "include_disabled": _S.Boolean.annotate(description="Whether to include disabled API keys in the response"), "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of API keys to skip for pagination"), "workspace_id": _S.String.annotate(description="Filter API keys by workspace ID. By default, keys in the default workspace are returned.", format="uuid")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "include_disabled", "offset", "workspace_id",))
237
+ List200: _StructSchema[_T.List200, _t.Never, _t.Never] = _b.struct(_T.List200, {"data": _b.array(_b.struct(_T.List200__data__item, {"byok_usage": _b.check(_S.Number.annotate(description="Total external BYOK usage (in USD) for the API key", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_daily": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for the current UTC day", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_monthly": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for current UTC month", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_weekly": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for the current UTC week (Monday-Sunday)", format="double"), _S.is_finite().annotate(expected="a finite number")), "created_at": _S.String.annotate(description="ISO 8601 timestamp of when the API key was created"), "creator_user_id": _b.union(_S.String, _S.Null).annotate(description="The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID."), "disabled": _S.Boolean.annotate(description="Whether the API key is disabled"), "expires_at": _b.union(_S.String, _S.Null).annotate(description="ISO 8601 UTC timestamp when the API key expires, or null if no expiration", format="date-time"), "hash": _S.String.annotate(description="Unique hash identifier for the API key"), "include_byok_in_limit": _S.Boolean.annotate(description="Whether to include external BYOK usage in the credit limit"), "label": _S.String.annotate(description="Human-readable label for the API key"), "limit": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Spending limit for the API key in USD", format="double"), "limit_remaining": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Remaining spending limit in USD", format="double"), "limit_reset": _b.union(_S.String, _S.Null).annotate(description="Type of limit reset for the API key"), "name": _S.String.annotate(description="Name of the API key"), "updated_at": _b.union(_S.String, _S.Null).annotate(description="ISO 8601 timestamp of when the API key was last updated"), "usage": _b.check(_S.Number.annotate(description="Total OpenRouter credit usage (in USD) for the API key", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_daily": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC day", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_monthly": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC month", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_weekly": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)", format="double"), _S.is_finite().annotate(expected="a finite number")), "workspace_id": _S.String.annotate(description="The workspace ID this API key belongs to.")}, optional=("expires_at",))).annotate(description="List of API keys")})
238
+ List400: _S.Bottom[_T.List400, _t.Any] = BadRequestResponse
239
+ List401: _S.Bottom[_T.List401, _t.Any] = UnauthorizedResponse
240
+ List429: _S.Bottom[_T.List429, _t.Any] = TooManyRequestsResponse
241
+ List500: _S.Bottom[_T.List500, _t.Any] = InternalServerResponse
242
+ CreateKeysParams: _StructSchema[_T.CreateKeysParams, _t.Never, _t.Never] = _b.struct(_T.CreateKeysParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
243
+ CreateKeysRequestJson: _StructSchema[_T.CreateKeysRequestJson, _t.Never, _t.Never] = _b.struct(_T.CreateKeysRequestJson, {"creator_user_id": _b.union(_b.check(_S.String, _S.is_min_length(1).annotate(expected="a value with a length of at least 1")), _S.Null).annotate(description="Optional user ID of the key creator. Only meaningful for organization-owned keys where a specific member is creating the key."), "expires_at": _b.union(_S.String, _S.Null).annotate(description="Optional ISO 8601 UTC timestamp when the API key should expire. Must be UTC, other timezones will be rejected", format="date-time"), "include_byok_in_limit": _S.Boolean.annotate(description="Whether to include BYOK usage in the limit"), "limit": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Optional spending limit for the API key in USD", format="double"), "limit_reset": _b.union(_b.literal("daily"), _b.literal("weekly"), _b.literal("monthly"), _S.Null).annotate(description="Type of limit reset for the API key (daily, weekly, monthly, or null for no reset). Resets happen automatically at midnight UTC, and weeks are Monday through Sunday."), "name": _b.check(_S.String.annotate(description="Name for the new API key"), _S.is_min_length(1).annotate(expected="a value with a length of at least 1")), "workspace_id": _S.String.annotate(description="The workspace to create the API key in. Defaults to the default workspace if not provided.", format="uuid")}, optional=("creator_user_id", "expires_at", "include_byok_in_limit", "limit", "limit_reset", "workspace_id",))
244
+ CreateKeys201: _StructSchema[_T.CreateKeys201, _t.Never, _t.Never] = _b.struct(_T.CreateKeys201, {"data": _b.struct(_T.CreateKeys201__data, {"byok_usage": _b.check(_S.Number.annotate(description="Total external BYOK usage (in USD) for the API key", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_daily": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for the current UTC day", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_monthly": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for current UTC month", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_weekly": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for the current UTC week (Monday-Sunday)", format="double"), _S.is_finite().annotate(expected="a finite number")), "created_at": _S.String.annotate(description="ISO 8601 timestamp of when the API key was created"), "creator_user_id": _b.union(_S.String, _S.Null).annotate(description="The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID."), "disabled": _S.Boolean.annotate(description="Whether the API key is disabled"), "expires_at": _b.union(_S.String, _S.Null).annotate(description="ISO 8601 UTC timestamp when the API key expires, or null if no expiration", format="date-time"), "hash": _S.String.annotate(description="Unique hash identifier for the API key"), "include_byok_in_limit": _S.Boolean.annotate(description="Whether to include external BYOK usage in the credit limit"), "label": _S.String.annotate(description="Human-readable label for the API key"), "limit": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Spending limit for the API key in USD", format="double"), "limit_remaining": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Remaining spending limit in USD", format="double"), "limit_reset": _b.union(_S.String, _S.Null).annotate(description="Type of limit reset for the API key"), "name": _S.String.annotate(description="Name of the API key"), "updated_at": _b.union(_S.String, _S.Null).annotate(description="ISO 8601 timestamp of when the API key was last updated"), "usage": _b.check(_S.Number.annotate(description="Total OpenRouter credit usage (in USD) for the API key", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_daily": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC day", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_monthly": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC month", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_weekly": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)", format="double"), _S.is_finite().annotate(expected="a finite number")), "workspace_id": _S.String.annotate(description="The workspace ID this API key belongs to.")}, optional=("expires_at",)).annotate(description="The created API key information"), "key": _S.String.annotate(description="The actual API key string (only shown once)")})
245
+ CreateKeys400: _S.Bottom[_T.CreateKeys400, _t.Any] = BadRequestResponse
246
+ CreateKeys401: _S.Bottom[_T.CreateKeys401, _t.Any] = UnauthorizedResponse
247
+ CreateKeys403: _S.Bottom[_T.CreateKeys403, _t.Any] = ForbiddenResponse
248
+ CreateKeys429: _S.Bottom[_T.CreateKeys429, _t.Any] = TooManyRequestsResponse
249
+ CreateKeys500: _S.Bottom[_T.CreateKeys500, _t.Any] = InternalServerResponse
250
+ GetKeyParams: _StructSchema[_T.GetKeyParams, _t.Never, _t.Never] = _b.struct(_T.GetKeyParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
251
+ GetKey200: _StructSchema[_T.GetKey200, _t.Never, _t.Never] = _b.struct(_T.GetKey200, {"data": _b.struct(_T.GetKey200__data, {"byok_usage": _b.check(_S.Number.annotate(description="Total external BYOK usage (in USD) for the API key", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_daily": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for the current UTC day", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_monthly": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for current UTC month", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_weekly": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for the current UTC week (Monday-Sunday)", format="double"), _S.is_finite().annotate(expected="a finite number")), "created_at": _S.String.annotate(description="ISO 8601 timestamp of when the API key was created"), "creator_user_id": _b.union(_S.String, _S.Null).annotate(description="The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID."), "disabled": _S.Boolean.annotate(description="Whether the API key is disabled"), "expires_at": _b.union(_S.String, _S.Null).annotate(description="ISO 8601 UTC timestamp when the API key expires, or null if no expiration", format="date-time"), "hash": _S.String.annotate(description="Unique hash identifier for the API key"), "include_byok_in_limit": _S.Boolean.annotate(description="Whether to include external BYOK usage in the credit limit"), "label": _S.String.annotate(description="Human-readable label for the API key"), "limit": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Spending limit for the API key in USD", format="double"), "limit_remaining": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Remaining spending limit in USD", format="double"), "limit_reset": _b.union(_S.String, _S.Null).annotate(description="Type of limit reset for the API key"), "name": _S.String.annotate(description="Name of the API key"), "updated_at": _b.union(_S.String, _S.Null).annotate(description="ISO 8601 timestamp of when the API key was last updated"), "usage": _b.check(_S.Number.annotate(description="Total OpenRouter credit usage (in USD) for the API key", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_daily": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC day", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_monthly": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC month", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_weekly": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)", format="double"), _S.is_finite().annotate(expected="a finite number")), "workspace_id": _S.String.annotate(description="The workspace ID this API key belongs to.")}, optional=("expires_at",)).annotate(description="The API key information")})
252
+ GetKey401: _S.Bottom[_T.GetKey401, _t.Any] = UnauthorizedResponse
253
+ GetKey404: _S.Bottom[_T.GetKey404, _t.Any] = NotFoundResponse
254
+ GetKey429: _S.Bottom[_T.GetKey429, _t.Any] = TooManyRequestsResponse
255
+ GetKey500: _S.Bottom[_T.GetKey500, _t.Any] = InternalServerResponse
256
+ DeleteKeysParams: _StructSchema[_T.DeleteKeysParams, _t.Never, _t.Never] = _b.struct(_T.DeleteKeysParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
257
+ DeleteKeys200: _StructSchema[_T.DeleteKeys200, _t.Never, _t.Never] = _b.struct(_T.DeleteKeys200, {"deleted": _b.literal(True).annotate(description="Confirmation that the API key was deleted")})
258
+ DeleteKeys401: _S.Bottom[_T.DeleteKeys401, _t.Any] = UnauthorizedResponse
259
+ DeleteKeys404: _S.Bottom[_T.DeleteKeys404, _t.Any] = NotFoundResponse
260
+ DeleteKeys429: _S.Bottom[_T.DeleteKeys429, _t.Any] = TooManyRequestsResponse
261
+ DeleteKeys500: _S.Bottom[_T.DeleteKeys500, _t.Any] = InternalServerResponse
262
+ UpdateKeysParams: _StructSchema[_T.UpdateKeysParams, _t.Never, _t.Never] = _b.struct(_T.UpdateKeysParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
263
+ UpdateKeysRequestJson: _StructSchema[_T.UpdateKeysRequestJson, _t.Never, _t.Never] = _b.struct(_T.UpdateKeysRequestJson, {"disabled": _S.Boolean.annotate(description="Whether to disable the API key"), "include_byok_in_limit": _S.Boolean.annotate(description="Whether to include BYOK usage in the limit"), "limit": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="New spending limit for the API key in USD", format="double"), "limit_reset": _b.union(_b.literal("daily"), _b.literal("weekly"), _b.literal("monthly"), _S.Null).annotate(description="New limit reset type for the API key (daily, weekly, monthly, or null for no reset). Resets happen automatically at midnight UTC, and weeks are Monday through Sunday."), "name": _S.String.annotate(description="New name for the API key")}, optional=("disabled", "include_byok_in_limit", "limit", "limit_reset", "name",))
264
+ UpdateKeys200: _StructSchema[_T.UpdateKeys200, _t.Never, _t.Never] = _b.struct(_T.UpdateKeys200, {"data": _b.struct(_T.UpdateKeys200__data, {"byok_usage": _b.check(_S.Number.annotate(description="Total external BYOK usage (in USD) for the API key", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_daily": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for the current UTC day", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_monthly": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for current UTC month", format="double"), _S.is_finite().annotate(expected="a finite number")), "byok_usage_weekly": _b.check(_S.Number.annotate(description="External BYOK usage (in USD) for the current UTC week (Monday-Sunday)", format="double"), _S.is_finite().annotate(expected="a finite number")), "created_at": _S.String.annotate(description="ISO 8601 timestamp of when the API key was created"), "creator_user_id": _b.union(_S.String, _S.Null).annotate(description="The user ID of the key creator. For organization-owned keys, this is the member who created the key. For individual users, this is the user's own ID."), "disabled": _S.Boolean.annotate(description="Whether the API key is disabled"), "expires_at": _b.union(_S.String, _S.Null).annotate(description="ISO 8601 UTC timestamp when the API key expires, or null if no expiration", format="date-time"), "hash": _S.String.annotate(description="Unique hash identifier for the API key"), "include_byok_in_limit": _S.Boolean.annotate(description="Whether to include external BYOK usage in the credit limit"), "label": _S.String.annotate(description="Human-readable label for the API key"), "limit": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Spending limit for the API key in USD", format="double"), "limit_remaining": _b.union(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.Null).annotate(description="Remaining spending limit in USD", format="double"), "limit_reset": _b.union(_S.String, _S.Null).annotate(description="Type of limit reset for the API key"), "name": _S.String.annotate(description="Name of the API key"), "updated_at": _b.union(_S.String, _S.Null).annotate(description="ISO 8601 timestamp of when the API key was last updated"), "usage": _b.check(_S.Number.annotate(description="Total OpenRouter credit usage (in USD) for the API key", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_daily": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC day", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_monthly": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC month", format="double"), _S.is_finite().annotate(expected="a finite number")), "usage_weekly": _b.check(_S.Number.annotate(description="OpenRouter credit usage (in USD) for the current UTC week (Monday-Sunday)", format="double"), _S.is_finite().annotate(expected="a finite number")), "workspace_id": _S.String.annotate(description="The workspace ID this API key belongs to.")}, optional=("expires_at",)).annotate(description="The updated API key information")})
265
+ UpdateKeys400: _S.Bottom[_T.UpdateKeys400, _t.Any] = BadRequestResponse
266
+ UpdateKeys401: _S.Bottom[_T.UpdateKeys401, _t.Any] = UnauthorizedResponse
267
+ UpdateKeys404: _S.Bottom[_T.UpdateKeys404, _t.Any] = NotFoundResponse
268
+ UpdateKeys429: _S.Bottom[_T.UpdateKeys429, _t.Any] = TooManyRequestsResponse
269
+ UpdateKeys500: _S.Bottom[_T.UpdateKeys500, _t.Any] = InternalServerResponse
270
+ CreateMessagesParams: _StructSchema[_T.CreateMessagesParams, _t.Never, _t.Never] = _b.struct(_T.CreateMessagesParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "X-OpenRouter-Metadata": MetadataLevel}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "X-OpenRouter-Metadata",))
271
+ CreateMessagesRequestJson: _S.Bottom[_T.CreateMessagesRequestJson, _t.Any] = MessagesRequest
272
+ CreateMessages200: _S.Bottom[_T.CreateMessages200, _t.Any] = MessagesResult
273
+ CreateMessages200Sse: _S.Bottom[_T.CreateMessages200Sse, _t.Any] = MessagesStreamingResponse
274
+ CreateMessages400: _S.Bottom[_T.CreateMessages400, _t.Any] = MessagesErrorResponse
275
+ CreateMessages401: _S.Bottom[_T.CreateMessages401, _t.Any] = MessagesErrorResponse
276
+ CreateMessages403: _S.Bottom[_T.CreateMessages403, _t.Any] = ForbiddenResponse
277
+ CreateMessages404: _S.Bottom[_T.CreateMessages404, _t.Any] = MessagesErrorResponse
278
+ CreateMessages429: _S.Bottom[_T.CreateMessages429, _t.Any] = MessagesErrorResponse
279
+ CreateMessages500: _S.Bottom[_T.CreateMessages500, _t.Any] = MessagesErrorResponse
280
+ CreateMessages503: _S.Bottom[_T.CreateMessages503, _t.Any] = MessagesErrorResponse
281
+ CreateMessages529: _S.Bottom[_T.CreateMessages529, _t.Any] = MessagesErrorResponse
282
+ GetModelParams: _StructSchema[_T.GetModelParams, _t.Never, _t.Never] = _b.struct(_T.GetModelParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
283
+ GetModel200: _S.Bottom[_T.GetModel200, _t.Any] = ModelResponse
284
+ GetModel403: _S.Bottom[_T.GetModel403, _t.Any] = ForbiddenResponse
285
+ GetModel404: _S.Bottom[_T.GetModel404, _t.Any] = NotFoundResponse
286
+ GetModel500: _S.Bottom[_T.GetModel500, _t.Any] = InternalServerResponse
287
+ GetModelsParams: _StructSchema[_T.GetModelsParams, _t.Never, _t.Never] = _b.struct(_T.GetModelsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(1000).annotate(expected="a value less than or equal to 1000")), "category": _b.literals(["programming", "roleplay", "marketing", "marketing/seo", "technology", "science", "translation", "legal", "finance", "health", "trivia", "academia"]).annotate(description="Filter models by use case category"), "supported_parameters": _S.String.annotate(description="Filter models by supported parameter (comma-separated)"), "output_modalities": _S.String.annotate(description="Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, embeddings) or \"all\" to include all models. Defaults to \"text\"."), "sort": _b.literals(["most-popular", "newest", "top-weekly", "pricing-low-to-high", "pricing-high-to-low", "context-high-to-low", "throughput-high-to-low", "latency-low-to-high", "intelligence-high-to-low", "coding-high-to-low", "agentic-high-to-low", "design-arena-elo-high-to-low"]).annotate(description="Sort the returned models server-side. Prefer this over fetching the full list and sorting client-side. Options: pricing-low-to-high, pricing-high-to-low (average prompt/completion price), context-high-to-low (context length), throughput-high-to-low, latency-low-to-high (recent median performance), most-popular, top-weekly (tokens processed in the last week), newest (creation date), intelligence-high-to-low, coding-high-to-low, agentic-high-to-low (Artificial Analysis indices), design-arena-elo-high-to-low (best Design Arena ELO across arenas). Models without a score for the chosen benchmark are placed last. When omitted, the existing default ordering is preserved."), "q": _S.String.annotate(description="Free-text search by model name or slug."), "input_modalities": _S.String.annotate(description="Filter models by input modality. Comma-separated list of: text, image, audio, file."), "context": _b.check(_b.check(_S.Number.annotate(description="Minimum context length (tokens). Models with smaller context are excluded."), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), "min_price": _b.union(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Minimum prompt price in $/M tokens."), "max_price": _b.union(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Maximum prompt price in $/M tokens."), "arch": _S.String.annotate(description="Filter models by architecture/model family (e.g. GPT, Claude, Gemini, Llama)."), "model_authors": _S.String.annotate(description="Filter models by the organization that created the model. Comma-separated list of author slugs."), "providers": _S.String.annotate(description="Filter models by hosting provider. Comma-separated list of provider names."), "distillable": _b.literals(["true", "false"]).annotate(description="Filter by distillation capability. \"true\" returns only distillable models, \"false\" excludes them."), "zdr": _b.literal("true").annotate(description="When set to \"true\", return only models with zero data retention endpoints."), "region": _b.literal("eu").annotate(description="Filter to models with endpoints in the given data region. Currently only \"eu\" is supported."), "min_output_price": _b.union(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Minimum completion (output) price in $/M tokens."), "max_output_price": _b.union(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Maximum completion (output) price in $/M tokens."), "min_age_days": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Minimum model age in days since its creation date."), "max_age_days": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Maximum model age in days since its creation date."), "min_intelligence_index": _b.union(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Minimum Artificial Analysis intelligence index."), "max_intelligence_index": _b.union(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Maximum Artificial Analysis intelligence index."), "min_coding_index": _b.union(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Minimum Artificial Analysis coding index."), "max_coding_index": _b.union(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Maximum Artificial Analysis coding index."), "min_agentic_index": _b.union(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Minimum Artificial Analysis agentic index."), "max_agentic_index": _b.union(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Maximum Artificial Analysis agentic index."), "min_tool_success_rate": _b.union(_b.check(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.is_less_than_or_equal_to(1).annotate(expected="a value less than or equal to 1")), _S.Null).annotate(description="Minimum tool-calling success rate, as a fraction in [0, 1] (e.g. 0.9 = 90% of requests finishing with a tool_calls finish reason)."), "max_tool_success_rate": _b.union(_b.check(_b.check(_b.check(_S.Number, _S.is_finite().annotate(expected="a finite number")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.is_less_than_or_equal_to(1).annotate(expected="a value less than or equal to 1")), _S.Null).annotate(description="Maximum tool-calling success rate, as a fraction in [0, 1].")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit", "category", "supported_parameters", "output_modalities", "sort", "q", "input_modalities", "context", "min_price", "max_price", "arch", "model_authors", "providers", "distillable", "zdr", "region", "min_output_price", "max_output_price", "min_age_days", "max_age_days", "min_intelligence_index", "max_intelligence_index", "min_coding_index", "max_coding_index", "min_agentic_index", "max_agentic_index", "min_tool_success_rate", "max_tool_success_rate",))
288
+ GetModels200: _S.Bottom[_T.GetModels200, _t.Any] = ModelsListResponse
289
+ GetModels400: _S.Bottom[_T.GetModels400, _t.Any] = BadRequestResponse
290
+ GetModels403: _S.Bottom[_T.GetModels403, _t.Any] = ForbiddenResponse
291
+ GetModels500: _S.Bottom[_T.GetModels500, _t.Any] = InternalServerResponse
292
+ ListEndpointsParams: _StructSchema[_T.ListEndpointsParams, _t.Never, _t.Never] = _b.struct(_T.ListEndpointsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
293
+ ListEndpoints200: _StructSchema[_T.ListEndpoints200, _t.Never, _t.Never] = _b.struct(_T.ListEndpoints200, {"data": ListEndpointsResponse})
294
+ ListEndpoints403: _S.Bottom[_T.ListEndpoints403, _t.Any] = ForbiddenResponse
295
+ ListEndpoints404: _S.Bottom[_T.ListEndpoints404, _t.Any] = NotFoundResponse
296
+ ListEndpoints500: _S.Bottom[_T.ListEndpoints500, _t.Any] = InternalServerResponse
297
+ ListModelsCountParams: _StructSchema[_T.ListModelsCountParams, _t.Never, _t.Never] = _b.struct(_T.ListModelsCountParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "output_modalities": _S.String.annotate(description="Filter models by output modality. Accepts a comma-separated list of modalities (text, image, audio, embeddings) or \"all\" to include all models. Defaults to \"text\".")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "output_modalities",))
298
+ ListModelsCount200: _S.Bottom[_T.ListModelsCount200, _t.Any] = ModelsCountResponse
299
+ ListModelsCount400: _S.Bottom[_T.ListModelsCount400, _t.Any] = BadRequestResponse
300
+ ListModelsCount403: _S.Bottom[_T.ListModelsCount403, _t.Any] = ForbiddenResponse
301
+ ListModelsCount500: _S.Bottom[_T.ListModelsCount500, _t.Any] = InternalServerResponse
302
+ ListModelsUserParams: _StructSchema[_T.ListModelsUserParams, _t.Never, _t.Never] = _b.struct(_T.ListModelsUserParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination. When both offset and limit are omitted, the full list is returned"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 1000). When both offset and limit are omitted, the full list is returned"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(1000).annotate(expected="a value less than or equal to 1000"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
303
+ ListModelsUser200: _S.Bottom[_T.ListModelsUser200, _t.Any] = ModelsListResponse
304
+ ListModelsUser401: _S.Bottom[_T.ListModelsUser401, _t.Any] = UnauthorizedResponse
305
+ ListModelsUser403: _S.Bottom[_T.ListModelsUser403, _t.Any] = ForbiddenResponse
306
+ ListModelsUser404: _S.Bottom[_T.ListModelsUser404, _t.Any] = NotFoundResponse
307
+ ListModelsUser500: _S.Bottom[_T.ListModelsUser500, _t.Any] = InternalServerResponse
308
+ ListObservabilityDestinationsParams: _StructSchema[_T.ListObservabilityDestinationsParams, _t.Never, _t.Never] = _b.struct(_T.ListObservabilityDestinationsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100")), "workspace_id": _S.String.annotate(description="Optional workspace ID to filter by. Defaults to the authenticated entity's default workspace.", format="uuid")}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit", "workspace_id",))
309
+ ListObservabilityDestinations200: _S.Bottom[_T.ListObservabilityDestinations200, _t.Any] = ListObservabilityDestinationsResponse
310
+ ListObservabilityDestinations400: _S.Bottom[_T.ListObservabilityDestinations400, _t.Any] = BadRequestResponse
311
+ ListObservabilityDestinations401: _S.Bottom[_T.ListObservabilityDestinations401, _t.Any] = UnauthorizedResponse
312
+ ListObservabilityDestinations500: _S.Bottom[_T.ListObservabilityDestinations500, _t.Any] = InternalServerResponse
313
+ CreateObservabilityDestinationParams: _StructSchema[_T.CreateObservabilityDestinationParams, _t.Never, _t.Never] = _b.struct(_T.CreateObservabilityDestinationParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
314
+ CreateObservabilityDestinationRequestJson: _S.Bottom[_T.CreateObservabilityDestinationRequestJson, _t.Any] = CreateObservabilityDestinationRequest
315
+ CreateObservabilityDestination201: _S.Bottom[_T.CreateObservabilityDestination201, _t.Any] = CreateObservabilityDestinationResponse
316
+ CreateObservabilityDestination400: _S.Bottom[_T.CreateObservabilityDestination400, _t.Any] = BadRequestResponse
317
+ CreateObservabilityDestination401: _S.Bottom[_T.CreateObservabilityDestination401, _t.Any] = UnauthorizedResponse
318
+ CreateObservabilityDestination403: _S.Bottom[_T.CreateObservabilityDestination403, _t.Any] = ForbiddenResponse
319
+ CreateObservabilityDestination409: _S.Bottom[_T.CreateObservabilityDestination409, _t.Any] = ConflictResponse
320
+ CreateObservabilityDestination500: _S.Bottom[_T.CreateObservabilityDestination500, _t.Any] = InternalServerResponse
321
+ GetObservabilityDestinationParams: _StructSchema[_T.GetObservabilityDestinationParams, _t.Never, _t.Never] = _b.struct(_T.GetObservabilityDestinationParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
322
+ GetObservabilityDestination200: _S.Bottom[_T.GetObservabilityDestination200, _t.Any] = GetObservabilityDestinationResponse
323
+ GetObservabilityDestination401: _S.Bottom[_T.GetObservabilityDestination401, _t.Any] = UnauthorizedResponse
324
+ GetObservabilityDestination404: _S.Bottom[_T.GetObservabilityDestination404, _t.Any] = NotFoundResponse
325
+ GetObservabilityDestination500: _S.Bottom[_T.GetObservabilityDestination500, _t.Any] = InternalServerResponse
326
+ DeleteObservabilityDestinationParams: _StructSchema[_T.DeleteObservabilityDestinationParams, _t.Never, _t.Never] = _b.struct(_T.DeleteObservabilityDestinationParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
327
+ DeleteObservabilityDestination200: _S.Bottom[_T.DeleteObservabilityDestination200, _t.Any] = DeleteObservabilityDestinationResponse
328
+ DeleteObservabilityDestination401: _S.Bottom[_T.DeleteObservabilityDestination401, _t.Any] = UnauthorizedResponse
329
+ DeleteObservabilityDestination404: _S.Bottom[_T.DeleteObservabilityDestination404, _t.Any] = NotFoundResponse
330
+ DeleteObservabilityDestination500: _S.Bottom[_T.DeleteObservabilityDestination500, _t.Any] = InternalServerResponse
331
+ UpdateObservabilityDestinationParams: _StructSchema[_T.UpdateObservabilityDestinationParams, _t.Never, _t.Never] = _b.struct(_T.UpdateObservabilityDestinationParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
332
+ UpdateObservabilityDestinationRequestJson: _S.Bottom[_T.UpdateObservabilityDestinationRequestJson, _t.Any] = UpdateObservabilityDestinationRequest
333
+ UpdateObservabilityDestination200: _S.Bottom[_T.UpdateObservabilityDestination200, _t.Any] = UpdateObservabilityDestinationResponse
334
+ UpdateObservabilityDestination400: _S.Bottom[_T.UpdateObservabilityDestination400, _t.Any] = BadRequestResponse
335
+ UpdateObservabilityDestination401: _S.Bottom[_T.UpdateObservabilityDestination401, _t.Any] = UnauthorizedResponse
336
+ UpdateObservabilityDestination404: _S.Bottom[_T.UpdateObservabilityDestination404, _t.Any] = NotFoundResponse
337
+ UpdateObservabilityDestination409: _S.Bottom[_T.UpdateObservabilityDestination409, _t.Any] = ConflictResponse
338
+ UpdateObservabilityDestination500: _S.Bottom[_T.UpdateObservabilityDestination500, _t.Any] = InternalServerResponse
339
+ ListOrganizationMembersParams: _StructSchema[_T.ListOrganizationMembersParams, _t.Never, _t.Never] = _b.struct(_T.ListOrganizationMembersParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
340
+ ListOrganizationMembers200: _StructSchema[_T.ListOrganizationMembers200, _t.Never, _t.Never] = _b.struct(_T.ListOrganizationMembers200, {"data": _b.array(_b.struct(_T.ListOrganizationMembers200__data__item, {"email": _S.String.annotate(description="Email address of the member"), "first_name": _b.union(_S.String, _S.Null).annotate(description="First name of the member"), "id": _S.String.annotate(description="User ID of the organization member"), "last_name": _b.union(_S.String, _S.Null).annotate(description="Last name of the member"), "role": _b.literals(["org:admin", "org:member"]).annotate(description="Role of the member in the organization")})).annotate(description="List of organization members"), "total_count": _b.check(_S.Number.annotate(description="Total number of members in the organization"), _S.is_int().annotate(expected="an integer"))})
341
+ ListOrganizationMembers401: _S.Bottom[_T.ListOrganizationMembers401, _t.Any] = UnauthorizedResponse
342
+ ListOrganizationMembers404: _S.Bottom[_T.ListOrganizationMembers404, _t.Any] = NotFoundResponse
343
+ ListOrganizationMembers500: _S.Bottom[_T.ListOrganizationMembers500, _t.Any] = InternalServerResponse
344
+ ListPresetsParams: _StructSchema[_T.ListPresetsParams, _t.Never, _t.Never] = _b.struct(_T.ListPresetsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
345
+ ListPresets200: _S.Bottom[_T.ListPresets200, _t.Any] = ListPresetsResponse
346
+ ListPresets400: _S.Bottom[_T.ListPresets400, _t.Any] = BadRequestResponse
347
+ ListPresets401: _S.Bottom[_T.ListPresets401, _t.Any] = UnauthorizedResponse
348
+ ListPresets500: _S.Bottom[_T.ListPresets500, _t.Any] = InternalServerResponse
349
+ GetPresetParams: _StructSchema[_T.GetPresetParams, _t.Never, _t.Never] = _b.struct(_T.GetPresetParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
350
+ GetPreset200: _S.Bottom[_T.GetPreset200, _t.Any] = GetPresetResponse
351
+ GetPreset400: _S.Bottom[_T.GetPreset400, _t.Any] = BadRequestResponse
352
+ GetPreset401: _S.Bottom[_T.GetPreset401, _t.Any] = UnauthorizedResponse
353
+ GetPreset404: _S.Bottom[_T.GetPreset404, _t.Any] = NotFoundResponse
354
+ GetPreset500: _S.Bottom[_T.GetPreset500, _t.Any] = InternalServerResponse
355
+ CreatePresetsChatCompletionsParams: _StructSchema[_T.CreatePresetsChatCompletionsParams, _t.Never, _t.Never] = _b.struct(_T.CreatePresetsChatCompletionsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
356
+ CreatePresetsChatCompletionsRequestJson: _S.Bottom[_T.CreatePresetsChatCompletionsRequestJson, _t.Any] = ChatRequest
357
+ CreatePresetsChatCompletions200: _S.Bottom[_T.CreatePresetsChatCompletions200, _t.Any] = CreatePresetFromInferenceResponse
358
+ CreatePresetsChatCompletions400: _S.Bottom[_T.CreatePresetsChatCompletions400, _t.Any] = BadRequestResponse
359
+ CreatePresetsChatCompletions401: _S.Bottom[_T.CreatePresetsChatCompletions401, _t.Any] = UnauthorizedResponse
360
+ CreatePresetsChatCompletions403: _S.Bottom[_T.CreatePresetsChatCompletions403, _t.Any] = ForbiddenResponse
361
+ CreatePresetsChatCompletions404: _S.Bottom[_T.CreatePresetsChatCompletions404, _t.Any] = NotFoundResponse
362
+ CreatePresetsChatCompletions409: _S.Bottom[_T.CreatePresetsChatCompletions409, _t.Any] = ConflictResponse
363
+ CreatePresetsChatCompletions500: _S.Bottom[_T.CreatePresetsChatCompletions500, _t.Any] = InternalServerResponse
364
+ CreatePresetsMessagesParams: _StructSchema[_T.CreatePresetsMessagesParams, _t.Never, _t.Never] = _b.struct(_T.CreatePresetsMessagesParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
365
+ CreatePresetsMessagesRequestJson: _S.Bottom[_T.CreatePresetsMessagesRequestJson, _t.Any] = MessagesRequest
366
+ CreatePresetsMessages200: _S.Bottom[_T.CreatePresetsMessages200, _t.Any] = CreatePresetFromInferenceResponse
367
+ CreatePresetsMessages400: _S.Bottom[_T.CreatePresetsMessages400, _t.Any] = BadRequestResponse
368
+ CreatePresetsMessages401: _S.Bottom[_T.CreatePresetsMessages401, _t.Any] = UnauthorizedResponse
369
+ CreatePresetsMessages403: _S.Bottom[_T.CreatePresetsMessages403, _t.Any] = ForbiddenResponse
370
+ CreatePresetsMessages404: _S.Bottom[_T.CreatePresetsMessages404, _t.Any] = NotFoundResponse
371
+ CreatePresetsMessages409: _S.Bottom[_T.CreatePresetsMessages409, _t.Any] = ConflictResponse
372
+ CreatePresetsMessages500: _S.Bottom[_T.CreatePresetsMessages500, _t.Any] = InternalServerResponse
373
+ CreatePresetsResponsesParams: _StructSchema[_T.CreatePresetsResponsesParams, _t.Never, _t.Never] = _b.struct(_T.CreatePresetsResponsesParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
374
+ CreatePresetsResponsesRequestJson: _S.Bottom[_T.CreatePresetsResponsesRequestJson, _t.Any] = ResponsesRequest
375
+ CreatePresetsResponses200: _S.Bottom[_T.CreatePresetsResponses200, _t.Any] = CreatePresetFromInferenceResponse
376
+ CreatePresetsResponses400: _S.Bottom[_T.CreatePresetsResponses400, _t.Any] = BadRequestResponse
377
+ CreatePresetsResponses401: _S.Bottom[_T.CreatePresetsResponses401, _t.Any] = UnauthorizedResponse
378
+ CreatePresetsResponses403: _S.Bottom[_T.CreatePresetsResponses403, _t.Any] = ForbiddenResponse
379
+ CreatePresetsResponses404: _S.Bottom[_T.CreatePresetsResponses404, _t.Any] = NotFoundResponse
380
+ CreatePresetsResponses409: _S.Bottom[_T.CreatePresetsResponses409, _t.Any] = ConflictResponse
381
+ CreatePresetsResponses500: _S.Bottom[_T.CreatePresetsResponses500, _t.Any] = InternalServerResponse
382
+ ListPresetVersionsParams: _StructSchema[_T.ListPresetVersionsParams, _t.Never, _t.Never] = _b.struct(_T.ListPresetVersionsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
383
+ ListPresetVersions200: _S.Bottom[_T.ListPresetVersions200, _t.Any] = ListPresetVersionsResponse
384
+ ListPresetVersions400: _S.Bottom[_T.ListPresetVersions400, _t.Any] = BadRequestResponse
385
+ ListPresetVersions401: _S.Bottom[_T.ListPresetVersions401, _t.Any] = UnauthorizedResponse
386
+ ListPresetVersions404: _S.Bottom[_T.ListPresetVersions404, _t.Any] = NotFoundResponse
387
+ ListPresetVersions500: _S.Bottom[_T.ListPresetVersions500, _t.Any] = InternalServerResponse
388
+ GetPresetVersionParams: _StructSchema[_T.GetPresetVersionParams, _t.Never, _t.Never] = _b.struct(_T.GetPresetVersionParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
389
+ GetPresetVersion200: _S.Bottom[_T.GetPresetVersion200, _t.Any] = GetPresetVersionResponse
390
+ GetPresetVersion400: _S.Bottom[_T.GetPresetVersion400, _t.Any] = BadRequestResponse
391
+ GetPresetVersion401: _S.Bottom[_T.GetPresetVersion401, _t.Any] = UnauthorizedResponse
392
+ GetPresetVersion404: _S.Bottom[_T.GetPresetVersion404, _t.Any] = NotFoundResponse
393
+ GetPresetVersion500: _S.Bottom[_T.GetPresetVersion500, _t.Any] = InternalServerResponse
394
+ ListProvidersParams: _StructSchema[_T.ListProvidersParams, _t.Never, _t.Never] = _b.struct(_T.ListProvidersParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
395
+ ListProviders200: _StructSchema[_T.ListProviders200, _t.Never, _t.Never] = _b.struct(_T.ListProviders200, {"data": _b.array(_b.struct(_T.ListProviders200__data__item, {"datacenters": _b.union(_b.array(_b.literals(["AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW"])), _S.Null).annotate(description="ISO 3166-1 Alpha-2 country codes of the provider datacenter locations"), "headquarters": _b.union(_b.literal("AD"), _b.literal("AE"), _b.literal("AF"), _b.literal("AG"), _b.literal("AI"), _b.literal("AL"), _b.literal("AM"), _b.literal("AO"), _b.literal("AQ"), _b.literal("AR"), _b.literal("AS"), _b.literal("AT"), _b.literal("AU"), _b.literal("AW"), _b.literal("AX"), _b.literal("AZ"), _b.literal("BA"), _b.literal("BB"), _b.literal("BD"), _b.literal("BE"), _b.literal("BF"), _b.literal("BG"), _b.literal("BH"), _b.literal("BI"), _b.literal("BJ"), _b.literal("BL"), _b.literal("BM"), _b.literal("BN"), _b.literal("BO"), _b.literal("BQ"), _b.literal("BR"), _b.literal("BS"), _b.literal("BT"), _b.literal("BV"), _b.literal("BW"), _b.literal("BY"), _b.literal("BZ"), _b.literal("CA"), _b.literal("CC"), _b.literal("CD"), _b.literal("CF"), _b.literal("CG"), _b.literal("CH"), _b.literal("CI"), _b.literal("CK"), _b.literal("CL"), _b.literal("CM"), _b.literal("CN"), _b.literal("CO"), _b.literal("CR"), _b.literal("CU"), _b.literal("CV"), _b.literal("CW"), _b.literal("CX"), _b.literal("CY"), _b.literal("CZ"), _b.literal("DE"), _b.literal("DJ"), _b.literal("DK"), _b.literal("DM"), _b.literal("DO"), _b.literal("DZ"), _b.literal("EC"), _b.literal("EE"), _b.literal("EG"), _b.literal("EH"), _b.literal("ER"), _b.literal("ES"), _b.literal("ET"), _b.literal("FI"), _b.literal("FJ"), _b.literal("FK"), _b.literal("FM"), _b.literal("FO"), _b.literal("FR"), _b.literal("GA"), _b.literal("GB"), _b.literal("GD"), _b.literal("GE"), _b.literal("GF"), _b.literal("GG"), _b.literal("GH"), _b.literal("GI"), _b.literal("GL"), _b.literal("GM"), _b.literal("GN"), _b.literal("GP"), _b.literal("GQ"), _b.literal("GR"), _b.literal("GS"), _b.literal("GT"), _b.literal("GU"), _b.literal("GW"), _b.literal("GY"), _b.literal("HK"), _b.literal("HM"), _b.literal("HN"), _b.literal("HR"), _b.literal("HT"), _b.literal("HU"), _b.literal("ID"), _b.literal("IE"), _b.literal("IL"), _b.literal("IM"), _b.literal("IN"), _b.literal("IO"), _b.literal("IQ"), _b.literal("IR"), _b.literal("IS"), _b.literal("IT"), _b.literal("JE"), _b.literal("JM"), _b.literal("JO"), _b.literal("JP"), _b.literal("KE"), _b.literal("KG"), _b.literal("KH"), _b.literal("KI"), _b.literal("KM"), _b.literal("KN"), _b.literal("KP"), _b.literal("KR"), _b.literal("KW"), _b.literal("KY"), _b.literal("KZ"), _b.literal("LA"), _b.literal("LB"), _b.literal("LC"), _b.literal("LI"), _b.literal("LK"), _b.literal("LR"), _b.literal("LS"), _b.literal("LT"), _b.literal("LU"), _b.literal("LV"), _b.literal("LY"), _b.literal("MA"), _b.literal("MC"), _b.literal("MD"), _b.literal("ME"), _b.literal("MF"), _b.literal("MG"), _b.literal("MH"), _b.literal("MK"), _b.literal("ML"), _b.literal("MM"), _b.literal("MN"), _b.literal("MO"), _b.literal("MP"), _b.literal("MQ"), _b.literal("MR"), _b.literal("MS"), _b.literal("MT"), _b.literal("MU"), _b.literal("MV"), _b.literal("MW"), _b.literal("MX"), _b.literal("MY"), _b.literal("MZ"), _b.literal("NA"), _b.literal("NC"), _b.literal("NE"), _b.literal("NF"), _b.literal("NG"), _b.literal("NI"), _b.literal("NL"), _b.literal("NO"), _b.literal("NP"), _b.literal("NR"), _b.literal("NU"), _b.literal("NZ"), _b.literal("OM"), _b.literal("PA"), _b.literal("PE"), _b.literal("PF"), _b.literal("PG"), _b.literal("PH"), _b.literal("PK"), _b.literal("PL"), _b.literal("PM"), _b.literal("PN"), _b.literal("PR"), _b.literal("PS"), _b.literal("PT"), _b.literal("PW"), _b.literal("PY"), _b.literal("QA"), _b.literal("RE"), _b.literal("RO"), _b.literal("RS"), _b.literal("RU"), _b.literal("RW"), _b.literal("SA"), _b.literal("SB"), _b.literal("SC"), _b.literal("SD"), _b.literal("SE"), _b.literal("SG"), _b.literal("SH"), _b.literal("SI"), _b.literal("SJ"), _b.literal("SK"), _b.literal("SL"), _b.literal("SM"), _b.literal("SN"), _b.literal("SO"), _b.literal("SR"), _b.literal("SS"), _b.literal("ST"), _b.literal("SV"), _b.literal("SX"), _b.literal("SY"), _b.literal("SZ"), _b.literal("TC"), _b.literal("TD"), _b.literal("TF"), _b.literal("TG"), _b.literal("TH"), _b.literal("TJ"), _b.literal("TK"), _b.literal("TL"), _b.literal("TM"), _b.literal("TN"), _b.literal("TO"), _b.literal("TR"), _b.literal("TT"), _b.literal("TV"), _b.literal("TW"), _b.literal("TZ"), _b.literal("UA"), _b.literal("UG"), _b.literal("UM"), _b.literal("US"), _b.literal("UY"), _b.literal("UZ"), _b.literal("VA"), _b.literal("VC"), _b.literal("VE"), _b.literal("VG"), _b.literal("VI"), _b.literal("VN"), _b.literal("VU"), _b.literal("WF"), _b.literal("WS"), _b.literal("YE"), _b.literal("YT"), _b.literal("ZA"), _b.literal("ZM"), _b.literal("ZW"), _S.Null).annotate(description="ISO 3166-1 Alpha-2 country code of the provider headquarters"), "name": _S.String.annotate(description="Display name of the provider"), "privacy_policy_url": _b.union(_S.String, _S.Null).annotate(description="URL to the provider's privacy policy"), "slug": _S.String.annotate(description="URL-friendly identifier for the provider"), "status_page_url": _b.union(_S.String, _S.Null).annotate(description="URL to the provider's status page"), "terms_of_service_url": _b.union(_S.String, _S.Null).annotate(description="URL to the provider's terms of service")}, optional=("datacenters", "headquarters", "status_page_url", "terms_of_service_url",)))})
396
+ ListProviders500: _S.Bottom[_T.ListProviders500, _t.Any] = InternalServerResponse
397
+ CreateRerankParams: _StructSchema[_T.CreateRerankParams, _t.Never, _t.Never] = _b.struct(_T.CreateRerankParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
398
+ CreateRerankRequestJson: _StructSchema[_T.CreateRerankRequestJson, _t.Never, _t.Never] = _b.struct(_T.CreateRerankRequestJson, {"documents": _b.check(_b.array(_b.union(_S.String, _b.struct(_T.CreateRerankRequestJson__documents__item__1, {"image": _S.String.annotate(description="An image associated with the document, as a remote URL (http/https) or a base64-encoded data URI (data:image/...)."), "text": _S.String.annotate(description="The document text")}, optional=("image", "text",)).annotate(description="A structured document with optional text and/or image content. At least one of `text` or `image` must be provided.")).annotate(description="A document to rerank. Either a plain string, or a structured object with optional `text` and/or `image`.")).annotate(description="The list of documents to rerank. Documents may be plain strings, or structured objects with `text` and/or `image` for multimodal models."), _S.is_min_length(1).annotate(expected="a value with a length of at least 1")), "model": _S.String.annotate(description="The rerank model to use"), "provider": _b.suspend(lambda: ProviderPreferences).annotate(description="Provider routing preferences for the request."), "query": _S.String.annotate(description="The search query to rerank documents against"), "top_n": _b.check(_b.check(_S.Number.annotate(description="Number of most relevant documents to return"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1"))}, optional=("provider", "top_n",)).annotate(description="Rerank request input")
399
+ CreateRerank200: _StructSchema[_T.CreateRerank200, _t.Never, _t.Never] = _b.struct(_T.CreateRerank200, {"id": _S.String.annotate(description="Unique identifier for the rerank response (ORID format)"), "model": _S.String.annotate(description="The model used for reranking"), "provider": _S.String.annotate(description="The provider that served the rerank request"), "results": _b.array(_b.struct(_T.CreateRerank200__results__item, {"document": _b.struct(_T.CreateRerank200__results__item__document, {"image": _S.String.annotate(description="The image (URL or data URI) from the original document"), "text": _S.String.annotate(description="The document text")}, optional=("image", "text",)).annotate(description="The document object echoing the original input (text and/or image)"), "index": _b.check(_S.Number.annotate(description="Index of the document in the original input list"), _S.is_int().annotate(expected="an integer")), "relevance_score": _b.check(_S.Number.annotate(description="Relevance score of the document to the query", format="double"), _S.is_finite().annotate(expected="a finite number"))}).annotate(description="A single rerank result")).annotate(description="List of rerank results sorted by relevance"), "usage": _b.struct(_T.CreateRerank200__usage, {"cost": _b.check(_S.Number.annotate(description="Cost of the request in credits", format="double"), _S.is_finite().annotate(expected="a finite number")), "search_units": _b.check(_S.Number.annotate(description="Number of search units consumed (Cohere billing)"), _S.is_int().annotate(expected="an integer")), "total_tokens": _b.check(_S.Number.annotate(description="Total number of tokens used"), _S.is_int().annotate(expected="an integer"))}, optional=("cost", "search_units", "total_tokens",)).annotate(description="Usage statistics")}, optional=("id", "provider", "usage",)).annotate(description="Rerank response containing ranked results")
400
+ CreateRerank200Sse: _S.Bottom[_T.CreateRerank200Sse, _t.Any] = _S.String.annotate(description="Not used for rerank - rerank does not support streaming")
401
+ CreateRerank400: _S.Bottom[_T.CreateRerank400, _t.Any] = BadRequestResponse
402
+ CreateRerank401: _S.Bottom[_T.CreateRerank401, _t.Any] = UnauthorizedResponse
403
+ CreateRerank402: _S.Bottom[_T.CreateRerank402, _t.Any] = PaymentRequiredResponse
404
+ CreateRerank404: _S.Bottom[_T.CreateRerank404, _t.Any] = NotFoundResponse
405
+ CreateRerank429: _S.Bottom[_T.CreateRerank429, _t.Any] = TooManyRequestsResponse
406
+ CreateRerank500: _S.Bottom[_T.CreateRerank500, _t.Any] = InternalServerResponse
407
+ CreateRerank502: _S.Bottom[_T.CreateRerank502, _t.Any] = BadGatewayResponse
408
+ CreateRerank503: _S.Bottom[_T.CreateRerank503, _t.Any] = ServiceUnavailableResponse
409
+ CreateRerank524: _S.Bottom[_T.CreateRerank524, _t.Any] = EdgeNetworkTimeoutResponse
410
+ CreateRerank529: _S.Bottom[_T.CreateRerank529, _t.Any] = ProviderOverloadedResponse
411
+ CreateResponsesParams: _StructSchema[_T.CreateResponsesParams, _t.Never, _t.Never] = _b.struct(_T.CreateResponsesParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "X-OpenRouter-Metadata": MetadataLevel}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "X-OpenRouter-Metadata",))
412
+ CreateResponsesRequestJson: _S.Bottom[_T.CreateResponsesRequestJson, _t.Any] = ResponsesRequest
413
+ CreateResponses200: _S.Bottom[_T.CreateResponses200, _t.Any] = OpenResponsesResult
414
+ CreateResponses200Sse: _S.Bottom[_T.CreateResponses200Sse, _t.Any] = ResponsesStreamingResponse
415
+ CreateResponses400: _S.Bottom[_T.CreateResponses400, _t.Any] = BadRequestResponse
416
+ CreateResponses401: _S.Bottom[_T.CreateResponses401, _t.Any] = UnauthorizedResponse
417
+ CreateResponses402: _S.Bottom[_T.CreateResponses402, _t.Any] = PaymentRequiredResponse
418
+ CreateResponses403: _S.Bottom[_T.CreateResponses403, _t.Any] = ForbiddenResponse
419
+ CreateResponses404: _S.Bottom[_T.CreateResponses404, _t.Any] = NotFoundResponse
420
+ CreateResponses408: _S.Bottom[_T.CreateResponses408, _t.Any] = RequestTimeoutResponse
421
+ CreateResponses413: _S.Bottom[_T.CreateResponses413, _t.Any] = PayloadTooLargeResponse
422
+ CreateResponses422: _S.Bottom[_T.CreateResponses422, _t.Any] = UnprocessableEntityResponse
423
+ CreateResponses429: _S.Bottom[_T.CreateResponses429, _t.Any] = TooManyRequestsResponse
424
+ CreateResponses500: _S.Bottom[_T.CreateResponses500, _t.Any] = InternalServerResponse
425
+ CreateResponses502: _S.Bottom[_T.CreateResponses502, _t.Any] = BadGatewayResponse
426
+ CreateResponses503: _S.Bottom[_T.CreateResponses503, _t.Any] = ServiceUnavailableResponse
427
+ CreateResponses524: _S.Bottom[_T.CreateResponses524, _t.Any] = EdgeNetworkTimeoutResponse
428
+ CreateResponses529: _S.Bottom[_T.CreateResponses529, _t.Any] = ProviderOverloadedResponse
429
+ CreateVideosParams: _StructSchema[_T.CreateVideosParams, _t.Never, _t.Never] = _b.struct(_T.CreateVideosParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
430
+ CreateVideosRequestJson: _S.Bottom[_T.CreateVideosRequestJson, _t.Any] = VideoGenerationRequest
431
+ CreateVideos202: _S.Bottom[_T.CreateVideos202, _t.Any] = VideoGenerationResponse
432
+ CreateVideos400: _S.Bottom[_T.CreateVideos400, _t.Any] = BadRequestResponse
433
+ CreateVideos401: _S.Bottom[_T.CreateVideos401, _t.Any] = UnauthorizedResponse
434
+ CreateVideos402: _S.Bottom[_T.CreateVideos402, _t.Any] = PaymentRequiredResponse
435
+ CreateVideos404: _S.Bottom[_T.CreateVideos404, _t.Any] = NotFoundResponse
436
+ CreateVideos429: _S.Bottom[_T.CreateVideos429, _t.Any] = TooManyRequestsResponse
437
+ CreateVideos500: _S.Bottom[_T.CreateVideos500, _t.Any] = InternalServerResponse
438
+ GetVideosParams: _StructSchema[_T.GetVideosParams, _t.Never, _t.Never] = _b.struct(_T.GetVideosParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
439
+ GetVideos200: _S.Bottom[_T.GetVideos200, _t.Any] = VideoGenerationResponse
440
+ GetVideos401: _S.Bottom[_T.GetVideos401, _t.Any] = UnauthorizedResponse
441
+ GetVideos404: _S.Bottom[_T.GetVideos404, _t.Any] = NotFoundResponse
442
+ GetVideos500: _S.Bottom[_T.GetVideos500, _t.Any] = InternalServerResponse
443
+ ListVideosContentParams: _StructSchema[_T.ListVideosContentParams, _t.Never, _t.Never] = _b.struct(_T.ListVideosContentParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "index": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null)}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "index",))
444
+ ListVideosContent400: _S.Bottom[_T.ListVideosContent400, _t.Any] = BadRequestResponse
445
+ ListVideosContent401: _S.Bottom[_T.ListVideosContent401, _t.Any] = UnauthorizedResponse
446
+ ListVideosContent404: _S.Bottom[_T.ListVideosContent404, _t.Any] = NotFoundResponse
447
+ ListVideosContent500: _S.Bottom[_T.ListVideosContent500, _t.Any] = InternalServerResponse
448
+ ListVideosContent502: _S.Bottom[_T.ListVideosContent502, _t.Any] = BadGatewayResponse
449
+ ListVideosModelsParams: _StructSchema[_T.ListVideosModelsParams, _t.Never, _t.Never] = _b.struct(_T.ListVideosModelsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
450
+ ListVideosModels200: _S.Bottom[_T.ListVideosModels200, _t.Any] = VideoModelsListResponse
451
+ ListVideosModels400: _S.Bottom[_T.ListVideosModels400, _t.Any] = BadRequestResponse
452
+ ListVideosModels500: _S.Bottom[_T.ListVideosModels500, _t.Any] = InternalServerResponse
453
+ ListWorkspacesParams: _StructSchema[_T.ListWorkspacesParams, _t.Never, _t.Never] = _b.struct(_T.ListWorkspacesParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
454
+ ListWorkspaces200: _S.Bottom[_T.ListWorkspaces200, _t.Any] = ListWorkspacesResponse
455
+ ListWorkspaces401: _S.Bottom[_T.ListWorkspaces401, _t.Any] = UnauthorizedResponse
456
+ ListWorkspaces500: _S.Bottom[_T.ListWorkspaces500, _t.Any] = InternalServerResponse
457
+ CreateWorkspaceParams: _StructSchema[_T.CreateWorkspaceParams, _t.Never, _t.Never] = _b.struct(_T.CreateWorkspaceParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
458
+ CreateWorkspaceRequestJson: _S.Bottom[_T.CreateWorkspaceRequestJson, _t.Any] = CreateWorkspaceRequest
459
+ CreateWorkspace201: _S.Bottom[_T.CreateWorkspace201, _t.Any] = CreateWorkspaceResponse
460
+ CreateWorkspace400: _S.Bottom[_T.CreateWorkspace400, _t.Any] = BadRequestResponse
461
+ CreateWorkspace401: _S.Bottom[_T.CreateWorkspace401, _t.Any] = UnauthorizedResponse
462
+ CreateWorkspace403: _S.Bottom[_T.CreateWorkspace403, _t.Any] = ForbiddenResponse
463
+ CreateWorkspace500: _S.Bottom[_T.CreateWorkspace500, _t.Any] = InternalServerResponse
464
+ GetWorkspaceParams: _StructSchema[_T.GetWorkspaceParams, _t.Never, _t.Never] = _b.struct(_T.GetWorkspaceParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
465
+ GetWorkspace200: _S.Bottom[_T.GetWorkspace200, _t.Any] = GetWorkspaceResponse
466
+ GetWorkspace401: _S.Bottom[_T.GetWorkspace401, _t.Any] = UnauthorizedResponse
467
+ GetWorkspace404: _S.Bottom[_T.GetWorkspace404, _t.Any] = NotFoundResponse
468
+ GetWorkspace500: _S.Bottom[_T.GetWorkspace500, _t.Any] = InternalServerResponse
469
+ DeleteWorkspaceParams: _StructSchema[_T.DeleteWorkspaceParams, _t.Never, _t.Never] = _b.struct(_T.DeleteWorkspaceParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
470
+ DeleteWorkspace200: _S.Bottom[_T.DeleteWorkspace200, _t.Any] = DeleteWorkspaceResponse
471
+ DeleteWorkspace400: _S.Bottom[_T.DeleteWorkspace400, _t.Any] = BadRequestResponse
472
+ DeleteWorkspace401: _S.Bottom[_T.DeleteWorkspace401, _t.Any] = UnauthorizedResponse
473
+ DeleteWorkspace403: _S.Bottom[_T.DeleteWorkspace403, _t.Any] = ForbiddenResponse
474
+ DeleteWorkspace404: _S.Bottom[_T.DeleteWorkspace404, _t.Any] = NotFoundResponse
475
+ DeleteWorkspace500: _S.Bottom[_T.DeleteWorkspace500, _t.Any] = InternalServerResponse
476
+ UpdateWorkspaceParams: _StructSchema[_T.UpdateWorkspaceParams, _t.Never, _t.Never] = _b.struct(_T.UpdateWorkspaceParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
477
+ UpdateWorkspaceRequestJson: _S.Bottom[_T.UpdateWorkspaceRequestJson, _t.Any] = UpdateWorkspaceRequest
478
+ UpdateWorkspace200: _S.Bottom[_T.UpdateWorkspace200, _t.Any] = UpdateWorkspaceResponse
479
+ UpdateWorkspace400: _S.Bottom[_T.UpdateWorkspace400, _t.Any] = BadRequestResponse
480
+ UpdateWorkspace401: _S.Bottom[_T.UpdateWorkspace401, _t.Any] = UnauthorizedResponse
481
+ UpdateWorkspace403: _S.Bottom[_T.UpdateWorkspace403, _t.Any] = ForbiddenResponse
482
+ UpdateWorkspace404: _S.Bottom[_T.UpdateWorkspace404, _t.Any] = NotFoundResponse
483
+ UpdateWorkspace500: _S.Bottom[_T.UpdateWorkspace500, _t.Any] = InternalServerResponse
484
+ ListWorkspaceBudgetsParams: _StructSchema[_T.ListWorkspaceBudgetsParams, _t.Never, _t.Never] = _b.struct(_T.ListWorkspaceBudgetsParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
485
+ ListWorkspaceBudgets200: _S.Bottom[_T.ListWorkspaceBudgets200, _t.Any] = ListWorkspaceBudgetsResponse
486
+ ListWorkspaceBudgets401: _S.Bottom[_T.ListWorkspaceBudgets401, _t.Any] = UnauthorizedResponse
487
+ ListWorkspaceBudgets404: _S.Bottom[_T.ListWorkspaceBudgets404, _t.Any] = NotFoundResponse
488
+ ListWorkspaceBudgets500: _S.Bottom[_T.ListWorkspaceBudgets500, _t.Any] = InternalServerResponse
489
+ UpsertWorkspaceBudgetParams: _StructSchema[_T.UpsertWorkspaceBudgetParams, _t.Never, _t.Never] = _b.struct(_T.UpsertWorkspaceBudgetParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
490
+ UpsertWorkspaceBudgetRequestJson: _S.Bottom[_T.UpsertWorkspaceBudgetRequestJson, _t.Any] = UpsertWorkspaceBudgetRequest
491
+ UpsertWorkspaceBudget200: _S.Bottom[_T.UpsertWorkspaceBudget200, _t.Any] = UpsertWorkspaceBudgetResponse
492
+ UpsertWorkspaceBudget400: _S.Bottom[_T.UpsertWorkspaceBudget400, _t.Any] = BadRequestResponse
493
+ UpsertWorkspaceBudget401: _S.Bottom[_T.UpsertWorkspaceBudget401, _t.Any] = UnauthorizedResponse
494
+ UpsertWorkspaceBudget404: _S.Bottom[_T.UpsertWorkspaceBudget404, _t.Any] = NotFoundResponse
495
+ UpsertWorkspaceBudget500: _S.Bottom[_T.UpsertWorkspaceBudget500, _t.Any] = InternalServerResponse
496
+ DeleteWorkspaceBudgetParams: _StructSchema[_T.DeleteWorkspaceBudgetParams, _t.Never, _t.Never] = _b.struct(_T.DeleteWorkspaceBudgetParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
497
+ DeleteWorkspaceBudget200: _S.Bottom[_T.DeleteWorkspaceBudget200, _t.Any] = DeleteWorkspaceBudgetResponse
498
+ DeleteWorkspaceBudget401: _S.Bottom[_T.DeleteWorkspaceBudget401, _t.Any] = UnauthorizedResponse
499
+ DeleteWorkspaceBudget404: _S.Bottom[_T.DeleteWorkspaceBudget404, _t.Any] = NotFoundResponse
500
+ DeleteWorkspaceBudget500: _S.Bottom[_T.DeleteWorkspaceBudget500, _t.Any] = InternalServerResponse
501
+ ListWorkspaceMembersParams: _StructSchema[_T.ListWorkspaceMembersParams, _t.Never, _t.Never] = _b.struct(_T.ListWorkspaceMembersParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String, "offset": _b.union(_b.check(_b.check(_S.Number, _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(0).annotate(expected="a value greater than or equal to 0")), _S.Null).annotate(description="Number of records to skip for pagination"), "limit": _b.check(_b.check(_b.check(_S.Number.annotate(description="Maximum number of records to return (max 100)"), _S.is_int().annotate(expected="an integer")), _S.is_greater_than_or_equal_to(1).annotate(expected="a value greater than or equal to 1")), _S.is_less_than_or_equal_to(100).annotate(expected="a value less than or equal to 100"))}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories", "offset", "limit",))
502
+ ListWorkspaceMembers200: _S.Bottom[_T.ListWorkspaceMembers200, _t.Any] = ListWorkspaceMembersResponse
503
+ ListWorkspaceMembers401: _S.Bottom[_T.ListWorkspaceMembers401, _t.Any] = UnauthorizedResponse
504
+ ListWorkspaceMembers403: _S.Bottom[_T.ListWorkspaceMembers403, _t.Any] = ForbiddenResponse
505
+ ListWorkspaceMembers404: _S.Bottom[_T.ListWorkspaceMembers404, _t.Any] = NotFoundResponse
506
+ ListWorkspaceMembers500: _S.Bottom[_T.ListWorkspaceMembers500, _t.Any] = InternalServerResponse
507
+ BulkAddWorkspaceMembersParams: _StructSchema[_T.BulkAddWorkspaceMembersParams, _t.Never, _t.Never] = _b.struct(_T.BulkAddWorkspaceMembersParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
508
+ BulkAddWorkspaceMembersRequestJson: _S.Bottom[_T.BulkAddWorkspaceMembersRequestJson, _t.Any] = BulkAddWorkspaceMembersRequest
509
+ BulkAddWorkspaceMembers200: _S.Bottom[_T.BulkAddWorkspaceMembers200, _t.Any] = BulkAddWorkspaceMembersResponse
510
+ BulkAddWorkspaceMembers400: _S.Bottom[_T.BulkAddWorkspaceMembers400, _t.Any] = BadRequestResponse
511
+ BulkAddWorkspaceMembers401: _S.Bottom[_T.BulkAddWorkspaceMembers401, _t.Any] = UnauthorizedResponse
512
+ BulkAddWorkspaceMembers403: _S.Bottom[_T.BulkAddWorkspaceMembers403, _t.Any] = ForbiddenResponse
513
+ BulkAddWorkspaceMembers404: _S.Bottom[_T.BulkAddWorkspaceMembers404, _t.Any] = NotFoundResponse
514
+ BulkAddWorkspaceMembers500: _S.Bottom[_T.BulkAddWorkspaceMembers500, _t.Any] = InternalServerResponse
515
+ BulkRemoveWorkspaceMembersParams: _StructSchema[_T.BulkRemoveWorkspaceMembersParams, _t.Never, _t.Never] = _b.struct(_T.BulkRemoveWorkspaceMembersParams, {"HTTP-Referer": _S.String, "X-OpenRouter-Title": _S.String, "X-OpenRouter-Categories": _S.String}, optional=("HTTP-Referer", "X-OpenRouter-Title", "X-OpenRouter-Categories",))
516
+ BulkRemoveWorkspaceMembersRequestJson: _S.Bottom[_T.BulkRemoveWorkspaceMembersRequestJson, _t.Any] = BulkRemoveWorkspaceMembersRequest
517
+ BulkRemoveWorkspaceMembers200: _S.Bottom[_T.BulkRemoveWorkspaceMembers200, _t.Any] = BulkRemoveWorkspaceMembersResponse
518
+ BulkRemoveWorkspaceMembers400: _S.Bottom[_T.BulkRemoveWorkspaceMembers400, _t.Any] = BadRequestResponse
519
+ BulkRemoveWorkspaceMembers401: _S.Bottom[_T.BulkRemoveWorkspaceMembers401, _t.Any] = UnauthorizedResponse
520
+ BulkRemoveWorkspaceMembers403: _S.Bottom[_T.BulkRemoveWorkspaceMembers403, _t.Any] = ForbiddenResponse
521
+ BulkRemoveWorkspaceMembers404: _S.Bottom[_T.BulkRemoveWorkspaceMembers404, _t.Any] = NotFoundResponse
522
+ BulkRemoveWorkspaceMembers500: _S.Bottom[_T.BulkRemoveWorkspaceMembers500, _t.Any] = InternalServerResponse