mirascope 1.0.5__py3-none-any.whl → 2.1.1__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 (632) hide show
  1. mirascope/__init__.py +6 -6
  2. mirascope/_stubs.py +384 -0
  3. mirascope/_utils.py +34 -0
  4. mirascope/api/__init__.py +14 -0
  5. mirascope/api/_generated/README.md +207 -0
  6. mirascope/api/_generated/__init__.py +444 -0
  7. mirascope/api/_generated/annotations/__init__.py +33 -0
  8. mirascope/api/_generated/annotations/client.py +506 -0
  9. mirascope/api/_generated/annotations/raw_client.py +1414 -0
  10. mirascope/api/_generated/annotations/types/__init__.py +31 -0
  11. mirascope/api/_generated/annotations/types/annotations_create_request_label.py +5 -0
  12. mirascope/api/_generated/annotations/types/annotations_create_response.py +48 -0
  13. mirascope/api/_generated/annotations/types/annotations_create_response_label.py +5 -0
  14. mirascope/api/_generated/annotations/types/annotations_get_response.py +48 -0
  15. mirascope/api/_generated/annotations/types/annotations_get_response_label.py +5 -0
  16. mirascope/api/_generated/annotations/types/annotations_list_request_label.py +5 -0
  17. mirascope/api/_generated/annotations/types/annotations_list_response.py +21 -0
  18. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item.py +50 -0
  19. mirascope/api/_generated/annotations/types/annotations_list_response_annotations_item_label.py +5 -0
  20. mirascope/api/_generated/annotations/types/annotations_update_request_label.py +5 -0
  21. mirascope/api/_generated/annotations/types/annotations_update_response.py +48 -0
  22. mirascope/api/_generated/annotations/types/annotations_update_response_label.py +5 -0
  23. mirascope/api/_generated/api_keys/__init__.py +17 -0
  24. mirascope/api/_generated/api_keys/client.py +530 -0
  25. mirascope/api/_generated/api_keys/raw_client.py +1236 -0
  26. mirascope/api/_generated/api_keys/types/__init__.py +15 -0
  27. mirascope/api/_generated/api_keys/types/api_keys_create_response.py +28 -0
  28. mirascope/api/_generated/api_keys/types/api_keys_get_response.py +27 -0
  29. mirascope/api/_generated/api_keys/types/api_keys_list_all_for_org_response_item.py +40 -0
  30. mirascope/api/_generated/api_keys/types/api_keys_list_response_item.py +27 -0
  31. mirascope/api/_generated/client.py +211 -0
  32. mirascope/api/_generated/core/__init__.py +52 -0
  33. mirascope/api/_generated/core/api_error.py +23 -0
  34. mirascope/api/_generated/core/client_wrapper.py +46 -0
  35. mirascope/api/_generated/core/datetime_utils.py +28 -0
  36. mirascope/api/_generated/core/file.py +67 -0
  37. mirascope/api/_generated/core/force_multipart.py +16 -0
  38. mirascope/api/_generated/core/http_client.py +543 -0
  39. mirascope/api/_generated/core/http_response.py +55 -0
  40. mirascope/api/_generated/core/jsonable_encoder.py +100 -0
  41. mirascope/api/_generated/core/pydantic_utilities.py +255 -0
  42. mirascope/api/_generated/core/query_encoder.py +58 -0
  43. mirascope/api/_generated/core/remove_none_from_dict.py +11 -0
  44. mirascope/api/_generated/core/request_options.py +35 -0
  45. mirascope/api/_generated/core/serialization.py +276 -0
  46. mirascope/api/_generated/docs/__init__.py +4 -0
  47. mirascope/api/_generated/docs/client.py +91 -0
  48. mirascope/api/_generated/docs/raw_client.py +178 -0
  49. mirascope/api/_generated/environment.py +9 -0
  50. mirascope/api/_generated/environments/__init__.py +23 -0
  51. mirascope/api/_generated/environments/client.py +649 -0
  52. mirascope/api/_generated/environments/raw_client.py +1567 -0
  53. mirascope/api/_generated/environments/types/__init__.py +25 -0
  54. mirascope/api/_generated/environments/types/environments_create_response.py +24 -0
  55. mirascope/api/_generated/environments/types/environments_get_analytics_response.py +60 -0
  56. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_functions_item.py +24 -0
  57. mirascope/api/_generated/environments/types/environments_get_analytics_response_top_models_item.py +22 -0
  58. mirascope/api/_generated/environments/types/environments_get_response.py +24 -0
  59. mirascope/api/_generated/environments/types/environments_list_response_item.py +24 -0
  60. mirascope/api/_generated/environments/types/environments_update_response.py +24 -0
  61. mirascope/api/_generated/errors/__init__.py +25 -0
  62. mirascope/api/_generated/errors/bad_request_error.py +14 -0
  63. mirascope/api/_generated/errors/conflict_error.py +14 -0
  64. mirascope/api/_generated/errors/forbidden_error.py +11 -0
  65. mirascope/api/_generated/errors/internal_server_error.py +10 -0
  66. mirascope/api/_generated/errors/not_found_error.py +11 -0
  67. mirascope/api/_generated/errors/payment_required_error.py +15 -0
  68. mirascope/api/_generated/errors/service_unavailable_error.py +14 -0
  69. mirascope/api/_generated/errors/too_many_requests_error.py +15 -0
  70. mirascope/api/_generated/errors/unauthorized_error.py +11 -0
  71. mirascope/api/_generated/functions/__init__.py +39 -0
  72. mirascope/api/_generated/functions/client.py +647 -0
  73. mirascope/api/_generated/functions/raw_client.py +1890 -0
  74. mirascope/api/_generated/functions/types/__init__.py +53 -0
  75. mirascope/api/_generated/functions/types/functions_create_request_dependencies_value.py +20 -0
  76. mirascope/api/_generated/functions/types/functions_create_response.py +37 -0
  77. mirascope/api/_generated/functions/types/functions_create_response_dependencies_value.py +20 -0
  78. mirascope/api/_generated/functions/types/functions_find_by_hash_response.py +39 -0
  79. mirascope/api/_generated/functions/types/functions_find_by_hash_response_dependencies_value.py +20 -0
  80. mirascope/api/_generated/functions/types/functions_get_by_env_response.py +53 -0
  81. mirascope/api/_generated/functions/types/functions_get_by_env_response_dependencies_value.py +22 -0
  82. mirascope/api/_generated/functions/types/functions_get_response.py +37 -0
  83. mirascope/api/_generated/functions/types/functions_get_response_dependencies_value.py +20 -0
  84. mirascope/api/_generated/functions/types/functions_list_by_env_response.py +25 -0
  85. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item.py +56 -0
  86. mirascope/api/_generated/functions/types/functions_list_by_env_response_functions_item_dependencies_value.py +22 -0
  87. mirascope/api/_generated/functions/types/functions_list_response.py +21 -0
  88. mirascope/api/_generated/functions/types/functions_list_response_functions_item.py +41 -0
  89. mirascope/api/_generated/functions/types/functions_list_response_functions_item_dependencies_value.py +20 -0
  90. mirascope/api/_generated/health/__init__.py +7 -0
  91. mirascope/api/_generated/health/client.py +92 -0
  92. mirascope/api/_generated/health/raw_client.py +175 -0
  93. mirascope/api/_generated/health/types/__init__.py +8 -0
  94. mirascope/api/_generated/health/types/health_check_response.py +22 -0
  95. mirascope/api/_generated/health/types/health_check_response_status.py +5 -0
  96. mirascope/api/_generated/organization_invitations/__init__.py +33 -0
  97. mirascope/api/_generated/organization_invitations/client.py +546 -0
  98. mirascope/api/_generated/organization_invitations/raw_client.py +1519 -0
  99. mirascope/api/_generated/organization_invitations/types/__init__.py +53 -0
  100. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response.py +34 -0
  101. mirascope/api/_generated/organization_invitations/types/organization_invitations_accept_response_role.py +7 -0
  102. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_request_role.py +7 -0
  103. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response.py +48 -0
  104. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_role.py +7 -0
  105. mirascope/api/_generated/organization_invitations/types/organization_invitations_create_response_status.py +7 -0
  106. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response.py +48 -0
  107. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_role.py +7 -0
  108. mirascope/api/_generated/organization_invitations/types/organization_invitations_get_response_status.py +7 -0
  109. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item.py +48 -0
  110. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_role.py +7 -0
  111. mirascope/api/_generated/organization_invitations/types/organization_invitations_list_response_item_status.py +7 -0
  112. mirascope/api/_generated/organization_memberships/__init__.py +19 -0
  113. mirascope/api/_generated/organization_memberships/client.py +302 -0
  114. mirascope/api/_generated/organization_memberships/raw_client.py +736 -0
  115. mirascope/api/_generated/organization_memberships/types/__init__.py +27 -0
  116. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item.py +33 -0
  117. mirascope/api/_generated/organization_memberships/types/organization_memberships_list_response_item_role.py +7 -0
  118. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_request_role.py +7 -0
  119. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response.py +31 -0
  120. mirascope/api/_generated/organization_memberships/types/organization_memberships_update_response_role.py +7 -0
  121. mirascope/api/_generated/organizations/__init__.py +51 -0
  122. mirascope/api/_generated/organizations/client.py +869 -0
  123. mirascope/api/_generated/organizations/raw_client.py +2593 -0
  124. mirascope/api/_generated/organizations/types/__init__.py +71 -0
  125. mirascope/api/_generated/organizations/types/organizations_create_payment_intent_response.py +24 -0
  126. mirascope/api/_generated/organizations/types/organizations_create_response.py +26 -0
  127. mirascope/api/_generated/organizations/types/organizations_create_response_role.py +5 -0
  128. mirascope/api/_generated/organizations/types/organizations_get_response.py +26 -0
  129. mirascope/api/_generated/organizations/types/organizations_get_response_role.py +5 -0
  130. mirascope/api/_generated/organizations/types/organizations_list_response_item.py +26 -0
  131. mirascope/api/_generated/organizations/types/organizations_list_response_item_role.py +5 -0
  132. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_request_target_plan.py +7 -0
  133. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response.py +47 -0
  134. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item.py +33 -0
  135. mirascope/api/_generated/organizations/types/organizations_preview_subscription_change_response_validation_errors_item_resource.py +7 -0
  136. mirascope/api/_generated/organizations/types/organizations_router_balance_response.py +24 -0
  137. mirascope/api/_generated/organizations/types/organizations_subscription_response.py +53 -0
  138. mirascope/api/_generated/organizations/types/organizations_subscription_response_current_plan.py +7 -0
  139. mirascope/api/_generated/organizations/types/organizations_subscription_response_payment_method.py +26 -0
  140. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change.py +34 -0
  141. mirascope/api/_generated/organizations/types/organizations_subscription_response_scheduled_change_target_plan.py +7 -0
  142. mirascope/api/_generated/organizations/types/organizations_update_response.py +26 -0
  143. mirascope/api/_generated/organizations/types/organizations_update_response_role.py +5 -0
  144. mirascope/api/_generated/organizations/types/organizations_update_subscription_request_target_plan.py +7 -0
  145. mirascope/api/_generated/organizations/types/organizations_update_subscription_response.py +35 -0
  146. mirascope/api/_generated/project_memberships/__init__.py +29 -0
  147. mirascope/api/_generated/project_memberships/client.py +528 -0
  148. mirascope/api/_generated/project_memberships/raw_client.py +1278 -0
  149. mirascope/api/_generated/project_memberships/types/__init__.py +33 -0
  150. mirascope/api/_generated/project_memberships/types/project_memberships_create_request_role.py +7 -0
  151. mirascope/api/_generated/project_memberships/types/project_memberships_create_response.py +35 -0
  152. mirascope/api/_generated/project_memberships/types/project_memberships_create_response_role.py +7 -0
  153. mirascope/api/_generated/project_memberships/types/project_memberships_get_response.py +33 -0
  154. mirascope/api/_generated/project_memberships/types/project_memberships_get_response_role.py +7 -0
  155. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item.py +33 -0
  156. mirascope/api/_generated/project_memberships/types/project_memberships_list_response_item_role.py +7 -0
  157. mirascope/api/_generated/project_memberships/types/project_memberships_update_request_role.py +7 -0
  158. mirascope/api/_generated/project_memberships/types/project_memberships_update_response.py +35 -0
  159. mirascope/api/_generated/project_memberships/types/project_memberships_update_response_role.py +7 -0
  160. mirascope/api/_generated/projects/__init__.py +7 -0
  161. mirascope/api/_generated/projects/client.py +428 -0
  162. mirascope/api/_generated/projects/raw_client.py +1302 -0
  163. mirascope/api/_generated/projects/types/__init__.py +10 -0
  164. mirascope/api/_generated/projects/types/projects_create_response.py +25 -0
  165. mirascope/api/_generated/projects/types/projects_get_response.py +25 -0
  166. mirascope/api/_generated/projects/types/projects_list_response_item.py +25 -0
  167. mirascope/api/_generated/projects/types/projects_update_response.py +25 -0
  168. mirascope/api/_generated/reference.md +4987 -0
  169. mirascope/api/_generated/tags/__init__.py +19 -0
  170. mirascope/api/_generated/tags/client.py +504 -0
  171. mirascope/api/_generated/tags/raw_client.py +1288 -0
  172. mirascope/api/_generated/tags/types/__init__.py +17 -0
  173. mirascope/api/_generated/tags/types/tags_create_response.py +41 -0
  174. mirascope/api/_generated/tags/types/tags_get_response.py +41 -0
  175. mirascope/api/_generated/tags/types/tags_list_response.py +23 -0
  176. mirascope/api/_generated/tags/types/tags_list_response_tags_item.py +41 -0
  177. mirascope/api/_generated/tags/types/tags_update_response.py +41 -0
  178. mirascope/api/_generated/token_cost/__init__.py +7 -0
  179. mirascope/api/_generated/token_cost/client.py +160 -0
  180. mirascope/api/_generated/token_cost/raw_client.py +264 -0
  181. mirascope/api/_generated/token_cost/types/__init__.py +8 -0
  182. mirascope/api/_generated/token_cost/types/token_cost_calculate_request_usage.py +54 -0
  183. mirascope/api/_generated/token_cost/types/token_cost_calculate_response.py +52 -0
  184. mirascope/api/_generated/traces/__init__.py +97 -0
  185. mirascope/api/_generated/traces/client.py +1103 -0
  186. mirascope/api/_generated/traces/raw_client.py +2322 -0
  187. mirascope/api/_generated/traces/types/__init__.py +155 -0
  188. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item.py +29 -0
  189. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource.py +27 -0
  190. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item.py +23 -0
  191. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value.py +38 -0
  192. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_array_value.py +19 -0
  193. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value.py +22 -0
  194. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_resource_attributes_item_value_kvlist_value_values_item.py +20 -0
  195. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item.py +29 -0
  196. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope.py +31 -0
  197. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item.py +23 -0
  198. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value.py +38 -0
  199. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_array_value.py +19 -0
  200. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value.py +22 -0
  201. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_scope_attributes_item_value_kvlist_value_values_item.py +22 -0
  202. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item.py +48 -0
  203. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item.py +23 -0
  204. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value.py +38 -0
  205. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_array_value.py +19 -0
  206. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value.py +24 -0
  207. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_attributes_item_value_kvlist_value_values_item.py +22 -0
  208. mirascope/api/_generated/traces/types/traces_create_request_resource_spans_item_scope_spans_item_spans_item_status.py +20 -0
  209. mirascope/api/_generated/traces/types/traces_create_response.py +24 -0
  210. mirascope/api/_generated/traces/types/traces_create_response_partial_success.py +22 -0
  211. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response.py +60 -0
  212. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_functions_item.py +24 -0
  213. mirascope/api/_generated/traces/types/traces_get_analytics_summary_response_top_models_item.py +22 -0
  214. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response.py +33 -0
  215. mirascope/api/_generated/traces/types/traces_get_trace_detail_by_env_response_spans_item.py +88 -0
  216. mirascope/api/_generated/traces/types/traces_get_trace_detail_response.py +33 -0
  217. mirascope/api/_generated/traces/types/traces_get_trace_detail_response_spans_item.py +88 -0
  218. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response.py +25 -0
  219. mirascope/api/_generated/traces/types/traces_list_by_function_hash_response_traces_item.py +44 -0
  220. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item.py +26 -0
  221. mirascope/api/_generated/traces/types/traces_search_by_env_request_attribute_filters_item_operator.py +7 -0
  222. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_by.py +7 -0
  223. mirascope/api/_generated/traces/types/traces_search_by_env_request_sort_order.py +7 -0
  224. mirascope/api/_generated/traces/types/traces_search_by_env_response.py +26 -0
  225. mirascope/api/_generated/traces/types/traces_search_by_env_response_spans_item.py +50 -0
  226. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item.py +26 -0
  227. mirascope/api/_generated/traces/types/traces_search_request_attribute_filters_item_operator.py +7 -0
  228. mirascope/api/_generated/traces/types/traces_search_request_sort_by.py +7 -0
  229. mirascope/api/_generated/traces/types/traces_search_request_sort_order.py +5 -0
  230. mirascope/api/_generated/traces/types/traces_search_response.py +26 -0
  231. mirascope/api/_generated/traces/types/traces_search_response_spans_item.py +50 -0
  232. mirascope/api/_generated/types/__init__.py +85 -0
  233. mirascope/api/_generated/types/already_exists_error.py +22 -0
  234. mirascope/api/_generated/types/already_exists_error_tag.py +5 -0
  235. mirascope/api/_generated/types/bad_request_error_body.py +50 -0
  236. mirascope/api/_generated/types/click_house_error.py +22 -0
  237. mirascope/api/_generated/types/database_error.py +22 -0
  238. mirascope/api/_generated/types/database_error_tag.py +5 -0
  239. mirascope/api/_generated/types/date.py +3 -0
  240. mirascope/api/_generated/types/http_api_decode_error.py +27 -0
  241. mirascope/api/_generated/types/http_api_decode_error_tag.py +5 -0
  242. mirascope/api/_generated/types/immutable_resource_error.py +22 -0
  243. mirascope/api/_generated/types/internal_server_error_body.py +49 -0
  244. mirascope/api/_generated/types/issue.py +38 -0
  245. mirascope/api/_generated/types/issue_tag.py +10 -0
  246. mirascope/api/_generated/types/not_found_error_body.py +22 -0
  247. mirascope/api/_generated/types/not_found_error_tag.py +5 -0
  248. mirascope/api/_generated/types/number_from_string.py +3 -0
  249. mirascope/api/_generated/types/permission_denied_error.py +22 -0
  250. mirascope/api/_generated/types/permission_denied_error_tag.py +5 -0
  251. mirascope/api/_generated/types/plan_limit_exceeded_error.py +32 -0
  252. mirascope/api/_generated/types/plan_limit_exceeded_error_tag.py +7 -0
  253. mirascope/api/_generated/types/pricing_unavailable_error.py +23 -0
  254. mirascope/api/_generated/types/property_key.py +7 -0
  255. mirascope/api/_generated/types/property_key_key.py +25 -0
  256. mirascope/api/_generated/types/property_key_key_tag.py +5 -0
  257. mirascope/api/_generated/types/rate_limit_error.py +31 -0
  258. mirascope/api/_generated/types/rate_limit_error_tag.py +5 -0
  259. mirascope/api/_generated/types/service_unavailable_error_body.py +24 -0
  260. mirascope/api/_generated/types/service_unavailable_error_tag.py +7 -0
  261. mirascope/api/_generated/types/stripe_error.py +20 -0
  262. mirascope/api/_generated/types/subscription_past_due_error.py +31 -0
  263. mirascope/api/_generated/types/subscription_past_due_error_tag.py +7 -0
  264. mirascope/api/_generated/types/unauthorized_error_body.py +21 -0
  265. mirascope/api/_generated/types/unauthorized_error_tag.py +5 -0
  266. mirascope/api/client.py +255 -0
  267. mirascope/api/settings.py +99 -0
  268. mirascope/llm/__init__.py +316 -0
  269. mirascope/llm/calls/__init__.py +17 -0
  270. mirascope/llm/calls/calls.py +348 -0
  271. mirascope/llm/calls/decorator.py +268 -0
  272. mirascope/llm/content/__init__.py +71 -0
  273. mirascope/llm/content/audio.py +173 -0
  274. mirascope/llm/content/document.py +94 -0
  275. mirascope/llm/content/image.py +206 -0
  276. mirascope/llm/content/text.py +47 -0
  277. mirascope/llm/content/thought.py +58 -0
  278. mirascope/llm/content/tool_call.py +69 -0
  279. mirascope/llm/content/tool_output.py +43 -0
  280. mirascope/llm/context/__init__.py +6 -0
  281. mirascope/llm/context/_utils.py +41 -0
  282. mirascope/llm/context/context.py +24 -0
  283. mirascope/llm/exceptions.py +360 -0
  284. mirascope/llm/formatting/__init__.py +39 -0
  285. mirascope/llm/formatting/format.py +291 -0
  286. mirascope/llm/formatting/from_call_args.py +30 -0
  287. mirascope/llm/formatting/output_parser.py +178 -0
  288. mirascope/llm/formatting/partial.py +131 -0
  289. mirascope/llm/formatting/primitives.py +192 -0
  290. mirascope/llm/formatting/types.py +83 -0
  291. mirascope/llm/mcp/__init__.py +5 -0
  292. mirascope/llm/mcp/mcp_client.py +130 -0
  293. mirascope/llm/messages/__init__.py +35 -0
  294. mirascope/llm/messages/_utils.py +34 -0
  295. mirascope/llm/messages/message.py +190 -0
  296. mirascope/llm/models/__init__.py +21 -0
  297. mirascope/llm/models/models.py +1339 -0
  298. mirascope/llm/models/params.py +72 -0
  299. mirascope/llm/models/thinking_config.py +61 -0
  300. mirascope/llm/prompts/__init__.py +34 -0
  301. mirascope/llm/prompts/_utils.py +31 -0
  302. mirascope/llm/prompts/decorator.py +215 -0
  303. mirascope/llm/prompts/prompts.py +484 -0
  304. mirascope/llm/prompts/protocols.py +65 -0
  305. mirascope/llm/providers/__init__.py +65 -0
  306. mirascope/llm/providers/anthropic/__init__.py +11 -0
  307. mirascope/llm/providers/anthropic/_utils/__init__.py +27 -0
  308. mirascope/llm/providers/anthropic/_utils/beta_decode.py +297 -0
  309. mirascope/llm/providers/anthropic/_utils/beta_encode.py +272 -0
  310. mirascope/llm/providers/anthropic/_utils/decode.py +326 -0
  311. mirascope/llm/providers/anthropic/_utils/encode.py +431 -0
  312. mirascope/llm/providers/anthropic/_utils/errors.py +46 -0
  313. mirascope/llm/providers/anthropic/beta_provider.py +338 -0
  314. mirascope/llm/providers/anthropic/model_id.py +23 -0
  315. mirascope/llm/providers/anthropic/model_info.py +87 -0
  316. mirascope/llm/providers/anthropic/provider.py +440 -0
  317. mirascope/llm/providers/base/__init__.py +14 -0
  318. mirascope/llm/providers/base/_utils.py +248 -0
  319. mirascope/llm/providers/base/base_provider.py +1463 -0
  320. mirascope/llm/providers/base/kwargs.py +12 -0
  321. mirascope/llm/providers/google/__init__.py +6 -0
  322. mirascope/llm/providers/google/_utils/__init__.py +17 -0
  323. mirascope/llm/providers/google/_utils/decode.py +357 -0
  324. mirascope/llm/providers/google/_utils/encode.py +418 -0
  325. mirascope/llm/providers/google/_utils/errors.py +50 -0
  326. mirascope/llm/providers/google/message.py +7 -0
  327. mirascope/llm/providers/google/model_id.py +22 -0
  328. mirascope/llm/providers/google/model_info.py +63 -0
  329. mirascope/llm/providers/google/provider.py +456 -0
  330. mirascope/llm/providers/mirascope/__init__.py +5 -0
  331. mirascope/llm/providers/mirascope/_utils.py +73 -0
  332. mirascope/llm/providers/mirascope/provider.py +313 -0
  333. mirascope/llm/providers/mlx/__init__.py +9 -0
  334. mirascope/llm/providers/mlx/_utils.py +141 -0
  335. mirascope/llm/providers/mlx/encoding/__init__.py +8 -0
  336. mirascope/llm/providers/mlx/encoding/base.py +69 -0
  337. mirascope/llm/providers/mlx/encoding/transformers.py +146 -0
  338. mirascope/llm/providers/mlx/mlx.py +242 -0
  339. mirascope/llm/providers/mlx/model_id.py +17 -0
  340. mirascope/llm/providers/mlx/provider.py +416 -0
  341. mirascope/llm/providers/model_id.py +16 -0
  342. mirascope/llm/providers/ollama/__init__.py +7 -0
  343. mirascope/llm/providers/ollama/provider.py +71 -0
  344. mirascope/llm/providers/openai/__init__.py +15 -0
  345. mirascope/llm/providers/openai/_utils/__init__.py +5 -0
  346. mirascope/llm/providers/openai/_utils/errors.py +46 -0
  347. mirascope/llm/providers/openai/completions/__init__.py +7 -0
  348. mirascope/llm/providers/openai/completions/_utils/__init__.py +18 -0
  349. mirascope/llm/providers/openai/completions/_utils/decode.py +252 -0
  350. mirascope/llm/providers/openai/completions/_utils/encode.py +390 -0
  351. mirascope/llm/providers/openai/completions/_utils/feature_info.py +50 -0
  352. mirascope/llm/providers/openai/completions/base_provider.py +522 -0
  353. mirascope/llm/providers/openai/completions/provider.py +28 -0
  354. mirascope/llm/providers/openai/model_id.py +31 -0
  355. mirascope/llm/providers/openai/model_info.py +303 -0
  356. mirascope/llm/providers/openai/provider.py +405 -0
  357. mirascope/llm/providers/openai/responses/__init__.py +5 -0
  358. mirascope/llm/providers/openai/responses/_utils/__init__.py +15 -0
  359. mirascope/llm/providers/openai/responses/_utils/decode.py +289 -0
  360. mirascope/llm/providers/openai/responses/_utils/encode.py +399 -0
  361. mirascope/llm/providers/openai/responses/provider.py +472 -0
  362. mirascope/llm/providers/openrouter/__init__.py +5 -0
  363. mirascope/llm/providers/openrouter/provider.py +67 -0
  364. mirascope/llm/providers/provider_id.py +26 -0
  365. mirascope/llm/providers/provider_registry.py +305 -0
  366. mirascope/llm/providers/together/__init__.py +7 -0
  367. mirascope/llm/providers/together/provider.py +40 -0
  368. mirascope/llm/responses/__init__.py +66 -0
  369. mirascope/llm/responses/_utils.py +146 -0
  370. mirascope/llm/responses/base_response.py +103 -0
  371. mirascope/llm/responses/base_stream_response.py +824 -0
  372. mirascope/llm/responses/finish_reason.py +28 -0
  373. mirascope/llm/responses/response.py +362 -0
  374. mirascope/llm/responses/root_response.py +248 -0
  375. mirascope/llm/responses/stream_response.py +577 -0
  376. mirascope/llm/responses/streams.py +363 -0
  377. mirascope/llm/responses/usage.py +139 -0
  378. mirascope/llm/tools/__init__.py +71 -0
  379. mirascope/llm/tools/_utils.py +34 -0
  380. mirascope/llm/tools/decorator.py +184 -0
  381. mirascope/llm/tools/protocols.py +96 -0
  382. mirascope/llm/tools/provider_tools.py +18 -0
  383. mirascope/llm/tools/tool_schema.py +321 -0
  384. mirascope/llm/tools/toolkit.py +178 -0
  385. mirascope/llm/tools/tools.py +263 -0
  386. mirascope/llm/tools/types.py +112 -0
  387. mirascope/llm/tools/web_search_tool.py +32 -0
  388. mirascope/llm/types/__init__.py +22 -0
  389. mirascope/llm/types/dataclass.py +9 -0
  390. mirascope/llm/types/jsonable.py +44 -0
  391. mirascope/llm/types/type_vars.py +19 -0
  392. mirascope/ops/__init__.py +129 -0
  393. mirascope/ops/_internal/__init__.py +5 -0
  394. mirascope/ops/_internal/closure.py +1172 -0
  395. mirascope/ops/_internal/configuration.py +177 -0
  396. mirascope/ops/_internal/context.py +76 -0
  397. mirascope/ops/_internal/exporters/__init__.py +26 -0
  398. mirascope/ops/_internal/exporters/exporters.py +362 -0
  399. mirascope/ops/_internal/exporters/processors.py +104 -0
  400. mirascope/ops/_internal/exporters/types.py +165 -0
  401. mirascope/ops/_internal/exporters/utils.py +66 -0
  402. mirascope/ops/_internal/instrumentation/__init__.py +28 -0
  403. mirascope/ops/_internal/instrumentation/llm/__init__.py +8 -0
  404. mirascope/ops/_internal/instrumentation/llm/common.py +500 -0
  405. mirascope/ops/_internal/instrumentation/llm/cost.py +190 -0
  406. mirascope/ops/_internal/instrumentation/llm/encode.py +238 -0
  407. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/__init__.py +38 -0
  408. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_input_messages.py +31 -0
  409. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_output_messages.py +38 -0
  410. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/gen_ai_system_instructions.py +18 -0
  411. mirascope/ops/_internal/instrumentation/llm/gen_ai_types/shared.py +100 -0
  412. mirascope/ops/_internal/instrumentation/llm/llm.py +161 -0
  413. mirascope/ops/_internal/instrumentation/llm/model.py +1777 -0
  414. mirascope/ops/_internal/instrumentation/llm/response.py +521 -0
  415. mirascope/ops/_internal/instrumentation/llm/serialize.py +324 -0
  416. mirascope/ops/_internal/instrumentation/providers/__init__.py +29 -0
  417. mirascope/ops/_internal/instrumentation/providers/anthropic.py +78 -0
  418. mirascope/ops/_internal/instrumentation/providers/base.py +179 -0
  419. mirascope/ops/_internal/instrumentation/providers/google_genai.py +85 -0
  420. mirascope/ops/_internal/instrumentation/providers/openai.py +82 -0
  421. mirascope/ops/_internal/propagation.py +198 -0
  422. mirascope/ops/_internal/protocols.py +133 -0
  423. mirascope/ops/_internal/session.py +139 -0
  424. mirascope/ops/_internal/spans.py +232 -0
  425. mirascope/ops/_internal/traced_calls.py +389 -0
  426. mirascope/ops/_internal/traced_functions.py +528 -0
  427. mirascope/ops/_internal/tracing.py +353 -0
  428. mirascope/ops/_internal/types.py +13 -0
  429. mirascope/ops/_internal/utils.py +131 -0
  430. mirascope/ops/_internal/versioned_calls.py +512 -0
  431. mirascope/ops/_internal/versioned_functions.py +357 -0
  432. mirascope/ops/_internal/versioning.py +303 -0
  433. mirascope/ops/exceptions.py +21 -0
  434. mirascope-2.1.1.dist-info/METADATA +231 -0
  435. mirascope-2.1.1.dist-info/RECORD +437 -0
  436. {mirascope-1.0.5.dist-info → mirascope-2.1.1.dist-info}/WHEEL +1 -1
  437. {mirascope-1.0.5.dist-info → mirascope-2.1.1.dist-info}/licenses/LICENSE +1 -1
  438. mirascope/beta/__init__.py +0 -0
  439. mirascope/beta/openai/__init__.py +0 -5
  440. mirascope/beta/openai/parse.py +0 -129
  441. mirascope/beta/rag/__init__.py +0 -24
  442. mirascope/beta/rag/base/__init__.py +0 -22
  443. mirascope/beta/rag/base/chunkers/__init__.py +0 -2
  444. mirascope/beta/rag/base/chunkers/base_chunker.py +0 -37
  445. mirascope/beta/rag/base/chunkers/text_chunker.py +0 -33
  446. mirascope/beta/rag/base/config.py +0 -8
  447. mirascope/beta/rag/base/document.py +0 -11
  448. mirascope/beta/rag/base/embedders.py +0 -35
  449. mirascope/beta/rag/base/embedding_params.py +0 -18
  450. mirascope/beta/rag/base/embedding_response.py +0 -30
  451. mirascope/beta/rag/base/query_results.py +0 -7
  452. mirascope/beta/rag/base/vectorstore_params.py +0 -18
  453. mirascope/beta/rag/base/vectorstores.py +0 -37
  454. mirascope/beta/rag/chroma/__init__.py +0 -11
  455. mirascope/beta/rag/chroma/types.py +0 -57
  456. mirascope/beta/rag/chroma/vectorstores.py +0 -97
  457. mirascope/beta/rag/cohere/__init__.py +0 -11
  458. mirascope/beta/rag/cohere/embedders.py +0 -87
  459. mirascope/beta/rag/cohere/embedding_params.py +0 -29
  460. mirascope/beta/rag/cohere/embedding_response.py +0 -29
  461. mirascope/beta/rag/cohere/py.typed +0 -0
  462. mirascope/beta/rag/openai/__init__.py +0 -11
  463. mirascope/beta/rag/openai/embedders.py +0 -144
  464. mirascope/beta/rag/openai/embedding_params.py +0 -18
  465. mirascope/beta/rag/openai/embedding_response.py +0 -14
  466. mirascope/beta/rag/openai/py.typed +0 -0
  467. mirascope/beta/rag/pinecone/__init__.py +0 -19
  468. mirascope/beta/rag/pinecone/types.py +0 -143
  469. mirascope/beta/rag/pinecone/vectorstores.py +0 -148
  470. mirascope/beta/rag/weaviate/__init__.py +0 -6
  471. mirascope/beta/rag/weaviate/types.py +0 -92
  472. mirascope/beta/rag/weaviate/vectorstores.py +0 -103
  473. mirascope/core/__init__.py +0 -55
  474. mirascope/core/anthropic/__init__.py +0 -21
  475. mirascope/core/anthropic/_call.py +0 -71
  476. mirascope/core/anthropic/_utils/__init__.py +0 -16
  477. mirascope/core/anthropic/_utils/_calculate_cost.py +0 -63
  478. mirascope/core/anthropic/_utils/_convert_message_params.py +0 -54
  479. mirascope/core/anthropic/_utils/_get_json_output.py +0 -34
  480. mirascope/core/anthropic/_utils/_handle_stream.py +0 -89
  481. mirascope/core/anthropic/_utils/_setup_call.py +0 -76
  482. mirascope/core/anthropic/call_params.py +0 -36
  483. mirascope/core/anthropic/call_response.py +0 -158
  484. mirascope/core/anthropic/call_response_chunk.py +0 -104
  485. mirascope/core/anthropic/dynamic_config.py +0 -26
  486. mirascope/core/anthropic/py.typed +0 -0
  487. mirascope/core/anthropic/stream.py +0 -140
  488. mirascope/core/anthropic/tool.py +0 -77
  489. mirascope/core/base/__init__.py +0 -40
  490. mirascope/core/base/_call_factory.py +0 -323
  491. mirascope/core/base/_create.py +0 -167
  492. mirascope/core/base/_extract.py +0 -139
  493. mirascope/core/base/_partial.py +0 -63
  494. mirascope/core/base/_utils/__init__.py +0 -64
  495. mirascope/core/base/_utils/_base_type.py +0 -17
  496. mirascope/core/base/_utils/_convert_base_model_to_base_tool.py +0 -45
  497. mirascope/core/base/_utils/_convert_base_type_to_base_tool.py +0 -24
  498. mirascope/core/base/_utils/_convert_function_to_base_tool.py +0 -126
  499. mirascope/core/base/_utils/_default_tool_docstring.py +0 -6
  500. mirascope/core/base/_utils/_extract_tool_return.py +0 -36
  501. mirascope/core/base/_utils/_format_template.py +0 -29
  502. mirascope/core/base/_utils/_get_audio_type.py +0 -18
  503. mirascope/core/base/_utils/_get_fn_args.py +0 -14
  504. mirascope/core/base/_utils/_get_image_type.py +0 -26
  505. mirascope/core/base/_utils/_get_metadata.py +0 -17
  506. mirascope/core/base/_utils/_get_possible_user_message_param.py +0 -21
  507. mirascope/core/base/_utils/_get_prompt_template.py +0 -25
  508. mirascope/core/base/_utils/_get_template_values.py +0 -52
  509. mirascope/core/base/_utils/_get_template_variables.py +0 -38
  510. mirascope/core/base/_utils/_json_mode_content.py +0 -15
  511. mirascope/core/base/_utils/_parse_content_template.py +0 -157
  512. mirascope/core/base/_utils/_parse_prompt_messages.py +0 -51
  513. mirascope/core/base/_utils/_protocols.py +0 -215
  514. mirascope/core/base/_utils/_setup_call.py +0 -64
  515. mirascope/core/base/_utils/_setup_extract_tool.py +0 -24
  516. mirascope/core/base/call_params.py +0 -6
  517. mirascope/core/base/call_response.py +0 -189
  518. mirascope/core/base/call_response_chunk.py +0 -91
  519. mirascope/core/base/dynamic_config.py +0 -55
  520. mirascope/core/base/message_param.py +0 -61
  521. mirascope/core/base/metadata.py +0 -13
  522. mirascope/core/base/prompt.py +0 -415
  523. mirascope/core/base/stream.py +0 -365
  524. mirascope/core/base/structured_stream.py +0 -251
  525. mirascope/core/base/tool.py +0 -126
  526. mirascope/core/base/toolkit.py +0 -146
  527. mirascope/core/cohere/__init__.py +0 -21
  528. mirascope/core/cohere/_call.py +0 -71
  529. mirascope/core/cohere/_utils/__init__.py +0 -16
  530. mirascope/core/cohere/_utils/_calculate_cost.py +0 -39
  531. mirascope/core/cohere/_utils/_convert_message_params.py +0 -31
  532. mirascope/core/cohere/_utils/_get_json_output.py +0 -31
  533. mirascope/core/cohere/_utils/_handle_stream.py +0 -33
  534. mirascope/core/cohere/_utils/_setup_call.py +0 -89
  535. mirascope/core/cohere/call_params.py +0 -57
  536. mirascope/core/cohere/call_response.py +0 -167
  537. mirascope/core/cohere/call_response_chunk.py +0 -101
  538. mirascope/core/cohere/dynamic_config.py +0 -24
  539. mirascope/core/cohere/py.typed +0 -0
  540. mirascope/core/cohere/stream.py +0 -113
  541. mirascope/core/cohere/tool.py +0 -92
  542. mirascope/core/gemini/__init__.py +0 -21
  543. mirascope/core/gemini/_call.py +0 -71
  544. mirascope/core/gemini/_utils/__init__.py +0 -16
  545. mirascope/core/gemini/_utils/_calculate_cost.py +0 -8
  546. mirascope/core/gemini/_utils/_convert_message_params.py +0 -74
  547. mirascope/core/gemini/_utils/_get_json_output.py +0 -33
  548. mirascope/core/gemini/_utils/_handle_stream.py +0 -33
  549. mirascope/core/gemini/_utils/_setup_call.py +0 -68
  550. mirascope/core/gemini/call_params.py +0 -28
  551. mirascope/core/gemini/call_response.py +0 -173
  552. mirascope/core/gemini/call_response_chunk.py +0 -85
  553. mirascope/core/gemini/dynamic_config.py +0 -26
  554. mirascope/core/gemini/stream.py +0 -121
  555. mirascope/core/gemini/tool.py +0 -104
  556. mirascope/core/groq/__init__.py +0 -21
  557. mirascope/core/groq/_call.py +0 -71
  558. mirascope/core/groq/_utils/__init__.py +0 -16
  559. mirascope/core/groq/_utils/_calculate_cost.py +0 -68
  560. mirascope/core/groq/_utils/_convert_message_params.py +0 -23
  561. mirascope/core/groq/_utils/_get_json_output.py +0 -27
  562. mirascope/core/groq/_utils/_handle_stream.py +0 -121
  563. mirascope/core/groq/_utils/_setup_call.py +0 -67
  564. mirascope/core/groq/call_params.py +0 -51
  565. mirascope/core/groq/call_response.py +0 -160
  566. mirascope/core/groq/call_response_chunk.py +0 -89
  567. mirascope/core/groq/dynamic_config.py +0 -26
  568. mirascope/core/groq/py.typed +0 -0
  569. mirascope/core/groq/stream.py +0 -136
  570. mirascope/core/groq/tool.py +0 -79
  571. mirascope/core/litellm/__init__.py +0 -6
  572. mirascope/core/litellm/_call.py +0 -73
  573. mirascope/core/litellm/_utils/__init__.py +0 -5
  574. mirascope/core/litellm/_utils/_setup_call.py +0 -46
  575. mirascope/core/litellm/py.typed +0 -0
  576. mirascope/core/mistral/__init__.py +0 -21
  577. mirascope/core/mistral/_call.py +0 -69
  578. mirascope/core/mistral/_utils/__init__.py +0 -16
  579. mirascope/core/mistral/_utils/_calculate_cost.py +0 -47
  580. mirascope/core/mistral/_utils/_convert_message_params.py +0 -23
  581. mirascope/core/mistral/_utils/_get_json_output.py +0 -28
  582. mirascope/core/mistral/_utils/_handle_stream.py +0 -121
  583. mirascope/core/mistral/_utils/_setup_call.py +0 -86
  584. mirascope/core/mistral/call_params.py +0 -36
  585. mirascope/core/mistral/call_response.py +0 -156
  586. mirascope/core/mistral/call_response_chunk.py +0 -84
  587. mirascope/core/mistral/dynamic_config.py +0 -24
  588. mirascope/core/mistral/py.typed +0 -0
  589. mirascope/core/mistral/stream.py +0 -117
  590. mirascope/core/mistral/tool.py +0 -77
  591. mirascope/core/openai/__init__.py +0 -21
  592. mirascope/core/openai/_call.py +0 -71
  593. mirascope/core/openai/_utils/__init__.py +0 -16
  594. mirascope/core/openai/_utils/_calculate_cost.py +0 -110
  595. mirascope/core/openai/_utils/_convert_message_params.py +0 -53
  596. mirascope/core/openai/_utils/_get_json_output.py +0 -27
  597. mirascope/core/openai/_utils/_handle_stream.py +0 -125
  598. mirascope/core/openai/_utils/_setup_call.py +0 -62
  599. mirascope/core/openai/call_params.py +0 -54
  600. mirascope/core/openai/call_response.py +0 -162
  601. mirascope/core/openai/call_response_chunk.py +0 -90
  602. mirascope/core/openai/dynamic_config.py +0 -26
  603. mirascope/core/openai/py.typed +0 -0
  604. mirascope/core/openai/stream.py +0 -148
  605. mirascope/core/openai/tool.py +0 -79
  606. mirascope/core/py.typed +0 -0
  607. mirascope/integrations/__init__.py +0 -20
  608. mirascope/integrations/_middleware_factory.py +0 -277
  609. mirascope/integrations/langfuse/__init__.py +0 -3
  610. mirascope/integrations/langfuse/_utils.py +0 -114
  611. mirascope/integrations/langfuse/_with_langfuse.py +0 -71
  612. mirascope/integrations/logfire/__init__.py +0 -3
  613. mirascope/integrations/logfire/_utils.py +0 -188
  614. mirascope/integrations/logfire/_with_logfire.py +0 -60
  615. mirascope/integrations/otel/__init__.py +0 -5
  616. mirascope/integrations/otel/_utils.py +0 -268
  617. mirascope/integrations/otel/_with_hyperdx.py +0 -61
  618. mirascope/integrations/otel/_with_otel.py +0 -60
  619. mirascope/integrations/tenacity.py +0 -50
  620. mirascope/py.typed +0 -0
  621. mirascope/v0/__init__.py +0 -43
  622. mirascope/v0/anthropic.py +0 -54
  623. mirascope/v0/base/__init__.py +0 -12
  624. mirascope/v0/base/calls.py +0 -118
  625. mirascope/v0/base/extractors.py +0 -122
  626. mirascope/v0/base/ops_utils.py +0 -207
  627. mirascope/v0/base/prompts.py +0 -48
  628. mirascope/v0/base/types.py +0 -14
  629. mirascope/v0/base/utils.py +0 -21
  630. mirascope/v0/openai.py +0 -54
  631. mirascope-1.0.5.dist-info/METADATA +0 -519
  632. mirascope-1.0.5.dist-info/RECORD +0 -198
@@ -0,0 +1,1236 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from json.decoder import JSONDecodeError
5
+
6
+ from ..core.api_error import ApiError
7
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ..core.http_response import AsyncHttpResponse, HttpResponse
9
+ from ..core.jsonable_encoder import jsonable_encoder
10
+ from ..core.pydantic_utilities import parse_obj_as
11
+ from ..core.request_options import RequestOptions
12
+ from ..errors.bad_request_error import BadRequestError
13
+ from ..errors.conflict_error import ConflictError
14
+ from ..errors.forbidden_error import ForbiddenError
15
+ from ..errors.internal_server_error import InternalServerError
16
+ from ..errors.not_found_error import NotFoundError
17
+ from ..errors.service_unavailable_error import ServiceUnavailableError
18
+ from ..errors.too_many_requests_error import TooManyRequestsError
19
+ from ..types.not_found_error_body import NotFoundErrorBody
20
+ from ..types.permission_denied_error import PermissionDeniedError
21
+ from ..types.rate_limit_error import RateLimitError
22
+ from .types.api_keys_create_response import ApiKeysCreateResponse
23
+ from .types.api_keys_get_response import ApiKeysGetResponse
24
+ from .types.api_keys_list_all_for_org_response_item import (
25
+ ApiKeysListAllForOrgResponseItem,
26
+ )
27
+ from .types.api_keys_list_response_item import ApiKeysListResponseItem
28
+
29
+ # this is used as the default value for optional parameters
30
+ OMIT = typing.cast(typing.Any, ...)
31
+
32
+
33
+ class RawApiKeysClient:
34
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
35
+ self._client_wrapper = client_wrapper
36
+
37
+ def api_keys_list_all_for_org(
38
+ self,
39
+ organization_id: str,
40
+ *,
41
+ request_options: typing.Optional[RequestOptions] = None,
42
+ ) -> HttpResponse[typing.List[ApiKeysListAllForOrgResponseItem]]:
43
+ """
44
+ Parameters
45
+ ----------
46
+ organization_id : str
47
+
48
+ request_options : typing.Optional[RequestOptions]
49
+ Request-specific configuration.
50
+
51
+ Returns
52
+ -------
53
+ HttpResponse[typing.List[ApiKeysListAllForOrgResponseItem]]
54
+ Success
55
+ """
56
+ _response = self._client_wrapper.httpx_client.request(
57
+ f"organizations/{jsonable_encoder(organization_id)}/api-keys",
58
+ method="GET",
59
+ request_options=request_options,
60
+ )
61
+ try:
62
+ if 200 <= _response.status_code < 300:
63
+ _data = typing.cast(
64
+ typing.List[ApiKeysListAllForOrgResponseItem],
65
+ parse_obj_as(
66
+ type_=typing.List[ApiKeysListAllForOrgResponseItem], # type: ignore
67
+ object_=_response.json(),
68
+ ),
69
+ )
70
+ return HttpResponse(response=_response, data=_data)
71
+ if _response.status_code == 400:
72
+ raise BadRequestError(
73
+ headers=dict(_response.headers),
74
+ body=typing.cast(
75
+ typing.Optional[typing.Any],
76
+ parse_obj_as(
77
+ type_=typing.Optional[typing.Any], # type: ignore
78
+ object_=_response.json(),
79
+ ),
80
+ ),
81
+ )
82
+ if _response.status_code == 404:
83
+ raise NotFoundError(
84
+ headers=dict(_response.headers),
85
+ body=typing.cast(
86
+ NotFoundErrorBody,
87
+ parse_obj_as(
88
+ type_=NotFoundErrorBody, # type: ignore
89
+ object_=_response.json(),
90
+ ),
91
+ ),
92
+ )
93
+ if _response.status_code == 429:
94
+ raise TooManyRequestsError(
95
+ headers=dict(_response.headers),
96
+ body=typing.cast(
97
+ RateLimitError,
98
+ parse_obj_as(
99
+ type_=RateLimitError, # type: ignore
100
+ object_=_response.json(),
101
+ ),
102
+ ),
103
+ )
104
+ if _response.status_code == 500:
105
+ raise InternalServerError(
106
+ headers=dict(_response.headers),
107
+ body=typing.cast(
108
+ typing.Optional[typing.Any],
109
+ parse_obj_as(
110
+ type_=typing.Optional[typing.Any], # type: ignore
111
+ object_=_response.json(),
112
+ ),
113
+ ),
114
+ )
115
+ if _response.status_code == 503:
116
+ raise ServiceUnavailableError(
117
+ headers=dict(_response.headers),
118
+ body=typing.cast(
119
+ typing.Optional[typing.Any],
120
+ parse_obj_as(
121
+ type_=typing.Optional[typing.Any], # type: ignore
122
+ object_=_response.json(),
123
+ ),
124
+ ),
125
+ )
126
+ _response_json = _response.json()
127
+ except JSONDecodeError:
128
+ raise ApiError(
129
+ status_code=_response.status_code,
130
+ headers=dict(_response.headers),
131
+ body=_response.text,
132
+ )
133
+ raise ApiError(
134
+ status_code=_response.status_code,
135
+ headers=dict(_response.headers),
136
+ body=_response_json,
137
+ )
138
+
139
+ def api_keys_list(
140
+ self,
141
+ organization_id: str,
142
+ project_id: str,
143
+ environment_id: str,
144
+ *,
145
+ request_options: typing.Optional[RequestOptions] = None,
146
+ ) -> HttpResponse[typing.List[ApiKeysListResponseItem]]:
147
+ """
148
+ Parameters
149
+ ----------
150
+ organization_id : str
151
+
152
+ project_id : str
153
+
154
+ environment_id : str
155
+
156
+ request_options : typing.Optional[RequestOptions]
157
+ Request-specific configuration.
158
+
159
+ Returns
160
+ -------
161
+ HttpResponse[typing.List[ApiKeysListResponseItem]]
162
+ Success
163
+ """
164
+ _response = self._client_wrapper.httpx_client.request(
165
+ f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/api-keys",
166
+ method="GET",
167
+ request_options=request_options,
168
+ )
169
+ try:
170
+ if 200 <= _response.status_code < 300:
171
+ _data = typing.cast(
172
+ typing.List[ApiKeysListResponseItem],
173
+ parse_obj_as(
174
+ type_=typing.List[ApiKeysListResponseItem], # type: ignore
175
+ object_=_response.json(),
176
+ ),
177
+ )
178
+ return HttpResponse(response=_response, data=_data)
179
+ if _response.status_code == 400:
180
+ raise BadRequestError(
181
+ headers=dict(_response.headers),
182
+ body=typing.cast(
183
+ typing.Optional[typing.Any],
184
+ parse_obj_as(
185
+ type_=typing.Optional[typing.Any], # type: ignore
186
+ object_=_response.json(),
187
+ ),
188
+ ),
189
+ )
190
+ if _response.status_code == 403:
191
+ raise ForbiddenError(
192
+ headers=dict(_response.headers),
193
+ body=typing.cast(
194
+ PermissionDeniedError,
195
+ parse_obj_as(
196
+ type_=PermissionDeniedError, # type: ignore
197
+ object_=_response.json(),
198
+ ),
199
+ ),
200
+ )
201
+ if _response.status_code == 404:
202
+ raise NotFoundError(
203
+ headers=dict(_response.headers),
204
+ body=typing.cast(
205
+ NotFoundErrorBody,
206
+ parse_obj_as(
207
+ type_=NotFoundErrorBody, # type: ignore
208
+ object_=_response.json(),
209
+ ),
210
+ ),
211
+ )
212
+ if _response.status_code == 429:
213
+ raise TooManyRequestsError(
214
+ headers=dict(_response.headers),
215
+ body=typing.cast(
216
+ RateLimitError,
217
+ parse_obj_as(
218
+ type_=RateLimitError, # type: ignore
219
+ object_=_response.json(),
220
+ ),
221
+ ),
222
+ )
223
+ if _response.status_code == 500:
224
+ raise InternalServerError(
225
+ headers=dict(_response.headers),
226
+ body=typing.cast(
227
+ typing.Optional[typing.Any],
228
+ parse_obj_as(
229
+ type_=typing.Optional[typing.Any], # type: ignore
230
+ object_=_response.json(),
231
+ ),
232
+ ),
233
+ )
234
+ if _response.status_code == 503:
235
+ raise ServiceUnavailableError(
236
+ headers=dict(_response.headers),
237
+ body=typing.cast(
238
+ typing.Optional[typing.Any],
239
+ parse_obj_as(
240
+ type_=typing.Optional[typing.Any], # type: ignore
241
+ object_=_response.json(),
242
+ ),
243
+ ),
244
+ )
245
+ _response_json = _response.json()
246
+ except JSONDecodeError:
247
+ raise ApiError(
248
+ status_code=_response.status_code,
249
+ headers=dict(_response.headers),
250
+ body=_response.text,
251
+ )
252
+ raise ApiError(
253
+ status_code=_response.status_code,
254
+ headers=dict(_response.headers),
255
+ body=_response_json,
256
+ )
257
+
258
+ def api_keys_create(
259
+ self,
260
+ organization_id: str,
261
+ project_id: str,
262
+ environment_id: str,
263
+ *,
264
+ name: str,
265
+ request_options: typing.Optional[RequestOptions] = None,
266
+ ) -> HttpResponse[ApiKeysCreateResponse]:
267
+ """
268
+ Parameters
269
+ ----------
270
+ organization_id : str
271
+
272
+ project_id : str
273
+
274
+ environment_id : str
275
+
276
+ name : str
277
+ a string at most 100 character(s) long
278
+
279
+ request_options : typing.Optional[RequestOptions]
280
+ Request-specific configuration.
281
+
282
+ Returns
283
+ -------
284
+ HttpResponse[ApiKeysCreateResponse]
285
+ Success
286
+ """
287
+ _response = self._client_wrapper.httpx_client.request(
288
+ f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/api-keys",
289
+ method="POST",
290
+ json={
291
+ "name": name,
292
+ },
293
+ headers={
294
+ "content-type": "application/json",
295
+ },
296
+ request_options=request_options,
297
+ omit=OMIT,
298
+ )
299
+ try:
300
+ if 200 <= _response.status_code < 300:
301
+ _data = typing.cast(
302
+ ApiKeysCreateResponse,
303
+ parse_obj_as(
304
+ type_=ApiKeysCreateResponse, # type: ignore
305
+ object_=_response.json(),
306
+ ),
307
+ )
308
+ return HttpResponse(response=_response, data=_data)
309
+ if _response.status_code == 400:
310
+ raise BadRequestError(
311
+ headers=dict(_response.headers),
312
+ body=typing.cast(
313
+ typing.Optional[typing.Any],
314
+ parse_obj_as(
315
+ type_=typing.Optional[typing.Any], # type: ignore
316
+ object_=_response.json(),
317
+ ),
318
+ ),
319
+ )
320
+ if _response.status_code == 403:
321
+ raise ForbiddenError(
322
+ headers=dict(_response.headers),
323
+ body=typing.cast(
324
+ PermissionDeniedError,
325
+ parse_obj_as(
326
+ type_=PermissionDeniedError, # type: ignore
327
+ object_=_response.json(),
328
+ ),
329
+ ),
330
+ )
331
+ if _response.status_code == 404:
332
+ raise NotFoundError(
333
+ headers=dict(_response.headers),
334
+ body=typing.cast(
335
+ NotFoundErrorBody,
336
+ parse_obj_as(
337
+ type_=NotFoundErrorBody, # type: ignore
338
+ object_=_response.json(),
339
+ ),
340
+ ),
341
+ )
342
+ if _response.status_code == 409:
343
+ raise ConflictError(
344
+ headers=dict(_response.headers),
345
+ body=typing.cast(
346
+ typing.Optional[typing.Any],
347
+ parse_obj_as(
348
+ type_=typing.Optional[typing.Any], # type: ignore
349
+ object_=_response.json(),
350
+ ),
351
+ ),
352
+ )
353
+ if _response.status_code == 429:
354
+ raise TooManyRequestsError(
355
+ headers=dict(_response.headers),
356
+ body=typing.cast(
357
+ RateLimitError,
358
+ parse_obj_as(
359
+ type_=RateLimitError, # type: ignore
360
+ object_=_response.json(),
361
+ ),
362
+ ),
363
+ )
364
+ if _response.status_code == 500:
365
+ raise InternalServerError(
366
+ headers=dict(_response.headers),
367
+ body=typing.cast(
368
+ typing.Optional[typing.Any],
369
+ parse_obj_as(
370
+ type_=typing.Optional[typing.Any], # type: ignore
371
+ object_=_response.json(),
372
+ ),
373
+ ),
374
+ )
375
+ if _response.status_code == 503:
376
+ raise ServiceUnavailableError(
377
+ headers=dict(_response.headers),
378
+ body=typing.cast(
379
+ typing.Optional[typing.Any],
380
+ parse_obj_as(
381
+ type_=typing.Optional[typing.Any], # type: ignore
382
+ object_=_response.json(),
383
+ ),
384
+ ),
385
+ )
386
+ _response_json = _response.json()
387
+ except JSONDecodeError:
388
+ raise ApiError(
389
+ status_code=_response.status_code,
390
+ headers=dict(_response.headers),
391
+ body=_response.text,
392
+ )
393
+ raise ApiError(
394
+ status_code=_response.status_code,
395
+ headers=dict(_response.headers),
396
+ body=_response_json,
397
+ )
398
+
399
+ def api_keys_get(
400
+ self,
401
+ organization_id: str,
402
+ project_id: str,
403
+ environment_id: str,
404
+ api_key_id: str,
405
+ *,
406
+ request_options: typing.Optional[RequestOptions] = None,
407
+ ) -> HttpResponse[ApiKeysGetResponse]:
408
+ """
409
+ Parameters
410
+ ----------
411
+ organization_id : str
412
+
413
+ project_id : str
414
+
415
+ environment_id : str
416
+
417
+ api_key_id : str
418
+
419
+ request_options : typing.Optional[RequestOptions]
420
+ Request-specific configuration.
421
+
422
+ Returns
423
+ -------
424
+ HttpResponse[ApiKeysGetResponse]
425
+ Success
426
+ """
427
+ _response = self._client_wrapper.httpx_client.request(
428
+ f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/api-keys/{jsonable_encoder(api_key_id)}",
429
+ method="GET",
430
+ request_options=request_options,
431
+ )
432
+ try:
433
+ if 200 <= _response.status_code < 300:
434
+ _data = typing.cast(
435
+ ApiKeysGetResponse,
436
+ parse_obj_as(
437
+ type_=ApiKeysGetResponse, # type: ignore
438
+ object_=_response.json(),
439
+ ),
440
+ )
441
+ return HttpResponse(response=_response, data=_data)
442
+ if _response.status_code == 400:
443
+ raise BadRequestError(
444
+ headers=dict(_response.headers),
445
+ body=typing.cast(
446
+ typing.Optional[typing.Any],
447
+ parse_obj_as(
448
+ type_=typing.Optional[typing.Any], # type: ignore
449
+ object_=_response.json(),
450
+ ),
451
+ ),
452
+ )
453
+ if _response.status_code == 403:
454
+ raise ForbiddenError(
455
+ headers=dict(_response.headers),
456
+ body=typing.cast(
457
+ PermissionDeniedError,
458
+ parse_obj_as(
459
+ type_=PermissionDeniedError, # type: ignore
460
+ object_=_response.json(),
461
+ ),
462
+ ),
463
+ )
464
+ if _response.status_code == 404:
465
+ raise NotFoundError(
466
+ headers=dict(_response.headers),
467
+ body=typing.cast(
468
+ NotFoundErrorBody,
469
+ parse_obj_as(
470
+ type_=NotFoundErrorBody, # type: ignore
471
+ object_=_response.json(),
472
+ ),
473
+ ),
474
+ )
475
+ if _response.status_code == 429:
476
+ raise TooManyRequestsError(
477
+ headers=dict(_response.headers),
478
+ body=typing.cast(
479
+ RateLimitError,
480
+ parse_obj_as(
481
+ type_=RateLimitError, # type: ignore
482
+ object_=_response.json(),
483
+ ),
484
+ ),
485
+ )
486
+ if _response.status_code == 500:
487
+ raise InternalServerError(
488
+ headers=dict(_response.headers),
489
+ body=typing.cast(
490
+ typing.Optional[typing.Any],
491
+ parse_obj_as(
492
+ type_=typing.Optional[typing.Any], # type: ignore
493
+ object_=_response.json(),
494
+ ),
495
+ ),
496
+ )
497
+ if _response.status_code == 503:
498
+ raise ServiceUnavailableError(
499
+ headers=dict(_response.headers),
500
+ body=typing.cast(
501
+ typing.Optional[typing.Any],
502
+ parse_obj_as(
503
+ type_=typing.Optional[typing.Any], # type: ignore
504
+ object_=_response.json(),
505
+ ),
506
+ ),
507
+ )
508
+ _response_json = _response.json()
509
+ except JSONDecodeError:
510
+ raise ApiError(
511
+ status_code=_response.status_code,
512
+ headers=dict(_response.headers),
513
+ body=_response.text,
514
+ )
515
+ raise ApiError(
516
+ status_code=_response.status_code,
517
+ headers=dict(_response.headers),
518
+ body=_response_json,
519
+ )
520
+
521
+ def api_keys_delete(
522
+ self,
523
+ organization_id: str,
524
+ project_id: str,
525
+ environment_id: str,
526
+ api_key_id: str,
527
+ *,
528
+ request_options: typing.Optional[RequestOptions] = None,
529
+ ) -> HttpResponse[None]:
530
+ """
531
+ Parameters
532
+ ----------
533
+ organization_id : str
534
+
535
+ project_id : str
536
+
537
+ environment_id : str
538
+
539
+ api_key_id : str
540
+
541
+ request_options : typing.Optional[RequestOptions]
542
+ Request-specific configuration.
543
+
544
+ Returns
545
+ -------
546
+ HttpResponse[None]
547
+ """
548
+ _response = self._client_wrapper.httpx_client.request(
549
+ f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/api-keys/{jsonable_encoder(api_key_id)}",
550
+ method="DELETE",
551
+ request_options=request_options,
552
+ )
553
+ try:
554
+ if 200 <= _response.status_code < 300:
555
+ return HttpResponse(response=_response, data=None)
556
+ if _response.status_code == 400:
557
+ raise BadRequestError(
558
+ headers=dict(_response.headers),
559
+ body=typing.cast(
560
+ typing.Optional[typing.Any],
561
+ parse_obj_as(
562
+ type_=typing.Optional[typing.Any], # type: ignore
563
+ object_=_response.json(),
564
+ ),
565
+ ),
566
+ )
567
+ if _response.status_code == 403:
568
+ raise ForbiddenError(
569
+ headers=dict(_response.headers),
570
+ body=typing.cast(
571
+ PermissionDeniedError,
572
+ parse_obj_as(
573
+ type_=PermissionDeniedError, # type: ignore
574
+ object_=_response.json(),
575
+ ),
576
+ ),
577
+ )
578
+ if _response.status_code == 404:
579
+ raise NotFoundError(
580
+ headers=dict(_response.headers),
581
+ body=typing.cast(
582
+ NotFoundErrorBody,
583
+ parse_obj_as(
584
+ type_=NotFoundErrorBody, # type: ignore
585
+ object_=_response.json(),
586
+ ),
587
+ ),
588
+ )
589
+ if _response.status_code == 429:
590
+ raise TooManyRequestsError(
591
+ headers=dict(_response.headers),
592
+ body=typing.cast(
593
+ RateLimitError,
594
+ parse_obj_as(
595
+ type_=RateLimitError, # type: ignore
596
+ object_=_response.json(),
597
+ ),
598
+ ),
599
+ )
600
+ if _response.status_code == 500:
601
+ raise InternalServerError(
602
+ headers=dict(_response.headers),
603
+ body=typing.cast(
604
+ typing.Optional[typing.Any],
605
+ parse_obj_as(
606
+ type_=typing.Optional[typing.Any], # type: ignore
607
+ object_=_response.json(),
608
+ ),
609
+ ),
610
+ )
611
+ if _response.status_code == 503:
612
+ raise ServiceUnavailableError(
613
+ headers=dict(_response.headers),
614
+ body=typing.cast(
615
+ typing.Optional[typing.Any],
616
+ parse_obj_as(
617
+ type_=typing.Optional[typing.Any], # type: ignore
618
+ object_=_response.json(),
619
+ ),
620
+ ),
621
+ )
622
+ _response_json = _response.json()
623
+ except JSONDecodeError:
624
+ raise ApiError(
625
+ status_code=_response.status_code,
626
+ headers=dict(_response.headers),
627
+ body=_response.text,
628
+ )
629
+ raise ApiError(
630
+ status_code=_response.status_code,
631
+ headers=dict(_response.headers),
632
+ body=_response_json,
633
+ )
634
+
635
+
636
+ class AsyncRawApiKeysClient:
637
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
638
+ self._client_wrapper = client_wrapper
639
+
640
+ async def api_keys_list_all_for_org(
641
+ self,
642
+ organization_id: str,
643
+ *,
644
+ request_options: typing.Optional[RequestOptions] = None,
645
+ ) -> AsyncHttpResponse[typing.List[ApiKeysListAllForOrgResponseItem]]:
646
+ """
647
+ Parameters
648
+ ----------
649
+ organization_id : str
650
+
651
+ request_options : typing.Optional[RequestOptions]
652
+ Request-specific configuration.
653
+
654
+ Returns
655
+ -------
656
+ AsyncHttpResponse[typing.List[ApiKeysListAllForOrgResponseItem]]
657
+ Success
658
+ """
659
+ _response = await self._client_wrapper.httpx_client.request(
660
+ f"organizations/{jsonable_encoder(organization_id)}/api-keys",
661
+ method="GET",
662
+ request_options=request_options,
663
+ )
664
+ try:
665
+ if 200 <= _response.status_code < 300:
666
+ _data = typing.cast(
667
+ typing.List[ApiKeysListAllForOrgResponseItem],
668
+ parse_obj_as(
669
+ type_=typing.List[ApiKeysListAllForOrgResponseItem], # type: ignore
670
+ object_=_response.json(),
671
+ ),
672
+ )
673
+ return AsyncHttpResponse(response=_response, data=_data)
674
+ if _response.status_code == 400:
675
+ raise BadRequestError(
676
+ headers=dict(_response.headers),
677
+ body=typing.cast(
678
+ typing.Optional[typing.Any],
679
+ parse_obj_as(
680
+ type_=typing.Optional[typing.Any], # type: ignore
681
+ object_=_response.json(),
682
+ ),
683
+ ),
684
+ )
685
+ if _response.status_code == 404:
686
+ raise NotFoundError(
687
+ headers=dict(_response.headers),
688
+ body=typing.cast(
689
+ NotFoundErrorBody,
690
+ parse_obj_as(
691
+ type_=NotFoundErrorBody, # type: ignore
692
+ object_=_response.json(),
693
+ ),
694
+ ),
695
+ )
696
+ if _response.status_code == 429:
697
+ raise TooManyRequestsError(
698
+ headers=dict(_response.headers),
699
+ body=typing.cast(
700
+ RateLimitError,
701
+ parse_obj_as(
702
+ type_=RateLimitError, # type: ignore
703
+ object_=_response.json(),
704
+ ),
705
+ ),
706
+ )
707
+ if _response.status_code == 500:
708
+ raise InternalServerError(
709
+ headers=dict(_response.headers),
710
+ body=typing.cast(
711
+ typing.Optional[typing.Any],
712
+ parse_obj_as(
713
+ type_=typing.Optional[typing.Any], # type: ignore
714
+ object_=_response.json(),
715
+ ),
716
+ ),
717
+ )
718
+ if _response.status_code == 503:
719
+ raise ServiceUnavailableError(
720
+ headers=dict(_response.headers),
721
+ body=typing.cast(
722
+ typing.Optional[typing.Any],
723
+ parse_obj_as(
724
+ type_=typing.Optional[typing.Any], # type: ignore
725
+ object_=_response.json(),
726
+ ),
727
+ ),
728
+ )
729
+ _response_json = _response.json()
730
+ except JSONDecodeError:
731
+ raise ApiError(
732
+ status_code=_response.status_code,
733
+ headers=dict(_response.headers),
734
+ body=_response.text,
735
+ )
736
+ raise ApiError(
737
+ status_code=_response.status_code,
738
+ headers=dict(_response.headers),
739
+ body=_response_json,
740
+ )
741
+
742
+ async def api_keys_list(
743
+ self,
744
+ organization_id: str,
745
+ project_id: str,
746
+ environment_id: str,
747
+ *,
748
+ request_options: typing.Optional[RequestOptions] = None,
749
+ ) -> AsyncHttpResponse[typing.List[ApiKeysListResponseItem]]:
750
+ """
751
+ Parameters
752
+ ----------
753
+ organization_id : str
754
+
755
+ project_id : str
756
+
757
+ environment_id : str
758
+
759
+ request_options : typing.Optional[RequestOptions]
760
+ Request-specific configuration.
761
+
762
+ Returns
763
+ -------
764
+ AsyncHttpResponse[typing.List[ApiKeysListResponseItem]]
765
+ Success
766
+ """
767
+ _response = await self._client_wrapper.httpx_client.request(
768
+ f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/api-keys",
769
+ method="GET",
770
+ request_options=request_options,
771
+ )
772
+ try:
773
+ if 200 <= _response.status_code < 300:
774
+ _data = typing.cast(
775
+ typing.List[ApiKeysListResponseItem],
776
+ parse_obj_as(
777
+ type_=typing.List[ApiKeysListResponseItem], # type: ignore
778
+ object_=_response.json(),
779
+ ),
780
+ )
781
+ return AsyncHttpResponse(response=_response, data=_data)
782
+ if _response.status_code == 400:
783
+ raise BadRequestError(
784
+ headers=dict(_response.headers),
785
+ body=typing.cast(
786
+ typing.Optional[typing.Any],
787
+ parse_obj_as(
788
+ type_=typing.Optional[typing.Any], # type: ignore
789
+ object_=_response.json(),
790
+ ),
791
+ ),
792
+ )
793
+ if _response.status_code == 403:
794
+ raise ForbiddenError(
795
+ headers=dict(_response.headers),
796
+ body=typing.cast(
797
+ PermissionDeniedError,
798
+ parse_obj_as(
799
+ type_=PermissionDeniedError, # type: ignore
800
+ object_=_response.json(),
801
+ ),
802
+ ),
803
+ )
804
+ if _response.status_code == 404:
805
+ raise NotFoundError(
806
+ headers=dict(_response.headers),
807
+ body=typing.cast(
808
+ NotFoundErrorBody,
809
+ parse_obj_as(
810
+ type_=NotFoundErrorBody, # type: ignore
811
+ object_=_response.json(),
812
+ ),
813
+ ),
814
+ )
815
+ if _response.status_code == 429:
816
+ raise TooManyRequestsError(
817
+ headers=dict(_response.headers),
818
+ body=typing.cast(
819
+ RateLimitError,
820
+ parse_obj_as(
821
+ type_=RateLimitError, # type: ignore
822
+ object_=_response.json(),
823
+ ),
824
+ ),
825
+ )
826
+ if _response.status_code == 500:
827
+ raise InternalServerError(
828
+ headers=dict(_response.headers),
829
+ body=typing.cast(
830
+ typing.Optional[typing.Any],
831
+ parse_obj_as(
832
+ type_=typing.Optional[typing.Any], # type: ignore
833
+ object_=_response.json(),
834
+ ),
835
+ ),
836
+ )
837
+ if _response.status_code == 503:
838
+ raise ServiceUnavailableError(
839
+ headers=dict(_response.headers),
840
+ body=typing.cast(
841
+ typing.Optional[typing.Any],
842
+ parse_obj_as(
843
+ type_=typing.Optional[typing.Any], # type: ignore
844
+ object_=_response.json(),
845
+ ),
846
+ ),
847
+ )
848
+ _response_json = _response.json()
849
+ except JSONDecodeError:
850
+ raise ApiError(
851
+ status_code=_response.status_code,
852
+ headers=dict(_response.headers),
853
+ body=_response.text,
854
+ )
855
+ raise ApiError(
856
+ status_code=_response.status_code,
857
+ headers=dict(_response.headers),
858
+ body=_response_json,
859
+ )
860
+
861
+ async def api_keys_create(
862
+ self,
863
+ organization_id: str,
864
+ project_id: str,
865
+ environment_id: str,
866
+ *,
867
+ name: str,
868
+ request_options: typing.Optional[RequestOptions] = None,
869
+ ) -> AsyncHttpResponse[ApiKeysCreateResponse]:
870
+ """
871
+ Parameters
872
+ ----------
873
+ organization_id : str
874
+
875
+ project_id : str
876
+
877
+ environment_id : str
878
+
879
+ name : str
880
+ a string at most 100 character(s) long
881
+
882
+ request_options : typing.Optional[RequestOptions]
883
+ Request-specific configuration.
884
+
885
+ Returns
886
+ -------
887
+ AsyncHttpResponse[ApiKeysCreateResponse]
888
+ Success
889
+ """
890
+ _response = await self._client_wrapper.httpx_client.request(
891
+ f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/api-keys",
892
+ method="POST",
893
+ json={
894
+ "name": name,
895
+ },
896
+ headers={
897
+ "content-type": "application/json",
898
+ },
899
+ request_options=request_options,
900
+ omit=OMIT,
901
+ )
902
+ try:
903
+ if 200 <= _response.status_code < 300:
904
+ _data = typing.cast(
905
+ ApiKeysCreateResponse,
906
+ parse_obj_as(
907
+ type_=ApiKeysCreateResponse, # type: ignore
908
+ object_=_response.json(),
909
+ ),
910
+ )
911
+ return AsyncHttpResponse(response=_response, data=_data)
912
+ if _response.status_code == 400:
913
+ raise BadRequestError(
914
+ headers=dict(_response.headers),
915
+ body=typing.cast(
916
+ typing.Optional[typing.Any],
917
+ parse_obj_as(
918
+ type_=typing.Optional[typing.Any], # type: ignore
919
+ object_=_response.json(),
920
+ ),
921
+ ),
922
+ )
923
+ if _response.status_code == 403:
924
+ raise ForbiddenError(
925
+ headers=dict(_response.headers),
926
+ body=typing.cast(
927
+ PermissionDeniedError,
928
+ parse_obj_as(
929
+ type_=PermissionDeniedError, # type: ignore
930
+ object_=_response.json(),
931
+ ),
932
+ ),
933
+ )
934
+ if _response.status_code == 404:
935
+ raise NotFoundError(
936
+ headers=dict(_response.headers),
937
+ body=typing.cast(
938
+ NotFoundErrorBody,
939
+ parse_obj_as(
940
+ type_=NotFoundErrorBody, # type: ignore
941
+ object_=_response.json(),
942
+ ),
943
+ ),
944
+ )
945
+ if _response.status_code == 409:
946
+ raise ConflictError(
947
+ headers=dict(_response.headers),
948
+ body=typing.cast(
949
+ typing.Optional[typing.Any],
950
+ parse_obj_as(
951
+ type_=typing.Optional[typing.Any], # type: ignore
952
+ object_=_response.json(),
953
+ ),
954
+ ),
955
+ )
956
+ if _response.status_code == 429:
957
+ raise TooManyRequestsError(
958
+ headers=dict(_response.headers),
959
+ body=typing.cast(
960
+ RateLimitError,
961
+ parse_obj_as(
962
+ type_=RateLimitError, # type: ignore
963
+ object_=_response.json(),
964
+ ),
965
+ ),
966
+ )
967
+ if _response.status_code == 500:
968
+ raise InternalServerError(
969
+ headers=dict(_response.headers),
970
+ body=typing.cast(
971
+ typing.Optional[typing.Any],
972
+ parse_obj_as(
973
+ type_=typing.Optional[typing.Any], # type: ignore
974
+ object_=_response.json(),
975
+ ),
976
+ ),
977
+ )
978
+ if _response.status_code == 503:
979
+ raise ServiceUnavailableError(
980
+ headers=dict(_response.headers),
981
+ body=typing.cast(
982
+ typing.Optional[typing.Any],
983
+ parse_obj_as(
984
+ type_=typing.Optional[typing.Any], # type: ignore
985
+ object_=_response.json(),
986
+ ),
987
+ ),
988
+ )
989
+ _response_json = _response.json()
990
+ except JSONDecodeError:
991
+ raise ApiError(
992
+ status_code=_response.status_code,
993
+ headers=dict(_response.headers),
994
+ body=_response.text,
995
+ )
996
+ raise ApiError(
997
+ status_code=_response.status_code,
998
+ headers=dict(_response.headers),
999
+ body=_response_json,
1000
+ )
1001
+
1002
+ async def api_keys_get(
1003
+ self,
1004
+ organization_id: str,
1005
+ project_id: str,
1006
+ environment_id: str,
1007
+ api_key_id: str,
1008
+ *,
1009
+ request_options: typing.Optional[RequestOptions] = None,
1010
+ ) -> AsyncHttpResponse[ApiKeysGetResponse]:
1011
+ """
1012
+ Parameters
1013
+ ----------
1014
+ organization_id : str
1015
+
1016
+ project_id : str
1017
+
1018
+ environment_id : str
1019
+
1020
+ api_key_id : str
1021
+
1022
+ request_options : typing.Optional[RequestOptions]
1023
+ Request-specific configuration.
1024
+
1025
+ Returns
1026
+ -------
1027
+ AsyncHttpResponse[ApiKeysGetResponse]
1028
+ Success
1029
+ """
1030
+ _response = await self._client_wrapper.httpx_client.request(
1031
+ f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/api-keys/{jsonable_encoder(api_key_id)}",
1032
+ method="GET",
1033
+ request_options=request_options,
1034
+ )
1035
+ try:
1036
+ if 200 <= _response.status_code < 300:
1037
+ _data = typing.cast(
1038
+ ApiKeysGetResponse,
1039
+ parse_obj_as(
1040
+ type_=ApiKeysGetResponse, # type: ignore
1041
+ object_=_response.json(),
1042
+ ),
1043
+ )
1044
+ return AsyncHttpResponse(response=_response, data=_data)
1045
+ if _response.status_code == 400:
1046
+ raise BadRequestError(
1047
+ headers=dict(_response.headers),
1048
+ body=typing.cast(
1049
+ typing.Optional[typing.Any],
1050
+ parse_obj_as(
1051
+ type_=typing.Optional[typing.Any], # type: ignore
1052
+ object_=_response.json(),
1053
+ ),
1054
+ ),
1055
+ )
1056
+ if _response.status_code == 403:
1057
+ raise ForbiddenError(
1058
+ headers=dict(_response.headers),
1059
+ body=typing.cast(
1060
+ PermissionDeniedError,
1061
+ parse_obj_as(
1062
+ type_=PermissionDeniedError, # type: ignore
1063
+ object_=_response.json(),
1064
+ ),
1065
+ ),
1066
+ )
1067
+ if _response.status_code == 404:
1068
+ raise NotFoundError(
1069
+ headers=dict(_response.headers),
1070
+ body=typing.cast(
1071
+ NotFoundErrorBody,
1072
+ parse_obj_as(
1073
+ type_=NotFoundErrorBody, # type: ignore
1074
+ object_=_response.json(),
1075
+ ),
1076
+ ),
1077
+ )
1078
+ if _response.status_code == 429:
1079
+ raise TooManyRequestsError(
1080
+ headers=dict(_response.headers),
1081
+ body=typing.cast(
1082
+ RateLimitError,
1083
+ parse_obj_as(
1084
+ type_=RateLimitError, # type: ignore
1085
+ object_=_response.json(),
1086
+ ),
1087
+ ),
1088
+ )
1089
+ if _response.status_code == 500:
1090
+ raise InternalServerError(
1091
+ headers=dict(_response.headers),
1092
+ body=typing.cast(
1093
+ typing.Optional[typing.Any],
1094
+ parse_obj_as(
1095
+ type_=typing.Optional[typing.Any], # type: ignore
1096
+ object_=_response.json(),
1097
+ ),
1098
+ ),
1099
+ )
1100
+ if _response.status_code == 503:
1101
+ raise ServiceUnavailableError(
1102
+ headers=dict(_response.headers),
1103
+ body=typing.cast(
1104
+ typing.Optional[typing.Any],
1105
+ parse_obj_as(
1106
+ type_=typing.Optional[typing.Any], # type: ignore
1107
+ object_=_response.json(),
1108
+ ),
1109
+ ),
1110
+ )
1111
+ _response_json = _response.json()
1112
+ except JSONDecodeError:
1113
+ raise ApiError(
1114
+ status_code=_response.status_code,
1115
+ headers=dict(_response.headers),
1116
+ body=_response.text,
1117
+ )
1118
+ raise ApiError(
1119
+ status_code=_response.status_code,
1120
+ headers=dict(_response.headers),
1121
+ body=_response_json,
1122
+ )
1123
+
1124
+ async def api_keys_delete(
1125
+ self,
1126
+ organization_id: str,
1127
+ project_id: str,
1128
+ environment_id: str,
1129
+ api_key_id: str,
1130
+ *,
1131
+ request_options: typing.Optional[RequestOptions] = None,
1132
+ ) -> AsyncHttpResponse[None]:
1133
+ """
1134
+ Parameters
1135
+ ----------
1136
+ organization_id : str
1137
+
1138
+ project_id : str
1139
+
1140
+ environment_id : str
1141
+
1142
+ api_key_id : str
1143
+
1144
+ request_options : typing.Optional[RequestOptions]
1145
+ Request-specific configuration.
1146
+
1147
+ Returns
1148
+ -------
1149
+ AsyncHttpResponse[None]
1150
+ """
1151
+ _response = await self._client_wrapper.httpx_client.request(
1152
+ f"organizations/{jsonable_encoder(organization_id)}/projects/{jsonable_encoder(project_id)}/environments/{jsonable_encoder(environment_id)}/api-keys/{jsonable_encoder(api_key_id)}",
1153
+ method="DELETE",
1154
+ request_options=request_options,
1155
+ )
1156
+ try:
1157
+ if 200 <= _response.status_code < 300:
1158
+ return AsyncHttpResponse(response=_response, data=None)
1159
+ if _response.status_code == 400:
1160
+ raise BadRequestError(
1161
+ headers=dict(_response.headers),
1162
+ body=typing.cast(
1163
+ typing.Optional[typing.Any],
1164
+ parse_obj_as(
1165
+ type_=typing.Optional[typing.Any], # type: ignore
1166
+ object_=_response.json(),
1167
+ ),
1168
+ ),
1169
+ )
1170
+ if _response.status_code == 403:
1171
+ raise ForbiddenError(
1172
+ headers=dict(_response.headers),
1173
+ body=typing.cast(
1174
+ PermissionDeniedError,
1175
+ parse_obj_as(
1176
+ type_=PermissionDeniedError, # type: ignore
1177
+ object_=_response.json(),
1178
+ ),
1179
+ ),
1180
+ )
1181
+ if _response.status_code == 404:
1182
+ raise NotFoundError(
1183
+ headers=dict(_response.headers),
1184
+ body=typing.cast(
1185
+ NotFoundErrorBody,
1186
+ parse_obj_as(
1187
+ type_=NotFoundErrorBody, # type: ignore
1188
+ object_=_response.json(),
1189
+ ),
1190
+ ),
1191
+ )
1192
+ if _response.status_code == 429:
1193
+ raise TooManyRequestsError(
1194
+ headers=dict(_response.headers),
1195
+ body=typing.cast(
1196
+ RateLimitError,
1197
+ parse_obj_as(
1198
+ type_=RateLimitError, # type: ignore
1199
+ object_=_response.json(),
1200
+ ),
1201
+ ),
1202
+ )
1203
+ if _response.status_code == 500:
1204
+ raise InternalServerError(
1205
+ headers=dict(_response.headers),
1206
+ body=typing.cast(
1207
+ typing.Optional[typing.Any],
1208
+ parse_obj_as(
1209
+ type_=typing.Optional[typing.Any], # type: ignore
1210
+ object_=_response.json(),
1211
+ ),
1212
+ ),
1213
+ )
1214
+ if _response.status_code == 503:
1215
+ raise ServiceUnavailableError(
1216
+ headers=dict(_response.headers),
1217
+ body=typing.cast(
1218
+ typing.Optional[typing.Any],
1219
+ parse_obj_as(
1220
+ type_=typing.Optional[typing.Any], # type: ignore
1221
+ object_=_response.json(),
1222
+ ),
1223
+ ),
1224
+ )
1225
+ _response_json = _response.json()
1226
+ except JSONDecodeError:
1227
+ raise ApiError(
1228
+ status_code=_response.status_code,
1229
+ headers=dict(_response.headers),
1230
+ body=_response.text,
1231
+ )
1232
+ raise ApiError(
1233
+ status_code=_response.status_code,
1234
+ headers=dict(_response.headers),
1235
+ body=_response_json,
1236
+ )