scalar_api_ruby 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (646) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +66 -0
  3. data/LICENSE +201 -0
  4. data/README.md +150 -0
  5. data/SECURITY.md +19 -0
  6. data/SKILL.md +77 -0
  7. data/api.md +1530 -0
  8. data/lib/scalar_api_ruby/client.rb +158 -0
  9. data/lib/scalar_api_ruby/errors.rb +227 -0
  10. data/lib/scalar_api_ruby/file_part.rb +58 -0
  11. data/lib/scalar_api_ruby/internal/transport/base_client.rb +566 -0
  12. data/lib/scalar_api_ruby/internal/transport/pooled_net_requester.rb +224 -0
  13. data/lib/scalar_api_ruby/internal/type/array_of.rb +164 -0
  14. data/lib/scalar_api_ruby/internal/type/base_model.rb +522 -0
  15. data/lib/scalar_api_ruby/internal/type/base_page.rb +55 -0
  16. data/lib/scalar_api_ruby/internal/type/boolean.rb +77 -0
  17. data/lib/scalar_api_ruby/internal/type/converter.rb +333 -0
  18. data/lib/scalar_api_ruby/internal/type/enum.rb +130 -0
  19. data/lib/scalar_api_ruby/internal/type/file_input.rb +111 -0
  20. data/lib/scalar_api_ruby/internal/type/hash_of.rb +184 -0
  21. data/lib/scalar_api_ruby/internal/type/request_parameters.rb +42 -0
  22. data/lib/scalar_api_ruby/internal/type/union.rb +231 -0
  23. data/lib/scalar_api_ruby/internal/type/unknown.rb +81 -0
  24. data/lib/scalar_api_ruby/internal/util.rb +958 -0
  25. data/lib/scalar_api_ruby/internal.rb +14 -0
  26. data/lib/scalar_api_ruby/models/400.rb +21 -0
  27. data/lib/scalar_api_ruby/models/401.rb +21 -0
  28. data/lib/scalar_api_ruby/models/403.rb +21 -0
  29. data/lib/scalar_api_ruby/models/404.rb +21 -0
  30. data/lib/scalar_api_ruby/models/422.rb +21 -0
  31. data/lib/scalar_api_ruby/models/500.rb +21 -0
  32. data/lib/scalar_api_ruby/models/access_group.rb +15 -0
  33. data/lib/scalar_api_ruby/models/access_group_create_params.rb +32 -0
  34. data/lib/scalar_api_ruby/models/access_group_create_response.rb +40 -0
  35. data/lib/scalar_api_ruby/models/access_group_delete_params.rb +20 -0
  36. data/lib/scalar_api_ruby/models/access_group_name.rb +7 -0
  37. data/lib/scalar_api_ruby/models/access_group_retrieve_params.rb +20 -0
  38. data/lib/scalar_api_ruby/models/access_group_retrieve_response.rb +40 -0
  39. data/lib/scalar_api_ruby/models/access_group_update_params.rb +32 -0
  40. data/lib/scalar_api_ruby/models/access_groups/domain_create_params.rb +28 -0
  41. data/lib/scalar_api_ruby/models/access_groups/domain_delete_params.rb +28 -0
  42. data/lib/scalar_api_ruby/models/access_groups/email_domain.rb +9 -0
  43. data/lib/scalar_api_ruby/models/active_deployment.rb +27 -0
  44. data/lib/scalar_api_ruby/models/api_document.rb +63 -0
  45. data/lib/scalar_api_ruby/models/authentication_exchange_personal_token_params.rb +20 -0
  46. data/lib/scalar_api_ruby/models/authentication_exchange_personal_token_response.rb +16 -0
  47. data/lib/scalar_api_ruby/models/authentication_list_current_user_params.rb +14 -0
  48. data/lib/scalar_api_ruby/models/docs_project.rb +76 -0
  49. data/lib/scalar_api_ruby/models/github_project.rb +123 -0
  50. data/lib/scalar_api_ruby/models/github_project_repository.rb +63 -0
  51. data/lib/scalar_api_ruby/models/login_portal.rb +27 -0
  52. data/lib/scalar_api_ruby/models/login_portal_create_params.rb +38 -0
  53. data/lib/scalar_api_ruby/models/login_portal_delete_params.rb +20 -0
  54. data/lib/scalar_api_ruby/models/login_portal_email.rb +75 -0
  55. data/lib/scalar_api_ruby/models/login_portal_list_params.rb +14 -0
  56. data/lib/scalar_api_ruby/models/login_portal_list_response.rb +8 -0
  57. data/lib/scalar_api_ruby/models/login_portal_page.rb +93 -0
  58. data/lib/scalar_api_ruby/models/login_portal_retrieve_params.rb +20 -0
  59. data/lib/scalar_api_ruby/models/login_portal_retrieve_response.rb +40 -0
  60. data/lib/scalar_api_ruby/models/login_portal_update_params.rb +26 -0
  61. data/lib/scalar_api_ruby/models/managed_doc_version.rb +117 -0
  62. data/lib/scalar_api_ruby/models/managed_schema_version.rb +45 -0
  63. data/lib/scalar_api_ruby/models/mcp/mcp_installation.rb +75 -0
  64. data/lib/scalar_api_ruby/models/mcp/mcp_server.rb +50 -0
  65. data/lib/scalar_api_ruby/models/mcp/server_create_params.rb +40 -0
  66. data/lib/scalar_api_ruby/models/mcp/server_create_response.rb +24 -0
  67. data/lib/scalar_api_ruby/models/mcp/server_delete_params.rb +22 -0
  68. data/lib/scalar_api_ruby/models/mcp/server_list_params.rb +16 -0
  69. data/lib/scalar_api_ruby/models/mcp/server_list_response.rb +10 -0
  70. data/lib/scalar_api_ruby/models/mcp/server_retrieve_params.rb +22 -0
  71. data/lib/scalar_api_ruby/models/mcp/server_update_params.rb +52 -0
  72. data/lib/scalar_api_ruby/models/mcp/servers/installation_create_access_group_params.rb +36 -0
  73. data/lib/scalar_api_ruby/models/mcp/servers/installation_create_params.rb +44 -0
  74. data/lib/scalar_api_ruby/models/mcp/servers/installation_delete_access_group_params.rb +36 -0
  75. data/lib/scalar_api_ruby/models/mcp/servers/installation_delete_params.rb +30 -0
  76. data/lib/scalar_api_ruby/models/mcp/servers/installation_list_params.rb +24 -0
  77. data/lib/scalar_api_ruby/models/mcp/servers/installation_list_response.rb +13 -0
  78. data/lib/scalar_api_ruby/models/mcp/servers/installation_retrieve_params.rb +30 -0
  79. data/lib/scalar_api_ruby/models/mcp/servers/installation_update_params.rb +68 -0
  80. data/lib/scalar_api_ruby/models/mcp/servers/mcp_installation_list_item.rb +43 -0
  81. data/lib/scalar_api_ruby/models/method.rb +7 -0
  82. data/lib/scalar_api_ruby/models/namespace.rb +7 -0
  83. data/lib/scalar_api_ruby/models/namespace_list_params.rb +14 -0
  84. data/lib/scalar_api_ruby/models/namespace_list_response.rb +10 -0
  85. data/lib/scalar_api_ruby/models/nanoid.rb +7 -0
  86. data/lib/scalar_api_ruby/models/registry_create_api_document_access_group_params.rb +26 -0
  87. data/lib/scalar_api_ruby/models/registry_create_api_document_params.rb +62 -0
  88. data/lib/scalar_api_ruby/models/registry_create_api_document_response.rb +40 -0
  89. data/lib/scalar_api_ruby/models/registry_create_api_document_version_params.rb +44 -0
  90. data/lib/scalar_api_ruby/models/registry_delete_api_document_access_group_params.rb +26 -0
  91. data/lib/scalar_api_ruby/models/registry_delete_api_document_params.rb +26 -0
  92. data/lib/scalar_api_ruby/models/registry_delete_api_document_version_params.rb +32 -0
  93. data/lib/scalar_api_ruby/models/registry_list_all_api_documents_params.rb +14 -0
  94. data/lib/scalar_api_ruby/models/registry_list_all_api_documents_response.rb +8 -0
  95. data/lib/scalar_api_ruby/models/registry_list_api_document_version_metadata_params.rb +32 -0
  96. data/lib/scalar_api_ruby/models/registry_list_api_documents_params.rb +20 -0
  97. data/lib/scalar_api_ruby/models/registry_list_api_documents_response.rb +8 -0
  98. data/lib/scalar_api_ruby/models/registry_retrieve_api_document_version_params.rb +32 -0
  99. data/lib/scalar_api_ruby/models/registry_retrieve_api_document_version_response.rb +7 -0
  100. data/lib/scalar_api_ruby/models/registry_update_api_document_params.rb +50 -0
  101. data/lib/scalar_api_ruby/models/registry_update_api_document_version_params.rb +38 -0
  102. data/lib/scalar_api_ruby/models/registry_update_api_document_version_response.rb +22 -0
  103. data/lib/scalar_api_ruby/models/rule.rb +45 -0
  104. data/lib/scalar_api_ruby/models/rule_create_ruleset_access_group_params.rb +26 -0
  105. data/lib/scalar_api_ruby/models/rule_create_ruleset_params.rb +50 -0
  106. data/lib/scalar_api_ruby/models/rule_delete_ruleset_access_group_params.rb +26 -0
  107. data/lib/scalar_api_ruby/models/rule_delete_ruleset_params.rb +26 -0
  108. data/lib/scalar_api_ruby/models/rule_list_rulesets_params.rb +20 -0
  109. data/lib/scalar_api_ruby/models/rule_list_rulesets_response.rb +8 -0
  110. data/lib/scalar_api_ruby/models/rule_retrieve_ruleset_document_params.rb +26 -0
  111. data/lib/scalar_api_ruby/models/rule_retrieve_ruleset_document_response.rb +7 -0
  112. data/lib/scalar_api_ruby/models/rule_update_ruleset_params.rb +56 -0
  113. data/lib/scalar_api_ruby/models/scalar_doc_create_guide_params.rb +44 -0
  114. data/lib/scalar_api_ruby/models/scalar_doc_create_guide_response.rb +22 -0
  115. data/lib/scalar_api_ruby/models/scalar_doc_create_project_params.rb +103 -0
  116. data/lib/scalar_api_ruby/models/scalar_doc_delete_project_params.rb +20 -0
  117. data/lib/scalar_api_ruby/models/scalar_doc_list_guides_params.rb +14 -0
  118. data/lib/scalar_api_ruby/models/scalar_doc_list_guides_response.rb +8 -0
  119. data/lib/scalar_api_ruby/models/scalar_doc_list_project_config_params.rb +26 -0
  120. data/lib/scalar_api_ruby/models/scalar_doc_list_project_config_response.rb +34 -0
  121. data/lib/scalar_api_ruby/models/scalar_doc_list_project_domain_params.rb +20 -0
  122. data/lib/scalar_api_ruby/models/scalar_doc_list_project_domain_response.rb +22 -0
  123. data/lib/scalar_api_ruby/models/scalar_doc_list_project_domain_status_params.rb +20 -0
  124. data/lib/scalar_api_ruby/models/scalar_doc_list_project_domain_status_response.rb +65 -0
  125. data/lib/scalar_api_ruby/models/scalar_doc_list_projects_params.rb +20 -0
  126. data/lib/scalar_api_ruby/models/scalar_doc_list_projects_response.rb +22 -0
  127. data/lib/scalar_api_ruby/models/scalar_doc_publish_guide_params.rb +20 -0
  128. data/lib/scalar_api_ruby/models/scalar_doc_publish_guide_response.rb +16 -0
  129. data/lib/scalar_api_ruby/models/scalar_doc_publish_project_params.rb +38 -0
  130. data/lib/scalar_api_ruby/models/scalar_doc_publish_project_response.rb +16 -0
  131. data/lib/scalar_api_ruby/models/scalar_doc_retrieve_project_params.rb +20 -0
  132. data/lib/scalar_api_ruby/models/scalar_doc_update_project_config_params.rb +50 -0
  133. data/lib/scalar_api_ruby/models/scalar_doc_update_project_config_response.rb +28 -0
  134. data/lib/scalar_api_ruby/models/scalar_doc_update_project_params.rb +75 -0
  135. data/lib/scalar_api_ruby/models/schema.rb +51 -0
  136. data/lib/scalar_api_ruby/models/schema_create_params.rb +56 -0
  137. data/lib/scalar_api_ruby/models/schema_delete_params.rb +26 -0
  138. data/lib/scalar_api_ruby/models/schema_list_params.rb +20 -0
  139. data/lib/scalar_api_ruby/models/schema_list_response.rb +8 -0
  140. data/lib/scalar_api_ruby/models/schema_update_params.rb +44 -0
  141. data/lib/scalar_api_ruby/models/schemas/access_group_create_params.rb +28 -0
  142. data/lib/scalar_api_ruby/models/schemas/access_group_delete_params.rb +28 -0
  143. data/lib/scalar_api_ruby/models/schemas/version_create_params.rb +46 -0
  144. data/lib/scalar_api_ruby/models/schemas/version_create_response.rb +18 -0
  145. data/lib/scalar_api_ruby/models/schemas/version_delete_params.rb +34 -0
  146. data/lib/scalar_api_ruby/models/schemas/version_retrieve_params.rb +34 -0
  147. data/lib/scalar_api_ruby/models/schemas/version_retrieve_response.rb +9 -0
  148. data/lib/scalar_api_ruby/models/sdk.rb +76 -0
  149. data/lib/scalar_api_ruby/models/sdk_build_params.rb +53 -0
  150. data/lib/scalar_api_ruby/models/sdk_build_response.rb +16 -0
  151. data/lib/scalar_api_ruby/models/sdk_create_params.rb +71 -0
  152. data/lib/scalar_api_ruby/models/sdk_delete_params.rb +20 -0
  153. data/lib/scalar_api_ruby/models/sdk_list_params.rb +20 -0
  154. data/lib/scalar_api_ruby/models/sdk_list_response.rb +22 -0
  155. data/lib/scalar_api_ruby/models/sdk_retrieve_params.rb +20 -0
  156. data/lib/scalar_api_ruby/models/sdk_target_summary.rb +43 -0
  157. data/lib/scalar_api_ruby/models/sdk_update_params.rb +56 -0
  158. data/lib/scalar_api_ruby/models/sdk_version.rb +77 -0
  159. data/lib/scalar_api_ruby/models/sdks/repository_link_params.rb +67 -0
  160. data/lib/scalar_api_ruby/models/sdks/repository_link_response.rb +24 -0
  161. data/lib/scalar_api_ruby/models/sdks/repository_unlink_params.rb +49 -0
  162. data/lib/scalar_api_ruby/models/sdks/repository_update_publishing_params.rb +95 -0
  163. data/lib/scalar_api_ruby/models/sdks/version_create_params.rb +34 -0
  164. data/lib/scalar_api_ruby/models/sdks/version_delete_params.rb +28 -0
  165. data/lib/scalar_api_ruby/models/slug.rb +7 -0
  166. data/lib/scalar_api_ruby/models/team.rb +39 -0
  167. data/lib/scalar_api_ruby/models/team_image.rb +7 -0
  168. data/lib/scalar_api_ruby/models/team_list_params.rb +14 -0
  169. data/lib/scalar_api_ruby/models/team_list_response.rb +8 -0
  170. data/lib/scalar_api_ruby/models/team_name.rb +7 -0
  171. data/lib/scalar_api_ruby/models/team_summary.rb +27 -0
  172. data/lib/scalar_api_ruby/models/teams/email.rb +9 -0
  173. data/lib/scalar_api_ruby/models/teams/invite_cancel_params.rb +22 -0
  174. data/lib/scalar_api_ruby/models/teams/invite_member_params.rb +28 -0
  175. data/lib/scalar_api_ruby/models/teams/invite_resend_params.rb +22 -0
  176. data/lib/scalar_api_ruby/models/teams/member_delete_params.rb +22 -0
  177. data/lib/scalar_api_ruby/models/teams/member_list_params.rb +16 -0
  178. data/lib/scalar_api_ruby/models/teams/member_list_response.rb +26 -0
  179. data/lib/scalar_api_ruby/models/teams/member_update_params.rb +28 -0
  180. data/lib/scalar_api_ruby/models/teams/role.rb +19 -0
  181. data/lib/scalar_api_ruby/models/teams/team_invite.rb +37 -0
  182. data/lib/scalar_api_ruby/models/teams/team_member.rb +37 -0
  183. data/lib/scalar_api_ruby/models/theme.rb +33 -0
  184. data/lib/scalar_api_ruby/models/theme_create_params.rb +38 -0
  185. data/lib/scalar_api_ruby/models/theme_delete_params.rb +20 -0
  186. data/lib/scalar_api_ruby/models/theme_list_params.rb +14 -0
  187. data/lib/scalar_api_ruby/models/theme_list_response.rb +8 -0
  188. data/lib/scalar_api_ruby/models/theme_replace_document_params.rb +26 -0
  189. data/lib/scalar_api_ruby/models/theme_retrieve_params.rb +20 -0
  190. data/lib/scalar_api_ruby/models/theme_retrieve_response.rb +7 -0
  191. data/lib/scalar_api_ruby/models/theme_update_params.rb +32 -0
  192. data/lib/scalar_api_ruby/models/timestamp.rb +7 -0
  193. data/lib/scalar_api_ruby/models/uid.rb +15 -0
  194. data/lib/scalar_api_ruby/models/user.rb +58 -0
  195. data/lib/scalar_api_ruby/models/version.rb +7 -0
  196. data/lib/scalar_api_ruby/models.rb +248 -0
  197. data/lib/scalar_api_ruby/request_options.rb +77 -0
  198. data/lib/scalar_api_ruby/resources/access_groups/domains.rb +63 -0
  199. data/lib/scalar_api_ruby/resources/access_groups.rb +108 -0
  200. data/lib/scalar_api_ruby/resources/authentication.rb +54 -0
  201. data/lib/scalar_api_ruby/resources/login_portals.rb +117 -0
  202. data/lib/scalar_api_ruby/resources/mcp/servers/installations.rb +200 -0
  203. data/lib/scalar_api_ruby/resources/mcp/servers.rb +129 -0
  204. data/lib/scalar_api_ruby/resources/mcp.rb +19 -0
  205. data/lib/scalar_api_ruby/resources/namespaces.rb +28 -0
  206. data/lib/scalar_api_ruby/resources/registry.rb +335 -0
  207. data/lib/scalar_api_ruby/resources/rules.rb +201 -0
  208. data/lib/scalar_api_ruby/resources/scalar_docs.rb +312 -0
  209. data/lib/scalar_api_ruby/resources/schemas/access_group.rb +73 -0
  210. data/lib/scalar_api_ruby/resources/schemas/version.rb +102 -0
  211. data/lib/scalar_api_ruby/resources/schemas.rb +126 -0
  212. data/lib/scalar_api_ruby/resources/sdks/repositories.rb +97 -0
  213. data/lib/scalar_api_ruby/resources/sdks/versions.rb +62 -0
  214. data/lib/scalar_api_ruby/resources/sdks.rb +156 -0
  215. data/lib/scalar_api_ruby/resources/teams/invites.rb +77 -0
  216. data/lib/scalar_api_ruby/resources/teams/members.rb +76 -0
  217. data/lib/scalar_api_ruby/resources/teams.rb +43 -0
  218. data/lib/scalar_api_ruby/resources/themes.rb +137 -0
  219. data/lib/scalar_api_ruby/version.rb +5 -0
  220. data/lib/scalar_api_ruby.rb +244 -0
  221. data/rbi/scalar_api_ruby/client.rbi +99 -0
  222. data/rbi/scalar_api_ruby/errors.rbi +205 -0
  223. data/rbi/scalar_api_ruby/file_part.rbi +37 -0
  224. data/rbi/scalar_api_ruby/internal/transport/base_client.rbi +297 -0
  225. data/rbi/scalar_api_ruby/internal/transport/pooled_net_requester.rbi +82 -0
  226. data/rbi/scalar_api_ruby/internal/type/array_of.rbi +104 -0
  227. data/rbi/scalar_api_ruby/internal/type/base_model.rbi +299 -0
  228. data/rbi/scalar_api_ruby/internal/type/base_page.rbi +42 -0
  229. data/rbi/scalar_api_ruby/internal/type/boolean.rbi +58 -0
  230. data/rbi/scalar_api_ruby/internal/type/converter.rbi +204 -0
  231. data/rbi/scalar_api_ruby/internal/type/enum.rbi +82 -0
  232. data/rbi/scalar_api_ruby/internal/type/file_input.rbi +59 -0
  233. data/rbi/scalar_api_ruby/internal/type/hash_of.rbi +104 -0
  234. data/rbi/scalar_api_ruby/internal/type/request_parameters.rbi +29 -0
  235. data/rbi/scalar_api_ruby/internal/type/union.rbi +126 -0
  236. data/rbi/scalar_api_ruby/internal/type/unknown.rbi +58 -0
  237. data/rbi/scalar_api_ruby/internal/util.rbi +512 -0
  238. data/rbi/scalar_api_ruby/internal.rbi +16 -0
  239. data/rbi/scalar_api_ruby/models/400.rbi +24 -0
  240. data/rbi/scalar_api_ruby/models/401.rbi +24 -0
  241. data/rbi/scalar_api_ruby/models/403.rbi +24 -0
  242. data/rbi/scalar_api_ruby/models/404.rbi +24 -0
  243. data/rbi/scalar_api_ruby/models/422.rbi +24 -0
  244. data/rbi/scalar_api_ruby/models/500.rbi +24 -0
  245. data/rbi/scalar_api_ruby/models/access_group.rbi +21 -0
  246. data/rbi/scalar_api_ruby/models/access_group_create_params.rbi +62 -0
  247. data/rbi/scalar_api_ruby/models/access_group_create_response.rbi +56 -0
  248. data/rbi/scalar_api_ruby/models/access_group_delete_params.rbi +35 -0
  249. data/rbi/scalar_api_ruby/models/access_group_name.rbi +7 -0
  250. data/rbi/scalar_api_ruby/models/access_group_retrieve_params.rbi +35 -0
  251. data/rbi/scalar_api_ruby/models/access_group_retrieve_response.rbi +56 -0
  252. data/rbi/scalar_api_ruby/models/access_group_update_params.rbi +54 -0
  253. data/rbi/scalar_api_ruby/models/access_groups/domain_create_params.rbi +48 -0
  254. data/rbi/scalar_api_ruby/models/access_groups/domain_delete_params.rbi +48 -0
  255. data/rbi/scalar_api_ruby/models/access_groups/email_domain.rbi +9 -0
  256. data/rbi/scalar_api_ruby/models/active_deployment.rbi +35 -0
  257. data/rbi/scalar_api_ruby/models/api_document.rbi +81 -0
  258. data/rbi/scalar_api_ruby/models/authentication_exchange_personal_token_params.rbi +38 -0
  259. data/rbi/scalar_api_ruby/models/authentication_exchange_personal_token_response.rbi +26 -0
  260. data/rbi/scalar_api_ruby/models/authentication_list_current_user_params.rbi +30 -0
  261. data/rbi/scalar_api_ruby/models/docs_project.rbi +93 -0
  262. data/rbi/scalar_api_ruby/models/github_project.rbi +158 -0
  263. data/rbi/scalar_api_ruby/models/github_project_repository.rbi +83 -0
  264. data/rbi/scalar_api_ruby/models/login_portal.rbi +31 -0
  265. data/rbi/scalar_api_ruby/models/login_portal_create_params.rbi +59 -0
  266. data/rbi/scalar_api_ruby/models/login_portal_delete_params.rbi +35 -0
  267. data/rbi/scalar_api_ruby/models/login_portal_email.rbi +95 -0
  268. data/rbi/scalar_api_ruby/models/login_portal_list_params.rbi +27 -0
  269. data/rbi/scalar_api_ruby/models/login_portal_list_response.rbi +11 -0
  270. data/rbi/scalar_api_ruby/models/login_portal_page.rbi +113 -0
  271. data/rbi/scalar_api_ruby/models/login_portal_retrieve_params.rbi +35 -0
  272. data/rbi/scalar_api_ruby/models/login_portal_retrieve_response.rbi +62 -0
  273. data/rbi/scalar_api_ruby/models/login_portal_update_params.rbi +46 -0
  274. data/rbi/scalar_api_ruby/models/managed_doc_version.rbi +202 -0
  275. data/rbi/scalar_api_ruby/models/managed_schema_version.rbi +71 -0
  276. data/rbi/scalar_api_ruby/models/mcp/mcp_installation.rbi +93 -0
  277. data/rbi/scalar_api_ruby/models/mcp/mcp_server.rbi +69 -0
  278. data/rbi/scalar_api_ruby/models/mcp/server_create_params.rbi +70 -0
  279. data/rbi/scalar_api_ruby/models/mcp/server_create_response.rbi +49 -0
  280. data/rbi/scalar_api_ruby/models/mcp/server_delete_params.rbi +37 -0
  281. data/rbi/scalar_api_ruby/models/mcp/server_list_params.rbi +29 -0
  282. data/rbi/scalar_api_ruby/models/mcp/server_list_response.rbi +13 -0
  283. data/rbi/scalar_api_ruby/models/mcp/server_retrieve_params.rbi +37 -0
  284. data/rbi/scalar_api_ruby/models/mcp/server_update_params.rbi +88 -0
  285. data/rbi/scalar_api_ruby/models/mcp/servers/installation_create_access_group_params.rbi +60 -0
  286. data/rbi/scalar_api_ruby/models/mcp/servers/installation_create_params.rbi +69 -0
  287. data/rbi/scalar_api_ruby/models/mcp/servers/installation_delete_access_group_params.rbi +60 -0
  288. data/rbi/scalar_api_ruby/models/mcp/servers/installation_delete_params.rbi +50 -0
  289. data/rbi/scalar_api_ruby/models/mcp/servers/installation_list_params.rbi +42 -0
  290. data/rbi/scalar_api_ruby/models/mcp/servers/installation_list_response.rbi +17 -0
  291. data/rbi/scalar_api_ruby/models/mcp/servers/installation_retrieve_params.rbi +50 -0
  292. data/rbi/scalar_api_ruby/models/mcp/servers/installation_update_params.rbi +102 -0
  293. data/rbi/scalar_api_ruby/models/mcp/servers/mcp_installation_list_item.rbi +60 -0
  294. data/rbi/scalar_api_ruby/models/method.rbi +7 -0
  295. data/rbi/scalar_api_ruby/models/namespace.rbi +7 -0
  296. data/rbi/scalar_api_ruby/models/namespace_list_params.rbi +27 -0
  297. data/rbi/scalar_api_ruby/models/namespace_list_response.rbi +15 -0
  298. data/rbi/scalar_api_ruby/models/nanoid.rbi +7 -0
  299. data/rbi/scalar_api_ruby/models/registry_create_api_document_access_group_params.rbi +46 -0
  300. data/rbi/scalar_api_ruby/models/registry_create_api_document_params.rbi +95 -0
  301. data/rbi/scalar_api_ruby/models/registry_create_api_document_response.rbi +56 -0
  302. data/rbi/scalar_api_ruby/models/registry_create_api_document_version_params.rbi +71 -0
  303. data/rbi/scalar_api_ruby/models/registry_delete_api_document_access_group_params.rbi +46 -0
  304. data/rbi/scalar_api_ruby/models/registry_delete_api_document_params.rbi +46 -0
  305. data/rbi/scalar_api_ruby/models/registry_delete_api_document_version_params.rbi +51 -0
  306. data/rbi/scalar_api_ruby/models/registry_list_all_api_documents_params.rbi +30 -0
  307. data/rbi/scalar_api_ruby/models/registry_list_all_api_documents_response.rbi +11 -0
  308. data/rbi/scalar_api_ruby/models/registry_list_api_document_version_metadata_params.rbi +51 -0
  309. data/rbi/scalar_api_ruby/models/registry_list_api_documents_params.rbi +38 -0
  310. data/rbi/scalar_api_ruby/models/registry_list_api_documents_response.rbi +11 -0
  311. data/rbi/scalar_api_ruby/models/registry_retrieve_api_document_version_params.rbi +51 -0
  312. data/rbi/scalar_api_ruby/models/registry_retrieve_api_document_version_response.rbi +7 -0
  313. data/rbi/scalar_api_ruby/models/registry_update_api_document_params.rbi +86 -0
  314. data/rbi/scalar_api_ruby/models/registry_update_api_document_version_params.rbi +56 -0
  315. data/rbi/scalar_api_ruby/models/registry_update_api_document_version_response.rbi +31 -0
  316. data/rbi/scalar_api_ruby/models/rule.rbi +55 -0
  317. data/rbi/scalar_api_ruby/models/rule_create_ruleset_access_group_params.rbi +46 -0
  318. data/rbi/scalar_api_ruby/models/rule_create_ruleset_params.rbi +77 -0
  319. data/rbi/scalar_api_ruby/models/rule_delete_ruleset_access_group_params.rbi +46 -0
  320. data/rbi/scalar_api_ruby/models/rule_delete_ruleset_params.rbi +43 -0
  321. data/rbi/scalar_api_ruby/models/rule_list_rulesets_params.rbi +35 -0
  322. data/rbi/scalar_api_ruby/models/rule_list_rulesets_response.rbi +11 -0
  323. data/rbi/scalar_api_ruby/models/rule_retrieve_ruleset_document_params.rbi +46 -0
  324. data/rbi/scalar_api_ruby/models/rule_retrieve_ruleset_document_response.rbi +7 -0
  325. data/rbi/scalar_api_ruby/models/rule_update_ruleset_params.rbi +92 -0
  326. data/rbi/scalar_api_ruby/models/scalar_doc_create_guide_params.rbi +68 -0
  327. data/rbi/scalar_api_ruby/models/scalar_doc_create_guide_response.rbi +29 -0
  328. data/rbi/scalar_api_ruby/models/scalar_doc_create_project_params.rbi +206 -0
  329. data/rbi/scalar_api_ruby/models/scalar_doc_delete_project_params.rbi +35 -0
  330. data/rbi/scalar_api_ruby/models/scalar_doc_list_guides_params.rbi +27 -0
  331. data/rbi/scalar_api_ruby/models/scalar_doc_list_guides_response.rbi +11 -0
  332. data/rbi/scalar_api_ruby/models/scalar_doc_list_project_config_params.rbi +45 -0
  333. data/rbi/scalar_api_ruby/models/scalar_doc_list_project_config_response.rbi +46 -0
  334. data/rbi/scalar_api_ruby/models/scalar_doc_list_project_domain_params.rbi +38 -0
  335. data/rbi/scalar_api_ruby/models/scalar_doc_list_project_domain_response.rbi +38 -0
  336. data/rbi/scalar_api_ruby/models/scalar_doc_list_project_domain_status_params.rbi +38 -0
  337. data/rbi/scalar_api_ruby/models/scalar_doc_list_project_domain_status_response.rbi +142 -0
  338. data/rbi/scalar_api_ruby/models/scalar_doc_list_projects_params.rbi +38 -0
  339. data/rbi/scalar_api_ruby/models/scalar_doc_list_projects_response.rbi +38 -0
  340. data/rbi/scalar_api_ruby/models/scalar_doc_publish_guide_params.rbi +35 -0
  341. data/rbi/scalar_api_ruby/models/scalar_doc_publish_guide_response.rbi +26 -0
  342. data/rbi/scalar_api_ruby/models/scalar_doc_publish_project_params.rbi +71 -0
  343. data/rbi/scalar_api_ruby/models/scalar_doc_publish_project_response.rbi +26 -0
  344. data/rbi/scalar_api_ruby/models/scalar_doc_retrieve_project_params.rbi +38 -0
  345. data/rbi/scalar_api_ruby/models/scalar_doc_update_project_config_params.rbi +86 -0
  346. data/rbi/scalar_api_ruby/models/scalar_doc_update_project_config_response.rbi +42 -0
  347. data/rbi/scalar_api_ruby/models/scalar_doc_update_project_params.rbi +126 -0
  348. data/rbi/scalar_api_ruby/models/schema.rbi +68 -0
  349. data/rbi/scalar_api_ruby/models/schema_create_params.rbi +83 -0
  350. data/rbi/scalar_api_ruby/models/schema_delete_params.rbi +43 -0
  351. data/rbi/scalar_api_ruby/models/schema_list_params.rbi +35 -0
  352. data/rbi/scalar_api_ruby/models/schema_list_response.rbi +11 -0
  353. data/rbi/scalar_api_ruby/models/schema_update_params.rbi +74 -0
  354. data/rbi/scalar_api_ruby/models/schemas/access_group_create_params.rbi +48 -0
  355. data/rbi/scalar_api_ruby/models/schemas/access_group_delete_params.rbi +48 -0
  356. data/rbi/scalar_api_ruby/models/schemas/version_create_params.rbi +73 -0
  357. data/rbi/scalar_api_ruby/models/schemas/version_create_response.rbi +28 -0
  358. data/rbi/scalar_api_ruby/models/schemas/version_delete_params.rbi +53 -0
  359. data/rbi/scalar_api_ruby/models/schemas/version_retrieve_params.rbi +53 -0
  360. data/rbi/scalar_api_ruby/models/schemas/version_retrieve_response.rbi +9 -0
  361. data/rbi/scalar_api_ruby/models/sdk.rbi +92 -0
  362. data/rbi/scalar_api_ruby/models/sdk_build_params.rbi +91 -0
  363. data/rbi/scalar_api_ruby/models/sdk_build_response.rbi +23 -0
  364. data/rbi/scalar_api_ruby/models/sdk_create_params.rbi +114 -0
  365. data/rbi/scalar_api_ruby/models/sdk_delete_params.rbi +35 -0
  366. data/rbi/scalar_api_ruby/models/sdk_list_params.rbi +36 -0
  367. data/rbi/scalar_api_ruby/models/sdk_list_response.rbi +33 -0
  368. data/rbi/scalar_api_ruby/models/sdk_retrieve_params.rbi +35 -0
  369. data/rbi/scalar_api_ruby/models/sdk_target_summary.rbi +72 -0
  370. data/rbi/scalar_api_ruby/models/sdk_update_params.rbi +89 -0
  371. data/rbi/scalar_api_ruby/models/sdk_version.rbi +115 -0
  372. data/rbi/scalar_api_ruby/models/sdks/repository_link_params.rbi +156 -0
  373. data/rbi/scalar_api_ruby/models/sdks/repository_link_response.rbi +31 -0
  374. data/rbi/scalar_api_ruby/models/sdks/repository_unlink_params.rbi +137 -0
  375. data/rbi/scalar_api_ruby/models/sdks/repository_update_publishing_params.rbi +274 -0
  376. data/rbi/scalar_api_ruby/models/sdks/version_create_params.rbi +50 -0
  377. data/rbi/scalar_api_ruby/models/sdks/version_delete_params.rbi +45 -0
  378. data/rbi/scalar_api_ruby/models/slug.rbi +7 -0
  379. data/rbi/scalar_api_ruby/models/team.rbi +53 -0
  380. data/rbi/scalar_api_ruby/models/team_image.rbi +7 -0
  381. data/rbi/scalar_api_ruby/models/team_list_params.rbi +27 -0
  382. data/rbi/scalar_api_ruby/models/team_list_response.rbi +11 -0
  383. data/rbi/scalar_api_ruby/models/team_name.rbi +7 -0
  384. data/rbi/scalar_api_ruby/models/team_summary.rbi +34 -0
  385. data/rbi/scalar_api_ruby/models/teams/email.rbi +9 -0
  386. data/rbi/scalar_api_ruby/models/teams/invite_cancel_params.rbi +37 -0
  387. data/rbi/scalar_api_ruby/models/teams/invite_member_params.rbi +45 -0
  388. data/rbi/scalar_api_ruby/models/teams/invite_resend_params.rbi +37 -0
  389. data/rbi/scalar_api_ruby/models/teams/member_delete_params.rbi +37 -0
  390. data/rbi/scalar_api_ruby/models/teams/member_list_params.rbi +29 -0
  391. data/rbi/scalar_api_ruby/models/teams/member_list_response.rbi +43 -0
  392. data/rbi/scalar_api_ruby/models/teams/member_update_params.rbi +45 -0
  393. data/rbi/scalar_api_ruby/models/teams/role.rbi +23 -0
  394. data/rbi/scalar_api_ruby/models/teams/team_invite.rbi +55 -0
  395. data/rbi/scalar_api_ruby/models/teams/team_member.rbi +55 -0
  396. data/rbi/scalar_api_ruby/models/theme.rbi +40 -0
  397. data/rbi/scalar_api_ruby/models/theme_create_params.rbi +62 -0
  398. data/rbi/scalar_api_ruby/models/theme_delete_params.rbi +35 -0
  399. data/rbi/scalar_api_ruby/models/theme_list_params.rbi +27 -0
  400. data/rbi/scalar_api_ruby/models/theme_list_response.rbi +11 -0
  401. data/rbi/scalar_api_ruby/models/theme_replace_document_params.rbi +43 -0
  402. data/rbi/scalar_api_ruby/models/theme_retrieve_params.rbi +35 -0
  403. data/rbi/scalar_api_ruby/models/theme_retrieve_response.rbi +7 -0
  404. data/rbi/scalar_api_ruby/models/theme_update_params.rbi +54 -0
  405. data/rbi/scalar_api_ruby/models/timestamp.rbi +7 -0
  406. data/rbi/scalar_api_ruby/models/uid.rbi +20 -0
  407. data/rbi/scalar_api_ruby/models/user.rbi +77 -0
  408. data/rbi/scalar_api_ruby/models/version.rbi +7 -0
  409. data/rbi/scalar_api_ruby/models.rbi +229 -0
  410. data/rbi/scalar_api_ruby/request_options.rbi +55 -0
  411. data/rbi/scalar_api_ruby/resources/access_groups/domains.rbi +39 -0
  412. data/rbi/scalar_api_ruby/resources/access_groups.rbi +70 -0
  413. data/rbi/scalar_api_ruby/resources/authentication.rbi +32 -0
  414. data/rbi/scalar_api_ruby/resources/login_portals.rbi +66 -0
  415. data/rbi/scalar_api_ruby/resources/mcp/servers/installations.rbi +140 -0
  416. data/rbi/scalar_api_ruby/resources/mcp/servers.rbi +91 -0
  417. data/rbi/scalar_api_ruby/resources/mcp.rbi +16 -0
  418. data/rbi/scalar_api_ruby/resources/namespaces.rbi +20 -0
  419. data/rbi/scalar_api_ruby/resources/registry.rbi +240 -0
  420. data/rbi/scalar_api_ruby/resources/rules.rbi +140 -0
  421. data/rbi/scalar_api_ruby/resources/scalar_docs.rbi +220 -0
  422. data/rbi/scalar_api_ruby/resources/schemas/access_group.rbi +55 -0
  423. data/rbi/scalar_api_ruby/resources/schemas/version.rbi +65 -0
  424. data/rbi/scalar_api_ruby/resources/schemas.rbi +93 -0
  425. data/rbi/scalar_api_ruby/resources/sdks/repositories.rbi +79 -0
  426. data/rbi/scalar_api_ruby/resources/sdks/versions.rbi +38 -0
  427. data/rbi/scalar_api_ruby/resources/sdks.rbi +112 -0
  428. data/rbi/scalar_api_ruby/resources/teams/invites.rbi +46 -0
  429. data/rbi/scalar_api_ruby/resources/teams/members.rbi +45 -0
  430. data/rbi/scalar_api_ruby/resources/teams.rbi +30 -0
  431. data/rbi/scalar_api_ruby/resources/themes.rbi +78 -0
  432. data/rbi/scalar_api_ruby/version.rbi +5 -0
  433. data/sig/manifest.yaml +6 -0
  434. data/sig/scalar_api_ruby/client.rbs +51 -0
  435. data/sig/scalar_api_ruby/errors.rbs +117 -0
  436. data/sig/scalar_api_ruby/file_part.rbs +21 -0
  437. data/sig/scalar_api_ruby/internal/transport/base_client.rbs +133 -0
  438. data/sig/scalar_api_ruby/internal/transport/pooled_net_requester.rbs +48 -0
  439. data/sig/scalar_api_ruby/internal/type/array_of.rbs +48 -0
  440. data/sig/scalar_api_ruby/internal/type/base_model.rbs +102 -0
  441. data/sig/scalar_api_ruby/internal/type/base_page.rbs +24 -0
  442. data/sig/scalar_api_ruby/internal/type/boolean.rbs +26 -0
  443. data/sig/scalar_api_ruby/internal/type/converter.rbs +79 -0
  444. data/sig/scalar_api_ruby/internal/type/enum.rbs +32 -0
  445. data/sig/scalar_api_ruby/internal/type/file_input.rbs +25 -0
  446. data/sig/scalar_api_ruby/internal/type/hash_of.rbs +48 -0
  447. data/sig/scalar_api_ruby/internal/type/request_parameters.rbs +17 -0
  448. data/sig/scalar_api_ruby/internal/type/union.rbs +52 -0
  449. data/sig/scalar_api_ruby/internal/type/unknown.rbs +26 -0
  450. data/sig/scalar_api_ruby/internal/util.rbs +199 -0
  451. data/sig/scalar_api_ruby/internal.rbs +9 -0
  452. data/sig/scalar_api_ruby/models/400.rbs +15 -0
  453. data/sig/scalar_api_ruby/models/401.rbs +15 -0
  454. data/sig/scalar_api_ruby/models/403.rbs +15 -0
  455. data/sig/scalar_api_ruby/models/404.rbs +15 -0
  456. data/sig/scalar_api_ruby/models/422.rbs +15 -0
  457. data/sig/scalar_api_ruby/models/500.rbs +15 -0
  458. data/sig/scalar_api_ruby/models/access_group.rbs +13 -0
  459. data/sig/scalar_api_ruby/models/access_group_create_params.rbs +38 -0
  460. data/sig/scalar_api_ruby/models/access_group_create_response.rbs +40 -0
  461. data/sig/scalar_api_ruby/models/access_group_delete_params.rbs +20 -0
  462. data/sig/scalar_api_ruby/models/access_group_name.rbs +5 -0
  463. data/sig/scalar_api_ruby/models/access_group_retrieve_params.rbs +20 -0
  464. data/sig/scalar_api_ruby/models/access_group_retrieve_response.rbs +40 -0
  465. data/sig/scalar_api_ruby/models/access_group_update_params.rbs +36 -0
  466. data/sig/scalar_api_ruby/models/access_groups/domain_create_params.rbs +30 -0
  467. data/sig/scalar_api_ruby/models/access_groups/domain_delete_params.rbs +30 -0
  468. data/sig/scalar_api_ruby/models/access_groups/email_domain.rbs +7 -0
  469. data/sig/scalar_api_ruby/models/active_deployment.rbs +22 -0
  470. data/sig/scalar_api_ruby/models/api_document.rbs +60 -0
  471. data/sig/scalar_api_ruby/models/authentication_exchange_personal_token_params.rbs +23 -0
  472. data/sig/scalar_api_ruby/models/authentication_exchange_personal_token_response.rbs +14 -0
  473. data/sig/scalar_api_ruby/models/authentication_list_current_user_params.rbs +15 -0
  474. data/sig/scalar_api_ruby/models/docs_project.rbs +70 -0
  475. data/sig/scalar_api_ruby/models/github_project.rbs +112 -0
  476. data/sig/scalar_api_ruby/models/github_project_repository.rbs +60 -0
  477. data/sig/scalar_api_ruby/models/login_portal.rbs +17 -0
  478. data/sig/scalar_api_ruby/models/login_portal_create_params.rbs +41 -0
  479. data/sig/scalar_api_ruby/models/login_portal_delete_params.rbs +20 -0
  480. data/sig/scalar_api_ruby/models/login_portal_email.rbs +70 -0
  481. data/sig/scalar_api_ruby/models/login_portal_list_params.rbs +15 -0
  482. data/sig/scalar_api_ruby/models/login_portal_list_response.rbs +7 -0
  483. data/sig/scalar_api_ruby/models/login_portal_page.rbs +85 -0
  484. data/sig/scalar_api_ruby/models/login_portal_retrieve_params.rbs +20 -0
  485. data/sig/scalar_api_ruby/models/login_portal_retrieve_response.rbs +40 -0
  486. data/sig/scalar_api_ruby/models/login_portal_update_params.rbs +30 -0
  487. data/sig/scalar_api_ruby/models/managed_doc_version.rbs +122 -0
  488. data/sig/scalar_api_ruby/models/managed_schema_version.rbs +49 -0
  489. data/sig/scalar_api_ruby/models/mcp/mcp_installation.rbs +69 -0
  490. data/sig/scalar_api_ruby/models/mcp/mcp_server.rbs +49 -0
  491. data/sig/scalar_api_ruby/models/mcp/server_create_params.rbs +49 -0
  492. data/sig/scalar_api_ruby/models/mcp/server_create_response.rbs +27 -0
  493. data/sig/scalar_api_ruby/models/mcp/server_delete_params.rbs +22 -0
  494. data/sig/scalar_api_ruby/models/mcp/server_list_params.rbs +17 -0
  495. data/sig/scalar_api_ruby/models/mcp/server_list_response.rbs +9 -0
  496. data/sig/scalar_api_ruby/models/mcp/server_retrieve_params.rbs +22 -0
  497. data/sig/scalar_api_ruby/models/mcp/server_update_params.rbs +63 -0
  498. data/sig/scalar_api_ruby/models/mcp/servers/installation_create_access_group_params.rbs +36 -0
  499. data/sig/scalar_api_ruby/models/mcp/servers/installation_create_params.rbs +47 -0
  500. data/sig/scalar_api_ruby/models/mcp/servers/installation_delete_access_group_params.rbs +36 -0
  501. data/sig/scalar_api_ruby/models/mcp/servers/installation_delete_params.rbs +32 -0
  502. data/sig/scalar_api_ruby/models/mcp/servers/installation_list_params.rbs +27 -0
  503. data/sig/scalar_api_ruby/models/mcp/servers/installation_list_response.rbs +12 -0
  504. data/sig/scalar_api_ruby/models/mcp/servers/installation_retrieve_params.rbs +32 -0
  505. data/sig/scalar_api_ruby/models/mcp/servers/installation_update_params.rbs +73 -0
  506. data/sig/scalar_api_ruby/models/mcp/servers/mcp_installation_list_item.rbs +44 -0
  507. data/sig/scalar_api_ruby/models/method.rbs +5 -0
  508. data/sig/scalar_api_ruby/models/namespace.rbs +5 -0
  509. data/sig/scalar_api_ruby/models/namespace_list_params.rbs +15 -0
  510. data/sig/scalar_api_ruby/models/namespace_list_response.rbs +9 -0
  511. data/sig/scalar_api_ruby/models/nanoid.rbs +5 -0
  512. data/sig/scalar_api_ruby/models/registry_create_api_document_access_group_params.rbs +32 -0
  513. data/sig/scalar_api_ruby/models/registry_create_api_document_params.rbs +67 -0
  514. data/sig/scalar_api_ruby/models/registry_create_api_document_response.rbs +40 -0
  515. data/sig/scalar_api_ruby/models/registry_create_api_document_version_params.rbs +48 -0
  516. data/sig/scalar_api_ruby/models/registry_delete_api_document_access_group_params.rbs +32 -0
  517. data/sig/scalar_api_ruby/models/registry_delete_api_document_params.rbs +28 -0
  518. data/sig/scalar_api_ruby/models/registry_delete_api_document_version_params.rbs +32 -0
  519. data/sig/scalar_api_ruby/models/registry_list_all_api_documents_params.rbs +15 -0
  520. data/sig/scalar_api_ruby/models/registry_list_all_api_documents_response.rbs +7 -0
  521. data/sig/scalar_api_ruby/models/registry_list_api_document_version_metadata_params.rbs +32 -0
  522. data/sig/scalar_api_ruby/models/registry_list_api_documents_params.rbs +23 -0
  523. data/sig/scalar_api_ruby/models/registry_list_api_documents_response.rbs +7 -0
  524. data/sig/scalar_api_ruby/models/registry_retrieve_api_document_version_params.rbs +32 -0
  525. data/sig/scalar_api_ruby/models/registry_retrieve_api_document_version_response.rbs +5 -0
  526. data/sig/scalar_api_ruby/models/registry_update_api_document_params.rbs +59 -0
  527. data/sig/scalar_api_ruby/models/registry_update_api_document_version_params.rbs +36 -0
  528. data/sig/scalar_api_ruby/models/registry_update_api_document_version_response.rbs +16 -0
  529. data/sig/scalar_api_ruby/models/rule.rbs +45 -0
  530. data/sig/scalar_api_ruby/models/rule_create_ruleset_access_group_params.rbs +32 -0
  531. data/sig/scalar_api_ruby/models/rule_create_ruleset_params.rbs +55 -0
  532. data/sig/scalar_api_ruby/models/rule_delete_ruleset_access_group_params.rbs +32 -0
  533. data/sig/scalar_api_ruby/models/rule_delete_ruleset_params.rbs +28 -0
  534. data/sig/scalar_api_ruby/models/rule_list_rulesets_params.rbs +23 -0
  535. data/sig/scalar_api_ruby/models/rule_list_rulesets_response.rbs +7 -0
  536. data/sig/scalar_api_ruby/models/rule_retrieve_ruleset_document_params.rbs +28 -0
  537. data/sig/scalar_api_ruby/models/rule_retrieve_ruleset_document_response.rbs +5 -0
  538. data/sig/scalar_api_ruby/models/rule_update_ruleset_params.rbs +66 -0
  539. data/sig/scalar_api_ruby/models/scalar_doc_create_guide_params.rbs +48 -0
  540. data/sig/scalar_api_ruby/models/scalar_doc_create_guide_response.rbs +15 -0
  541. data/sig/scalar_api_ruby/models/scalar_doc_create_project_params.rbs +106 -0
  542. data/sig/scalar_api_ruby/models/scalar_doc_delete_project_params.rbs +20 -0
  543. data/sig/scalar_api_ruby/models/scalar_doc_list_guides_params.rbs +15 -0
  544. data/sig/scalar_api_ruby/models/scalar_doc_list_guides_response.rbs +7 -0
  545. data/sig/scalar_api_ruby/models/scalar_doc_list_project_config_params.rbs +29 -0
  546. data/sig/scalar_api_ruby/models/scalar_doc_list_project_config_response.rbs +30 -0
  547. data/sig/scalar_api_ruby/models/scalar_doc_list_project_domain_params.rbs +20 -0
  548. data/sig/scalar_api_ruby/models/scalar_doc_list_project_domain_response.rbs +16 -0
  549. data/sig/scalar_api_ruby/models/scalar_doc_list_project_domain_status_params.rbs +20 -0
  550. data/sig/scalar_api_ruby/models/scalar_doc_list_project_domain_status_response.rbs +59 -0
  551. data/sig/scalar_api_ruby/models/scalar_doc_list_projects_params.rbs +25 -0
  552. data/sig/scalar_api_ruby/models/scalar_doc_list_projects_response.rbs +19 -0
  553. data/sig/scalar_api_ruby/models/scalar_doc_publish_guide_params.rbs +20 -0
  554. data/sig/scalar_api_ruby/models/scalar_doc_publish_guide_response.rbs +13 -0
  555. data/sig/scalar_api_ruby/models/scalar_doc_publish_project_params.rbs +42 -0
  556. data/sig/scalar_api_ruby/models/scalar_doc_publish_project_response.rbs +13 -0
  557. data/sig/scalar_api_ruby/models/scalar_doc_retrieve_project_params.rbs +20 -0
  558. data/sig/scalar_api_ruby/models/scalar_doc_update_project_config_params.rbs +59 -0
  559. data/sig/scalar_api_ruby/models/scalar_doc_update_project_config_response.rbs +22 -0
  560. data/sig/scalar_api_ruby/models/scalar_doc_update_project_params.rbs +85 -0
  561. data/sig/scalar_api_ruby/models/schema.rbs +50 -0
  562. data/sig/scalar_api_ruby/models/schema_create_params.rbs +60 -0
  563. data/sig/scalar_api_ruby/models/schema_delete_params.rbs +28 -0
  564. data/sig/scalar_api_ruby/models/schema_list_params.rbs +23 -0
  565. data/sig/scalar_api_ruby/models/schema_list_response.rbs +7 -0
  566. data/sig/scalar_api_ruby/models/schema_update_params.rbs +52 -0
  567. data/sig/scalar_api_ruby/models/schemas/access_group_create_params.rbs +34 -0
  568. data/sig/scalar_api_ruby/models/schemas/access_group_delete_params.rbs +34 -0
  569. data/sig/scalar_api_ruby/models/schemas/version_create_params.rbs +50 -0
  570. data/sig/scalar_api_ruby/models/schemas/version_create_response.rbs +15 -0
  571. data/sig/scalar_api_ruby/models/schemas/version_delete_params.rbs +34 -0
  572. data/sig/scalar_api_ruby/models/schemas/version_retrieve_params.rbs +34 -0
  573. data/sig/scalar_api_ruby/models/schemas/version_retrieve_response.rbs +7 -0
  574. data/sig/scalar_api_ruby/models/sdk.rbs +70 -0
  575. data/sig/scalar_api_ruby/models/sdk_build_params.rbs +77 -0
  576. data/sig/scalar_api_ruby/models/sdk_build_response.rbs +13 -0
  577. data/sig/scalar_api_ruby/models/sdk_create_params.rbs +94 -0
  578. data/sig/scalar_api_ruby/models/sdk_delete_params.rbs +20 -0
  579. data/sig/scalar_api_ruby/models/sdk_list_params.rbs +25 -0
  580. data/sig/scalar_api_ruby/models/sdk_list_response.rbs +15 -0
  581. data/sig/scalar_api_ruby/models/sdk_retrieve_params.rbs +20 -0
  582. data/sig/scalar_api_ruby/models/sdk_target_summary.rbs +57 -0
  583. data/sig/scalar_api_ruby/models/sdk_update_params.rbs +64 -0
  584. data/sig/scalar_api_ruby/models/sdk_version.rbs +95 -0
  585. data/sig/scalar_api_ruby/models/sdks/repository_link_params.rbs +85 -0
  586. data/sig/scalar_api_ruby/models/sdks/repository_link_response.rbs +17 -0
  587. data/sig/scalar_api_ruby/models/sdks/repository_unlink_params.rbs +68 -0
  588. data/sig/scalar_api_ruby/models/sdks/repository_update_publishing_params.rbs +120 -0
  589. data/sig/scalar_api_ruby/models/sdks/version_create_params.rbs +34 -0
  590. data/sig/scalar_api_ruby/models/sdks/version_delete_params.rbs +30 -0
  591. data/sig/scalar_api_ruby/models/slug.rbs +5 -0
  592. data/sig/scalar_api_ruby/models/team.rbs +42 -0
  593. data/sig/scalar_api_ruby/models/team_image.rbs +5 -0
  594. data/sig/scalar_api_ruby/models/team_list_params.rbs +14 -0
  595. data/sig/scalar_api_ruby/models/team_list_response.rbs +7 -0
  596. data/sig/scalar_api_ruby/models/team_name.rbs +5 -0
  597. data/sig/scalar_api_ruby/models/team_summary.rbs +19 -0
  598. data/sig/scalar_api_ruby/models/teams/email.rbs +7 -0
  599. data/sig/scalar_api_ruby/models/teams/invite_cancel_params.rbs +22 -0
  600. data/sig/scalar_api_ruby/models/teams/invite_member_params.rbs +30 -0
  601. data/sig/scalar_api_ruby/models/teams/invite_resend_params.rbs +22 -0
  602. data/sig/scalar_api_ruby/models/teams/member_delete_params.rbs +22 -0
  603. data/sig/scalar_api_ruby/models/teams/member_list_params.rbs +17 -0
  604. data/sig/scalar_api_ruby/models/teams/member_list_response.rbs +27 -0
  605. data/sig/scalar_api_ruby/models/teams/member_update_params.rbs +30 -0
  606. data/sig/scalar_api_ruby/models/teams/role.rbs +18 -0
  607. data/sig/scalar_api_ruby/models/teams/team_invite.rbs +41 -0
  608. data/sig/scalar_api_ruby/models/teams/team_member.rbs +41 -0
  609. data/sig/scalar_api_ruby/models/theme.rbs +30 -0
  610. data/sig/scalar_api_ruby/models/theme_create_params.rbs +38 -0
  611. data/sig/scalar_api_ruby/models/theme_delete_params.rbs +20 -0
  612. data/sig/scalar_api_ruby/models/theme_list_params.rbs +14 -0
  613. data/sig/scalar_api_ruby/models/theme_list_response.rbs +7 -0
  614. data/sig/scalar_api_ruby/models/theme_replace_document_params.rbs +28 -0
  615. data/sig/scalar_api_ruby/models/theme_retrieve_params.rbs +20 -0
  616. data/sig/scalar_api_ruby/models/theme_retrieve_response.rbs +5 -0
  617. data/sig/scalar_api_ruby/models/theme_update_params.rbs +36 -0
  618. data/sig/scalar_api_ruby/models/timestamp.rbs +5 -0
  619. data/sig/scalar_api_ruby/models/uid.rbs +13 -0
  620. data/sig/scalar_api_ruby/models/user.rbs +57 -0
  621. data/sig/scalar_api_ruby/models/version.rbs +5 -0
  622. data/sig/scalar_api_ruby/models.rbs +205 -0
  623. data/sig/scalar_api_ruby/request_options.rbs +34 -0
  624. data/sig/scalar_api_ruby/resources/access_groups/domains.rbs +21 -0
  625. data/sig/scalar_api_ruby/resources/access_groups.rbs +30 -0
  626. data/sig/scalar_api_ruby/resources/authentication.rbs +16 -0
  627. data/sig/scalar_api_ruby/resources/login_portals.rbs +32 -0
  628. data/sig/scalar_api_ruby/resources/mcp/servers/installations.rbs +62 -0
  629. data/sig/scalar_api_ruby/resources/mcp/servers.rbs +40 -0
  630. data/sig/scalar_api_ruby/resources/mcp.rbs +9 -0
  631. data/sig/scalar_api_ruby/resources/namespaces.rbs +9 -0
  632. data/sig/scalar_api_ruby/resources/registry.rbs +96 -0
  633. data/sig/scalar_api_ruby/resources/rules.rbs +59 -0
  634. data/sig/scalar_api_ruby/resources/scalar_docs.rbs +97 -0
  635. data/sig/scalar_api_ruby/resources/schemas/access_group.rbs +23 -0
  636. data/sig/scalar_api_ruby/resources/schemas/version.rbs +32 -0
  637. data/sig/scalar_api_ruby/resources/schemas.rbs +42 -0
  638. data/sig/scalar_api_ruby/resources/sdks/repositories.rbs +34 -0
  639. data/sig/scalar_api_ruby/resources/sdks/versions.rbs +22 -0
  640. data/sig/scalar_api_ruby/resources/sdks.rbs +51 -0
  641. data/sig/scalar_api_ruby/resources/teams/invites.rbs +19 -0
  642. data/sig/scalar_api_ruby/resources/teams/members.rbs +21 -0
  643. data/sig/scalar_api_ruby/resources/teams.rbs +15 -0
  644. data/sig/scalar_api_ruby/resources/themes.rbs +39 -0
  645. data/sig/scalar_api_ruby/version.rbs +3 -0
  646. metadata +718 -0
@@ -0,0 +1,958 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Scalar
4
+ module Internal
5
+ # @api private
6
+ module Util
7
+ # @api private
8
+ #
9
+ # @return [Float]
10
+ def self.monotonic_secs = Process.clock_gettime(Process::CLOCK_MONOTONIC)
11
+
12
+ # @api private
13
+ #
14
+ # @param ns [Module, Class]
15
+ #
16
+ # @return [Enumerable<Module, Class>]
17
+ def self.walk_namespaces(ns)
18
+ ns
19
+ .constants(false)
20
+ .lazy
21
+ .flat_map do
22
+ case (c = ns.const_get(_1, false))
23
+ in Module | Class
24
+ walk_namespaces(c)
25
+ else
26
+ []
27
+ end
28
+ end
29
+ .chain([ns])
30
+ end
31
+
32
+ class << self
33
+ # @api private
34
+ #
35
+ # @return [String]
36
+ def arch
37
+ case (arch = RbConfig::CONFIG["arch"])&.downcase
38
+ in nil
39
+ "unknown"
40
+ in /aarch64|arm64/
41
+ "arm64"
42
+ in /x86_64/
43
+ "x64"
44
+ in /arm/
45
+ "arm"
46
+ else
47
+ "other:#{arch}"
48
+ end
49
+ end
50
+
51
+ # @api private
52
+ #
53
+ # @return [String]
54
+ def os
55
+ case (host = RbConfig::CONFIG["host_os"])&.downcase
56
+ in nil
57
+ "Unknown"
58
+ in /linux/
59
+ "Linux"
60
+ in /darwin/
61
+ "MacOS"
62
+ in /freebsd/
63
+ "FreeBSD"
64
+ in /openbsd/
65
+ "OpenBSD"
66
+ in /mswin|mingw|cygwin|ucrt/
67
+ "Windows"
68
+ else
69
+ "Other:#{host}"
70
+ end
71
+ end
72
+ end
73
+
74
+ class << self
75
+ # @api private
76
+ #
77
+ # @param input [Object]
78
+ #
79
+ # @return [Boolean]
80
+ def primitive?(input)
81
+ case input
82
+ in true | false | Numeric | Symbol | String
83
+ true
84
+ else
85
+ false
86
+ end
87
+ end
88
+
89
+ # @api private
90
+ #
91
+ # @param input [String, Boolean]
92
+ #
93
+ # @return [Boolean, Object]
94
+ def coerce_boolean(input)
95
+ case input.is_a?(String) ? input.downcase : input
96
+ in "true"
97
+ true
98
+ in "false"
99
+ false
100
+ else
101
+ input
102
+ end
103
+ end
104
+
105
+ # @api private
106
+ #
107
+ # @param input [String, Boolean]
108
+ #
109
+ # @raise [ArgumentError]
110
+ # @return [Boolean, nil]
111
+ def coerce_boolean!(input)
112
+ case coerce_boolean(input)
113
+ in true | false | nil => coerced
114
+ coerced
115
+ else
116
+ raise ArgumentError.new("Unable to coerce #{input.inspect} into boolean value")
117
+ end
118
+ end
119
+
120
+ # @api private
121
+ #
122
+ # @param input [String, Integer]
123
+ #
124
+ # @return [Integer, Object]
125
+ def coerce_integer(input)
126
+ Integer(input, exception: false) || input
127
+ end
128
+
129
+ # @api private
130
+ #
131
+ # @param input [String, Integer, Float]
132
+ #
133
+ # @return [Float, Object]
134
+ def coerce_float(input)
135
+ Float(input, exception: false) || input
136
+ end
137
+
138
+ # @api private
139
+ #
140
+ # @param input [Object]
141
+ #
142
+ # @return [Hash{Object=>Object}, Object]
143
+ def coerce_hash(input)
144
+ case input
145
+ in NilClass | Array | Set | Enumerator | StringIO | IO
146
+ input
147
+ else
148
+ input.respond_to?(:to_h) ? input.to_h : input
149
+ end
150
+ end
151
+
152
+ # @api private
153
+ #
154
+ # @param input [Object]
155
+ #
156
+ # @raise [ArgumentError]
157
+ # @return [Hash{Object=>Object}, nil]
158
+ def coerce_hash!(input)
159
+ case coerce_hash(input)
160
+ in Hash | nil => coerced
161
+ coerced
162
+ else
163
+ message = "Expected a #{Hash} or #{Scalar::Internal::Type::BaseModel}, got #{input.inspect}"
164
+ raise ArgumentError.new(message)
165
+ end
166
+ end
167
+ end
168
+
169
+ class << self
170
+ # @api private
171
+ #
172
+ # @param lhs [Object]
173
+ # @param rhs [Object]
174
+ # @param concat [Boolean]
175
+ #
176
+ # @return [Object]
177
+ private def deep_merge_lr(lhs, rhs, concat: false)
178
+ case [lhs, rhs, concat]
179
+ in [Hash, Hash, _]
180
+ lhs.merge(rhs) { deep_merge_lr(_2, _3, concat: concat) }
181
+ in [Array, Array, true]
182
+ lhs.concat(rhs)
183
+ else
184
+ rhs
185
+ end
186
+ end
187
+
188
+ # @api private
189
+ #
190
+ # Recursively merge one hash with another. If the values at a given key are not
191
+ # both hashes, just take the new value.
192
+ #
193
+ # @param values [Array<Object>]
194
+ #
195
+ # @param sentinel [Object, nil] the value to return if no values are provided.
196
+ #
197
+ # @param concat [Boolean] whether to merge sequences by concatenation.
198
+ #
199
+ # @return [Object]
200
+ def deep_merge(*values, sentinel: nil, concat: false)
201
+ case values
202
+ in [value, *values]
203
+ values.reduce(value) { |acc, val| deep_merge_lr(acc, val, concat: concat) }
204
+ else
205
+ sentinel
206
+ end
207
+ end
208
+
209
+ # @api private
210
+ #
211
+ # @param data [Hash{Symbol=>Object}, Array<Object>, Object]
212
+ # @param pick [Symbol, Integer, Array<Symbol, Integer>, Proc, nil]
213
+ # @param blk [Proc, nil]
214
+ #
215
+ # @return [Object, nil]
216
+ def dig(data, pick, &blk)
217
+ case [data, pick]
218
+ in [_, nil]
219
+ data
220
+ in [Hash, Symbol] | [Array, Integer]
221
+ data.fetch(pick) { blk&.call }
222
+ in [Hash | Array, Array]
223
+ pick.reduce(data) do |acc, key|
224
+ case acc
225
+ in Hash if acc.key?(key)
226
+ acc.fetch(key)
227
+ in Array if key.is_a?(Integer) && key < acc.length
228
+ acc[key]
229
+ else
230
+ return blk&.call
231
+ end
232
+ end
233
+ in [_, Proc]
234
+ pick.call(data)
235
+ else
236
+ blk&.call
237
+ end
238
+ end
239
+ end
240
+
241
+ # @type [Regexp]
242
+ #
243
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
244
+ RFC_3986_NOT_PCHARS = /[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/
245
+
246
+ class << self
247
+ # @api private
248
+ #
249
+ # @param uri [URI::Generic]
250
+ #
251
+ # @return [String]
252
+ def uri_origin(uri)
253
+ "#{uri.scheme}://#{uri.host}#{":#{uri.port}" unless uri.port == uri.default_port}"
254
+ end
255
+
256
+ # @api private
257
+ #
258
+ # @param path [String, Integer]
259
+ #
260
+ # @return [String]
261
+ def encode_path(path)
262
+ path.to_s.gsub(Scalar::Internal::Util::RFC_3986_NOT_PCHARS) { ERB::Util.url_encode(_1) }
263
+ end
264
+
265
+ # @api private
266
+ #
267
+ # @param path [String, Array<String>]
268
+ #
269
+ # @return [String]
270
+ def interpolate_path(path)
271
+ case path
272
+ in String
273
+ path
274
+ in []
275
+ ""
276
+ in [String => p, *interpolations]
277
+ encoded = interpolations.map { encode_path(_1) }
278
+ format(p, *encoded)
279
+ end
280
+ end
281
+ end
282
+
283
+ class << self
284
+ # @api private
285
+ #
286
+ # @param query [String, nil]
287
+ #
288
+ # @return [Hash{String=>Array<String>}]
289
+ def decode_query(query)
290
+ CGI.parse(query.to_s)
291
+ end
292
+
293
+ # @api private
294
+ #
295
+ # @param query [Hash{String=>Array<String>, String, nil}, nil]
296
+ #
297
+ # @return [String, nil]
298
+ def encode_query(query)
299
+ query.to_h.empty? ? nil : URI.encode_www_form(query)
300
+ end
301
+ end
302
+
303
+ class << self
304
+ # @api private
305
+ #
306
+ # @param url [URI::Generic, String]
307
+ #
308
+ # @return [Hash{Symbol=>String, Integer, nil}]
309
+ def parse_uri(url)
310
+ parsed = URI::Generic.component.zip(URI.split(url)).to_h
311
+ {**parsed, query: decode_query(parsed.fetch(:query))}
312
+ end
313
+
314
+ # @api private
315
+ #
316
+ # @param parsed [Hash{Symbol=>String, Integer, nil}] .
317
+ #
318
+ # @option parsed [String, nil] :scheme
319
+ #
320
+ # @option parsed [String, nil] :host
321
+ #
322
+ # @option parsed [Integer, nil] :port
323
+ #
324
+ # @option parsed [String, nil] :path
325
+ #
326
+ # @option parsed [Hash{String=>Array<String>}] :query
327
+ #
328
+ # @return [URI::Generic]
329
+ def unparse_uri(parsed)
330
+ URI::Generic.build(**parsed, query: encode_query(parsed.fetch(:query)))
331
+ end
332
+
333
+ # @api private
334
+ #
335
+ # @param lhs [Hash{Symbol=>String, Integer, nil}] .
336
+ #
337
+ # @option lhs [String, nil] :scheme
338
+ #
339
+ # @option lhs [String, nil] :host
340
+ #
341
+ # @option lhs [Integer, nil] :port
342
+ #
343
+ # @option lhs [String, nil] :path
344
+ #
345
+ # @option lhs [Hash{String=>Array<String>}] :query
346
+ #
347
+ # @param rhs [Hash{Symbol=>String, Integer, nil}] .
348
+ #
349
+ # @option rhs [String, nil] :scheme
350
+ #
351
+ # @option rhs [String, nil] :host
352
+ #
353
+ # @option rhs [Integer, nil] :port
354
+ #
355
+ # @option rhs [String, nil] :path
356
+ #
357
+ # @option rhs [Hash{String=>Array<String>}] :query
358
+ #
359
+ # @return [URI::Generic]
360
+ def join_parsed_uri(lhs, rhs)
361
+ base_path, base_query = lhs.fetch_values(:path, :query)
362
+ slashed = base_path.end_with?("/") ? base_path : "#{base_path}/"
363
+
364
+ merged = {**parse_uri(rhs.fetch(:path)), **rhs.except(:path, :query)}
365
+ parsed_path, parsed_query = merged.fetch_values(:path, :query)
366
+ override = URI::Generic.build(**merged.slice(:scheme, :host, :port), path: parsed_path)
367
+
368
+ joined = URI.join(URI::Generic.build(lhs.except(:path, :query)), slashed, override)
369
+ query =
370
+ deep_merge(
371
+ joined.path == base_path ? base_query : {},
372
+ parsed_query,
373
+ rhs[:query].to_h,
374
+ concat: true
375
+ )
376
+
377
+ joined.query = encode_query(query)
378
+ joined
379
+ end
380
+ end
381
+
382
+ class << self
383
+ # @api private
384
+ #
385
+ # @param headers [Hash{String=>String, Integer, Array<String, Integer, nil>, nil}]
386
+ #
387
+ # @return [Hash{String=>String}]
388
+ def normalized_headers(*headers)
389
+ {}.merge(*headers.compact)
390
+ .to_h do |key, val|
391
+ value =
392
+ case val
393
+ in Array
394
+ val.filter_map { _1&.to_s&.strip }.join(", ")
395
+ else
396
+ val&.to_s&.strip
397
+ end
398
+ [key.downcase, value]
399
+ end
400
+ end
401
+ end
402
+
403
+ # @api private
404
+ #
405
+ # An adapter that satisfies the IO interface required by `::IO.copy_stream`
406
+ class ReadIOAdapter
407
+ # @api private
408
+ #
409
+ # @return [Boolean, nil]
410
+ def close? = @closing
411
+
412
+ # @api private
413
+ def close
414
+ case @stream
415
+ in Enumerator
416
+ Scalar::Internal::Util.close_fused!(@stream)
417
+ in IO if close?
418
+ @stream.close
419
+ else
420
+ end
421
+ end
422
+
423
+ # @api private
424
+ #
425
+ # @param max_len [Integer, nil]
426
+ #
427
+ # @return [String]
428
+ private def read_enum(max_len)
429
+ case max_len
430
+ in nil
431
+ @stream.to_a.join
432
+ in Integer
433
+ @buf << @stream.next while @buf.length < max_len
434
+ @buf.slice!(..max_len)
435
+ end
436
+ rescue StopIteration
437
+ @stream = nil
438
+ @buf.slice!(0..)
439
+ end
440
+
441
+ # @api private
442
+ #
443
+ # @param max_len [Integer, nil]
444
+ # @param out_string [String, nil]
445
+ #
446
+ # @return [String, nil]
447
+ def read(max_len = nil, out_string = nil)
448
+ case @stream
449
+ in nil
450
+ nil
451
+ in IO | StringIO
452
+ @stream.read(max_len, out_string)
453
+ in Enumerator
454
+ read = read_enum(max_len)
455
+ case out_string
456
+ in String
457
+ out_string.replace(read)
458
+ in nil
459
+ read
460
+ end
461
+ end.tap(&@blk)
462
+ end
463
+
464
+ # @api private
465
+ #
466
+ # @param src [String, Pathname, StringIO, Enumerable<String>]
467
+ # @param blk [Proc]
468
+ #
469
+ # @yieldparam [String]
470
+ def initialize(src, &blk)
471
+ @stream =
472
+ case src
473
+ in String
474
+ StringIO.new(src)
475
+ in Pathname
476
+ @closing = true
477
+ src.open(binmode: true)
478
+ else
479
+ src
480
+ end
481
+ @buf = String.new
482
+ @blk = blk
483
+ end
484
+ end
485
+
486
+ class << self
487
+ # @param blk [Proc]
488
+ #
489
+ # @yieldparam [Enumerator::Yielder]
490
+ # @return [Enumerable<String>]
491
+ def writable_enum(&blk)
492
+ Enumerator.new do |y|
493
+ y.define_singleton_method(:write) do
494
+ self << _1.dup
495
+ _1.bytesize
496
+ end
497
+
498
+ blk.call(y)
499
+ end
500
+ end
501
+ end
502
+
503
+ # @type [Regexp]
504
+ JSON_CONTENT = %r{^application/(?:[a-zA-Z0-9.-]+\+)?json(?!l)}
505
+ # @type [Regexp]
506
+ JSONL_CONTENT = %r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}
507
+
508
+ class << self
509
+ # @api private
510
+ #
511
+ # @param query [Hash{Symbol=>Object}]
512
+ #
513
+ # @return [Hash{Symbol=>Object}]
514
+ def encode_query_params(query)
515
+ out = {}
516
+ query.each { write_query_param_element!(out, _1, _2) }
517
+ out
518
+ end
519
+
520
+ # @api private
521
+ #
522
+ # @param collection [Hash{Symbol=>Object}]
523
+ # @param key [String]
524
+ # @param element [Object]
525
+ #
526
+ # @return [nil]
527
+ private def write_query_param_element!(collection, key, element)
528
+ case element
529
+ in Hash
530
+ element.each { |name, value| write_query_param_element!(collection, "#{key}[#{name}]", value) }
531
+ in Array
532
+ collection[key] = element.map(&:to_s).join(",")
533
+ else
534
+ collection[key] = element.to_s
535
+ end
536
+ end
537
+
538
+ # @api private
539
+ #
540
+ # @param y [Enumerator::Yielder]
541
+ # @param val [Object]
542
+ # @param closing [Array<Proc>]
543
+ # @param content_type [String, nil]
544
+ private def write_multipart_content(y, val:, closing:, content_type: nil)
545
+ content_line = "Content-Type: %s\r\n\r\n"
546
+
547
+ case val
548
+ in Scalar::FilePart
549
+ return (
550
+ write_multipart_content(y, val: val.content, closing: closing, content_type: val.content_type)
551
+ )
552
+ in Pathname
553
+ y << format(content_line, content_type || "application/octet-stream")
554
+ io = val.open(binmode: true)
555
+ closing << io.method(:close)
556
+ IO.copy_stream(io, y)
557
+ in IO
558
+ y << format(content_line, content_type || "application/octet-stream")
559
+ IO.copy_stream(val, y)
560
+ in StringIO
561
+ y << format(content_line, content_type || "application/octet-stream")
562
+ y << val.string
563
+ in -> { primitive?(_1) }
564
+ y << format(content_line, content_type || "text/plain")
565
+ y << val.to_s
566
+ else
567
+ y << format(content_line, content_type || "application/json")
568
+ y << JSON.generate(val)
569
+ end
570
+ y << "\r\n"
571
+ end
572
+
573
+ # @api private
574
+ #
575
+ # @param y [Enumerator::Yielder]
576
+ # @param boundary [String]
577
+ # @param key [Symbol, String]
578
+ # @param val [Object]
579
+ # @param closing [Array<Proc>]
580
+ private def write_multipart_chunk(y, boundary:, key:, val:, closing:)
581
+ y << "--#{boundary}\r\n"
582
+ y << "Content-Disposition: form-data"
583
+
584
+ y << "; name=\"#{key}\"" unless key.nil?
585
+
586
+ case val
587
+ in Scalar::FilePart unless val.filename.nil?
588
+ filename = encode_path(val.filename)
589
+ y << "; filename=\"#{filename}\""
590
+ in Pathname | IO
591
+ filename = encode_path(::File.basename(val.to_path))
592
+ y << "; filename=\"#{filename}\""
593
+ else
594
+ end
595
+ y << "\r\n"
596
+
597
+ write_multipart_content(y, val: val, closing: closing)
598
+ end
599
+
600
+ # @api private
601
+ #
602
+ # https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#special-considerations-for-multipart-content
603
+ #
604
+ # @param body [Object]
605
+ #
606
+ # @return [Array(String, Enumerable<String>)]
607
+ private def encode_multipart_streaming(body)
608
+ # rubocop:disable Style/CaseEquality
609
+ # RFC 1521 Section 7.2.1 says we should have 70 char maximum for boundary length
610
+ boundary = SecureRandom.urlsafe_base64(46)
611
+
612
+ closing = []
613
+ strio =
614
+ writable_enum do |y|
615
+ case body
616
+ in Hash
617
+ body.each do |key, val|
618
+ case val
619
+ in Array if val.all? { primitive?(_1) || Scalar::Internal::Type::FileInput === _1 }
620
+ val.each do |v|
621
+ write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
622
+ end
623
+ else
624
+ write_multipart_chunk(y, boundary: boundary, key: key, val: val, closing: closing)
625
+ end
626
+ end
627
+ else
628
+ write_multipart_chunk(y, boundary: boundary, key: nil, val: body, closing: closing)
629
+ end
630
+ y << "--#{boundary}--\r\n"
631
+ end
632
+
633
+ fused_io = fused_enum(strio) { closing.each(&:call) }
634
+ [boundary, fused_io]
635
+ # rubocop:enable Style/CaseEquality
636
+ end
637
+
638
+ # @api private
639
+ #
640
+ # @param headers [Hash{String=>String}]
641
+ # @param body [Object]
642
+ #
643
+ # @return [Object]
644
+ def encode_content(headers, body)
645
+ # rubocop:disable Style/CaseEquality
646
+ content_type = headers["content-type"]
647
+ case [content_type, body]
648
+ in [Scalar::Internal::Util::JSON_CONTENT, Hash | Array | -> { primitive?(_1) }]
649
+ [headers, JSON.generate(body)]
650
+ in [Scalar::Internal::Util::JSONL_CONTENT, Enumerable] unless Scalar::Internal::Type::FileInput ===
651
+ body
652
+ [headers, body.lazy.map { JSON.generate(_1) }]
653
+ in [%r{^multipart/form-data}, Hash | Scalar::Internal::Type::FileInput]
654
+ boundary, strio = encode_multipart_streaming(body)
655
+ headers = {**headers, "content-type" => "#{content_type}; boundary=#{boundary}"}
656
+ [headers, strio]
657
+ in [_, Symbol | Numeric]
658
+ [headers, body.to_s]
659
+ in [_, StringIO]
660
+ [headers, body.string]
661
+ in [_, Scalar::FilePart]
662
+ [headers, body.content]
663
+ else
664
+ [headers, body]
665
+ end
666
+ # rubocop:enable Style/CaseEquality
667
+ end
668
+
669
+ # @api private
670
+ #
671
+ # https://www.iana.org/assignments/character-sets/character-sets.xhtml
672
+ #
673
+ # @param content_type [String]
674
+ # @param text [String]
675
+ def force_charset!(content_type, text:)
676
+ charset = /charset=([^;\s]+)/.match(content_type)&.captures&.first
677
+
678
+ return unless charset
679
+
680
+ begin
681
+ encoding = Encoding.find(charset)
682
+ text.force_encoding(encoding)
683
+ rescue ArgumentError
684
+ nil
685
+ end
686
+ end
687
+
688
+ # @api private
689
+ #
690
+ # Assumes each chunk in stream has `Encoding::BINARY`.
691
+ #
692
+ # @param headers [Hash{String=>String}]
693
+ # @param stream [Enumerable<String>]
694
+ # @param suppress_error [Boolean]
695
+ #
696
+ # @raise [JSON::ParserError]
697
+ # @return [Object]
698
+ def decode_content(headers, stream:, suppress_error: false)
699
+ case (content_type = headers["content-type"])
700
+ in Scalar::Internal::Util::JSON_CONTENT
701
+ return nil if (json = stream.to_a.join).empty?
702
+
703
+ begin
704
+ JSON.parse(json, symbolize_names: true)
705
+ rescue JSON::ParserError => e
706
+ raise e unless suppress_error
707
+ json
708
+ end
709
+ in Scalar::Internal::Util::JSONL_CONTENT
710
+ lines = decode_lines(stream)
711
+ chain_fused(lines) do |y|
712
+ lines.each do
713
+ next if _1.empty?
714
+
715
+ y << JSON.parse(_1, symbolize_names: true)
716
+ end
717
+ end
718
+ in %r{^text/event-stream}
719
+ lines = decode_lines(stream)
720
+ decode_sse(lines)
721
+ else
722
+ text = stream.to_a.join
723
+ force_charset!(content_type, text: text)
724
+ StringIO.new(text)
725
+ end
726
+ end
727
+ end
728
+
729
+ class << self
730
+ # @api private
731
+ #
732
+ # https://doc.rust-lang.org/std/iter/trait.FusedIterator.html
733
+ #
734
+ # @param enum [Enumerable<Object>]
735
+ # @param external [Boolean]
736
+ # @param close [Proc]
737
+ #
738
+ # @return [Enumerable<Object>]
739
+ def fused_enum(enum, external: false, &close)
740
+ fused = false
741
+ iter =
742
+ Enumerator.new do |y|
743
+ next if fused
744
+
745
+ fused = true
746
+ external ? loop { y << enum.next } : enum.each(&y)
747
+ ensure
748
+ close&.call
749
+ close = nil
750
+ end
751
+
752
+ iter.define_singleton_method(:rewind) do
753
+ fused = true
754
+ self
755
+ end
756
+ iter
757
+ end
758
+
759
+ # @api private
760
+ #
761
+ # @param enum [Enumerable<Object>, nil]
762
+ def close_fused!(enum)
763
+ return unless enum.is_a?(Enumerator)
764
+
765
+ # rubocop:disable Lint/UnreachableLoop
766
+ enum.rewind.each { break }
767
+ # rubocop:enable Lint/UnreachableLoop
768
+ end
769
+
770
+ # @api private
771
+ #
772
+ # @param enum [Enumerable<Object>, nil]
773
+ # @param blk [Proc]
774
+ #
775
+ # @yieldparam [Enumerator::Yielder]
776
+ # @return [Enumerable<Object>]
777
+ def chain_fused(enum, &blk)
778
+ iter = Enumerator.new { blk.call(_1) }
779
+ fused_enum(iter) { close_fused!(enum) }
780
+ end
781
+ end
782
+
783
+ class << self
784
+ # @api private
785
+ #
786
+ # Assumes Strings have been forced into having `Encoding::BINARY`.
787
+ #
788
+ # This decoder is responsible for reassembling lines split across multiple
789
+ # fragments.
790
+ #
791
+ # @param enum [Enumerable<String>]
792
+ #
793
+ # @return [Enumerable<String>]
794
+ def decode_lines(enum)
795
+ re = /(\r\n|\r|\n)/
796
+ buffer = String.new
797
+ cr_seen = nil
798
+
799
+ chain_fused(enum) do |y|
800
+ enum.each do |row|
801
+ offset = buffer.bytesize
802
+ buffer << row
803
+ while (match = re.match(buffer, cr_seen&.to_i || offset))
804
+ case [match.captures.first, cr_seen]
805
+ in ["\r", nil]
806
+ cr_seen = match.end(1)
807
+ next
808
+ in ["\r" | "\r\n", Integer]
809
+ y << buffer.slice!(..(cr_seen.pred))
810
+ else
811
+ y << buffer.slice!(..(match.end(1).pred))
812
+ end
813
+ offset = 0
814
+ cr_seen = nil
815
+ end
816
+ end
817
+
818
+ y << buffer.slice!(..(cr_seen.pred)) unless cr_seen.nil?
819
+ y << buffer unless buffer.empty?
820
+ end
821
+ end
822
+
823
+ # @api private
824
+ #
825
+ # https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream
826
+ #
827
+ # Assumes that `lines` has been decoded with `#decode_lines`.
828
+ #
829
+ # @param lines [Enumerable<String>]
830
+ #
831
+ # @return [Enumerable<Hash{Symbol=>Object}>]
832
+ def decode_sse(lines)
833
+ # rubocop:disable Metrics/BlockLength
834
+ chain_fused(lines) do |y|
835
+ blank = {event: nil, data: nil, id: nil, retry: nil}
836
+ current = {}
837
+
838
+ lines.each do |line|
839
+ case line.sub(/\R$/, "")
840
+ in ""
841
+ next if current.empty?
842
+ y << {**blank, **current}
843
+ current = {}
844
+ in /^:/
845
+ next
846
+ in /^([^:]+):\s?(.*)$/
847
+ field, value = Regexp.last_match.captures
848
+ case field
849
+ in "event"
850
+ current.merge!(event: value)
851
+ in "data"
852
+ (current[:data] ||= String.new) << (value << "\n")
853
+ in "id" unless value.include?("\0")
854
+ current.merge!(id: value)
855
+ in "retry" if /^\d+$/ =~ value
856
+ current.merge!(retry: Integer(value))
857
+ else
858
+ end
859
+ else
860
+ end
861
+ end
862
+ # rubocop:enable Metrics/BlockLength
863
+
864
+ y << {**blank, **current} unless current.empty?
865
+ end
866
+ end
867
+ end
868
+
869
+ # @api private
870
+ module SorbetRuntimeSupport
871
+ class MissingSorbetRuntimeError < ::RuntimeError
872
+ end
873
+
874
+ # @api private
875
+ #
876
+ # @return [Hash{Symbol=>Object}]
877
+ private def sorbet_runtime_constants = @sorbet_runtime_constants ||= {}
878
+
879
+ # @api private
880
+ #
881
+ # @param name [Symbol]
882
+ def const_missing(name)
883
+ super unless sorbet_runtime_constants.key?(name)
884
+
885
+ unless Object.const_defined?(:T)
886
+ message = "Trying to access a Sorbet constant #{name.inspect} without `sorbet-runtime`."
887
+ raise MissingSorbetRuntimeError.new(message)
888
+ end
889
+
890
+ sorbet_runtime_constants.fetch(name).call
891
+ end
892
+
893
+ # @api private
894
+ #
895
+ # @param name [Symbol]
896
+ #
897
+ # @return [Boolean]
898
+ def sorbet_constant_defined?(name) = sorbet_runtime_constants.key?(name)
899
+
900
+ # @api private
901
+ #
902
+ # @param name [Symbol]
903
+ # @param blk [Proc]
904
+ def define_sorbet_constant!(name, &blk) = sorbet_runtime_constants.store(name, blk)
905
+
906
+ # @api private
907
+ #
908
+ # @return [Object]
909
+ def to_sorbet_type = raise NotImplementedError
910
+
911
+ class << self
912
+ # @api private
913
+ #
914
+ # @param type [Scalar::Internal::Util::SorbetRuntimeSupport, Object]
915
+ #
916
+ # @return [Object]
917
+ def to_sorbet_type(type)
918
+ case type
919
+ in Scalar::Internal::Util::SorbetRuntimeSupport
920
+ type.to_sorbet_type
921
+ in Class | Module
922
+ type
923
+ in true | false
924
+ T::Boolean
925
+ else
926
+ type.class
927
+ end
928
+ end
929
+ end
930
+ end
931
+
932
+ extend Scalar::Internal::Util::SorbetRuntimeSupport
933
+
934
+ define_sorbet_constant!(:ParsedUri) do
935
+ T.type_alias do
936
+ {
937
+ scheme: T.nilable(String),
938
+ host: T.nilable(String),
939
+ port: T.nilable(Integer),
940
+ path: T.nilable(String),
941
+ query: T::Hash[String, T::Array[String]]
942
+ }
943
+ end
944
+ end
945
+
946
+ define_sorbet_constant!(:ServerSentEvent) do
947
+ T.type_alias do
948
+ {
949
+ event: T.nilable(String),
950
+ data: T.nilable(String),
951
+ id: T.nilable(String),
952
+ retry: T.nilable(Integer)
953
+ }
954
+ end
955
+ end
956
+ end
957
+ end
958
+ end