moolabs 0.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1417) hide show
  1. moolabs/__init__.py +1487 -0
  2. moolabs/_dx_attribution_context.py +213 -0
  3. moolabs/_dx_attribution_db_time.py +2126 -0
  4. moolabs/_dx_attribution_db_time_transport.py +173 -0
  5. moolabs/_dx_attribution_delta.py +142 -0
  6. moolabs/_dx_attribution_deposits.py +552 -0
  7. moolabs/_dx_attribution_instrument.py +416 -0
  8. moolabs/_dx_attribution_middleware.py +541 -0
  9. moolabs/_dx_attribution_propagate.py +509 -0
  10. moolabs/_dx_attribution_signal_transport.py +232 -0
  11. moolabs/_dx_attribution_signals.py +927 -0
  12. moolabs/_dx_buffer.py +429 -0
  13. moolabs/_dx_client.py +726 -0
  14. moolabs/_dx_exceptions.py +84 -0
  15. moolabs/_dx_namespaces.py +1780 -0
  16. moolabs/_dx_pagination.py +131 -0
  17. moolabs/_dx_routing.py +276 -0
  18. moolabs/_dx_urls.py +629 -0
  19. moolabs/_dx_webhooks.py +82 -0
  20. moolabs/api/__init__.py +121 -0
  21. moolabs/api/account_team_api.py +1444 -0
  22. moolabs/api/accounts_api.py +4950 -0
  23. moolabs/api/acute_analytics_api.py +5750 -0
  24. moolabs/api/acute_integrations_api.py +3449 -0
  25. moolabs/api/admin_api.py +3347 -0
  26. moolabs/api/alerts_api.py +1626 -0
  27. moolabs/api/allocation_rules_api.py +1720 -0
  28. moolabs/api/analytics_api.py +3204 -0
  29. moolabs/api/app_custom_invoicing_api.py +952 -0
  30. moolabs/api/app_stripe_api.py +958 -0
  31. moolabs/api/apps_api.py +3064 -0
  32. moolabs/api/arc_admin_api.py +8773 -0
  33. moolabs/api/arc_communications_api.py +1991 -0
  34. moolabs/api/arc_portal_api.py +1737 -0
  35. moolabs/api/arc_webhooks_api.py +2087 -0
  36. moolabs/api/attribution_allocation_api.py +2345 -0
  37. moolabs/api/attribution_api.py +1717 -0
  38. moolabs/api/attribution_customer_keys_api.py +600 -0
  39. moolabs/api/attribution_db_time_api.py +918 -0
  40. moolabs/api/attribution_opencost_api.py +1372 -0
  41. moolabs/api/attribution_readouts_api.py +393 -0
  42. moolabs/api/attribution_signals_api.py +315 -0
  43. moolabs/api/auto_topup_api.py +3095 -0
  44. moolabs/api/batch_api.py +6714 -0
  45. moolabs/api/billing_api.py +300 -0
  46. moolabs/api/bom_api.py +2769 -0
  47. moolabs/api/budgets_api.py +2112 -0
  48. moolabs/api/buyer_quotes_api.py +2007 -0
  49. moolabs/api/cases_api.py +5075 -0
  50. moolabs/api/cash_credits_api.py +1548 -0
  51. moolabs/api/chat_api.py +3101 -0
  52. moolabs/api/clause_packs_api.py +2785 -0
  53. moolabs/api/cloud_billing_api.py +1747 -0
  54. moolabs/api/contract_editor_api.py +3384 -0
  55. moolabs/api/cost_events_api.py +1732 -0
  56. moolabs/api/credit_memos_api.py +3478 -0
  57. moolabs/api/customers_api.py +3931 -0
  58. moolabs/api/dashboard_api.py +771 -0
  59. moolabs/api/debug_api.py +300 -0
  60. moolabs/api/default_api.py +526 -0
  61. moolabs/api/disputes_api.py +3586 -0
  62. moolabs/api/dunning_templates_api.py +8737 -0
  63. moolabs/api/email_provider_api.py +526 -0
  64. moolabs/api/entitlements_api.py +9846 -0
  65. moolabs/api/escalations_api.py +2541 -0
  66. moolabs/api/events_api.py +1125 -0
  67. moolabs/api/fx_rates_api.py +1452 -0
  68. moolabs/api/governance_api.py +4402 -0
  69. moolabs/api/grants_api.py +1370 -0
  70. moolabs/api/handoffs_api.py +2138 -0
  71. moolabs/api/health_api.py +281 -0
  72. moolabs/api/homepage_api.py +305 -0
  73. moolabs/api/integrations_api.py +3374 -0
  74. moolabs/api/internal_api.py +7145 -0
  75. moolabs/api/internal_credit_memos_api.py +914 -0
  76. moolabs/api/internal_grants_api.py +1000 -0
  77. moolabs/api/internal_period_settlements_api.py +657 -0
  78. moolabs/api/internal_plan_pricing_api.py +326 -0
  79. moolabs/api/internal_subscriptions_api.py +326 -0
  80. moolabs/api/ledger_api.py +1483 -0
  81. moolabs/api/lookup_information_api.py +587 -0
  82. moolabs/api/mapping_rules_api.py +1782 -0
  83. moolabs/api/mappings_api.py +632 -0
  84. moolabs/api/margin_simulation_api.py +595 -0
  85. moolabs/api/margins_api.py +2301 -0
  86. moolabs/api/meter_billing_api.py +7419 -0
  87. moolabs/api/meter_portal_api.py +1368 -0
  88. moolabs/api/meter_subscriptions_api.py +4358 -0
  89. moolabs/api/meters_api.py +3707 -0
  90. moolabs/api/monitoring_api.py +561 -0
  91. moolabs/api/moolabs_api.py +1182 -0
  92. moolabs/api/moometer_proxy_api.py +1357 -0
  93. moolabs/api/netsuite_sync_api.py +2180 -0
  94. moolabs/api/notes_api.py +1425 -0
  95. moolabs/api/notifications_api.py +4490 -0
  96. moolabs/api/ops_api.py +315 -0
  97. moolabs/api/outbox_api.py +653 -0
  98. moolabs/api/payments_api.py +2889 -0
  99. moolabs/api/performance_api.py +2471 -0
  100. moolabs/api/plan_pricing_api.py +3409 -0
  101. moolabs/api/plans_api.py +2197 -0
  102. moolabs/api/pools_api.py +2358 -0
  103. moolabs/api/portal_api.py +1103 -0
  104. moolabs/api/product_catalog_api.py +7644 -0
  105. moolabs/api/promises_api.py +2814 -0
  106. moolabs/api/quote_agents_api.py +2036 -0
  107. moolabs/api/quote_contract_webhooks_api.py +327 -0
  108. moolabs/api/quote_contracts_api.py +2551 -0
  109. moolabs/api/quote_sessions_api.py +881 -0
  110. moolabs/api/quotes_api.py +12880 -0
  111. moolabs/api/rate_cards_api.py +578 -0
  112. moolabs/api/rate_catalog_api.py +2120 -0
  113. moolabs/api/rate_schedules_api.py +1224 -0
  114. moolabs/api/rating_api.py +617 -0
  115. moolabs/api/reconstruction_api.py +1281 -0
  116. moolabs/api/remittances_api.py +1521 -0
  117. moolabs/api/reports_api.py +722 -0
  118. moolabs/api/rollover_api.py +313 -0
  119. moolabs/api/sdk_ingest_api.py +312 -0
  120. moolabs/api/snapshots_api.py +1218 -0
  121. moolabs/api/state_projection_api.py +961 -0
  122. moolabs/api/steering_api.py +1862 -0
  123. moolabs/api/subjects_api.py +1160 -0
  124. moolabs/api/subscription_overrides_api.py +579 -0
  125. moolabs/api/subscriptions_api.py +1200 -0
  126. moolabs/api/tasks_api.py +1509 -0
  127. moolabs/api/tenant_api.py +22395 -0
  128. moolabs/api/tenant_config_api.py +282 -0
  129. moolabs/api/topup_api.py +632 -0
  130. moolabs/api/unpriced_api.py +933 -0
  131. moolabs/api/usage_api.py +999 -0
  132. moolabs/api/variance_api.py +1327 -0
  133. moolabs/api/wallets_api.py +3787 -0
  134. moolabs/api/webhooks_api.py +281 -0
  135. moolabs/api/well_known_api.py +278 -0
  136. moolabs/api/word_addin_api.py +623 -0
  137. moolabs/api_client.py +797 -0
  138. moolabs/api_response.py +21 -0
  139. moolabs/configuration.py +620 -0
  140. moolabs/exceptions.py +199 -0
  141. moolabs/models/__init__.py +1286 -0
  142. moolabs/models/account_create.py +114 -0
  143. moolabs/models/account_filter_options_response.py +97 -0
  144. moolabs/models/account_invoice_list_response.py +95 -0
  145. moolabs/models/account_list_item_response.py +152 -0
  146. moolabs/models/account_list_item_response_subsidiaries_inner.py +152 -0
  147. moolabs/models/account_list_response.py +101 -0
  148. moolabs/models/account_overview_bucket_response.py +91 -0
  149. moolabs/models/account_overview_response.py +106 -0
  150. moolabs/models/account_response.py +132 -0
  151. moolabs/models/account_segment_row.py +91 -0
  152. moolabs/models/account_subsidiary_option.py +89 -0
  153. moolabs/models/account_summary.py +97 -0
  154. moolabs/models/account_team_member_in.py +97 -0
  155. moolabs/models/account_team_member_out.py +101 -0
  156. moolabs/models/account_team_member_patch.py +97 -0
  157. moolabs/models/account_team_role.py +39 -0
  158. moolabs/models/account_update.py +106 -0
  159. moolabs/models/action_kind.py +45 -0
  160. moolabs/models/acute_approve_request.py +87 -0
  161. moolabs/models/acute_demo_seed_lifecycle_request.py +103 -0
  162. moolabs/models/acute_http_validation_error.py +95 -0
  163. moolabs/models/acute_validation_error.py +99 -0
  164. moolabs/models/add_contract_participant_request.py +107 -0
  165. moolabs/models/addon.py +178 -0
  166. moolabs/models/addon1.py +115 -0
  167. moolabs/models/addon2.py +95 -0
  168. moolabs/models/addon_create.py +123 -0
  169. moolabs/models/addon_instance_type.py +37 -0
  170. moolabs/models/addon_order_by.py +40 -0
  171. moolabs/models/addon_paginated_response.py +101 -0
  172. moolabs/models/addon_replace_update.py +105 -0
  173. moolabs/models/addon_status.py +38 -0
  174. moolabs/models/address.py +110 -0
  175. moolabs/models/adjusted_total.py +152 -0
  176. moolabs/models/adjustment_amount.py +152 -0
  177. moolabs/models/aging_bucket_detail.py +93 -0
  178. moolabs/models/aging_report_response.py +106 -0
  179. moolabs/models/alb_bootstrap_response.py +89 -0
  180. moolabs/models/alb_connector_config.py +128 -0
  181. moolabs/models/alb_connector_health_response.py +112 -0
  182. moolabs/models/alb_connector_list_response.py +138 -0
  183. moolabs/models/alb_load_balancer_config.py +111 -0
  184. moolabs/models/alb_route_rule.py +107 -0
  185. moolabs/models/alb_source_config.py +123 -0
  186. moolabs/models/alb_source_health_response.py +93 -0
  187. moolabs/models/alb_status_patch_request.py +94 -0
  188. moolabs/models/alb_status_patch_response.py +94 -0
  189. moolabs/models/alb_target_group_config.py +103 -0
  190. moolabs/models/algorithm_breakdown_item.py +89 -0
  191. moolabs/models/algorithm_info.py +93 -0
  192. moolabs/models/alignment.py +87 -0
  193. moolabs/models/allocate_credits_request.py +95 -0
  194. moolabs/models/allocation_coverage_response.py +157 -0
  195. moolabs/models/allocation_fact_page_response.py +97 -0
  196. moolabs/models/allocation_fact_response.py +146 -0
  197. moolabs/models/allocation_key.py +91 -0
  198. moolabs/models/allocation_rule_create.py +114 -0
  199. moolabs/models/allocation_rule_response.py +113 -0
  200. moolabs/models/allocation_rule_update.py +111 -0
  201. moolabs/models/allocation_run_create_request.py +100 -0
  202. moolabs/models/allocation_run_create_response.py +142 -0
  203. moolabs/models/allocation_run_open_cost_snapshot_response.py +120 -0
  204. moolabs/models/allocation_run_readout_response.py +110 -0
  205. moolabs/models/allocation_run_response.py +133 -0
  206. moolabs/models/allocations_list_response.py +97 -0
  207. moolabs/models/amount.py +152 -0
  208. moolabs/models/amount1.py +152 -0
  209. moolabs/models/api_key_item.py +103 -0
  210. moolabs/models/app.py +164 -0
  211. moolabs/models/app_api_v1_auto_topup_router_trigger_response.py +108 -0
  212. moolabs/models/app_api_v1_fx_rates_router_fx_rate_response.py +104 -0
  213. moolabs/models/app_api_v1_integrations_netsuite_sync_router_trigger_response.py +89 -0
  214. moolabs/models/app_api_v1_internal_subscription_sync_schemas_subscription_sync_request.py +123 -0
  215. moolabs/models/app_api_v1_portal_router_create_portal_token_request.py +92 -0
  216. moolabs/models/app_api_v1_quotes_schemas_quote_settings_response.py +91 -0
  217. moolabs/models/app_api_v1_quotes_schemas_update_quote_settings_request.py +89 -0
  218. moolabs/models/app_api_v1_subscriptions_router_subscription_sync_request.py +125 -0
  219. moolabs/models/app_api_v1_tenant_access_router_create_portal_token_request.py +101 -0
  220. moolabs/models/app_api_v1_tenant_fx_rates_router_fx_rate_response.py +93 -0
  221. moolabs/models/app_api_v1_tenant_quote_settings_router_quote_settings_response.py +89 -0
  222. moolabs/models/app_api_v1_tenant_quote_settings_router_update_quote_settings_request.py +87 -0
  223. moolabs/models/app_capability.py +102 -0
  224. moolabs/models/app_capability_type.py +40 -0
  225. moolabs/models/app_paginated_response.py +101 -0
  226. moolabs/models/app_reference.py +95 -0
  227. moolabs/models/app_replace_update.py +164 -0
  228. moolabs/models/app_status.py +37 -0
  229. moolabs/models/app_type.py +38 -0
  230. moolabs/models/apply_credit_request.py +92 -0
  231. moolabs/models/approval_action_request.py +88 -0
  232. moolabs/models/approval_action_response.py +95 -0
  233. moolabs/models/approval_policy_response.py +91 -0
  234. moolabs/models/approve_request.py +88 -0
  235. moolabs/models/approve_response.py +91 -0
  236. moolabs/models/approver_in.py +95 -0
  237. moolabs/models/arc_demo_seed_lifecycle_request.py +103 -0
  238. moolabs/models/arc_dunning_permission_grant_request.py +96 -0
  239. moolabs/models/arc_dunning_permission_revoke_request.py +90 -0
  240. moolabs/models/arc_dunning_template_admin_grant_request.py +90 -0
  241. moolabs/models/arc_dunning_template_admin_grant_response.py +115 -0
  242. moolabs/models/arc_dunning_template_admin_revoke_request.py +88 -0
  243. moolabs/models/arc_dunning_template_admin_user_dto.py +107 -0
  244. moolabs/models/arc_dunning_template_admin_user_grant_dto.py +105 -0
  245. moolabs/models/arc_dunning_template_admin_users_response.py +110 -0
  246. moolabs/models/arc_http_validation_error.py +95 -0
  247. moolabs/models/arc_transaction_request.py +110 -0
  248. moolabs/models/arc_validation_error.py +99 -0
  249. moolabs/models/ask_customer_request.py +97 -0
  250. moolabs/models/ask_customer_response.py +91 -0
  251. moolabs/models/ask_moo_redline_request.py +98 -0
  252. moolabs/models/attribution_allocation_error_detail.py +94 -0
  253. moolabs/models/attribution_allocation_error_response.py +91 -0
  254. moolabs/models/attribution_completeness_response.py +97 -0
  255. moolabs/models/attribution_signal_conflict_detail.py +94 -0
  256. moolabs/models/attribution_signal_conflict_response.py +91 -0
  257. moolabs/models/attribution_signal_delta.py +98 -0
  258. moolabs/models/attribution_signal_request.py +123 -0
  259. moolabs/models/attribution_signal_response.py +96 -0
  260. moolabs/models/audit_request.py +91 -0
  261. moolabs/models/auto_topup_activity_item.py +104 -0
  262. moolabs/models/auto_topup_activity_response.py +97 -0
  263. moolabs/models/auto_topup_rule_response.py +114 -0
  264. moolabs/models/availability.py +43 -0
  265. moolabs/models/backfill_candidate.py +97 -0
  266. moolabs/models/backfill_malformed_disputes_request.py +87 -0
  267. moolabs/models/backfill_malformed_disputes_response.py +101 -0
  268. moolabs/models/balance_history_window.py +99 -0
  269. moolabs/models/basis.py +37 -0
  270. moolabs/models/batch_ingest_request.py +96 -0
  271. moolabs/models/batch_wallet_state_request.py +105 -0
  272. moolabs/models/batch_wallet_state_request_item.py +91 -0
  273. moolabs/models/batch_wallet_state_response.py +97 -0
  274. moolabs/models/batch_wallets_by_subjects_request.py +88 -0
  275. moolabs/models/billing_customer_profile.py +109 -0
  276. moolabs/models/billing_discount_percentage.py +100 -0
  277. moolabs/models/billing_discount_reason.py +164 -0
  278. moolabs/models/billing_discount_usage.py +107 -0
  279. moolabs/models/billing_discounts.py +97 -0
  280. moolabs/models/billing_import_request.py +105 -0
  281. moolabs/models/billing_import_response.py +104 -0
  282. moolabs/models/billing_invoice_customer_extended_details.py +116 -0
  283. moolabs/models/billing_party.py +110 -0
  284. moolabs/models/billing_party_replace_update.py +106 -0
  285. moolabs/models/billing_party_tax_identity.py +88 -0
  286. moolabs/models/billing_profile.py +140 -0
  287. moolabs/models/billing_profile_app_references.py +107 -0
  288. moolabs/models/billing_profile_apps.py +107 -0
  289. moolabs/models/billing_profile_apps_create.py +113 -0
  290. moolabs/models/billing_profile_apps_or_reference.py +148 -0
  291. moolabs/models/billing_profile_create.py +112 -0
  292. moolabs/models/billing_profile_customer_override.py +116 -0
  293. moolabs/models/billing_profile_customer_override_create.py +98 -0
  294. moolabs/models/billing_profile_customer_override_expand.py +37 -0
  295. moolabs/models/billing_profile_customer_override_order_by.py +40 -0
  296. moolabs/models/billing_profile_customer_override_with_details.py +113 -0
  297. moolabs/models/billing_profile_customer_override_with_details_paginated_response.py +101 -0
  298. moolabs/models/billing_profile_expand.py +36 -0
  299. moolabs/models/billing_profile_order_by.py +39 -0
  300. moolabs/models/billing_profile_paginated_response.py +101 -0
  301. moolabs/models/billing_profile_replace_update_with_workflow.py +106 -0
  302. moolabs/models/billing_tenant_settings_out.py +89 -0
  303. moolabs/models/billing_tenant_settings_update.py +88 -0
  304. moolabs/models/billing_workflow.py +109 -0
  305. moolabs/models/billing_workflow_collection_alignment.py +150 -0
  306. moolabs/models/billing_workflow_collection_alignment_anchored.py +100 -0
  307. moolabs/models/billing_workflow_collection_alignment_subscription.py +94 -0
  308. moolabs/models/billing_workflow_collection_settings.py +93 -0
  309. moolabs/models/billing_workflow_create.py +109 -0
  310. moolabs/models/billing_workflow_invoicing_settings.py +99 -0
  311. moolabs/models/billing_workflow_payment_settings.py +88 -0
  312. moolabs/models/billing_workflow_tax_settings.py +89 -0
  313. moolabs/models/bom_component_in.py +105 -0
  314. moolabs/models/bom_component_out.py +109 -0
  315. moolabs/models/bom_create_request.py +107 -0
  316. moolabs/models/bom_out.py +127 -0
  317. moolabs/models/bom_update_request.py +103 -0
  318. moolabs/models/bom_variance_out.py +115 -0
  319. moolabs/models/breakdown_response.py +124 -0
  320. moolabs/models/breakdown_row.py +121 -0
  321. moolabs/models/breakdown_row_kind.py +39 -0
  322. moolabs/models/budget_alert_response.py +107 -0
  323. moolabs/models/budget_amount.py +152 -0
  324. moolabs/models/budget_amount1.py +152 -0
  325. moolabs/models/budget_create.py +110 -0
  326. moolabs/models/budget_pace_status.py +38 -0
  327. moolabs/models/budget_response.py +113 -0
  328. moolabs/models/budget_status_item.py +105 -0
  329. moolabs/models/budget_update.py +107 -0
  330. moolabs/models/budget_with_utilization.py +119 -0
  331. moolabs/models/bulk_action_request.py +92 -0
  332. moolabs/models/bulk_replay_request.py +92 -0
  333. moolabs/models/buyer_accept_request.py +95 -0
  334. moolabs/models/buyer_otp_request_response.py +91 -0
  335. moolabs/models/buyer_otp_verify_request.py +95 -0
  336. moolabs/models/buyer_otp_verify_response.py +89 -0
  337. moolabs/models/buyer_quote_line_item.py +103 -0
  338. moolabs/models/buyer_quote_pricing.py +93 -0
  339. moolabs/models/buyer_quote_projection.py +133 -0
  340. moolabs/models/buyer_reject_request.py +88 -0
  341. moolabs/models/buyer_request_changes_request.py +94 -0
  342. moolabs/models/buyer_request_changes_response.py +93 -0
  343. moolabs/models/buyer_requested_changes.py +90 -0
  344. moolabs/models/cancel_subscription_request.py +91 -0
  345. moolabs/models/card_type.py +37 -0
  346. moolabs/models/case_create.py +112 -0
  347. moolabs/models/case_escalate_request.py +90 -0
  348. moolabs/models/case_invoice_create.py +127 -0
  349. moolabs/models/case_invoice_response.py +150 -0
  350. moolabs/models/case_list_item_response.py +171 -0
  351. moolabs/models/case_list_response.py +101 -0
  352. moolabs/models/case_pause_request.py +91 -0
  353. moolabs/models/case_response.py +169 -0
  354. moolabs/models/case_update.py +102 -0
  355. moolabs/models/case_write_off_request.py +90 -0
  356. moolabs/models/cash_app_config_update_request.py +96 -0
  357. moolabs/models/cei_response.py +102 -0
  358. moolabs/models/change_item.py +101 -0
  359. moolabs/models/channel_policy_schema.py +112 -0
  360. moolabs/models/channel_preference_create.py +99 -0
  361. moolabs/models/channel_preference_response.py +106 -0
  362. moolabs/models/channel_preference_update.py +95 -0
  363. moolabs/models/channel_preferences_response.py +95 -0
  364. moolabs/models/chat_feedback_in.py +91 -0
  365. moolabs/models/chat_message_in.py +89 -0
  366. moolabs/models/chat_request.py +101 -0
  367. moolabs/models/check_trigger_request.py +88 -0
  368. moolabs/models/checkout_session_custom_text_after_submit_params.py +109 -0
  369. moolabs/models/checkout_session_custom_text_after_submit_params_after_submit.py +88 -0
  370. moolabs/models/checkout_session_custom_text_after_submit_params_shipping_address.py +88 -0
  371. moolabs/models/checkout_session_custom_text_after_submit_params_submit.py +88 -0
  372. moolabs/models/checkout_session_custom_text_after_submit_params_terms_of_service_acceptance.py +88 -0
  373. moolabs/models/checkout_session_ui_mode.py +37 -0
  374. moolabs/models/clause_citations.py +91 -0
  375. moolabs/models/clause_family.py +129 -0
  376. moolabs/models/clause_finding.py +110 -0
  377. moolabs/models/clause_pack.py +118 -0
  378. moolabs/models/clause_position.py +91 -0
  379. moolabs/models/client_app_start_response.py +87 -0
  380. moolabs/models/cloud_cost_row_input.py +105 -0
  381. moolabs/models/cloud_provider.py +38 -0
  382. moolabs/models/cloud_provider_data_through.py +116 -0
  383. moolabs/models/cloud_provider_quality_axis.py +107 -0
  384. moolabs/models/cloud_temporal_coverage_summary.py +114 -0
  385. moolabs/models/collection_method.py +37 -0
  386. moolabs/models/commercial_basis.py +39 -0
  387. moolabs/models/commercial_overrides.py +113 -0
  388. moolabs/models/commercial_overrides_input.py +115 -0
  389. moolabs/models/commercial_overrides_payload.py +113 -0
  390. moolabs/models/communication_create.py +110 -0
  391. moolabs/models/communication_list_response.py +101 -0
  392. moolabs/models/communication_response.py +138 -0
  393. moolabs/models/comparison_mode.py +37 -0
  394. moolabs/models/completeness_response.py +105 -0
  395. moolabs/models/component_coverage_response.py +123 -0
  396. moolabs/models/compute_variance_request.py +96 -0
  397. moolabs/models/compute_variance_response.py +105 -0
  398. moolabs/models/config_upload_gap_out.py +89 -0
  399. moolabs/models/config_upload_response.py +109 -0
  400. moolabs/models/config_upload_summary_out.py +95 -0
  401. moolabs/models/connector_config_response.py +93 -0
  402. moolabs/models/connector_health_response.py +102 -0
  403. moolabs/models/connector_item.py +105 -0
  404. moolabs/models/contact_create.py +100 -0
  405. moolabs/models/contact_list_response.py +101 -0
  406. moolabs/models/contact_response.py +134 -0
  407. moolabs/models/contact_update.py +102 -0
  408. moolabs/models/contract_document_response.py +104 -0
  409. moolabs/models/contract_event_response.py +108 -0
  410. moolabs/models/contract_inbound_message_response.py +106 -0
  411. moolabs/models/contract_participant_response.py +131 -0
  412. moolabs/models/contract_segment_response.py +95 -0
  413. moolabs/models/contract_thread_response.py +115 -0
  414. moolabs/models/contract_thread_snapshot_response.py +121 -0
  415. moolabs/models/contract_upload_detail_response.py +103 -0
  416. moolabs/models/contract_version_response.py +128 -0
  417. moolabs/models/contributor_item.py +123 -0
  418. moolabs/models/contributor_kind.py +38 -0
  419. moolabs/models/contributor_query_request.py +146 -0
  420. moolabs/models/contributor_response.py +174 -0
  421. moolabs/models/cost.py +152 -0
  422. moolabs/models/cost_adjustment_create.py +131 -0
  423. moolabs/models/cost_adjustment_response.py +102 -0
  424. moolabs/models/cost_driver_rule_create_request.py +158 -0
  425. moolabs/models/cost_driver_rule_response.py +126 -0
  426. moolabs/models/cost_driver_rule_update_request.py +100 -0
  427. moolabs/models/cost_event_detail_response.py +132 -0
  428. moolabs/models/cost_event_ingest.py +177 -0
  429. moolabs/models/cost_event_response.py +122 -0
  430. moolabs/models/cost_event_summary_item.py +103 -0
  431. moolabs/models/cost_event_summary_request.py +88 -0
  432. moolabs/models/cost_event_summary_response.py +95 -0
  433. moolabs/models/cost_explorer_response.py +155 -0
  434. moolabs/models/cost_scope.py +37 -0
  435. moolabs/models/coverage_snapshot_response.py +114 -0
  436. moolabs/models/cpu_core_hours.py +152 -0
  437. moolabs/models/cpu_cost_weight.py +152 -0
  438. moolabs/models/create_allocation_run_api422_response.py +147 -0
  439. moolabs/models/create_api_key_request.py +89 -0
  440. moolabs/models/create_api_key_response.py +105 -0
  441. moolabs/models/create_auto_topup_rule_request.py +106 -0
  442. moolabs/models/create_checkout_session_tax_id_collection.py +90 -0
  443. moolabs/models/create_checkout_session_tax_id_collection_required.py +37 -0
  444. moolabs/models/create_contract_thread_request.py +87 -0
  445. moolabs/models/create_credit_request.py +97 -0
  446. moolabs/models/create_fx_rate_request.py +103 -0
  447. moolabs/models/create_grant_request.py +136 -0
  448. moolabs/models/create_mapping_request.py +91 -0
  449. moolabs/models/create_matrix_price_row_request.py +91 -0
  450. moolabs/models/create_matrix_price_row_response.py +89 -0
  451. moolabs/models/create_portal_token_response.py +91 -0
  452. moolabs/models/create_quote_redline_request.py +103 -0
  453. moolabs/models/create_quote_request.py +119 -0
  454. moolabs/models/create_quote_template_request.py +102 -0
  455. moolabs/models/create_rate_card_request.py +105 -0
  456. moolabs/models/create_reconstruction_run_request.py +101 -0
  457. moolabs/models/create_session_response.py +97 -0
  458. moolabs/models/create_snapshot_request.py +98 -0
  459. moolabs/models/create_stripe_checkout_session_billing_address_collection.py +37 -0
  460. moolabs/models/create_stripe_checkout_session_consent_collection.py +97 -0
  461. moolabs/models/create_stripe_checkout_session_consent_collection_payment_method_reuse_agreement.py +88 -0
  462. moolabs/models/create_stripe_checkout_session_consent_collection_payment_method_reuse_agreement_position.py +37 -0
  463. moolabs/models/create_stripe_checkout_session_consent_collection_promotions.py +37 -0
  464. moolabs/models/create_stripe_checkout_session_consent_collection_terms_of_service.py +37 -0
  465. moolabs/models/create_stripe_checkout_session_customer_update.py +92 -0
  466. moolabs/models/create_stripe_checkout_session_customer_update_behavior.py +37 -0
  467. moolabs/models/create_stripe_checkout_session_redirect_on_completion.py +38 -0
  468. moolabs/models/create_stripe_checkout_session_request.py +112 -0
  469. moolabs/models/create_stripe_checkout_session_request_customer.py +163 -0
  470. moolabs/models/create_stripe_checkout_session_request_options.py +147 -0
  471. moolabs/models/create_stripe_checkout_session_result.py +139 -0
  472. moolabs/models/create_stripe_customer_portal_session_params.py +91 -0
  473. moolabs/models/create_threshold_request.py +99 -0
  474. moolabs/models/create_value_recognition_request.py +100 -0
  475. moolabs/models/create_wallet_request.py +106 -0
  476. moolabs/models/credit_config.py +119 -0
  477. moolabs/models/credit_config_payload.py +135 -0
  478. moolabs/models/credit_cost_ratio_item.py +93 -0
  479. moolabs/models/credit_cost_ratio_response.py +101 -0
  480. moolabs/models/credit_memo_apply_request.py +90 -0
  481. moolabs/models/credit_memo_create.py +104 -0
  482. moolabs/models/credit_memo_create_internal.py +114 -0
  483. moolabs/models/credit_memo_create_public.py +108 -0
  484. moolabs/models/credit_memo_item.py +102 -0
  485. moolabs/models/credit_memo_line_in.py +90 -0
  486. moolabs/models/credit_memo_list_response.py +101 -0
  487. moolabs/models/credit_memo_out.py +138 -0
  488. moolabs/models/credit_memo_response.py +124 -0
  489. moolabs/models/credit_memo_update.py +94 -0
  490. moolabs/models/credit_note_original_invoice_ref.py +114 -0
  491. moolabs/models/credit_override.py +87 -0
  492. moolabs/models/credit_override_input.py +101 -0
  493. moolabs/models/credit_override_payload.py +100 -0
  494. moolabs/models/crm_quote_context_request.py +94 -0
  495. moolabs/models/crm_quote_context_response.py +101 -0
  496. moolabs/models/crm_quote_draft_request.py +98 -0
  497. moolabs/models/crm_quote_draft_response.py +107 -0
  498. moolabs/models/crm_quote_record_card_response.py +97 -0
  499. moolabs/models/crm_surface_response.py +97 -0
  500. moolabs/models/currency.py +101 -0
  501. moolabs/models/current.py +152 -0
  502. moolabs/models/custom_invoicing_app.py +142 -0
  503. moolabs/models/custom_invoicing_app_replace_update.py +105 -0
  504. moolabs/models/custom_invoicing_customer_app_data.py +117 -0
  505. moolabs/models/custom_invoicing_draft_synchronized_request.py +91 -0
  506. moolabs/models/custom_invoicing_finalized_invoicing_request.py +91 -0
  507. moolabs/models/custom_invoicing_finalized_payment_request.py +87 -0
  508. moolabs/models/custom_invoicing_finalized_request.py +97 -0
  509. moolabs/models/custom_invoicing_line_discount_external_id_mapping.py +97 -0
  510. moolabs/models/custom_invoicing_line_external_id_mapping.py +97 -0
  511. moolabs/models/custom_invoicing_payment_trigger.py +41 -0
  512. moolabs/models/custom_invoicing_sync_result.py +110 -0
  513. moolabs/models/custom_invoicing_tax_config.py +87 -0
  514. moolabs/models/custom_invoicing_update_payment_status_request.py +92 -0
  515. moolabs/models/custom_plan_input.py +136 -0
  516. moolabs/models/custom_subscription_change.py +119 -0
  517. moolabs/models/custom_subscription_create.py +153 -0
  518. moolabs/models/customer.py +172 -0
  519. moolabs/models/customer_access.py +102 -0
  520. moolabs/models/customer_app_data.py +164 -0
  521. moolabs/models/customer_app_data_create_or_update_item.py +164 -0
  522. moolabs/models/customer_app_data_paginated_response.py +101 -0
  523. moolabs/models/customer_cost_item.py +95 -0
  524. moolabs/models/customer_create.py +120 -0
  525. moolabs/models/customer_expand.py +36 -0
  526. moolabs/models/customer_id.py +95 -0
  527. moolabs/models/customer_item.py +114 -0
  528. moolabs/models/customer_key.py +87 -0
  529. moolabs/models/customer_key_page_response.py +101 -0
  530. moolabs/models/customer_key_put_request.py +103 -0
  531. moolabs/models/customer_key_response.py +94 -0
  532. moolabs/models/customer_margin_item.py +99 -0
  533. moolabs/models/customer_margin_response.py +101 -0
  534. moolabs/models/customer_order_by.py +38 -0
  535. moolabs/models/customer_paginated_response.py +101 -0
  536. moolabs/models/customer_replace_update.py +120 -0
  537. moolabs/models/customer_subscription_order_by.py +37 -0
  538. moolabs/models/customer_upsert_request.py +102 -0
  539. moolabs/models/customer_usage_attribution.py +88 -0
  540. moolabs/models/danger_request.py +89 -0
  541. moolabs/models/dashboard_meta.py +172 -0
  542. moolabs/models/dashboard_overview_response.py +115 -0
  543. moolabs/models/data_through.py +115 -0
  544. moolabs/models/db_time_coverage_response.py +154 -0
  545. moolabs/models/db_time_evidence_batch_readback_response.py +135 -0
  546. moolabs/models/db_time_evidence_batch_request.py +147 -0
  547. moolabs/models/db_time_evidence_batch_response.py +100 -0
  548. moolabs/models/db_time_evidence_conflict_detail.py +94 -0
  549. moolabs/models/db_time_evidence_conflict_response.py +91 -0
  550. moolabs/models/db_time_evidence_not_found_detail.py +94 -0
  551. moolabs/models/db_time_evidence_not_found_response.py +91 -0
  552. moolabs/models/db_time_observation_request.py +131 -0
  553. moolabs/models/db_time_readout_quality_response.py +103 -0
  554. moolabs/models/deal_context.py +97 -0
  555. moolabs/models/deal_context_rule.py +105 -0
  556. moolabs/models/decision_item.py +131 -0
  557. moolabs/models/decision_kind.py +46 -0
  558. moolabs/models/decision_overview_response.py +172 -0
  559. moolabs/models/decision_queue_response.py +115 -0
  560. moolabs/models/decision_reason_code.py +53 -0
  561. moolabs/models/delta.py +152 -0
  562. moolabs/models/delta_pct.py +152 -0
  563. moolabs/models/demo_seed_acute_history_baseline_request.py +106 -0
  564. moolabs/models/demo_seed_acute_tenant_registration_request.py +114 -0
  565. moolabs/models/demo_seed_agent_report_baseline_request.py +106 -0
  566. moolabs/models/demo_seed_arc_invoice_ref.py +107 -0
  567. moolabs/models/demo_seed_arc_portfolio_baseline_request.py +121 -0
  568. moolabs/models/demo_seed_catalog_baseline_request.py +108 -0
  569. moolabs/models/demo_seed_customer_portfolio_baseline_request.py +103 -0
  570. moolabs/models/demo_seed_integration_crm_baseline_request.py +106 -0
  571. moolabs/models/demo_seed_integration_finance_baseline_request.py +106 -0
  572. moolabs/models/demo_seed_integration_netsuite_baseline_request.py +106 -0
  573. moolabs/models/demo_seed_integration_webhook_baseline_request.py +106 -0
  574. moolabs/models/demo_seed_invoice_payment_baseline_request.py +106 -0
  575. moolabs/models/demo_seed_isolation_canary_baseline_request.py +106 -0
  576. moolabs/models/demo_seed_lifecycle_request.py +103 -0
  577. moolabs/models/demo_seed_quote_contract_baseline_request.py +106 -0
  578. moolabs/models/demo_seed_security_credentials_baseline_request.py +106 -0
  579. moolabs/models/demo_seed_settings_baseline_request.py +106 -0
  580. moolabs/models/demo_seed_subscription_baseline_request.py +106 -0
  581. moolabs/models/demo_seed_tenant_config_baseline_request.py +119 -0
  582. moolabs/models/demo_seed_usage_baseline_request.py +106 -0
  583. moolabs/models/derive_request.py +94 -0
  584. moolabs/models/dimension.py +39 -0
  585. moolabs/models/dimension_coverage_response.py +102 -0
  586. moolabs/models/disclosure_policy_response.py +93 -0
  587. moolabs/models/disclosure_policy_update_request.py +102 -0
  588. moolabs/models/discount_percentage.py +87 -0
  589. moolabs/models/discount_reason_maximum_spend.py +94 -0
  590. moolabs/models/discount_reason_ratecard_percentage.py +109 -0
  591. moolabs/models/discount_reason_ratecard_usage.py +116 -0
  592. moolabs/models/discount_usage.py +95 -0
  593. moolabs/models/discounts.py +97 -0
  594. moolabs/models/dismiss_refinement_request.py +87 -0
  595. moolabs/models/dispute_approval_request.py +88 -0
  596. moolabs/models/dispute_list_response.py +101 -0
  597. moolabs/models/dispute_resolve_request.py +92 -0
  598. moolabs/models/dispute_response.py +134 -0
  599. moolabs/models/dispute_summary_response.py +104 -0
  600. moolabs/models/dispute_update_request.py +102 -0
  601. moolabs/models/dns_record.py +119 -0
  602. moolabs/models/domain_response.py +95 -0
  603. moolabs/models/domain_update.py +87 -0
  604. moolabs/models/draft_lock_request.py +88 -0
  605. moolabs/models/draft_lock_response.py +97 -0
  606. moolabs/models/draft_save_request.py +114 -0
  607. moolabs/models/draft_unlock_request.py +90 -0
  608. moolabs/models/driver_item.py +122 -0
  609. moolabs/models/dry_run_request.py +89 -0
  610. moolabs/models/dry_run_response.py +97 -0
  611. moolabs/models/dso_response.py +100 -0
  612. moolabs/models/dynamic_price_with_commitments.py +131 -0
  613. moolabs/models/economics_summary.py +114 -0
  614. moolabs/models/edit_subscription_add_item.py +102 -0
  615. moolabs/models/edit_subscription_add_phase.py +100 -0
  616. moolabs/models/edit_subscription_remove_item.py +98 -0
  617. moolabs/models/edit_subscription_remove_phase.py +99 -0
  618. moolabs/models/edit_subscription_stretch_phase.py +98 -0
  619. moolabs/models/edit_subscription_unschedule_edit.py +94 -0
  620. moolabs/models/effective_permission_grant_dto.py +105 -0
  621. moolabs/models/effective_permissions_response.py +129 -0
  622. moolabs/models/email_config_out.py +188 -0
  623. moolabs/models/email_config_upsert.py +111 -0
  624. moolabs/models/email_context.py +44 -0
  625. moolabs/models/email_message_status.py +42 -0
  626. moolabs/models/email_provider.py +37 -0
  627. moolabs/models/email_provider_identity.py +157 -0
  628. moolabs/models/email_provider_identity_list.py +108 -0
  629. moolabs/models/email_provider_operator_upsert.py +131 -0
  630. moolabs/models/email_provider_route.py +128 -0
  631. moolabs/models/email_provider_route_list.py +108 -0
  632. moolabs/models/enable_tier3_response.py +93 -0
  633. moolabs/models/endpoints_response.py +89 -0
  634. moolabs/models/entitlement.py +164 -0
  635. moolabs/models/entitlement_boolean.py +168 -0
  636. moolabs/models/entitlement_boolean_create_inputs.py +127 -0
  637. moolabs/models/entitlement_boolean_v2.py +170 -0
  638. moolabs/models/entitlement_create_inputs.py +164 -0
  639. moolabs/models/entitlement_grant.py +148 -0
  640. moolabs/models/entitlement_grant_create_input.py +111 -0
  641. moolabs/models/entitlement_grant_create_input_v2.py +113 -0
  642. moolabs/models/entitlement_grant_v2.py +148 -0
  643. moolabs/models/entitlement_metered.py +190 -0
  644. moolabs/models/entitlement_metered_create_inputs.py +143 -0
  645. moolabs/models/entitlement_metered_v2.py +196 -0
  646. moolabs/models/entitlement_metered_v2_create_inputs.py +157 -0
  647. moolabs/models/entitlement_order_by.py +37 -0
  648. moolabs/models/entitlement_override.py +89 -0
  649. moolabs/models/entitlement_override_input.py +95 -0
  650. moolabs/models/entitlement_override_payload.py +93 -0
  651. moolabs/models/entitlement_paginated_response.py +101 -0
  652. moolabs/models/entitlement_payload.py +103 -0
  653. moolabs/models/entitlement_static.py +170 -0
  654. moolabs/models/entitlement_static_create_inputs.py +129 -0
  655. moolabs/models/entitlement_static_v2.py +172 -0
  656. moolabs/models/entitlement_type.py +38 -0
  657. moolabs/models/entitlement_v2.py +164 -0
  658. moolabs/models/entitlement_v2_create_inputs.py +164 -0
  659. moolabs/models/entitlement_v2_paginated_response.py +101 -0
  660. moolabs/models/entitlement_value.py +109 -0
  661. moolabs/models/error_extension.py +110 -0
  662. moolabs/models/escalate_request.py +90 -0
  663. moolabs/models/escalate_response.py +91 -0
  664. moolabs/models/escalation_action_request.py +90 -0
  665. moolabs/models/escalation_action_response.py +91 -0
  666. moolabs/models/escalation_create.py +97 -0
  667. moolabs/models/escalation_dismiss_request.py +90 -0
  668. moolabs/models/escalation_list_response.py +101 -0
  669. moolabs/models/escalation_resolve_request.py +87 -0
  670. moolabs/models/escalation_response.py +112 -0
  671. moolabs/models/escalation_update.py +93 -0
  672. moolabs/models/event.py +115 -0
  673. moolabs/models/event_delivery_attempt_response.py +101 -0
  674. moolabs/models/evidence_create_request.py +96 -0
  675. moolabs/models/evidence_kind.py +39 -0
  676. moolabs/models/evidence_list_response.py +97 -0
  677. moolabs/models/evidence_response.py +106 -0
  678. moolabs/models/evidence_review_request.py +90 -0
  679. moolabs/models/evidence_window.py +37 -0
  680. moolabs/models/exchange_rate.py +152 -0
  681. moolabs/models/expiration_duration.py +40 -0
  682. moolabs/models/expiration_period.py +91 -0
  683. moolabs/models/explorer_alias_hint.py +104 -0
  684. moolabs/models/explorer_alias_hint1.py +110 -0
  685. moolabs/models/explorer_alias_kind.py +39 -0
  686. moolabs/models/explorer_breakdown_page.py +166 -0
  687. moolabs/models/explorer_breakdown_row.py +200 -0
  688. moolabs/models/explorer_cloud_provider_quality_axis.py +107 -0
  689. moolabs/models/explorer_cloud_temporal_coverage_summary.py +115 -0
  690. moolabs/models/explorer_contributor_kind.py +40 -0
  691. moolabs/models/explorer_contributor_query_request.py +190 -0
  692. moolabs/models/explorer_contributor_response.py +201 -0
  693. moolabs/models/explorer_contributor_row.py +177 -0
  694. moolabs/models/explorer_cost_event_status.py +39 -0
  695. moolabs/models/explorer_dimension.py +40 -0
  696. moolabs/models/explorer_effective_sort.py +107 -0
  697. moolabs/models/explorer_effective_sort_field.py +41 -0
  698. moolabs/models/explorer_evidence_kind.py +41 -0
  699. moolabs/models/explorer_evidence_role.py +37 -0
  700. moolabs/models/explorer_excluded_event_count.py +104 -0
  701. moolabs/models/explorer_excluded_event_reason.py +38 -0
  702. moolabs/models/explorer_exposure_summary.py +124 -0
  703. moolabs/models/explorer_measure_source.py +40 -0
  704. moolabs/models/explorer_meta.py +196 -0
  705. moolabs/models/explorer_quality_axis.py +117 -0
  706. moolabs/models/explorer_quality_caveat_code.py +45 -0
  707. moolabs/models/explorer_quality_summary.py +151 -0
  708. moolabs/models/explorer_query_request.py +184 -0
  709. moolabs/models/explorer_request_detail_event.py +134 -0
  710. moolabs/models/explorer_request_detail_line.py +133 -0
  711. moolabs/models/explorer_request_detail_query_request.py +201 -0
  712. moolabs/models/explorer_request_detail_response.py +205 -0
  713. moolabs/models/explorer_request_detail_result_cap.py +125 -0
  714. moolabs/models/explorer_request_distribution.py +109 -0
  715. moolabs/models/explorer_request_query_request.py +190 -0
  716. moolabs/models/explorer_search.py +111 -0
  717. moolabs/models/explorer_selection_result.py +107 -0
  718. moolabs/models/explorer_selection_row.py +185 -0
  719. moolabs/models/explorer_selection_status.py +39 -0
  720. moolabs/models/explorer_sort.py +104 -0
  721. moolabs/models/explorer_sort1.py +116 -0
  722. moolabs/models/explorer_sort_fallback_reason.py +39 -0
  723. moolabs/models/explorer_sort_field.py +40 -0
  724. moolabs/models/explorer_source_scope.py +38 -0
  725. moolabs/models/explorer_summary.py +134 -0
  726. moolabs/models/explorer_trend_point.py +124 -0
  727. moolabs/models/explorer_usage_history_evidence.py +110 -0
  728. moolabs/models/explorer_usage_history_source.py +38 -0
  729. moolabs/models/feature.py +156 -0
  730. moolabs/models/feature_contributor_customer.py +91 -0
  731. moolabs/models/feature_contributor_model.py +93 -0
  732. moolabs/models/feature_contributor_request.py +91 -0
  733. moolabs/models/feature_contributors_response.py +121 -0
  734. moolabs/models/feature_cost_item.py +97 -0
  735. moolabs/models/feature_create_inputs.py +128 -0
  736. moolabs/models/feature_flag_item.py +97 -0
  737. moolabs/models/feature_flag_update.py +87 -0
  738. moolabs/models/feature_margin_item.py +101 -0
  739. moolabs/models/feature_margin_response.py +101 -0
  740. moolabs/models/feature_meta.py +97 -0
  741. moolabs/models/feature_order_by.py +40 -0
  742. moolabs/models/feature_override_request.py +93 -0
  743. moolabs/models/feature_paginated_response.py +101 -0
  744. moolabs/models/feature_pool.py +99 -0
  745. moolabs/models/feature_pool_payload.py +107 -0
  746. moolabs/models/feature_price_request.py +93 -0
  747. moolabs/models/feature_pricing_input.py +120 -0
  748. moolabs/models/filter_id_exact.py +88 -0
  749. moolabs/models/filter_string.py +129 -0
  750. moolabs/models/filter_time.py +114 -0
  751. moolabs/models/finance_summary.py +143 -0
  752. moolabs/models/first_pass_redline_request.py +88 -0
  753. moolabs/models/first_pass_redline_response.py +89 -0
  754. moolabs/models/flag_disputed_request.py +92 -0
  755. moolabs/models/flag_disputed_response.py +97 -0
  756. moolabs/models/flat_price.py +104 -0
  757. moolabs/models/flat_price_with_payment_term.py +107 -0
  758. moolabs/models/flatamount.py +152 -0
  759. moolabs/models/freshness_axis.py +121 -0
  760. moolabs/models/freshness_source.py +40 -0
  761. moolabs/models/fx_rate_to_reporting.py +153 -0
  762. moolabs/models/fx_rates_list_response.py +97 -0
  763. moolabs/models/gate_status_response.py +105 -0
  764. moolabs/models/get_fx_rate_request.py +92 -0
  765. moolabs/models/get_matrix_price_rows_response.py +107 -0
  766. moolabs/models/google_chat_quote_response.py +89 -0
  767. moolabs/models/grant_activation_request.py +122 -0
  768. moolabs/models/grant_burn_down_history_segment.py +125 -0
  769. moolabs/models/grant_order_by.py +38 -0
  770. moolabs/models/grant_paginated_response.py +101 -0
  771. moolabs/models/grant_plan_change_request.py +126 -0
  772. moolabs/models/grant_renewal_request.py +122 -0
  773. moolabs/models/grant_response.py +128 -0
  774. moolabs/models/grant_source_type.py +40 -0
  775. moolabs/models/grant_usage_record.py +97 -0
  776. moolabs/models/grant_v2_paginated_response.py +101 -0
  777. moolabs/models/grants_list_response.py +99 -0
  778. moolabs/models/handoff_create_request.py +92 -0
  779. moolabs/models/helicone_config_request.py +92 -0
  780. moolabs/models/homepage_response.py +107 -0
  781. moolabs/models/hosted_checkout_settlement_ptp_response.py +100 -0
  782. moolabs/models/hosted_checkout_settlement_request.py +109 -0
  783. moolabs/models/hosted_checkout_settlement_response.py +97 -0
  784. moolabs/models/http_validation_error.py +95 -0
  785. moolabs/models/hub_spot_connect_request.py +91 -0
  786. moolabs/models/id_resource.py +97 -0
  787. moolabs/models/identity_scope.py +39 -0
  788. moolabs/models/identity_scope_coverage_response.py +96 -0
  789. moolabs/models/import_batch_detail_response.py +105 -0
  790. moolabs/models/import_batch_detail_row.py +111 -0
  791. moolabs/models/import_batch_request.py +112 -0
  792. moolabs/models/import_batch_response.py +101 -0
  793. moolabs/models/import_batch_summary.py +111 -0
  794. moolabs/models/import_dispute_item.py +122 -0
  795. moolabs/models/import_disputes_request.py +96 -0
  796. moolabs/models/import_invoice_item.py +133 -0
  797. moolabs/models/import_invoices_request.py +96 -0
  798. moolabs/models/import_promise_item.py +155 -0
  799. moolabs/models/import_promises_request.py +96 -0
  800. moolabs/models/inbound_email_attachment.py +91 -0
  801. moolabs/models/inbound_email_payload.py +103 -0
  802. moolabs/models/inbound_email_process_response.py +97 -0
  803. moolabs/models/ingest_events_body.py +150 -0
  804. moolabs/models/ingest_health.py +97 -0
  805. moolabs/models/ingested_event.py +111 -0
  806. moolabs/models/ingested_event_cursor_paginated_response.py +98 -0
  807. moolabs/models/initialamount.py +152 -0
  808. moolabs/models/insight_card.py +111 -0
  809. moolabs/models/install_method.py +38 -0
  810. moolabs/models/integration_update.py +89 -0
  811. moolabs/models/invalidate_portal_token_request.py +89 -0
  812. moolabs/models/invalidate_portal_tokens_request.py +89 -0
  813. moolabs/models/invoice.py +249 -0
  814. moolabs/models/invoice_allocation_out.py +103 -0
  815. moolabs/models/invoice_app_external_ids.py +97 -0
  816. moolabs/models/invoice_available_action_details.py +89 -0
  817. moolabs/models/invoice_available_actions.py +132 -0
  818. moolabs/models/invoice_detailed_line.py +244 -0
  819. moolabs/models/invoice_detailed_line_cost_category.py +37 -0
  820. moolabs/models/invoice_detailed_line_rate_card.py +116 -0
  821. moolabs/models/invoice_document_ref_type.py +36 -0
  822. moolabs/models/invoice_expand.py +38 -0
  823. moolabs/models/invoice_generic_document_ref.py +98 -0
  824. moolabs/models/invoice_item.py +112 -0
  825. moolabs/models/invoice_line.py +296 -0
  826. moolabs/models/invoice_line_amount_discount.py +141 -0
  827. moolabs/models/invoice_line_app_external_ids.py +93 -0
  828. moolabs/models/invoice_line_discounts.py +105 -0
  829. moolabs/models/invoice_line_managed_by.py +38 -0
  830. moolabs/models/invoice_line_out.py +99 -0
  831. moolabs/models/invoice_line_replace_update.py +143 -0
  832. moolabs/models/invoice_line_status.py +38 -0
  833. moolabs/models/invoice_line_subscription_reference.py +115 -0
  834. moolabs/models/invoice_line_tax_behavior.py +37 -0
  835. moolabs/models/invoice_line_tax_item.py +117 -0
  836. moolabs/models/invoice_line_usage_discount.py +155 -0
  837. moolabs/models/invoice_order_by.py +41 -0
  838. moolabs/models/invoice_paginated_response.py +101 -0
  839. moolabs/models/invoice_payment_terms.py +91 -0
  840. moolabs/models/invoice_pending_line_create.py +131 -0
  841. moolabs/models/invoice_pending_line_create_input.py +105 -0
  842. moolabs/models/invoice_pending_line_create_response.py +107 -0
  843. moolabs/models/invoice_pending_lines_action_filters_input.py +88 -0
  844. moolabs/models/invoice_pending_lines_action_input.py +106 -0
  845. moolabs/models/invoice_reference.py +101 -0
  846. moolabs/models/invoice_replace_update.py +117 -0
  847. moolabs/models/invoice_simulation_input.py +107 -0
  848. moolabs/models/invoice_simulation_line.py +164 -0
  849. moolabs/models/invoice_status.py +44 -0
  850. moolabs/models/invoice_status_details.py +103 -0
  851. moolabs/models/invoice_totals.py +163 -0
  852. moolabs/models/invoice_type.py +37 -0
  853. moolabs/models/invoice_upsert_request.py +112 -0
  854. moolabs/models/invoice_usage_based_rate_card.py +116 -0
  855. moolabs/models/invoice_workflow_invoicing_settings_replace_update.py +97 -0
  856. moolabs/models/invoice_workflow_replace_update.py +91 -0
  857. moolabs/models/invoice_workflow_settings.py +111 -0
  858. moolabs/models/invoice_workflow_settings_replace_update.py +97 -0
  859. moolabs/models/issue_after_reset.py +90 -0
  860. moolabs/models/jurisdiction_profile_response.py +102 -0
  861. moolabs/models/jurisdiction_resolution_request.py +92 -0
  862. moolabs/models/kill_switch_request.py +87 -0
  863. moolabs/models/langfuse_config_request.py +92 -0
  864. moolabs/models/lesson_action_request.py +89 -0
  865. moolabs/models/level_in.py +91 -0
  866. moolabs/models/lifecycle_event_request.py +97 -0
  867. moolabs/models/line_item_create.py +118 -0
  868. moolabs/models/line_total.py +153 -0
  869. moolabs/models/link_net_suite_account_request.py +89 -0
  870. moolabs/models/list_auto_topup_rules_response.py +97 -0
  871. moolabs/models/list_connectors200_response_inner.py +148 -0
  872. moolabs/models/list_entitlements_result.py +151 -0
  873. moolabs/models/list_events_v2_filter_param.py +123 -0
  874. moolabs/models/list_features_result.py +151 -0
  875. moolabs/models/list_grants_get200_response.py +151 -0
  876. moolabs/models/mapping_response.py +97 -0
  877. moolabs/models/mapping_rule_create.py +105 -0
  878. moolabs/models/mapping_rule_response.py +118 -0
  879. moolabs/models/mapping_rule_update.py +103 -0
  880. moolabs/models/margin_snapshot_response.py +131 -0
  881. moolabs/models/marketplace_app_api_key_install_request.py +91 -0
  882. moolabs/models/marketplace_install_request_payload.py +89 -0
  883. moolabs/models/marketplace_install_response.py +94 -0
  884. moolabs/models/marketplace_listing.py +105 -0
  885. moolabs/models/marketplace_listing_paginated_response.py +101 -0
  886. moolabs/models/matrix_price_row.py +91 -0
  887. moolabs/models/measure.py +146 -0
  888. moolabs/models/measure_kind.py +41 -0
  889. moolabs/models/measure_usage_from.py +151 -0
  890. moolabs/models/measure_usage_from_preset.py +37 -0
  891. moolabs/models/merge_remittances_request.py +89 -0
  892. moolabs/models/meter.py +176 -0
  893. moolabs/models/meter_aggregation.py +42 -0
  894. moolabs/models/meter_create.py +113 -0
  895. moolabs/models/meter_mapping_item.py +95 -0
  896. moolabs/models/meter_order_by.py +40 -0
  897. moolabs/models/meter_query_request.py +121 -0
  898. moolabs/models/meter_query_result.py +103 -0
  899. moolabs/models/meter_query_row.py +98 -0
  900. moolabs/models/meter_test_event_request.py +87 -0
  901. moolabs/models/meter_test_event_response.py +93 -0
  902. moolabs/models/meter_update.py +94 -0
  903. moolabs/models/meter_usage_summary_item.py +103 -0
  904. moolabs/models/meter_usage_summary_response.py +95 -0
  905. moolabs/models/meter_validation_error.py +101 -0
  906. moolabs/models/migrate_subscription_request.py +105 -0
  907. moolabs/models/model_cost_item.py +95 -0
  908. moolabs/models/net_suite_connect_request.py +103 -0
  909. moolabs/models/net_suite_cutover_guard_request.py +87 -0
  910. moolabs/models/net_suite_m2_m_finalize_request.py +87 -0
  911. moolabs/models/net_suite_m2_m_setup_request.py +101 -0
  912. moolabs/models/net_suite_managed_portal_backfill_cancel_request.py +87 -0
  913. moolabs/models/net_suite_managed_portal_backfill_request.py +89 -0
  914. moolabs/models/net_suite_managed_portal_backfill_run_request.py +90 -0
  915. moolabs/models/net_suite_managed_portal_mapping_delete_request.py +91 -0
  916. moolabs/models/net_suite_managed_portal_mapping_request.py +97 -0
  917. moolabs/models/net_suite_managed_portal_protection_ack_request.py +89 -0
  918. moolabs/models/next_action_type.py +41 -0
  919. moolabs/models/note_create.py +94 -0
  920. moolabs/models/note_list_response.py +101 -0
  921. moolabs/models/note_response.py +104 -0
  922. moolabs/models/notification_channel_meta.py +100 -0
  923. moolabs/models/notification_channel_order_by.py +39 -0
  924. moolabs/models/notification_channel_paginated_response.py +101 -0
  925. moolabs/models/notification_channel_type.py +36 -0
  926. moolabs/models/notification_channel_webhook.py +145 -0
  927. moolabs/models/notification_channel_webhook_create_request.py +117 -0
  928. moolabs/models/notification_event.py +137 -0
  929. moolabs/models/notification_event_balance_threshold_payload.py +121 -0
  930. moolabs/models/notification_event_balance_threshold_payload_data.py +133 -0
  931. moolabs/models/notification_event_delivery_attempt.py +103 -0
  932. moolabs/models/notification_event_delivery_status.py +125 -0
  933. moolabs/models/notification_event_delivery_status_state.py +40 -0
  934. moolabs/models/notification_event_entitlement_value_payload_base.py +125 -0
  935. moolabs/models/notification_event_invoice_created_payload.py +121 -0
  936. moolabs/models/notification_event_invoice_updated_payload.py +121 -0
  937. moolabs/models/notification_event_order_by.py +37 -0
  938. moolabs/models/notification_event_paginated_response.py +101 -0
  939. moolabs/models/notification_event_payload.py +178 -0
  940. moolabs/models/notification_event_resend_request.py +88 -0
  941. moolabs/models/notification_event_reset_payload.py +121 -0
  942. moolabs/models/notification_event_type.py +39 -0
  943. moolabs/models/notification_rule.py +178 -0
  944. moolabs/models/notification_rule_balance_threshold.py +159 -0
  945. moolabs/models/notification_rule_balance_threshold_create_request.py +115 -0
  946. moolabs/models/notification_rule_balance_threshold_value.py +90 -0
  947. moolabs/models/notification_rule_balance_threshold_value_type.py +40 -0
  948. moolabs/models/notification_rule_create_request.py +178 -0
  949. moolabs/models/notification_rule_entitlement_reset.py +149 -0
  950. moolabs/models/notification_rule_entitlement_reset_create_request.py +105 -0
  951. moolabs/models/notification_rule_invoice_created.py +139 -0
  952. moolabs/models/notification_rule_invoice_created_create_request.py +103 -0
  953. moolabs/models/notification_rule_invoice_updated.py +139 -0
  954. moolabs/models/notification_rule_invoice_updated_create_request.py +103 -0
  955. moolabs/models/notification_rule_order_by.py +39 -0
  956. moolabs/models/notification_rule_paginated_response.py +101 -0
  957. moolabs/models/notify_channel.py +89 -0
  958. moolabs/models/o_auth2_authorization_code_grant_error_type.py +42 -0
  959. moolabs/models/observation_out.py +103 -0
  960. moolabs/models/observed_total_cost.py +153 -0
  961. moolabs/models/open_cost_cluster_binding.py +115 -0
  962. moolabs/models/open_cost_dedicated_namespace.py +104 -0
  963. moolabs/models/open_cost_installation_create_request.py +122 -0
  964. moolabs/models/open_cost_installation_create_response.py +116 -0
  965. moolabs/models/open_cost_installation_response.py +114 -0
  966. moolabs/models/open_cost_snapshot_request.py +139 -0
  967. moolabs/models/open_cost_snapshot_response.py +125 -0
  968. moolabs/models/open_cost_trust_policy.py +145 -0
  969. moolabs/models/open_cost_wire_row.py +140 -0
  970. moolabs/models/open_from_scope_request.py +98 -0
  971. moolabs/models/operations_summary.py +120 -0
  972. moolabs/models/opt_out_request.py +90 -0
  973. moolabs/models/opt_out_response.py +93 -0
  974. moolabs/models/org_role.py +152 -0
  975. moolabs/models/original_total.py +152 -0
  976. moolabs/models/otlp_ingest_response.py +91 -0
  977. moolabs/models/overall_freshness.py +116 -0
  978. moolabs/models/overdraft_settings.py +93 -0
  979. moolabs/models/overdraft_settings_payload.py +93 -0
  980. moolabs/models/override_first_ingress_request.py +94 -0
  981. moolabs/models/override_request.py +90 -0
  982. moolabs/models/override_response.py +91 -0
  983. moolabs/models/overview_response.py +109 -0
  984. moolabs/models/pack_provenance.py +101 -0
  985. moolabs/models/package_price_with_commitments.py +137 -0
  986. moolabs/models/paginated_credit_memos.py +97 -0
  987. moolabs/models/paginated_customers.py +99 -0
  988. moolabs/models/paginated_invoices.py +97 -0
  989. moolabs/models/paginated_payments.py +97 -0
  990. moolabs/models/paginated_sync_runs.py +97 -0
  991. moolabs/models/patch_quote_agent_policy_request.py +98 -0
  992. moolabs/models/patch_rows_request.py +95 -0
  993. moolabs/models/patch_session_request.py +107 -0
  994. moolabs/models/payment_allocation_response.py +104 -0
  995. moolabs/models/payment_create.py +109 -0
  996. moolabs/models/payment_due_date.py +124 -0
  997. moolabs/models/payment_failed_request.py +101 -0
  998. moolabs/models/payment_failed_response.py +93 -0
  999. moolabs/models/payment_instructions_response.py +95 -0
  1000. moolabs/models/payment_instructions_update_request.py +90 -0
  1001. moolabs/models/payment_item.py +104 -0
  1002. moolabs/models/payment_link_request.py +105 -0
  1003. moolabs/models/payment_link_response.py +89 -0
  1004. moolabs/models/payment_list_response.py +101 -0
  1005. moolabs/models/payment_match_request.py +90 -0
  1006. moolabs/models/payment_response.py +136 -0
  1007. moolabs/models/payment_reversal_request.py +90 -0
  1008. moolabs/models/payment_succeeded_request.py +103 -0
  1009. moolabs/models/payment_succeeded_response.py +97 -0
  1010. moolabs/models/payment_term_due_date.py +113 -0
  1011. moolabs/models/payment_term_instant.py +102 -0
  1012. moolabs/models/payment_terms.py +148 -0
  1013. moolabs/models/pending_provider_confirmation_reconcile_request.py +88 -0
  1014. moolabs/models/pending_sns_confirmation_out.py +102 -0
  1015. moolabs/models/period.py +90 -0
  1016. moolabs/models/period_settlement_out.py +143 -0
  1017. moolabs/models/period_window.py +103 -0
  1018. moolabs/models/persona.py +39 -0
  1019. moolabs/models/plan.py +191 -0
  1020. moolabs/models/plan_addon.py +126 -0
  1021. moolabs/models/plan_addon_create.py +101 -0
  1022. moolabs/models/plan_addon_order_by.py +40 -0
  1023. moolabs/models/plan_addon_paginated_response.py +101 -0
  1024. moolabs/models/plan_addon_replace_update.py +91 -0
  1025. moolabs/models/plan_amend_request.py +103 -0
  1026. moolabs/models/plan_cost_item.py +97 -0
  1027. moolabs/models/plan_create.py +140 -0
  1028. moolabs/models/plan_create_request.py +103 -0
  1029. moolabs/models/plan_order_by.py +40 -0
  1030. moolabs/models/plan_paginated_response.py +101 -0
  1031. moolabs/models/plan_phase.py +113 -0
  1032. moolabs/models/plan_pricing_input.py +103 -0
  1033. moolabs/models/plan_pricing_sync_request.py +105 -0
  1034. moolabs/models/plan_pricing_view.py +107 -0
  1035. moolabs/models/plan_ref_payload.py +91 -0
  1036. moolabs/models/plan_reference.py +106 -0
  1037. moolabs/models/plan_reference_input.py +97 -0
  1038. moolabs/models/plan_replace_update.py +122 -0
  1039. moolabs/models/plan_status.py +39 -0
  1040. moolabs/models/plan_subscription_change.py +153 -0
  1041. moolabs/models/plan_subscription_create.py +167 -0
  1042. moolabs/models/policy_update_request.py +94 -0
  1043. moolabs/models/pool_notification_config_request.py +87 -0
  1044. moolabs/models/pooloverrides_value.py +152 -0
  1045. moolabs/models/portal_case_response.py +108 -0
  1046. moolabs/models/portal_channel_preference_request.py +100 -0
  1047. moolabs/models/portal_dispute_request.py +94 -0
  1048. moolabs/models/portal_dispute_response.py +102 -0
  1049. moolabs/models/portal_invoice_response.py +124 -0
  1050. moolabs/models/portal_payment_intent_response.py +91 -0
  1051. moolabs/models/portal_payment_request.py +102 -0
  1052. moolabs/models/portal_preferences_request.py +113 -0
  1053. moolabs/models/portal_preferences_response.py +87 -0
  1054. moolabs/models/portal_promise_to_pay_response.py +106 -0
  1055. moolabs/models/portal_ptp_request.py +95 -0
  1056. moolabs/models/portal_token.py +121 -0
  1057. moolabs/models/portal_token_item.py +97 -0
  1058. moolabs/models/preview_resolution_request.py +89 -0
  1059. moolabs/models/preview_resolution_response.py +101 -0
  1060. moolabs/models/preview_template_request.py +102 -0
  1061. moolabs/models/preview_template_response.py +95 -0
  1062. moolabs/models/preview_trace_entry.py +97 -0
  1063. moolabs/models/previous.py +152 -0
  1064. moolabs/models/price_payment_term.py +37 -0
  1065. moolabs/models/price_session_response.py +109 -0
  1066. moolabs/models/price_tier.py +110 -0
  1067. moolabs/models/price_tier_payload.py +103 -0
  1068. moolabs/models/pricing_override_input.py +100 -0
  1069. moolabs/models/pricing_result.py +100 -0
  1070. moolabs/models/pricing_snapshot_response.py +109 -0
  1071. moolabs/models/pricing_tier_input.py +90 -0
  1072. moolabs/models/priority.py +38 -0
  1073. moolabs/models/pro_rating_config.py +90 -0
  1074. moolabs/models/pro_rating_mode.py +36 -0
  1075. moolabs/models/process_value_recognition_request.py +94 -0
  1076. moolabs/models/progress.py +94 -0
  1077. moolabs/models/projection_link_in.py +91 -0
  1078. moolabs/models/projection_links_request.py +98 -0
  1079. moolabs/models/projection_links_response.py +89 -0
  1080. moolabs/models/promise_response.py +112 -0
  1081. moolabs/models/promote_response.py +89 -0
  1082. moolabs/models/provider_billing_reference.py +146 -0
  1083. moolabs/models/provider_billing_reference_kind.py +37 -0
  1084. moolabs/models/provider_blocking_reason.py +115 -0
  1085. moolabs/models/provider_confirmation_repair_request.py +99 -0
  1086. moolabs/models/provider_connection_status.py +42 -0
  1087. moolabs/models/provider_identity_details.py +110 -0
  1088. moolabs/models/provider_identity_purpose.py +38 -0
  1089. moolabs/models/provider_kind.py +37 -0
  1090. moolabs/models/provider_readiness_response.py +97 -0
  1091. moolabs/models/provider_readiness_summary.py +123 -0
  1092. moolabs/models/provider_route_status.py +39 -0
  1093. moolabs/models/provider_safe_test_send_request.py +107 -0
  1094. moolabs/models/provider_safe_test_send_response.py +109 -0
  1095. moolabs/models/provider_summary.py +89 -0
  1096. moolabs/models/provider_warning.py +115 -0
  1097. moolabs/models/ptp_approval_request.py +88 -0
  1098. moolabs/models/ptp_create_request.py +103 -0
  1099. moolabs/models/ptp_fulfill_request.py +90 -0
  1100. moolabs/models/ptp_payment_link_response.py +89 -0
  1101. moolabs/models/ptp_summary_response.py +104 -0
  1102. moolabs/models/publish_plan_request.py +93 -0
  1103. moolabs/models/publish_plan_result.py +93 -0
  1104. moolabs/models/publish_template_request.py +96 -0
  1105. moolabs/models/put_account_segment_request.py +89 -0
  1106. moolabs/models/put_sku_eligibility_request.py +89 -0
  1107. moolabs/models/put_tenant_segments_request.py +89 -0
  1108. moolabs/models/quality_axis.py +116 -0
  1109. moolabs/models/quality_caveat_code.py +40 -0
  1110. moolabs/models/quality_status.py +40 -0
  1111. moolabs/models/quality_summary.py +135 -0
  1112. moolabs/models/quantity.py +153 -0
  1113. moolabs/models/quick_action.py +99 -0
  1114. moolabs/models/quick_books_connect_request.py +93 -0
  1115. moolabs/models/quick_redline_response.py +123 -0
  1116. moolabs/models/quote_agent_evaluation_response.py +106 -0
  1117. moolabs/models/quote_agent_policy_response.py +112 -0
  1118. moolabs/models/quote_agent_provenance_run_response.py +114 -0
  1119. moolabs/models/quote_agent_run_response.py +122 -0
  1120. moolabs/models/quote_approval_decision_request.py +88 -0
  1121. moolabs/models/quote_approval_response.py +107 -0
  1122. moolabs/models/quote_line_item_input.py +144 -0
  1123. moolabs/models/quote_list_response.py +101 -0
  1124. moolabs/models/quote_metrics_response.py +105 -0
  1125. moolabs/models/quote_redline_decision_request.py +88 -0
  1126. moolabs/models/quote_redline_response.py +125 -0
  1127. moolabs/models/quote_response.py +125 -0
  1128. moolabs/models/quote_template_list_response.py +95 -0
  1129. moolabs/models/quote_template_response.py +109 -0
  1130. moolabs/models/quote_version_response.py +129 -0
  1131. moolabs/models/ram_cost_weight.py +152 -0
  1132. moolabs/models/ram_gib_hours.py +152 -0
  1133. moolabs/models/rate_bulk_import_request.py +97 -0
  1134. moolabs/models/rate_bulk_import_response.py +91 -0
  1135. moolabs/models/rate_card.py +150 -0
  1136. moolabs/models/rate_card_boolean_entitlement.py +96 -0
  1137. moolabs/models/rate_card_cost_list_response.py +95 -0
  1138. moolabs/models/rate_card_cost_row.py +103 -0
  1139. moolabs/models/rate_card_discount.py +87 -0
  1140. moolabs/models/rate_card_discount_input.py +103 -0
  1141. moolabs/models/rate_card_discount_payload.py +87 -0
  1142. moolabs/models/rate_card_entitlement.py +164 -0
  1143. moolabs/models/rate_card_flat_fee.py +148 -0
  1144. moolabs/models/rate_card_metered_entitlement.py +107 -0
  1145. moolabs/models/rate_card_payload.py +103 -0
  1146. moolabs/models/rate_card_response.py +106 -0
  1147. moolabs/models/rate_card_static_entitlement.py +98 -0
  1148. moolabs/models/rate_card_usage_based.py +148 -0
  1149. moolabs/models/rate_card_usage_based_price.py +192 -0
  1150. moolabs/models/rate_catalog_create.py +117 -0
  1151. moolabs/models/rate_catalog_response.py +118 -0
  1152. moolabs/models/rate_catalog_update.py +107 -0
  1153. moolabs/models/rate_generation_list_view.py +97 -0
  1154. moolabs/models/rate_generation_view.py +98 -0
  1155. moolabs/models/rate_per_unit.py +153 -0
  1156. moolabs/models/rate_per_unit1.py +153 -0
  1157. moolabs/models/rate_schedule_list_response.py +95 -0
  1158. moolabs/models/rate_schedule_preview_response.py +105 -0
  1159. moolabs/models/rate_schedule_version_out.py +101 -0
  1160. moolabs/models/ratify_family_request.py +91 -0
  1161. moolabs/models/ratify_refinement_request.py +93 -0
  1162. moolabs/models/re_scope_request.py +89 -0
  1163. moolabs/models/readiness_summary.py +89 -0
  1164. moolabs/models/readout_page_response.py +119 -0
  1165. moolabs/models/readout_row_response.py +104 -0
  1166. moolabs/models/readout_snapshot_response.py +116 -0
  1167. moolabs/models/reallocate_request.py +90 -0
  1168. moolabs/models/reallocate_response.py +97 -0
  1169. moolabs/models/reattempt_request.py +88 -0
  1170. moolabs/models/reattempt_response.py +89 -0
  1171. moolabs/models/recall_request.py +87 -0
  1172. moolabs/models/reconcile_request.py +89 -0
  1173. moolabs/models/reconcile_response.py +95 -0
  1174. moolabs/models/reconciliation_basis.py +99 -0
  1175. moolabs/models/reconciliation_basis_out.py +95 -0
  1176. moolabs/models/reconstruction_run_response.py +95 -0
  1177. moolabs/models/record_usage_request.py +115 -0
  1178. moolabs/models/recurring_period.py +96 -0
  1179. moolabs/models/recurring_period_create_input.py +94 -0
  1180. moolabs/models/recurring_period_interval.py +151 -0
  1181. moolabs/models/recurring_period_interval_enum.py +39 -0
  1182. moolabs/models/recurring_period_v2.py +94 -0
  1183. moolabs/models/recurringamount.py +152 -0
  1184. moolabs/models/redline_summary.py +89 -0
  1185. moolabs/models/refund_credit_request.py +90 -0
  1186. moolabs/models/reject_rate_generation_request.py +87 -0
  1187. moolabs/models/remittance_create_request.py +103 -0
  1188. moolabs/models/remittance_list_response.py +101 -0
  1189. moolabs/models/remittance_response.py +120 -0
  1190. moolabs/models/remove_contract_participant_response.py +131 -0
  1191. moolabs/models/remove_phase_shifting.py +37 -0
  1192. moolabs/models/replace_levels_request.py +95 -0
  1193. moolabs/models/replay_dead_letter_request.py +89 -0
  1194. moolabs/models/report_create_request.py +105 -0
  1195. moolabs/models/report_create_response.py +139 -0
  1196. moolabs/models/reporting_line_total.py +153 -0
  1197. moolabs/models/reporting_total_cost.py +153 -0
  1198. moolabs/models/request_cost_distribution.py +127 -0
  1199. moolabs/models/request_evidence_response.py +197 -0
  1200. moolabs/models/request_evidence_row.py +154 -0
  1201. moolabs/models/request_pricing_state.py +40 -0
  1202. moolabs/models/reschedule_request.py +88 -0
  1203. moolabs/models/resend_identity_details.py +104 -0
  1204. moolabs/models/reset_entitlement_usage_input.py +92 -0
  1205. moolabs/models/resolve_unapplied_request.py +87 -0
  1206. moolabs/models/resource_map_create_request.py +103 -0
  1207. moolabs/models/resource_map_response.py +113 -0
  1208. moolabs/models/retry_unpriced_request.py +91 -0
  1209. moolabs/models/retry_unpriced_response.py +91 -0
  1210. moolabs/models/revenue_recognition_request.py +89 -0
  1211. moolabs/models/reversed_settlement_ref.py +93 -0
  1212. moolabs/models/review_quarantined_request.py +95 -0
  1213. moolabs/models/review_quarantined_response.py +95 -0
  1214. moolabs/models/revoke_api_key_request.py +87 -0
  1215. moolabs/models/revoke_portal_token_request.py +87 -0
  1216. moolabs/models/rollover_mode.py +38 -0
  1217. moolabs/models/rollover_request.py +95 -0
  1218. moolabs/models/rollover_response.py +98 -0
  1219. moolabs/models/rollovercapamount.py +152 -0
  1220. moolabs/models/rolloverpercent.py +152 -0
  1221. moolabs/models/rotate_key_request.py +88 -0
  1222. moolabs/models/rotate_key_response.py +92 -0
  1223. moolabs/models/route_update_request.py +110 -0
  1224. moolabs/models/salesforce_connect_request.py +93 -0
  1225. moolabs/models/sample_rate.py +153 -0
  1226. moolabs/models/sandbox_app.py +138 -0
  1227. moolabs/models/sandbox_app_replace_update.py +101 -0
  1228. moolabs/models/sandbox_customer_app_data.py +115 -0
  1229. moolabs/models/save_redline_edit_request.py +95 -0
  1230. moolabs/models/scenario_compare_response.py +97 -0
  1231. moolabs/models/scenario_item.py +117 -0
  1232. moolabs/models/scenario_request.py +96 -0
  1233. moolabs/models/scope_type.py +38 -0
  1234. moolabs/models/sdk_batch_ingest_request.py +96 -0
  1235. moolabs/models/sdk_batch_ingest_response.py +91 -0
  1236. moolabs/models/sdk_event.py +111 -0
  1237. moolabs/models/sdk_span.py +106 -0
  1238. moolabs/models/segment_out.py +95 -0
  1239. moolabs/models/sender_response.py +93 -0
  1240. moolabs/models/sender_update.py +93 -0
  1241. moolabs/models/ses_identity_details.py +127 -0
  1242. moolabs/models/ses_provider_scope_status.py +89 -0
  1243. moolabs/models/set_rate_card_cost_request.py +89 -0
  1244. moolabs/models/severity.py +38 -0
  1245. moolabs/models/shadow_mode_request.py +87 -0
  1246. moolabs/models/shadow_run_list_item.py +101 -0
  1247. moolabs/models/shadow_run_metrics.py +114 -0
  1248. moolabs/models/shadow_run_request.py +92 -0
  1249. moolabs/models/shadow_run_summary.py +95 -0
  1250. moolabs/models/simulate_margin_request.py +100 -0
  1251. moolabs/models/simulate_margin_response.py +115 -0
  1252. moolabs/models/simulate_out.py +103 -0
  1253. moolabs/models/sku_eligibility_list_response.py +95 -0
  1254. moolabs/models/sku_eligibility_row.py +91 -0
  1255. moolabs/models/slack_quote_command_response.py +93 -0
  1256. moolabs/models/snapshot_compute_request.py +104 -0
  1257. moolabs/models/snapshot_compute_response.py +99 -0
  1258. moolabs/models/snapshot_response.py +104 -0
  1259. moolabs/models/sns_confirmation_command_out.py +98 -0
  1260. moolabs/models/sns_confirmation_confirmed_out.py +94 -0
  1261. moolabs/models/sns_confirmation_confirmed_request.py +101 -0
  1262. moolabs/models/sns_confirmation_list_out.py +95 -0
  1263. moolabs/models/sort_direction.py +37 -0
  1264. moolabs/models/sort_order.py +37 -0
  1265. moolabs/models/spend_summary.py +114 -0
  1266. moolabs/models/stage_schema.py +117 -0
  1267. moolabs/models/strategy_create_request.py +130 -0
  1268. moolabs/models/strategy_preview_request.py +87 -0
  1269. moolabs/models/strategy_update_request.py +133 -0
  1270. moolabs/models/stripe_api_key_input.py +87 -0
  1271. moolabs/models/stripe_app.py +150 -0
  1272. moolabs/models/stripe_app_replace_update.py +103 -0
  1273. moolabs/models/stripe_checkout_session_mode.py +36 -0
  1274. moolabs/models/stripe_customer_app_data.py +119 -0
  1275. moolabs/models/stripe_customer_app_data_base.py +89 -0
  1276. moolabs/models/stripe_customer_app_data_create_or_update_item.py +111 -0
  1277. moolabs/models/stripe_customer_portal_session.py +102 -0
  1278. moolabs/models/stripe_tax_config.py +95 -0
  1279. moolabs/models/stripe_webhook_event.py +99 -0
  1280. moolabs/models/stripe_webhook_event_data.py +92 -0
  1281. moolabs/models/stripe_webhook_response.py +118 -0
  1282. moolabs/models/subject.py +122 -0
  1283. moolabs/models/subject_upsert.py +98 -0
  1284. moolabs/models/subscription.py +201 -0
  1285. moolabs/models/subscription_activate_request.py +101 -0
  1286. moolabs/models/subscription_addon.py +167 -0
  1287. moolabs/models/subscription_addon_create.py +106 -0
  1288. moolabs/models/subscription_addon_rate_card.py +94 -0
  1289. moolabs/models/subscription_addon_timeline_segment.py +95 -0
  1290. moolabs/models/subscription_addon_update.py +100 -0
  1291. moolabs/models/subscription_alignment.py +93 -0
  1292. moolabs/models/subscription_bad_request_error_response.py +102 -0
  1293. moolabs/models/subscription_change.py +147 -0
  1294. moolabs/models/subscription_change_response_body.py +97 -0
  1295. moolabs/models/subscription_conflict_error_response.py +102 -0
  1296. moolabs/models/subscription_create.py +147 -0
  1297. moolabs/models/subscription_edit.py +102 -0
  1298. moolabs/models/subscription_edit_operation.py +206 -0
  1299. moolabs/models/subscription_error_extensions.py +95 -0
  1300. moolabs/models/subscription_expanded.py +211 -0
  1301. moolabs/models/subscription_item.py +167 -0
  1302. moolabs/models/subscription_item_included.py +97 -0
  1303. moolabs/models/subscription_item_price_override.py +111 -0
  1304. moolabs/models/subscription_item_price_override_type.py +37 -0
  1305. moolabs/models/subscription_paginated_response.py +101 -0
  1306. moolabs/models/subscription_phase_create.py +109 -0
  1307. moolabs/models/subscription_phase_expanded.py +163 -0
  1308. moolabs/models/subscription_ramp_phase.py +91 -0
  1309. moolabs/models/subscription_status.py +39 -0
  1310. moolabs/models/subscription_timing.py +151 -0
  1311. moolabs/models/subscription_timing_enum.py +37 -0
  1312. moolabs/models/sync_config_request.py +109 -0
  1313. moolabs/models/sync_config_response.py +111 -0
  1314. moolabs/models/sync_invoices_request.py +87 -0
  1315. moolabs/models/sync_run_item.py +102 -0
  1316. moolabs/models/synthetic_request_evidence_row.py +118 -0
  1317. moolabs/models/task_complete_request.py +92 -0
  1318. moolabs/models/task_list_response.py +101 -0
  1319. moolabs/models/task_response.py +130 -0
  1320. moolabs/models/task_update.py +93 -0
  1321. moolabs/models/tax_behavior.py +37 -0
  1322. moolabs/models/tax_config.py +100 -0
  1323. moolabs/models/template_archive_request.py +88 -0
  1324. moolabs/models/template_card_action_request.py +99 -0
  1325. moolabs/models/template_item.py +97 -0
  1326. moolabs/models/template_key_create_request.py +92 -0
  1327. moolabs/models/template_key_list_response.py +116 -0
  1328. moolabs/models/template_key_response.py +126 -0
  1329. moolabs/models/template_meta_response.py +93 -0
  1330. moolabs/models/template_preview_request.py +87 -0
  1331. moolabs/models/template_preview_response.py +101 -0
  1332. moolabs/models/template_test_send_request.py +87 -0
  1333. moolabs/models/template_test_send_response.py +93 -0
  1334. moolabs/models/template_update.py +91 -0
  1335. moolabs/models/template_version_list_response.py +95 -0
  1336. moolabs/models/template_version_response.py +143 -0
  1337. moolabs/models/tenant_config_response.py +95 -0
  1338. moolabs/models/tenant_escalation_config_out.py +97 -0
  1339. moolabs/models/tenant_escalation_config_patch.py +92 -0
  1340. moolabs/models/tenant_provision_request.py +89 -0
  1341. moolabs/models/tenant_segment_entry.py +89 -0
  1342. moolabs/models/tenant_segments_response.py +97 -0
  1343. moolabs/models/tenant_unit_economics.py +97 -0
  1344. moolabs/models/territory_in.py +89 -0
  1345. moolabs/models/test_send_request.py +104 -0
  1346. moolabs/models/test_send_response.py +93 -0
  1347. moolabs/models/tiered_price_mode.py +37 -0
  1348. moolabs/models/tiered_price_with_commitments.py +132 -0
  1349. moolabs/models/tiered_pricing_payload.py +97 -0
  1350. moolabs/models/timestamp_window.py +103 -0
  1351. moolabs/models/top_consumer.py +93 -0
  1352. moolabs/models/topup_defaults_request.py +93 -0
  1353. moolabs/models/total_cost.py +153 -0
  1354. moolabs/models/traces_response.py +95 -0
  1355. moolabs/models/trend_data_point.py +91 -0
  1356. moolabs/models/trend_point.py +116 -0
  1357. moolabs/models/trigger_request.py +87 -0
  1358. moolabs/models/ulidor_external_key.py +153 -0
  1359. moolabs/models/unapplied_cash_response.py +106 -0
  1360. moolabs/models/unavailable_reason.py +66 -0
  1361. moolabs/models/unexpected_problem_response.py +111 -0
  1362. moolabs/models/unified_price_row_input.py +99 -0
  1363. moolabs/models/unified_price_row_out.py +109 -0
  1364. moolabs/models/unit_cost.py +153 -0
  1365. moolabs/models/unit_economics.py +97 -0
  1366. moolabs/models/unit_price.py +104 -0
  1367. moolabs/models/unit_price_with_commitments.py +128 -0
  1368. moolabs/models/unitamount.py +152 -0
  1369. moolabs/models/update_approval_policy_request.py +87 -0
  1370. moolabs/models/update_auto_topup_rule_request.py +102 -0
  1371. moolabs/models/update_credit_pool_request.py +98 -0
  1372. moolabs/models/update_quote_template_request.py +102 -0
  1373. moolabs/models/update_threshold_request.py +97 -0
  1374. moolabs/models/update_wallet_settings_request.py +95 -0
  1375. moolabs/models/update_wallet_thresholds_request.py +92 -0
  1376. moolabs/models/upsert_fx_rate_request.py +92 -0
  1377. moolabs/models/upsert_provider_identity_request.py +115 -0
  1378. moolabs/models/upto.py +152 -0
  1379. moolabs/models/usage_summary_window_size.py +37 -0
  1380. moolabs/models/validate_template_request.py +116 -0
  1381. moolabs/models/validate_template_response.py +89 -0
  1382. moolabs/models/validation_error.py +99 -0
  1383. moolabs/models/validation_error_loc_inner.py +152 -0
  1384. moolabs/models/validation_issue.py +135 -0
  1385. moolabs/models/validation_issue_severity.py +37 -0
  1386. moolabs/models/validation_response.py +105 -0
  1387. moolabs/models/value_recognition_response.py +93 -0
  1388. moolabs/models/variance_decomposition_out.py +117 -0
  1389. moolabs/models/variance_summary_response.py +101 -0
  1390. moolabs/models/verification_status.py +39 -0
  1391. moolabs/models/void_grant_request.py +88 -0
  1392. moolabs/models/void_invoice_action_create.py +93 -0
  1393. moolabs/models/void_invoice_action_create_item.py +93 -0
  1394. moolabs/models/void_invoice_action_input.py +103 -0
  1395. moolabs/models/void_invoice_action_line_override.py +101 -0
  1396. moolabs/models/void_invoice_line_action_create.py +150 -0
  1397. moolabs/models/void_invoice_line_action_create_item.py +150 -0
  1398. moolabs/models/void_invoice_line_discard_action.py +94 -0
  1399. moolabs/models/void_invoice_line_pending_action_create.py +97 -0
  1400. moolabs/models/void_invoice_line_pending_action_create_item.py +97 -0
  1401. moolabs/models/volume_summary.py +114 -0
  1402. moolabs/models/wallet_owner_type.py +43 -0
  1403. moolabs/models/wallet_policy.py +38 -0
  1404. moolabs/models/wallet_response.py +112 -0
  1405. moolabs/models/wallet_state_response.py +105 -0
  1406. moolabs/models/warning_item.py +93 -0
  1407. moolabs/models/webhook_response.py +95 -0
  1408. moolabs/models/webhook_update.py +95 -0
  1409. moolabs/models/window_size.py +39 -0
  1410. moolabs/models/windowed_balance_history.py +105 -0
  1411. moolabs/models/xero_connect_request.py +91 -0
  1412. moolabs/py.typed +0 -0
  1413. moolabs/rest.py +257 -0
  1414. moolabs-0.3.0.dist-info/METADATA +31 -0
  1415. moolabs-0.3.0.dist-info/RECORD +1417 -0
  1416. moolabs-0.3.0.dist-info/WHEEL +5 -0
  1417. moolabs-0.3.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,3347 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Moolabs API
5
+
6
+ Unified Moolabs SDK. Capability-based public surface stitched from internal service specs: bff, meter, arc, acute. Customers see capability namespaces (usage, billing, collections, etc.); the SDK routes per-operation internally.
7
+
8
+ The version of the OpenAPI document: 0.3.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ import warnings
15
+ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
16
+ from typing import Any, Dict, List, Optional, Tuple, Union
17
+ from typing_extensions import Annotated
18
+
19
+ from datetime import datetime
20
+ from pydantic import Field, StrictStr
21
+ from typing import Any, Optional
22
+ from typing_extensions import Annotated
23
+ from moolabs.models.override_first_ingress_request import OverrideFirstIngressRequest
24
+ from moolabs.models.replay_dead_letter_request import ReplayDeadLetterRequest
25
+ from moolabs.models.retry_unpriced_request import RetryUnpricedRequest
26
+ from moolabs.models.retry_unpriced_response import RetryUnpricedResponse
27
+ from moolabs.models.review_quarantined_request import ReviewQuarantinedRequest
28
+ from moolabs.models.review_quarantined_response import ReviewQuarantinedResponse
29
+
30
+ from moolabs.api_client import ApiClient, RequestSerialized
31
+ from moolabs.api_response import ApiResponse
32
+ from moolabs.rest import RESTResponseType
33
+
34
+
35
+ class AdminApi:
36
+ """NOTE: This class is auto generated by OpenAPI Generator
37
+ Ref: https://openapi-generator.tech
38
+
39
+ Do not edit the class manually.
40
+ """
41
+
42
+ def __init__(self, api_client=None) -> None:
43
+ if api_client is None:
44
+ api_client = ApiClient.get_default()
45
+ self.api_client = api_client
46
+
47
+
48
+ @validate_call
49
+ def diagnose_subscription(
50
+ self,
51
+ subscription_id: StrictStr,
52
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
53
+ _request_timeout: Union[
54
+ None,
55
+ Annotated[StrictFloat, Field(gt=0)],
56
+ Tuple[
57
+ Annotated[StrictFloat, Field(gt=0)],
58
+ Annotated[StrictFloat, Field(gt=0)]
59
+ ]
60
+ ] = None,
61
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
62
+ _content_type: Optional[StrictStr] = None,
63
+ _headers: Optional[Dict[StrictStr, Any]] = None,
64
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
65
+ ) -> object:
66
+ """Diagnose Subscription
67
+
68
+ Diagnose subscription sync and grant creation status. Returns: Dictionary with diagnostic information about: - Subscription sync status - Lifecycle events - Grants created - Pools created - Wallets created
69
+
70
+ :param subscription_id: (required)
71
+ :type subscription_id: str
72
+ :param tenant_id: Tenant identifier (required)
73
+ :type tenant_id: str
74
+ :param _request_timeout: timeout setting for this request. If one
75
+ number provided, it will be total request
76
+ timeout. It can also be a pair (tuple) of
77
+ (connection, read) timeouts.
78
+ :type _request_timeout: int, tuple(int, int), optional
79
+ :param _request_auth: set to override the auth_settings for an a single
80
+ request; this effectively ignores the
81
+ authentication in the spec for a single request.
82
+ :type _request_auth: dict, optional
83
+ :param _content_type: force content-type for the request.
84
+ :type _content_type: str, Optional
85
+ :param _headers: set to override the headers for a single
86
+ request; this effectively ignores the headers
87
+ in the spec for a single request.
88
+ :type _headers: dict, optional
89
+ :param _host_index: set to override the host_index for a single
90
+ request; this effectively ignores the host_index
91
+ in the spec for a single request.
92
+ :type _host_index: int, optional
93
+ :return: Returns the result object.
94
+ """ # noqa: E501
95
+
96
+ _param = self._diagnose_subscription_serialize(
97
+ subscription_id=subscription_id,
98
+ tenant_id=tenant_id,
99
+ _request_auth=_request_auth,
100
+ _content_type=_content_type,
101
+ _headers=_headers,
102
+ _host_index=_host_index
103
+ )
104
+
105
+ _response_types_map: Dict[str, Optional[str]] = {
106
+ '200': "object",
107
+ '422': "HTTPValidationError",
108
+ }
109
+ response_data = self.api_client.call_api(
110
+ *_param,
111
+ _request_timeout=_request_timeout
112
+ )
113
+ response_data.read()
114
+ return self.api_client.response_deserialize(
115
+ response_data=response_data,
116
+ response_types_map=_response_types_map,
117
+ ).data
118
+
119
+
120
+ @validate_call
121
+ def diagnose_subscription_with_http_info(
122
+ self,
123
+ subscription_id: StrictStr,
124
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
125
+ _request_timeout: Union[
126
+ None,
127
+ Annotated[StrictFloat, Field(gt=0)],
128
+ Tuple[
129
+ Annotated[StrictFloat, Field(gt=0)],
130
+ Annotated[StrictFloat, Field(gt=0)]
131
+ ]
132
+ ] = None,
133
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
134
+ _content_type: Optional[StrictStr] = None,
135
+ _headers: Optional[Dict[StrictStr, Any]] = None,
136
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
137
+ ) -> ApiResponse[object]:
138
+ """Diagnose Subscription
139
+
140
+ Diagnose subscription sync and grant creation status. Returns: Dictionary with diagnostic information about: - Subscription sync status - Lifecycle events - Grants created - Pools created - Wallets created
141
+
142
+ :param subscription_id: (required)
143
+ :type subscription_id: str
144
+ :param tenant_id: Tenant identifier (required)
145
+ :type tenant_id: str
146
+ :param _request_timeout: timeout setting for this request. If one
147
+ number provided, it will be total request
148
+ timeout. It can also be a pair (tuple) of
149
+ (connection, read) timeouts.
150
+ :type _request_timeout: int, tuple(int, int), optional
151
+ :param _request_auth: set to override the auth_settings for an a single
152
+ request; this effectively ignores the
153
+ authentication in the spec for a single request.
154
+ :type _request_auth: dict, optional
155
+ :param _content_type: force content-type for the request.
156
+ :type _content_type: str, Optional
157
+ :param _headers: set to override the headers for a single
158
+ request; this effectively ignores the headers
159
+ in the spec for a single request.
160
+ :type _headers: dict, optional
161
+ :param _host_index: set to override the host_index for a single
162
+ request; this effectively ignores the host_index
163
+ in the spec for a single request.
164
+ :type _host_index: int, optional
165
+ :return: Returns the result object.
166
+ """ # noqa: E501
167
+
168
+ _param = self._diagnose_subscription_serialize(
169
+ subscription_id=subscription_id,
170
+ tenant_id=tenant_id,
171
+ _request_auth=_request_auth,
172
+ _content_type=_content_type,
173
+ _headers=_headers,
174
+ _host_index=_host_index
175
+ )
176
+
177
+ _response_types_map: Dict[str, Optional[str]] = {
178
+ '200': "object",
179
+ '422': "HTTPValidationError",
180
+ }
181
+ response_data = self.api_client.call_api(
182
+ *_param,
183
+ _request_timeout=_request_timeout
184
+ )
185
+ response_data.read()
186
+ return self.api_client.response_deserialize(
187
+ response_data=response_data,
188
+ response_types_map=_response_types_map,
189
+ )
190
+
191
+
192
+ @validate_call
193
+ def diagnose_subscription_without_preload_content(
194
+ self,
195
+ subscription_id: StrictStr,
196
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
197
+ _request_timeout: Union[
198
+ None,
199
+ Annotated[StrictFloat, Field(gt=0)],
200
+ Tuple[
201
+ Annotated[StrictFloat, Field(gt=0)],
202
+ Annotated[StrictFloat, Field(gt=0)]
203
+ ]
204
+ ] = None,
205
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
206
+ _content_type: Optional[StrictStr] = None,
207
+ _headers: Optional[Dict[StrictStr, Any]] = None,
208
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
209
+ ) -> RESTResponseType:
210
+ """Diagnose Subscription
211
+
212
+ Diagnose subscription sync and grant creation status. Returns: Dictionary with diagnostic information about: - Subscription sync status - Lifecycle events - Grants created - Pools created - Wallets created
213
+
214
+ :param subscription_id: (required)
215
+ :type subscription_id: str
216
+ :param tenant_id: Tenant identifier (required)
217
+ :type tenant_id: str
218
+ :param _request_timeout: timeout setting for this request. If one
219
+ number provided, it will be total request
220
+ timeout. It can also be a pair (tuple) of
221
+ (connection, read) timeouts.
222
+ :type _request_timeout: int, tuple(int, int), optional
223
+ :param _request_auth: set to override the auth_settings for an a single
224
+ request; this effectively ignores the
225
+ authentication in the spec for a single request.
226
+ :type _request_auth: dict, optional
227
+ :param _content_type: force content-type for the request.
228
+ :type _content_type: str, Optional
229
+ :param _headers: set to override the headers for a single
230
+ request; this effectively ignores the headers
231
+ in the spec for a single request.
232
+ :type _headers: dict, optional
233
+ :param _host_index: set to override the host_index for a single
234
+ request; this effectively ignores the host_index
235
+ in the spec for a single request.
236
+ :type _host_index: int, optional
237
+ :return: Returns the result object.
238
+ """ # noqa: E501
239
+
240
+ _param = self._diagnose_subscription_serialize(
241
+ subscription_id=subscription_id,
242
+ tenant_id=tenant_id,
243
+ _request_auth=_request_auth,
244
+ _content_type=_content_type,
245
+ _headers=_headers,
246
+ _host_index=_host_index
247
+ )
248
+
249
+ _response_types_map: Dict[str, Optional[str]] = {
250
+ '200': "object",
251
+ '422': "HTTPValidationError",
252
+ }
253
+ response_data = self.api_client.call_api(
254
+ *_param,
255
+ _request_timeout=_request_timeout
256
+ )
257
+ return response_data.response
258
+
259
+
260
+ def _diagnose_subscription_serialize(
261
+ self,
262
+ subscription_id,
263
+ tenant_id,
264
+ _request_auth,
265
+ _content_type,
266
+ _headers,
267
+ _host_index,
268
+ ) -> RequestSerialized:
269
+
270
+ _host = None
271
+
272
+ _collection_formats: Dict[str, str] = {
273
+ }
274
+
275
+ _path_params: Dict[str, str] = {}
276
+ _query_params: List[Tuple[str, str]] = []
277
+ _header_params: Dict[str, Optional[str]] = _headers or {}
278
+ _form_params: List[Tuple[str, str]] = []
279
+ _files: Dict[
280
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
281
+ ] = {}
282
+ _body_params: Optional[bytes] = None
283
+
284
+ # process the path parameters
285
+ if subscription_id is not None:
286
+ _path_params['subscription_id'] = subscription_id
287
+ # process the query parameters
288
+ if tenant_id is not None:
289
+
290
+ _query_params.append(('tenant_id', tenant_id))
291
+
292
+ # process the header parameters
293
+ # process the form parameters
294
+ # process the body parameter
295
+
296
+
297
+ # set the HTTP header `Accept`
298
+ if 'Accept' not in _header_params:
299
+ _header_params['Accept'] = self.api_client.select_header_accept(
300
+ [
301
+ 'application/json'
302
+ ]
303
+ )
304
+
305
+
306
+ # authentication setting
307
+ _auth_settings: List[str] = [
308
+ 'HTTPBearer'
309
+ ]
310
+
311
+ return self.api_client.param_serialize(
312
+ method='GET',
313
+ resource_path='/v1/admin/diagnostics/subscription/{subscription_id}',
314
+ path_params=_path_params,
315
+ query_params=_query_params,
316
+ header_params=_header_params,
317
+ body=_body_params,
318
+ post_params=_form_params,
319
+ files=_files,
320
+ auth_settings=_auth_settings,
321
+ collection_formats=_collection_formats,
322
+ _host=_host,
323
+ _request_auth=_request_auth
324
+ )
325
+
326
+
327
+
328
+
329
+ @validate_call
330
+ def get_ingest_dead_letter_endpoint_v1(
331
+ self,
332
+ dead_letter_id: Annotated[StrictStr, Field(description="Dead-letter row identifier")],
333
+ _request_timeout: Union[
334
+ None,
335
+ Annotated[StrictFloat, Field(gt=0)],
336
+ Tuple[
337
+ Annotated[StrictFloat, Field(gt=0)],
338
+ Annotated[StrictFloat, Field(gt=0)]
339
+ ]
340
+ ] = None,
341
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
342
+ _content_type: Optional[StrictStr] = None,
343
+ _headers: Optional[Dict[StrictStr, Any]] = None,
344
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
345
+ ) -> object:
346
+ """Get Ingest Dead Letter Endpoint
347
+
348
+ Return one ingest dead-letter record including raw payload and stack trace. Authentication is enforced subtree-wide by `dependencies=[Depends(try_portal_or_apikey)]` on the `/admin` mount in `app/api/v1/router.py`. This handler additionally takes the resolved `auth` context as a parameter so we can derive the caller's `tenant_id` SERVER-SIDE -- it is *not* read from a client-supplied header (an earlier iteration of this PR used `X-Org-Id`; round-3 adversarial review proved that input was unverified user-input and could be spoofed by harvesting `tenant_id` from the list endpoint). Cross-tenant guard: the row's ``tenant_id`` must match ``auth.tenant_id`` OR be NULL (untenanted poison-pill events). Mismatch returns 404 -- not 403 -- so the endpoint never leaks the existence of a row in another tenant.
349
+
350
+ :param dead_letter_id: Dead-letter row identifier (required)
351
+ :type dead_letter_id: str
352
+ :param _request_timeout: timeout setting for this request. If one
353
+ number provided, it will be total request
354
+ timeout. It can also be a pair (tuple) of
355
+ (connection, read) timeouts.
356
+ :type _request_timeout: int, tuple(int, int), optional
357
+ :param _request_auth: set to override the auth_settings for an a single
358
+ request; this effectively ignores the
359
+ authentication in the spec for a single request.
360
+ :type _request_auth: dict, optional
361
+ :param _content_type: force content-type for the request.
362
+ :type _content_type: str, Optional
363
+ :param _headers: set to override the headers for a single
364
+ request; this effectively ignores the headers
365
+ in the spec for a single request.
366
+ :type _headers: dict, optional
367
+ :param _host_index: set to override the host_index for a single
368
+ request; this effectively ignores the host_index
369
+ in the spec for a single request.
370
+ :type _host_index: int, optional
371
+ :return: Returns the result object.
372
+ """ # noqa: E501
373
+
374
+ _param = self._get_ingest_dead_letter_endpoint_v1_serialize(
375
+ dead_letter_id=dead_letter_id,
376
+ _request_auth=_request_auth,
377
+ _content_type=_content_type,
378
+ _headers=_headers,
379
+ _host_index=_host_index
380
+ )
381
+
382
+ _response_types_map: Dict[str, Optional[str]] = {
383
+ '200': "object",
384
+ '422': "HTTPValidationError",
385
+ }
386
+ response_data = self.api_client.call_api(
387
+ *_param,
388
+ _request_timeout=_request_timeout
389
+ )
390
+ response_data.read()
391
+ return self.api_client.response_deserialize(
392
+ response_data=response_data,
393
+ response_types_map=_response_types_map,
394
+ ).data
395
+
396
+
397
+ @validate_call
398
+ def get_ingest_dead_letter_endpoint_v1_with_http_info(
399
+ self,
400
+ dead_letter_id: Annotated[StrictStr, Field(description="Dead-letter row identifier")],
401
+ _request_timeout: Union[
402
+ None,
403
+ Annotated[StrictFloat, Field(gt=0)],
404
+ Tuple[
405
+ Annotated[StrictFloat, Field(gt=0)],
406
+ Annotated[StrictFloat, Field(gt=0)]
407
+ ]
408
+ ] = None,
409
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
410
+ _content_type: Optional[StrictStr] = None,
411
+ _headers: Optional[Dict[StrictStr, Any]] = None,
412
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
413
+ ) -> ApiResponse[object]:
414
+ """Get Ingest Dead Letter Endpoint
415
+
416
+ Return one ingest dead-letter record including raw payload and stack trace. Authentication is enforced subtree-wide by `dependencies=[Depends(try_portal_or_apikey)]` on the `/admin` mount in `app/api/v1/router.py`. This handler additionally takes the resolved `auth` context as a parameter so we can derive the caller's `tenant_id` SERVER-SIDE -- it is *not* read from a client-supplied header (an earlier iteration of this PR used `X-Org-Id`; round-3 adversarial review proved that input was unverified user-input and could be spoofed by harvesting `tenant_id` from the list endpoint). Cross-tenant guard: the row's ``tenant_id`` must match ``auth.tenant_id`` OR be NULL (untenanted poison-pill events). Mismatch returns 404 -- not 403 -- so the endpoint never leaks the existence of a row in another tenant.
417
+
418
+ :param dead_letter_id: Dead-letter row identifier (required)
419
+ :type dead_letter_id: str
420
+ :param _request_timeout: timeout setting for this request. If one
421
+ number provided, it will be total request
422
+ timeout. It can also be a pair (tuple) of
423
+ (connection, read) timeouts.
424
+ :type _request_timeout: int, tuple(int, int), optional
425
+ :param _request_auth: set to override the auth_settings for an a single
426
+ request; this effectively ignores the
427
+ authentication in the spec for a single request.
428
+ :type _request_auth: dict, optional
429
+ :param _content_type: force content-type for the request.
430
+ :type _content_type: str, Optional
431
+ :param _headers: set to override the headers for a single
432
+ request; this effectively ignores the headers
433
+ in the spec for a single request.
434
+ :type _headers: dict, optional
435
+ :param _host_index: set to override the host_index for a single
436
+ request; this effectively ignores the host_index
437
+ in the spec for a single request.
438
+ :type _host_index: int, optional
439
+ :return: Returns the result object.
440
+ """ # noqa: E501
441
+
442
+ _param = self._get_ingest_dead_letter_endpoint_v1_serialize(
443
+ dead_letter_id=dead_letter_id,
444
+ _request_auth=_request_auth,
445
+ _content_type=_content_type,
446
+ _headers=_headers,
447
+ _host_index=_host_index
448
+ )
449
+
450
+ _response_types_map: Dict[str, Optional[str]] = {
451
+ '200': "object",
452
+ '422': "HTTPValidationError",
453
+ }
454
+ response_data = self.api_client.call_api(
455
+ *_param,
456
+ _request_timeout=_request_timeout
457
+ )
458
+ response_data.read()
459
+ return self.api_client.response_deserialize(
460
+ response_data=response_data,
461
+ response_types_map=_response_types_map,
462
+ )
463
+
464
+
465
+ @validate_call
466
+ def get_ingest_dead_letter_endpoint_v1_without_preload_content(
467
+ self,
468
+ dead_letter_id: Annotated[StrictStr, Field(description="Dead-letter row identifier")],
469
+ _request_timeout: Union[
470
+ None,
471
+ Annotated[StrictFloat, Field(gt=0)],
472
+ Tuple[
473
+ Annotated[StrictFloat, Field(gt=0)],
474
+ Annotated[StrictFloat, Field(gt=0)]
475
+ ]
476
+ ] = None,
477
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
478
+ _content_type: Optional[StrictStr] = None,
479
+ _headers: Optional[Dict[StrictStr, Any]] = None,
480
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
481
+ ) -> RESTResponseType:
482
+ """Get Ingest Dead Letter Endpoint
483
+
484
+ Return one ingest dead-letter record including raw payload and stack trace. Authentication is enforced subtree-wide by `dependencies=[Depends(try_portal_or_apikey)]` on the `/admin` mount in `app/api/v1/router.py`. This handler additionally takes the resolved `auth` context as a parameter so we can derive the caller's `tenant_id` SERVER-SIDE -- it is *not* read from a client-supplied header (an earlier iteration of this PR used `X-Org-Id`; round-3 adversarial review proved that input was unverified user-input and could be spoofed by harvesting `tenant_id` from the list endpoint). Cross-tenant guard: the row's ``tenant_id`` must match ``auth.tenant_id`` OR be NULL (untenanted poison-pill events). Mismatch returns 404 -- not 403 -- so the endpoint never leaks the existence of a row in another tenant.
485
+
486
+ :param dead_letter_id: Dead-letter row identifier (required)
487
+ :type dead_letter_id: str
488
+ :param _request_timeout: timeout setting for this request. If one
489
+ number provided, it will be total request
490
+ timeout. It can also be a pair (tuple) of
491
+ (connection, read) timeouts.
492
+ :type _request_timeout: int, tuple(int, int), optional
493
+ :param _request_auth: set to override the auth_settings for an a single
494
+ request; this effectively ignores the
495
+ authentication in the spec for a single request.
496
+ :type _request_auth: dict, optional
497
+ :param _content_type: force content-type for the request.
498
+ :type _content_type: str, Optional
499
+ :param _headers: set to override the headers for a single
500
+ request; this effectively ignores the headers
501
+ in the spec for a single request.
502
+ :type _headers: dict, optional
503
+ :param _host_index: set to override the host_index for a single
504
+ request; this effectively ignores the host_index
505
+ in the spec for a single request.
506
+ :type _host_index: int, optional
507
+ :return: Returns the result object.
508
+ """ # noqa: E501
509
+
510
+ _param = self._get_ingest_dead_letter_endpoint_v1_serialize(
511
+ dead_letter_id=dead_letter_id,
512
+ _request_auth=_request_auth,
513
+ _content_type=_content_type,
514
+ _headers=_headers,
515
+ _host_index=_host_index
516
+ )
517
+
518
+ _response_types_map: Dict[str, Optional[str]] = {
519
+ '200': "object",
520
+ '422': "HTTPValidationError",
521
+ }
522
+ response_data = self.api_client.call_api(
523
+ *_param,
524
+ _request_timeout=_request_timeout
525
+ )
526
+ return response_data.response
527
+
528
+
529
+ def _get_ingest_dead_letter_endpoint_v1_serialize(
530
+ self,
531
+ dead_letter_id,
532
+ _request_auth,
533
+ _content_type,
534
+ _headers,
535
+ _host_index,
536
+ ) -> RequestSerialized:
537
+
538
+ _host = None
539
+
540
+ _collection_formats: Dict[str, str] = {
541
+ }
542
+
543
+ _path_params: Dict[str, str] = {}
544
+ _query_params: List[Tuple[str, str]] = []
545
+ _header_params: Dict[str, Optional[str]] = _headers or {}
546
+ _form_params: List[Tuple[str, str]] = []
547
+ _files: Dict[
548
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
549
+ ] = {}
550
+ _body_params: Optional[bytes] = None
551
+
552
+ # process the path parameters
553
+ if dead_letter_id is not None:
554
+ _path_params['dead_letter_id'] = dead_letter_id
555
+ # process the query parameters
556
+ # process the header parameters
557
+ # process the form parameters
558
+ # process the body parameter
559
+
560
+
561
+ # set the HTTP header `Accept`
562
+ if 'Accept' not in _header_params:
563
+ _header_params['Accept'] = self.api_client.select_header_accept(
564
+ [
565
+ 'application/json'
566
+ ]
567
+ )
568
+
569
+
570
+ # authentication setting
571
+ _auth_settings: List[str] = [
572
+ 'HTTPBearer'
573
+ ]
574
+
575
+ return self.api_client.param_serialize(
576
+ method='GET',
577
+ resource_path='/v1/admin/ingest/dead-letters/{dead_letter_id}',
578
+ path_params=_path_params,
579
+ query_params=_query_params,
580
+ header_params=_header_params,
581
+ body=_body_params,
582
+ post_params=_form_params,
583
+ files=_files,
584
+ auth_settings=_auth_settings,
585
+ collection_formats=_collection_formats,
586
+ _host=_host,
587
+ _request_auth=_request_auth
588
+ )
589
+
590
+
591
+
592
+
593
+ @validate_call
594
+ def get_ingest_dead_letters_v1(
595
+ self,
596
+ tenant_id: Annotated[Optional[StrictStr], Field(description="Optional tenant filter (ignored for per-tenant auth)")] = None,
597
+ pool_id: Annotated[Optional[StrictStr], Field(description="Optional pool filter")] = None,
598
+ replay_status: Annotated[Optional[StrictStr], Field(description="Optional replay status filter: PENDING/REPLAYED/FAILED")] = None,
599
+ reason_code: Annotated[Optional[StrictStr], Field(description="Optional reason code filter")] = None,
600
+ limit: Annotated[Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Maximum rows")] = None,
601
+ _request_timeout: Union[
602
+ None,
603
+ Annotated[StrictFloat, Field(gt=0)],
604
+ Tuple[
605
+ Annotated[StrictFloat, Field(gt=0)],
606
+ Annotated[StrictFloat, Field(gt=0)]
607
+ ]
608
+ ] = None,
609
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
610
+ _content_type: Optional[StrictStr] = None,
611
+ _headers: Optional[Dict[StrictStr, Any]] = None,
612
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
613
+ ) -> object:
614
+ """Get Ingest Dead Letters
615
+
616
+ List durable ingest dead-letter records. Cross-tenant enumeration guard (PR #632 round-6 HIGH): `try_portal_or_apikey` accepts per-tenant customer API keys (the same keys SDK customers use to submit events). Without forcing the tenant scope server-side, a customer of tenant A could omit the `tenant_id` query parameter -- or supply tenant B's id -- and enumerate all dead letters across all tenants (cloud_event_id, reason_detail, source_topic, kafka coords). The round-6 review correctly escalated this from MEDIUM residue to HIGH because the auth dep IS reachable by customer keys. Fix mirrors the detail endpoint: the caller's auth-derived tenant scope is forced as the filter, overriding any client-supplied ``tenant_id`` query parameter. In production all three AuthContext subclasses (`ApiKeyContext`, `PortalTokenContext`, `OIDCJWTContext`) require ``tenant_id`` at construction, so the fall-through branch where ``auth.tenant_id is None`` honors the client-supplied filter is unreachable today -- it remains as defensive code in case a future staff-key path produces an untenanted context.
617
+
618
+ :param tenant_id: Optional tenant filter (ignored for per-tenant auth)
619
+ :type tenant_id: str
620
+ :param pool_id: Optional pool filter
621
+ :type pool_id: str
622
+ :param replay_status: Optional replay status filter: PENDING/REPLAYED/FAILED
623
+ :type replay_status: str
624
+ :param reason_code: Optional reason code filter
625
+ :type reason_code: str
626
+ :param limit: Maximum rows
627
+ :type limit: int
628
+ :param _request_timeout: timeout setting for this request. If one
629
+ number provided, it will be total request
630
+ timeout. It can also be a pair (tuple) of
631
+ (connection, read) timeouts.
632
+ :type _request_timeout: int, tuple(int, int), optional
633
+ :param _request_auth: set to override the auth_settings for an a single
634
+ request; this effectively ignores the
635
+ authentication in the spec for a single request.
636
+ :type _request_auth: dict, optional
637
+ :param _content_type: force content-type for the request.
638
+ :type _content_type: str, Optional
639
+ :param _headers: set to override the headers for a single
640
+ request; this effectively ignores the headers
641
+ in the spec for a single request.
642
+ :type _headers: dict, optional
643
+ :param _host_index: set to override the host_index for a single
644
+ request; this effectively ignores the host_index
645
+ in the spec for a single request.
646
+ :type _host_index: int, optional
647
+ :return: Returns the result object.
648
+ """ # noqa: E501
649
+
650
+ _param = self._get_ingest_dead_letters_v1_serialize(
651
+ tenant_id=tenant_id,
652
+ pool_id=pool_id,
653
+ replay_status=replay_status,
654
+ reason_code=reason_code,
655
+ limit=limit,
656
+ _request_auth=_request_auth,
657
+ _content_type=_content_type,
658
+ _headers=_headers,
659
+ _host_index=_host_index
660
+ )
661
+
662
+ _response_types_map: Dict[str, Optional[str]] = {
663
+ '200': "object",
664
+ '422': "HTTPValidationError",
665
+ }
666
+ response_data = self.api_client.call_api(
667
+ *_param,
668
+ _request_timeout=_request_timeout
669
+ )
670
+ response_data.read()
671
+ return self.api_client.response_deserialize(
672
+ response_data=response_data,
673
+ response_types_map=_response_types_map,
674
+ ).data
675
+
676
+
677
+ @validate_call
678
+ def get_ingest_dead_letters_v1_with_http_info(
679
+ self,
680
+ tenant_id: Annotated[Optional[StrictStr], Field(description="Optional tenant filter (ignored for per-tenant auth)")] = None,
681
+ pool_id: Annotated[Optional[StrictStr], Field(description="Optional pool filter")] = None,
682
+ replay_status: Annotated[Optional[StrictStr], Field(description="Optional replay status filter: PENDING/REPLAYED/FAILED")] = None,
683
+ reason_code: Annotated[Optional[StrictStr], Field(description="Optional reason code filter")] = None,
684
+ limit: Annotated[Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Maximum rows")] = None,
685
+ _request_timeout: Union[
686
+ None,
687
+ Annotated[StrictFloat, Field(gt=0)],
688
+ Tuple[
689
+ Annotated[StrictFloat, Field(gt=0)],
690
+ Annotated[StrictFloat, Field(gt=0)]
691
+ ]
692
+ ] = None,
693
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
694
+ _content_type: Optional[StrictStr] = None,
695
+ _headers: Optional[Dict[StrictStr, Any]] = None,
696
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
697
+ ) -> ApiResponse[object]:
698
+ """Get Ingest Dead Letters
699
+
700
+ List durable ingest dead-letter records. Cross-tenant enumeration guard (PR #632 round-6 HIGH): `try_portal_or_apikey` accepts per-tenant customer API keys (the same keys SDK customers use to submit events). Without forcing the tenant scope server-side, a customer of tenant A could omit the `tenant_id` query parameter -- or supply tenant B's id -- and enumerate all dead letters across all tenants (cloud_event_id, reason_detail, source_topic, kafka coords). The round-6 review correctly escalated this from MEDIUM residue to HIGH because the auth dep IS reachable by customer keys. Fix mirrors the detail endpoint: the caller's auth-derived tenant scope is forced as the filter, overriding any client-supplied ``tenant_id`` query parameter. In production all three AuthContext subclasses (`ApiKeyContext`, `PortalTokenContext`, `OIDCJWTContext`) require ``tenant_id`` at construction, so the fall-through branch where ``auth.tenant_id is None`` honors the client-supplied filter is unreachable today -- it remains as defensive code in case a future staff-key path produces an untenanted context.
701
+
702
+ :param tenant_id: Optional tenant filter (ignored for per-tenant auth)
703
+ :type tenant_id: str
704
+ :param pool_id: Optional pool filter
705
+ :type pool_id: str
706
+ :param replay_status: Optional replay status filter: PENDING/REPLAYED/FAILED
707
+ :type replay_status: str
708
+ :param reason_code: Optional reason code filter
709
+ :type reason_code: str
710
+ :param limit: Maximum rows
711
+ :type limit: int
712
+ :param _request_timeout: timeout setting for this request. If one
713
+ number provided, it will be total request
714
+ timeout. It can also be a pair (tuple) of
715
+ (connection, read) timeouts.
716
+ :type _request_timeout: int, tuple(int, int), optional
717
+ :param _request_auth: set to override the auth_settings for an a single
718
+ request; this effectively ignores the
719
+ authentication in the spec for a single request.
720
+ :type _request_auth: dict, optional
721
+ :param _content_type: force content-type for the request.
722
+ :type _content_type: str, Optional
723
+ :param _headers: set to override the headers for a single
724
+ request; this effectively ignores the headers
725
+ in the spec for a single request.
726
+ :type _headers: dict, optional
727
+ :param _host_index: set to override the host_index for a single
728
+ request; this effectively ignores the host_index
729
+ in the spec for a single request.
730
+ :type _host_index: int, optional
731
+ :return: Returns the result object.
732
+ """ # noqa: E501
733
+
734
+ _param = self._get_ingest_dead_letters_v1_serialize(
735
+ tenant_id=tenant_id,
736
+ pool_id=pool_id,
737
+ replay_status=replay_status,
738
+ reason_code=reason_code,
739
+ limit=limit,
740
+ _request_auth=_request_auth,
741
+ _content_type=_content_type,
742
+ _headers=_headers,
743
+ _host_index=_host_index
744
+ )
745
+
746
+ _response_types_map: Dict[str, Optional[str]] = {
747
+ '200': "object",
748
+ '422': "HTTPValidationError",
749
+ }
750
+ response_data = self.api_client.call_api(
751
+ *_param,
752
+ _request_timeout=_request_timeout
753
+ )
754
+ response_data.read()
755
+ return self.api_client.response_deserialize(
756
+ response_data=response_data,
757
+ response_types_map=_response_types_map,
758
+ )
759
+
760
+
761
+ @validate_call
762
+ def get_ingest_dead_letters_v1_without_preload_content(
763
+ self,
764
+ tenant_id: Annotated[Optional[StrictStr], Field(description="Optional tenant filter (ignored for per-tenant auth)")] = None,
765
+ pool_id: Annotated[Optional[StrictStr], Field(description="Optional pool filter")] = None,
766
+ replay_status: Annotated[Optional[StrictStr], Field(description="Optional replay status filter: PENDING/REPLAYED/FAILED")] = None,
767
+ reason_code: Annotated[Optional[StrictStr], Field(description="Optional reason code filter")] = None,
768
+ limit: Annotated[Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Maximum rows")] = None,
769
+ _request_timeout: Union[
770
+ None,
771
+ Annotated[StrictFloat, Field(gt=0)],
772
+ Tuple[
773
+ Annotated[StrictFloat, Field(gt=0)],
774
+ Annotated[StrictFloat, Field(gt=0)]
775
+ ]
776
+ ] = None,
777
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
778
+ _content_type: Optional[StrictStr] = None,
779
+ _headers: Optional[Dict[StrictStr, Any]] = None,
780
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
781
+ ) -> RESTResponseType:
782
+ """Get Ingest Dead Letters
783
+
784
+ List durable ingest dead-letter records. Cross-tenant enumeration guard (PR #632 round-6 HIGH): `try_portal_or_apikey` accepts per-tenant customer API keys (the same keys SDK customers use to submit events). Without forcing the tenant scope server-side, a customer of tenant A could omit the `tenant_id` query parameter -- or supply tenant B's id -- and enumerate all dead letters across all tenants (cloud_event_id, reason_detail, source_topic, kafka coords). The round-6 review correctly escalated this from MEDIUM residue to HIGH because the auth dep IS reachable by customer keys. Fix mirrors the detail endpoint: the caller's auth-derived tenant scope is forced as the filter, overriding any client-supplied ``tenant_id`` query parameter. In production all three AuthContext subclasses (`ApiKeyContext`, `PortalTokenContext`, `OIDCJWTContext`) require ``tenant_id`` at construction, so the fall-through branch where ``auth.tenant_id is None`` honors the client-supplied filter is unreachable today -- it remains as defensive code in case a future staff-key path produces an untenanted context.
785
+
786
+ :param tenant_id: Optional tenant filter (ignored for per-tenant auth)
787
+ :type tenant_id: str
788
+ :param pool_id: Optional pool filter
789
+ :type pool_id: str
790
+ :param replay_status: Optional replay status filter: PENDING/REPLAYED/FAILED
791
+ :type replay_status: str
792
+ :param reason_code: Optional reason code filter
793
+ :type reason_code: str
794
+ :param limit: Maximum rows
795
+ :type limit: int
796
+ :param _request_timeout: timeout setting for this request. If one
797
+ number provided, it will be total request
798
+ timeout. It can also be a pair (tuple) of
799
+ (connection, read) timeouts.
800
+ :type _request_timeout: int, tuple(int, int), optional
801
+ :param _request_auth: set to override the auth_settings for an a single
802
+ request; this effectively ignores the
803
+ authentication in the spec for a single request.
804
+ :type _request_auth: dict, optional
805
+ :param _content_type: force content-type for the request.
806
+ :type _content_type: str, Optional
807
+ :param _headers: set to override the headers for a single
808
+ request; this effectively ignores the headers
809
+ in the spec for a single request.
810
+ :type _headers: dict, optional
811
+ :param _host_index: set to override the host_index for a single
812
+ request; this effectively ignores the host_index
813
+ in the spec for a single request.
814
+ :type _host_index: int, optional
815
+ :return: Returns the result object.
816
+ """ # noqa: E501
817
+
818
+ _param = self._get_ingest_dead_letters_v1_serialize(
819
+ tenant_id=tenant_id,
820
+ pool_id=pool_id,
821
+ replay_status=replay_status,
822
+ reason_code=reason_code,
823
+ limit=limit,
824
+ _request_auth=_request_auth,
825
+ _content_type=_content_type,
826
+ _headers=_headers,
827
+ _host_index=_host_index
828
+ )
829
+
830
+ _response_types_map: Dict[str, Optional[str]] = {
831
+ '200': "object",
832
+ '422': "HTTPValidationError",
833
+ }
834
+ response_data = self.api_client.call_api(
835
+ *_param,
836
+ _request_timeout=_request_timeout
837
+ )
838
+ return response_data.response
839
+
840
+
841
+ def _get_ingest_dead_letters_v1_serialize(
842
+ self,
843
+ tenant_id,
844
+ pool_id,
845
+ replay_status,
846
+ reason_code,
847
+ limit,
848
+ _request_auth,
849
+ _content_type,
850
+ _headers,
851
+ _host_index,
852
+ ) -> RequestSerialized:
853
+
854
+ _host = None
855
+
856
+ _collection_formats: Dict[str, str] = {
857
+ }
858
+
859
+ _path_params: Dict[str, str] = {}
860
+ _query_params: List[Tuple[str, str]] = []
861
+ _header_params: Dict[str, Optional[str]] = _headers or {}
862
+ _form_params: List[Tuple[str, str]] = []
863
+ _files: Dict[
864
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
865
+ ] = {}
866
+ _body_params: Optional[bytes] = None
867
+
868
+ # process the path parameters
869
+ # process the query parameters
870
+ if tenant_id is not None:
871
+
872
+ _query_params.append(('tenant_id', tenant_id))
873
+
874
+ if pool_id is not None:
875
+
876
+ _query_params.append(('pool_id', pool_id))
877
+
878
+ if replay_status is not None:
879
+
880
+ _query_params.append(('replay_status', replay_status))
881
+
882
+ if reason_code is not None:
883
+
884
+ _query_params.append(('reason_code', reason_code))
885
+
886
+ if limit is not None:
887
+
888
+ _query_params.append(('limit', limit))
889
+
890
+ # process the header parameters
891
+ # process the form parameters
892
+ # process the body parameter
893
+
894
+
895
+ # set the HTTP header `Accept`
896
+ if 'Accept' not in _header_params:
897
+ _header_params['Accept'] = self.api_client.select_header_accept(
898
+ [
899
+ 'application/json'
900
+ ]
901
+ )
902
+
903
+
904
+ # authentication setting
905
+ _auth_settings: List[str] = [
906
+ 'HTTPBearer'
907
+ ]
908
+
909
+ return self.api_client.param_serialize(
910
+ method='GET',
911
+ resource_path='/v1/admin/ingest/dead-letters',
912
+ path_params=_path_params,
913
+ query_params=_query_params,
914
+ header_params=_header_params,
915
+ body=_body_params,
916
+ post_params=_form_params,
917
+ files=_files,
918
+ auth_settings=_auth_settings,
919
+ collection_formats=_collection_formats,
920
+ _host=_host,
921
+ _request_auth=_request_auth
922
+ )
923
+
924
+
925
+
926
+
927
+ @validate_call
928
+ def get_ledger_audit_get(
929
+ self,
930
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
931
+ pool_id: Annotated[StrictStr, Field(description="Pool identifier")],
932
+ wallet_id: Annotated[Optional[StrictStr], Field(description="Optional wallet filter")] = None,
933
+ journal_entry_id: Annotated[Optional[StrictStr], Field(description="Optional journal entry filter")] = None,
934
+ usage_event_id: Annotated[Optional[StrictStr], Field(description="Optional usage event filter")] = None,
935
+ from_effective_at: Annotated[Optional[datetime], Field(description="Optional start time filter")] = None,
936
+ to_effective_at: Annotated[Optional[datetime], Field(description="Optional end time filter")] = None,
937
+ limit: Annotated[Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Maximum number of entries")] = None,
938
+ _request_timeout: Union[
939
+ None,
940
+ Annotated[StrictFloat, Field(gt=0)],
941
+ Tuple[
942
+ Annotated[StrictFloat, Field(gt=0)],
943
+ Annotated[StrictFloat, Field(gt=0)]
944
+ ]
945
+ ] = None,
946
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
947
+ _content_type: Optional[StrictStr] = None,
948
+ _headers: Optional[Dict[StrictStr, Any]] = None,
949
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
950
+ ) -> object:
951
+ """Get Ledger Audit
952
+
953
+ Explain ledger audit trace. This provides a detailed audit trail of journal entries, postings, and burn allocations.
954
+
955
+ :param tenant_id: Tenant identifier (required)
956
+ :type tenant_id: str
957
+ :param pool_id: Pool identifier (required)
958
+ :type pool_id: str
959
+ :param wallet_id: Optional wallet filter
960
+ :type wallet_id: str
961
+ :param journal_entry_id: Optional journal entry filter
962
+ :type journal_entry_id: str
963
+ :param usage_event_id: Optional usage event filter
964
+ :type usage_event_id: str
965
+ :param from_effective_at: Optional start time filter
966
+ :type from_effective_at: datetime
967
+ :param to_effective_at: Optional end time filter
968
+ :type to_effective_at: datetime
969
+ :param limit: Maximum number of entries
970
+ :type limit: int
971
+ :param _request_timeout: timeout setting for this request. If one
972
+ number provided, it will be total request
973
+ timeout. It can also be a pair (tuple) of
974
+ (connection, read) timeouts.
975
+ :type _request_timeout: int, tuple(int, int), optional
976
+ :param _request_auth: set to override the auth_settings for an a single
977
+ request; this effectively ignores the
978
+ authentication in the spec for a single request.
979
+ :type _request_auth: dict, optional
980
+ :param _content_type: force content-type for the request.
981
+ :type _content_type: str, Optional
982
+ :param _headers: set to override the headers for a single
983
+ request; this effectively ignores the headers
984
+ in the spec for a single request.
985
+ :type _headers: dict, optional
986
+ :param _host_index: set to override the host_index for a single
987
+ request; this effectively ignores the host_index
988
+ in the spec for a single request.
989
+ :type _host_index: int, optional
990
+ :return: Returns the result object.
991
+ """ # noqa: E501
992
+
993
+ _param = self._get_ledger_audit_get_serialize(
994
+ tenant_id=tenant_id,
995
+ pool_id=pool_id,
996
+ wallet_id=wallet_id,
997
+ journal_entry_id=journal_entry_id,
998
+ usage_event_id=usage_event_id,
999
+ from_effective_at=from_effective_at,
1000
+ to_effective_at=to_effective_at,
1001
+ limit=limit,
1002
+ _request_auth=_request_auth,
1003
+ _content_type=_content_type,
1004
+ _headers=_headers,
1005
+ _host_index=_host_index
1006
+ )
1007
+
1008
+ _response_types_map: Dict[str, Optional[str]] = {
1009
+ '200': "object",
1010
+ '422': "HTTPValidationError",
1011
+ }
1012
+ response_data = self.api_client.call_api(
1013
+ *_param,
1014
+ _request_timeout=_request_timeout
1015
+ )
1016
+ response_data.read()
1017
+ return self.api_client.response_deserialize(
1018
+ response_data=response_data,
1019
+ response_types_map=_response_types_map,
1020
+ ).data
1021
+
1022
+
1023
+ @validate_call
1024
+ def get_ledger_audit_get_with_http_info(
1025
+ self,
1026
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
1027
+ pool_id: Annotated[StrictStr, Field(description="Pool identifier")],
1028
+ wallet_id: Annotated[Optional[StrictStr], Field(description="Optional wallet filter")] = None,
1029
+ journal_entry_id: Annotated[Optional[StrictStr], Field(description="Optional journal entry filter")] = None,
1030
+ usage_event_id: Annotated[Optional[StrictStr], Field(description="Optional usage event filter")] = None,
1031
+ from_effective_at: Annotated[Optional[datetime], Field(description="Optional start time filter")] = None,
1032
+ to_effective_at: Annotated[Optional[datetime], Field(description="Optional end time filter")] = None,
1033
+ limit: Annotated[Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Maximum number of entries")] = None,
1034
+ _request_timeout: Union[
1035
+ None,
1036
+ Annotated[StrictFloat, Field(gt=0)],
1037
+ Tuple[
1038
+ Annotated[StrictFloat, Field(gt=0)],
1039
+ Annotated[StrictFloat, Field(gt=0)]
1040
+ ]
1041
+ ] = None,
1042
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1043
+ _content_type: Optional[StrictStr] = None,
1044
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1045
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1046
+ ) -> ApiResponse[object]:
1047
+ """Get Ledger Audit
1048
+
1049
+ Explain ledger audit trace. This provides a detailed audit trail of journal entries, postings, and burn allocations.
1050
+
1051
+ :param tenant_id: Tenant identifier (required)
1052
+ :type tenant_id: str
1053
+ :param pool_id: Pool identifier (required)
1054
+ :type pool_id: str
1055
+ :param wallet_id: Optional wallet filter
1056
+ :type wallet_id: str
1057
+ :param journal_entry_id: Optional journal entry filter
1058
+ :type journal_entry_id: str
1059
+ :param usage_event_id: Optional usage event filter
1060
+ :type usage_event_id: str
1061
+ :param from_effective_at: Optional start time filter
1062
+ :type from_effective_at: datetime
1063
+ :param to_effective_at: Optional end time filter
1064
+ :type to_effective_at: datetime
1065
+ :param limit: Maximum number of entries
1066
+ :type limit: int
1067
+ :param _request_timeout: timeout setting for this request. If one
1068
+ number provided, it will be total request
1069
+ timeout. It can also be a pair (tuple) of
1070
+ (connection, read) timeouts.
1071
+ :type _request_timeout: int, tuple(int, int), optional
1072
+ :param _request_auth: set to override the auth_settings for an a single
1073
+ request; this effectively ignores the
1074
+ authentication in the spec for a single request.
1075
+ :type _request_auth: dict, optional
1076
+ :param _content_type: force content-type for the request.
1077
+ :type _content_type: str, Optional
1078
+ :param _headers: set to override the headers for a single
1079
+ request; this effectively ignores the headers
1080
+ in the spec for a single request.
1081
+ :type _headers: dict, optional
1082
+ :param _host_index: set to override the host_index for a single
1083
+ request; this effectively ignores the host_index
1084
+ in the spec for a single request.
1085
+ :type _host_index: int, optional
1086
+ :return: Returns the result object.
1087
+ """ # noqa: E501
1088
+
1089
+ _param = self._get_ledger_audit_get_serialize(
1090
+ tenant_id=tenant_id,
1091
+ pool_id=pool_id,
1092
+ wallet_id=wallet_id,
1093
+ journal_entry_id=journal_entry_id,
1094
+ usage_event_id=usage_event_id,
1095
+ from_effective_at=from_effective_at,
1096
+ to_effective_at=to_effective_at,
1097
+ limit=limit,
1098
+ _request_auth=_request_auth,
1099
+ _content_type=_content_type,
1100
+ _headers=_headers,
1101
+ _host_index=_host_index
1102
+ )
1103
+
1104
+ _response_types_map: Dict[str, Optional[str]] = {
1105
+ '200': "object",
1106
+ '422': "HTTPValidationError",
1107
+ }
1108
+ response_data = self.api_client.call_api(
1109
+ *_param,
1110
+ _request_timeout=_request_timeout
1111
+ )
1112
+ response_data.read()
1113
+ return self.api_client.response_deserialize(
1114
+ response_data=response_data,
1115
+ response_types_map=_response_types_map,
1116
+ )
1117
+
1118
+
1119
+ @validate_call
1120
+ def get_ledger_audit_get_without_preload_content(
1121
+ self,
1122
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
1123
+ pool_id: Annotated[StrictStr, Field(description="Pool identifier")],
1124
+ wallet_id: Annotated[Optional[StrictStr], Field(description="Optional wallet filter")] = None,
1125
+ journal_entry_id: Annotated[Optional[StrictStr], Field(description="Optional journal entry filter")] = None,
1126
+ usage_event_id: Annotated[Optional[StrictStr], Field(description="Optional usage event filter")] = None,
1127
+ from_effective_at: Annotated[Optional[datetime], Field(description="Optional start time filter")] = None,
1128
+ to_effective_at: Annotated[Optional[datetime], Field(description="Optional end time filter")] = None,
1129
+ limit: Annotated[Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]], Field(description="Maximum number of entries")] = None,
1130
+ _request_timeout: Union[
1131
+ None,
1132
+ Annotated[StrictFloat, Field(gt=0)],
1133
+ Tuple[
1134
+ Annotated[StrictFloat, Field(gt=0)],
1135
+ Annotated[StrictFloat, Field(gt=0)]
1136
+ ]
1137
+ ] = None,
1138
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1139
+ _content_type: Optional[StrictStr] = None,
1140
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1141
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1142
+ ) -> RESTResponseType:
1143
+ """Get Ledger Audit
1144
+
1145
+ Explain ledger audit trace. This provides a detailed audit trail of journal entries, postings, and burn allocations.
1146
+
1147
+ :param tenant_id: Tenant identifier (required)
1148
+ :type tenant_id: str
1149
+ :param pool_id: Pool identifier (required)
1150
+ :type pool_id: str
1151
+ :param wallet_id: Optional wallet filter
1152
+ :type wallet_id: str
1153
+ :param journal_entry_id: Optional journal entry filter
1154
+ :type journal_entry_id: str
1155
+ :param usage_event_id: Optional usage event filter
1156
+ :type usage_event_id: str
1157
+ :param from_effective_at: Optional start time filter
1158
+ :type from_effective_at: datetime
1159
+ :param to_effective_at: Optional end time filter
1160
+ :type to_effective_at: datetime
1161
+ :param limit: Maximum number of entries
1162
+ :type limit: int
1163
+ :param _request_timeout: timeout setting for this request. If one
1164
+ number provided, it will be total request
1165
+ timeout. It can also be a pair (tuple) of
1166
+ (connection, read) timeouts.
1167
+ :type _request_timeout: int, tuple(int, int), optional
1168
+ :param _request_auth: set to override the auth_settings for an a single
1169
+ request; this effectively ignores the
1170
+ authentication in the spec for a single request.
1171
+ :type _request_auth: dict, optional
1172
+ :param _content_type: force content-type for the request.
1173
+ :type _content_type: str, Optional
1174
+ :param _headers: set to override the headers for a single
1175
+ request; this effectively ignores the headers
1176
+ in the spec for a single request.
1177
+ :type _headers: dict, optional
1178
+ :param _host_index: set to override the host_index for a single
1179
+ request; this effectively ignores the host_index
1180
+ in the spec for a single request.
1181
+ :type _host_index: int, optional
1182
+ :return: Returns the result object.
1183
+ """ # noqa: E501
1184
+
1185
+ _param = self._get_ledger_audit_get_serialize(
1186
+ tenant_id=tenant_id,
1187
+ pool_id=pool_id,
1188
+ wallet_id=wallet_id,
1189
+ journal_entry_id=journal_entry_id,
1190
+ usage_event_id=usage_event_id,
1191
+ from_effective_at=from_effective_at,
1192
+ to_effective_at=to_effective_at,
1193
+ limit=limit,
1194
+ _request_auth=_request_auth,
1195
+ _content_type=_content_type,
1196
+ _headers=_headers,
1197
+ _host_index=_host_index
1198
+ )
1199
+
1200
+ _response_types_map: Dict[str, Optional[str]] = {
1201
+ '200': "object",
1202
+ '422': "HTTPValidationError",
1203
+ }
1204
+ response_data = self.api_client.call_api(
1205
+ *_param,
1206
+ _request_timeout=_request_timeout
1207
+ )
1208
+ return response_data.response
1209
+
1210
+
1211
+ def _get_ledger_audit_get_serialize(
1212
+ self,
1213
+ tenant_id,
1214
+ pool_id,
1215
+ wallet_id,
1216
+ journal_entry_id,
1217
+ usage_event_id,
1218
+ from_effective_at,
1219
+ to_effective_at,
1220
+ limit,
1221
+ _request_auth,
1222
+ _content_type,
1223
+ _headers,
1224
+ _host_index,
1225
+ ) -> RequestSerialized:
1226
+
1227
+ _host = None
1228
+
1229
+ _collection_formats: Dict[str, str] = {
1230
+ }
1231
+
1232
+ _path_params: Dict[str, str] = {}
1233
+ _query_params: List[Tuple[str, str]] = []
1234
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1235
+ _form_params: List[Tuple[str, str]] = []
1236
+ _files: Dict[
1237
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1238
+ ] = {}
1239
+ _body_params: Optional[bytes] = None
1240
+
1241
+ # process the path parameters
1242
+ # process the query parameters
1243
+ if tenant_id is not None:
1244
+
1245
+ _query_params.append(('tenant_id', tenant_id))
1246
+
1247
+ if pool_id is not None:
1248
+
1249
+ _query_params.append(('pool_id', pool_id))
1250
+
1251
+ if wallet_id is not None:
1252
+
1253
+ _query_params.append(('wallet_id', wallet_id))
1254
+
1255
+ if journal_entry_id is not None:
1256
+
1257
+ _query_params.append(('journal_entry_id', journal_entry_id))
1258
+
1259
+ if usage_event_id is not None:
1260
+
1261
+ _query_params.append(('usage_event_id', usage_event_id))
1262
+
1263
+ if from_effective_at is not None:
1264
+ if isinstance(from_effective_at, datetime):
1265
+ _query_params.append(
1266
+ (
1267
+ 'from_effective_at',
1268
+ from_effective_at.strftime(
1269
+ self.api_client.configuration.datetime_format
1270
+ )
1271
+ )
1272
+ )
1273
+ else:
1274
+ _query_params.append(('from_effective_at', from_effective_at))
1275
+
1276
+ if to_effective_at is not None:
1277
+ if isinstance(to_effective_at, datetime):
1278
+ _query_params.append(
1279
+ (
1280
+ 'to_effective_at',
1281
+ to_effective_at.strftime(
1282
+ self.api_client.configuration.datetime_format
1283
+ )
1284
+ )
1285
+ )
1286
+ else:
1287
+ _query_params.append(('to_effective_at', to_effective_at))
1288
+
1289
+ if limit is not None:
1290
+
1291
+ _query_params.append(('limit', limit))
1292
+
1293
+ # process the header parameters
1294
+ # process the form parameters
1295
+ # process the body parameter
1296
+
1297
+
1298
+ # set the HTTP header `Accept`
1299
+ if 'Accept' not in _header_params:
1300
+ _header_params['Accept'] = self.api_client.select_header_accept(
1301
+ [
1302
+ 'application/json'
1303
+ ]
1304
+ )
1305
+
1306
+
1307
+ # authentication setting
1308
+ _auth_settings: List[str] = [
1309
+ 'HTTPBearer'
1310
+ ]
1311
+
1312
+ return self.api_client.param_serialize(
1313
+ method='GET',
1314
+ resource_path='/v1/admin/ledger/audit',
1315
+ path_params=_path_params,
1316
+ query_params=_query_params,
1317
+ header_params=_header_params,
1318
+ body=_body_params,
1319
+ post_params=_form_params,
1320
+ files=_files,
1321
+ auth_settings=_auth_settings,
1322
+ collection_formats=_collection_formats,
1323
+ _host=_host,
1324
+ _request_auth=_request_auth
1325
+ )
1326
+
1327
+
1328
+
1329
+
1330
+ @validate_call
1331
+ def get_ledger_balance_get(
1332
+ self,
1333
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
1334
+ pool_id: Annotated[StrictStr, Field(description="Pool identifier")],
1335
+ wallet_id: Annotated[StrictStr, Field(description="Wallet identifier")],
1336
+ as_of_effective_at: Annotated[datetime, Field(description="Effective timestamp (for time travel)")],
1337
+ as_of_recorded_at: Annotated[Optional[datetime], Field(description="Recorded timestamp (for time travel)")] = None,
1338
+ _request_timeout: Union[
1339
+ None,
1340
+ Annotated[StrictFloat, Field(gt=0)],
1341
+ Tuple[
1342
+ Annotated[StrictFloat, Field(gt=0)],
1343
+ Annotated[StrictFloat, Field(gt=0)]
1344
+ ]
1345
+ ] = None,
1346
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1347
+ _content_type: Optional[StrictStr] = None,
1348
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1349
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1350
+ ) -> object:
1351
+ """Get Ledger Balance
1352
+
1353
+ Get ledger balance at a specific point in time (time travel query). This calculates the balance as of a specific effective_at and recorded_at timestamp.
1354
+
1355
+ :param tenant_id: Tenant identifier (required)
1356
+ :type tenant_id: str
1357
+ :param pool_id: Pool identifier (required)
1358
+ :type pool_id: str
1359
+ :param wallet_id: Wallet identifier (required)
1360
+ :type wallet_id: str
1361
+ :param as_of_effective_at: Effective timestamp (for time travel) (required)
1362
+ :type as_of_effective_at: datetime
1363
+ :param as_of_recorded_at: Recorded timestamp (for time travel)
1364
+ :type as_of_recorded_at: datetime
1365
+ :param _request_timeout: timeout setting for this request. If one
1366
+ number provided, it will be total request
1367
+ timeout. It can also be a pair (tuple) of
1368
+ (connection, read) timeouts.
1369
+ :type _request_timeout: int, tuple(int, int), optional
1370
+ :param _request_auth: set to override the auth_settings for an a single
1371
+ request; this effectively ignores the
1372
+ authentication in the spec for a single request.
1373
+ :type _request_auth: dict, optional
1374
+ :param _content_type: force content-type for the request.
1375
+ :type _content_type: str, Optional
1376
+ :param _headers: set to override the headers for a single
1377
+ request; this effectively ignores the headers
1378
+ in the spec for a single request.
1379
+ :type _headers: dict, optional
1380
+ :param _host_index: set to override the host_index for a single
1381
+ request; this effectively ignores the host_index
1382
+ in the spec for a single request.
1383
+ :type _host_index: int, optional
1384
+ :return: Returns the result object.
1385
+ """ # noqa: E501
1386
+
1387
+ _param = self._get_ledger_balance_get_serialize(
1388
+ tenant_id=tenant_id,
1389
+ pool_id=pool_id,
1390
+ wallet_id=wallet_id,
1391
+ as_of_effective_at=as_of_effective_at,
1392
+ as_of_recorded_at=as_of_recorded_at,
1393
+ _request_auth=_request_auth,
1394
+ _content_type=_content_type,
1395
+ _headers=_headers,
1396
+ _host_index=_host_index
1397
+ )
1398
+
1399
+ _response_types_map: Dict[str, Optional[str]] = {
1400
+ '200': "object",
1401
+ '422': "HTTPValidationError",
1402
+ }
1403
+ response_data = self.api_client.call_api(
1404
+ *_param,
1405
+ _request_timeout=_request_timeout
1406
+ )
1407
+ response_data.read()
1408
+ return self.api_client.response_deserialize(
1409
+ response_data=response_data,
1410
+ response_types_map=_response_types_map,
1411
+ ).data
1412
+
1413
+
1414
+ @validate_call
1415
+ def get_ledger_balance_get_with_http_info(
1416
+ self,
1417
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
1418
+ pool_id: Annotated[StrictStr, Field(description="Pool identifier")],
1419
+ wallet_id: Annotated[StrictStr, Field(description="Wallet identifier")],
1420
+ as_of_effective_at: Annotated[datetime, Field(description="Effective timestamp (for time travel)")],
1421
+ as_of_recorded_at: Annotated[Optional[datetime], Field(description="Recorded timestamp (for time travel)")] = None,
1422
+ _request_timeout: Union[
1423
+ None,
1424
+ Annotated[StrictFloat, Field(gt=0)],
1425
+ Tuple[
1426
+ Annotated[StrictFloat, Field(gt=0)],
1427
+ Annotated[StrictFloat, Field(gt=0)]
1428
+ ]
1429
+ ] = None,
1430
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1431
+ _content_type: Optional[StrictStr] = None,
1432
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1433
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1434
+ ) -> ApiResponse[object]:
1435
+ """Get Ledger Balance
1436
+
1437
+ Get ledger balance at a specific point in time (time travel query). This calculates the balance as of a specific effective_at and recorded_at timestamp.
1438
+
1439
+ :param tenant_id: Tenant identifier (required)
1440
+ :type tenant_id: str
1441
+ :param pool_id: Pool identifier (required)
1442
+ :type pool_id: str
1443
+ :param wallet_id: Wallet identifier (required)
1444
+ :type wallet_id: str
1445
+ :param as_of_effective_at: Effective timestamp (for time travel) (required)
1446
+ :type as_of_effective_at: datetime
1447
+ :param as_of_recorded_at: Recorded timestamp (for time travel)
1448
+ :type as_of_recorded_at: datetime
1449
+ :param _request_timeout: timeout setting for this request. If one
1450
+ number provided, it will be total request
1451
+ timeout. It can also be a pair (tuple) of
1452
+ (connection, read) timeouts.
1453
+ :type _request_timeout: int, tuple(int, int), optional
1454
+ :param _request_auth: set to override the auth_settings for an a single
1455
+ request; this effectively ignores the
1456
+ authentication in the spec for a single request.
1457
+ :type _request_auth: dict, optional
1458
+ :param _content_type: force content-type for the request.
1459
+ :type _content_type: str, Optional
1460
+ :param _headers: set to override the headers for a single
1461
+ request; this effectively ignores the headers
1462
+ in the spec for a single request.
1463
+ :type _headers: dict, optional
1464
+ :param _host_index: set to override the host_index for a single
1465
+ request; this effectively ignores the host_index
1466
+ in the spec for a single request.
1467
+ :type _host_index: int, optional
1468
+ :return: Returns the result object.
1469
+ """ # noqa: E501
1470
+
1471
+ _param = self._get_ledger_balance_get_serialize(
1472
+ tenant_id=tenant_id,
1473
+ pool_id=pool_id,
1474
+ wallet_id=wallet_id,
1475
+ as_of_effective_at=as_of_effective_at,
1476
+ as_of_recorded_at=as_of_recorded_at,
1477
+ _request_auth=_request_auth,
1478
+ _content_type=_content_type,
1479
+ _headers=_headers,
1480
+ _host_index=_host_index
1481
+ )
1482
+
1483
+ _response_types_map: Dict[str, Optional[str]] = {
1484
+ '200': "object",
1485
+ '422': "HTTPValidationError",
1486
+ }
1487
+ response_data = self.api_client.call_api(
1488
+ *_param,
1489
+ _request_timeout=_request_timeout
1490
+ )
1491
+ response_data.read()
1492
+ return self.api_client.response_deserialize(
1493
+ response_data=response_data,
1494
+ response_types_map=_response_types_map,
1495
+ )
1496
+
1497
+
1498
+ @validate_call
1499
+ def get_ledger_balance_get_without_preload_content(
1500
+ self,
1501
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
1502
+ pool_id: Annotated[StrictStr, Field(description="Pool identifier")],
1503
+ wallet_id: Annotated[StrictStr, Field(description="Wallet identifier")],
1504
+ as_of_effective_at: Annotated[datetime, Field(description="Effective timestamp (for time travel)")],
1505
+ as_of_recorded_at: Annotated[Optional[datetime], Field(description="Recorded timestamp (for time travel)")] = None,
1506
+ _request_timeout: Union[
1507
+ None,
1508
+ Annotated[StrictFloat, Field(gt=0)],
1509
+ Tuple[
1510
+ Annotated[StrictFloat, Field(gt=0)],
1511
+ Annotated[StrictFloat, Field(gt=0)]
1512
+ ]
1513
+ ] = None,
1514
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1515
+ _content_type: Optional[StrictStr] = None,
1516
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1517
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1518
+ ) -> RESTResponseType:
1519
+ """Get Ledger Balance
1520
+
1521
+ Get ledger balance at a specific point in time (time travel query). This calculates the balance as of a specific effective_at and recorded_at timestamp.
1522
+
1523
+ :param tenant_id: Tenant identifier (required)
1524
+ :type tenant_id: str
1525
+ :param pool_id: Pool identifier (required)
1526
+ :type pool_id: str
1527
+ :param wallet_id: Wallet identifier (required)
1528
+ :type wallet_id: str
1529
+ :param as_of_effective_at: Effective timestamp (for time travel) (required)
1530
+ :type as_of_effective_at: datetime
1531
+ :param as_of_recorded_at: Recorded timestamp (for time travel)
1532
+ :type as_of_recorded_at: datetime
1533
+ :param _request_timeout: timeout setting for this request. If one
1534
+ number provided, it will be total request
1535
+ timeout. It can also be a pair (tuple) of
1536
+ (connection, read) timeouts.
1537
+ :type _request_timeout: int, tuple(int, int), optional
1538
+ :param _request_auth: set to override the auth_settings for an a single
1539
+ request; this effectively ignores the
1540
+ authentication in the spec for a single request.
1541
+ :type _request_auth: dict, optional
1542
+ :param _content_type: force content-type for the request.
1543
+ :type _content_type: str, Optional
1544
+ :param _headers: set to override the headers for a single
1545
+ request; this effectively ignores the headers
1546
+ in the spec for a single request.
1547
+ :type _headers: dict, optional
1548
+ :param _host_index: set to override the host_index for a single
1549
+ request; this effectively ignores the host_index
1550
+ in the spec for a single request.
1551
+ :type _host_index: int, optional
1552
+ :return: Returns the result object.
1553
+ """ # noqa: E501
1554
+
1555
+ _param = self._get_ledger_balance_get_serialize(
1556
+ tenant_id=tenant_id,
1557
+ pool_id=pool_id,
1558
+ wallet_id=wallet_id,
1559
+ as_of_effective_at=as_of_effective_at,
1560
+ as_of_recorded_at=as_of_recorded_at,
1561
+ _request_auth=_request_auth,
1562
+ _content_type=_content_type,
1563
+ _headers=_headers,
1564
+ _host_index=_host_index
1565
+ )
1566
+
1567
+ _response_types_map: Dict[str, Optional[str]] = {
1568
+ '200': "object",
1569
+ '422': "HTTPValidationError",
1570
+ }
1571
+ response_data = self.api_client.call_api(
1572
+ *_param,
1573
+ _request_timeout=_request_timeout
1574
+ )
1575
+ return response_data.response
1576
+
1577
+
1578
+ def _get_ledger_balance_get_serialize(
1579
+ self,
1580
+ tenant_id,
1581
+ pool_id,
1582
+ wallet_id,
1583
+ as_of_effective_at,
1584
+ as_of_recorded_at,
1585
+ _request_auth,
1586
+ _content_type,
1587
+ _headers,
1588
+ _host_index,
1589
+ ) -> RequestSerialized:
1590
+
1591
+ _host = None
1592
+
1593
+ _collection_formats: Dict[str, str] = {
1594
+ }
1595
+
1596
+ _path_params: Dict[str, str] = {}
1597
+ _query_params: List[Tuple[str, str]] = []
1598
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1599
+ _form_params: List[Tuple[str, str]] = []
1600
+ _files: Dict[
1601
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1602
+ ] = {}
1603
+ _body_params: Optional[bytes] = None
1604
+
1605
+ # process the path parameters
1606
+ # process the query parameters
1607
+ if tenant_id is not None:
1608
+
1609
+ _query_params.append(('tenant_id', tenant_id))
1610
+
1611
+ if pool_id is not None:
1612
+
1613
+ _query_params.append(('pool_id', pool_id))
1614
+
1615
+ if wallet_id is not None:
1616
+
1617
+ _query_params.append(('wallet_id', wallet_id))
1618
+
1619
+ if as_of_effective_at is not None:
1620
+ if isinstance(as_of_effective_at, datetime):
1621
+ _query_params.append(
1622
+ (
1623
+ 'as_of_effective_at',
1624
+ as_of_effective_at.strftime(
1625
+ self.api_client.configuration.datetime_format
1626
+ )
1627
+ )
1628
+ )
1629
+ else:
1630
+ _query_params.append(('as_of_effective_at', as_of_effective_at))
1631
+
1632
+ if as_of_recorded_at is not None:
1633
+ if isinstance(as_of_recorded_at, datetime):
1634
+ _query_params.append(
1635
+ (
1636
+ 'as_of_recorded_at',
1637
+ as_of_recorded_at.strftime(
1638
+ self.api_client.configuration.datetime_format
1639
+ )
1640
+ )
1641
+ )
1642
+ else:
1643
+ _query_params.append(('as_of_recorded_at', as_of_recorded_at))
1644
+
1645
+ # process the header parameters
1646
+ # process the form parameters
1647
+ # process the body parameter
1648
+
1649
+
1650
+ # set the HTTP header `Accept`
1651
+ if 'Accept' not in _header_params:
1652
+ _header_params['Accept'] = self.api_client.select_header_accept(
1653
+ [
1654
+ 'application/json'
1655
+ ]
1656
+ )
1657
+
1658
+
1659
+ # authentication setting
1660
+ _auth_settings: List[str] = [
1661
+ 'HTTPBearer'
1662
+ ]
1663
+
1664
+ return self.api_client.param_serialize(
1665
+ method='GET',
1666
+ resource_path='/v1/admin/ledger/balance',
1667
+ path_params=_path_params,
1668
+ query_params=_query_params,
1669
+ header_params=_header_params,
1670
+ body=_body_params,
1671
+ post_params=_form_params,
1672
+ files=_files,
1673
+ auth_settings=_auth_settings,
1674
+ collection_formats=_collection_formats,
1675
+ _host=_host,
1676
+ _request_auth=_request_auth
1677
+ )
1678
+
1679
+
1680
+
1681
+
1682
+ @validate_call
1683
+ def override_first_ingress_endpoint_v1(
1684
+ self,
1685
+ override_first_ingress_request: OverrideFirstIngressRequest,
1686
+ _request_timeout: Union[
1687
+ None,
1688
+ Annotated[StrictFloat, Field(gt=0)],
1689
+ Tuple[
1690
+ Annotated[StrictFloat, Field(gt=0)],
1691
+ Annotated[StrictFloat, Field(gt=0)]
1692
+ ]
1693
+ ] = None,
1694
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1695
+ _content_type: Optional[StrictStr] = None,
1696
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1697
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1698
+ ) -> object:
1699
+ """Override First Ingress Endpoint
1700
+
1701
+ Break-glass first_ingress_at override. This endpoint requires DB role/session policy enforcement by billing.override_first_ingress_at() and writes audit rows.
1702
+
1703
+ :param override_first_ingress_request: (required)
1704
+ :type override_first_ingress_request: OverrideFirstIngressRequest
1705
+ :param _request_timeout: timeout setting for this request. If one
1706
+ number provided, it will be total request
1707
+ timeout. It can also be a pair (tuple) of
1708
+ (connection, read) timeouts.
1709
+ :type _request_timeout: int, tuple(int, int), optional
1710
+ :param _request_auth: set to override the auth_settings for an a single
1711
+ request; this effectively ignores the
1712
+ authentication in the spec for a single request.
1713
+ :type _request_auth: dict, optional
1714
+ :param _content_type: force content-type for the request.
1715
+ :type _content_type: str, Optional
1716
+ :param _headers: set to override the headers for a single
1717
+ request; this effectively ignores the headers
1718
+ in the spec for a single request.
1719
+ :type _headers: dict, optional
1720
+ :param _host_index: set to override the host_index for a single
1721
+ request; this effectively ignores the host_index
1722
+ in the spec for a single request.
1723
+ :type _host_index: int, optional
1724
+ :return: Returns the result object.
1725
+ """ # noqa: E501
1726
+
1727
+ _param = self._override_first_ingress_endpoint_v1_serialize(
1728
+ override_first_ingress_request=override_first_ingress_request,
1729
+ _request_auth=_request_auth,
1730
+ _content_type=_content_type,
1731
+ _headers=_headers,
1732
+ _host_index=_host_index
1733
+ )
1734
+
1735
+ _response_types_map: Dict[str, Optional[str]] = {
1736
+ '200': "object",
1737
+ '422': "HTTPValidationError",
1738
+ }
1739
+ response_data = self.api_client.call_api(
1740
+ *_param,
1741
+ _request_timeout=_request_timeout
1742
+ )
1743
+ response_data.read()
1744
+ return self.api_client.response_deserialize(
1745
+ response_data=response_data,
1746
+ response_types_map=_response_types_map,
1747
+ ).data
1748
+
1749
+
1750
+ @validate_call
1751
+ def override_first_ingress_endpoint_v1_with_http_info(
1752
+ self,
1753
+ override_first_ingress_request: OverrideFirstIngressRequest,
1754
+ _request_timeout: Union[
1755
+ None,
1756
+ Annotated[StrictFloat, Field(gt=0)],
1757
+ Tuple[
1758
+ Annotated[StrictFloat, Field(gt=0)],
1759
+ Annotated[StrictFloat, Field(gt=0)]
1760
+ ]
1761
+ ] = None,
1762
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1763
+ _content_type: Optional[StrictStr] = None,
1764
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1765
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1766
+ ) -> ApiResponse[object]:
1767
+ """Override First Ingress Endpoint
1768
+
1769
+ Break-glass first_ingress_at override. This endpoint requires DB role/session policy enforcement by billing.override_first_ingress_at() and writes audit rows.
1770
+
1771
+ :param override_first_ingress_request: (required)
1772
+ :type override_first_ingress_request: OverrideFirstIngressRequest
1773
+ :param _request_timeout: timeout setting for this request. If one
1774
+ number provided, it will be total request
1775
+ timeout. It can also be a pair (tuple) of
1776
+ (connection, read) timeouts.
1777
+ :type _request_timeout: int, tuple(int, int), optional
1778
+ :param _request_auth: set to override the auth_settings for an a single
1779
+ request; this effectively ignores the
1780
+ authentication in the spec for a single request.
1781
+ :type _request_auth: dict, optional
1782
+ :param _content_type: force content-type for the request.
1783
+ :type _content_type: str, Optional
1784
+ :param _headers: set to override the headers for a single
1785
+ request; this effectively ignores the headers
1786
+ in the spec for a single request.
1787
+ :type _headers: dict, optional
1788
+ :param _host_index: set to override the host_index for a single
1789
+ request; this effectively ignores the host_index
1790
+ in the spec for a single request.
1791
+ :type _host_index: int, optional
1792
+ :return: Returns the result object.
1793
+ """ # noqa: E501
1794
+
1795
+ _param = self._override_first_ingress_endpoint_v1_serialize(
1796
+ override_first_ingress_request=override_first_ingress_request,
1797
+ _request_auth=_request_auth,
1798
+ _content_type=_content_type,
1799
+ _headers=_headers,
1800
+ _host_index=_host_index
1801
+ )
1802
+
1803
+ _response_types_map: Dict[str, Optional[str]] = {
1804
+ '200': "object",
1805
+ '422': "HTTPValidationError",
1806
+ }
1807
+ response_data = self.api_client.call_api(
1808
+ *_param,
1809
+ _request_timeout=_request_timeout
1810
+ )
1811
+ response_data.read()
1812
+ return self.api_client.response_deserialize(
1813
+ response_data=response_data,
1814
+ response_types_map=_response_types_map,
1815
+ )
1816
+
1817
+
1818
+ @validate_call
1819
+ def override_first_ingress_endpoint_v1_without_preload_content(
1820
+ self,
1821
+ override_first_ingress_request: OverrideFirstIngressRequest,
1822
+ _request_timeout: Union[
1823
+ None,
1824
+ Annotated[StrictFloat, Field(gt=0)],
1825
+ Tuple[
1826
+ Annotated[StrictFloat, Field(gt=0)],
1827
+ Annotated[StrictFloat, Field(gt=0)]
1828
+ ]
1829
+ ] = None,
1830
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1831
+ _content_type: Optional[StrictStr] = None,
1832
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1833
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1834
+ ) -> RESTResponseType:
1835
+ """Override First Ingress Endpoint
1836
+
1837
+ Break-glass first_ingress_at override. This endpoint requires DB role/session policy enforcement by billing.override_first_ingress_at() and writes audit rows.
1838
+
1839
+ :param override_first_ingress_request: (required)
1840
+ :type override_first_ingress_request: OverrideFirstIngressRequest
1841
+ :param _request_timeout: timeout setting for this request. If one
1842
+ number provided, it will be total request
1843
+ timeout. It can also be a pair (tuple) of
1844
+ (connection, read) timeouts.
1845
+ :type _request_timeout: int, tuple(int, int), optional
1846
+ :param _request_auth: set to override the auth_settings for an a single
1847
+ request; this effectively ignores the
1848
+ authentication in the spec for a single request.
1849
+ :type _request_auth: dict, optional
1850
+ :param _content_type: force content-type for the request.
1851
+ :type _content_type: str, Optional
1852
+ :param _headers: set to override the headers for a single
1853
+ request; this effectively ignores the headers
1854
+ in the spec for a single request.
1855
+ :type _headers: dict, optional
1856
+ :param _host_index: set to override the host_index for a single
1857
+ request; this effectively ignores the host_index
1858
+ in the spec for a single request.
1859
+ :type _host_index: int, optional
1860
+ :return: Returns the result object.
1861
+ """ # noqa: E501
1862
+
1863
+ _param = self._override_first_ingress_endpoint_v1_serialize(
1864
+ override_first_ingress_request=override_first_ingress_request,
1865
+ _request_auth=_request_auth,
1866
+ _content_type=_content_type,
1867
+ _headers=_headers,
1868
+ _host_index=_host_index
1869
+ )
1870
+
1871
+ _response_types_map: Dict[str, Optional[str]] = {
1872
+ '200': "object",
1873
+ '422': "HTTPValidationError",
1874
+ }
1875
+ response_data = self.api_client.call_api(
1876
+ *_param,
1877
+ _request_timeout=_request_timeout
1878
+ )
1879
+ return response_data.response
1880
+
1881
+
1882
+ def _override_first_ingress_endpoint_v1_serialize(
1883
+ self,
1884
+ override_first_ingress_request,
1885
+ _request_auth,
1886
+ _content_type,
1887
+ _headers,
1888
+ _host_index,
1889
+ ) -> RequestSerialized:
1890
+
1891
+ _host = None
1892
+
1893
+ _collection_formats: Dict[str, str] = {
1894
+ }
1895
+
1896
+ _path_params: Dict[str, str] = {}
1897
+ _query_params: List[Tuple[str, str]] = []
1898
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1899
+ _form_params: List[Tuple[str, str]] = []
1900
+ _files: Dict[
1901
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1902
+ ] = {}
1903
+ _body_params: Optional[bytes] = None
1904
+
1905
+ # process the path parameters
1906
+ # process the query parameters
1907
+ # process the header parameters
1908
+ # process the form parameters
1909
+ # process the body parameter
1910
+ if override_first_ingress_request is not None:
1911
+ _body_params = override_first_ingress_request
1912
+
1913
+
1914
+ # set the HTTP header `Accept`
1915
+ if 'Accept' not in _header_params:
1916
+ _header_params['Accept'] = self.api_client.select_header_accept(
1917
+ [
1918
+ 'application/json'
1919
+ ]
1920
+ )
1921
+
1922
+ # set the HTTP header `Content-Type`
1923
+ if _content_type:
1924
+ _header_params['Content-Type'] = _content_type
1925
+ else:
1926
+ _default_content_type = (
1927
+ self.api_client.select_header_content_type(
1928
+ [
1929
+ 'application/json'
1930
+ ]
1931
+ )
1932
+ )
1933
+ if _default_content_type is not None:
1934
+ _header_params['Content-Type'] = _default_content_type
1935
+
1936
+ # authentication setting
1937
+ _auth_settings: List[str] = [
1938
+ 'HTTPBearer'
1939
+ ]
1940
+
1941
+ return self.api_client.param_serialize(
1942
+ method='POST',
1943
+ resource_path='/v1/admin/usage/first-ingress/override',
1944
+ path_params=_path_params,
1945
+ query_params=_query_params,
1946
+ header_params=_header_params,
1947
+ body=_body_params,
1948
+ post_params=_form_params,
1949
+ files=_files,
1950
+ auth_settings=_auth_settings,
1951
+ collection_formats=_collection_formats,
1952
+ _host=_host,
1953
+ _request_auth=_request_auth
1954
+ )
1955
+
1956
+
1957
+
1958
+
1959
+ @validate_call
1960
+ def process_lifecycle_event_manually_v1_admin(
1961
+ self,
1962
+ subscription_id: Annotated[StrictStr, Field(description="Subscription ID")],
1963
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
1964
+ _request_timeout: Union[
1965
+ None,
1966
+ Annotated[StrictFloat, Field(gt=0)],
1967
+ Tuple[
1968
+ Annotated[StrictFloat, Field(gt=0)],
1969
+ Annotated[StrictFloat, Field(gt=0)]
1970
+ ]
1971
+ ] = None,
1972
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1973
+ _content_type: Optional[StrictStr] = None,
1974
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1975
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1976
+ ) -> object:
1977
+ """Process Lifecycle Event Manually
1978
+
1979
+ Manually process an existing lifecycle event. This directly calls the worker's process function to create grants and wallets without requiring Kafka. Useful for testing or reprocessing events.
1980
+
1981
+ :param subscription_id: Subscription ID (required)
1982
+ :type subscription_id: str
1983
+ :param tenant_id: Tenant identifier (required)
1984
+ :type tenant_id: str
1985
+ :param _request_timeout: timeout setting for this request. If one
1986
+ number provided, it will be total request
1987
+ timeout. It can also be a pair (tuple) of
1988
+ (connection, read) timeouts.
1989
+ :type _request_timeout: int, tuple(int, int), optional
1990
+ :param _request_auth: set to override the auth_settings for an a single
1991
+ request; this effectively ignores the
1992
+ authentication in the spec for a single request.
1993
+ :type _request_auth: dict, optional
1994
+ :param _content_type: force content-type for the request.
1995
+ :type _content_type: str, Optional
1996
+ :param _headers: set to override the headers for a single
1997
+ request; this effectively ignores the headers
1998
+ in the spec for a single request.
1999
+ :type _headers: dict, optional
2000
+ :param _host_index: set to override the host_index for a single
2001
+ request; this effectively ignores the host_index
2002
+ in the spec for a single request.
2003
+ :type _host_index: int, optional
2004
+ :return: Returns the result object.
2005
+ """ # noqa: E501
2006
+
2007
+ _param = self._process_lifecycle_event_manually_v1_admin_serialize(
2008
+ subscription_id=subscription_id,
2009
+ tenant_id=tenant_id,
2010
+ _request_auth=_request_auth,
2011
+ _content_type=_content_type,
2012
+ _headers=_headers,
2013
+ _host_index=_host_index
2014
+ )
2015
+
2016
+ _response_types_map: Dict[str, Optional[str]] = {
2017
+ '200': "object",
2018
+ '422': "HTTPValidationError",
2019
+ }
2020
+ response_data = self.api_client.call_api(
2021
+ *_param,
2022
+ _request_timeout=_request_timeout
2023
+ )
2024
+ response_data.read()
2025
+ return self.api_client.response_deserialize(
2026
+ response_data=response_data,
2027
+ response_types_map=_response_types_map,
2028
+ ).data
2029
+
2030
+
2031
+ @validate_call
2032
+ def process_lifecycle_event_manually_v1_admin_with_http_info(
2033
+ self,
2034
+ subscription_id: Annotated[StrictStr, Field(description="Subscription ID")],
2035
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
2036
+ _request_timeout: Union[
2037
+ None,
2038
+ Annotated[StrictFloat, Field(gt=0)],
2039
+ Tuple[
2040
+ Annotated[StrictFloat, Field(gt=0)],
2041
+ Annotated[StrictFloat, Field(gt=0)]
2042
+ ]
2043
+ ] = None,
2044
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2045
+ _content_type: Optional[StrictStr] = None,
2046
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2047
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2048
+ ) -> ApiResponse[object]:
2049
+ """Process Lifecycle Event Manually
2050
+
2051
+ Manually process an existing lifecycle event. This directly calls the worker's process function to create grants and wallets without requiring Kafka. Useful for testing or reprocessing events.
2052
+
2053
+ :param subscription_id: Subscription ID (required)
2054
+ :type subscription_id: str
2055
+ :param tenant_id: Tenant identifier (required)
2056
+ :type tenant_id: str
2057
+ :param _request_timeout: timeout setting for this request. If one
2058
+ number provided, it will be total request
2059
+ timeout. It can also be a pair (tuple) of
2060
+ (connection, read) timeouts.
2061
+ :type _request_timeout: int, tuple(int, int), optional
2062
+ :param _request_auth: set to override the auth_settings for an a single
2063
+ request; this effectively ignores the
2064
+ authentication in the spec for a single request.
2065
+ :type _request_auth: dict, optional
2066
+ :param _content_type: force content-type for the request.
2067
+ :type _content_type: str, Optional
2068
+ :param _headers: set to override the headers for a single
2069
+ request; this effectively ignores the headers
2070
+ in the spec for a single request.
2071
+ :type _headers: dict, optional
2072
+ :param _host_index: set to override the host_index for a single
2073
+ request; this effectively ignores the host_index
2074
+ in the spec for a single request.
2075
+ :type _host_index: int, optional
2076
+ :return: Returns the result object.
2077
+ """ # noqa: E501
2078
+
2079
+ _param = self._process_lifecycle_event_manually_v1_admin_serialize(
2080
+ subscription_id=subscription_id,
2081
+ tenant_id=tenant_id,
2082
+ _request_auth=_request_auth,
2083
+ _content_type=_content_type,
2084
+ _headers=_headers,
2085
+ _host_index=_host_index
2086
+ )
2087
+
2088
+ _response_types_map: Dict[str, Optional[str]] = {
2089
+ '200': "object",
2090
+ '422': "HTTPValidationError",
2091
+ }
2092
+ response_data = self.api_client.call_api(
2093
+ *_param,
2094
+ _request_timeout=_request_timeout
2095
+ )
2096
+ response_data.read()
2097
+ return self.api_client.response_deserialize(
2098
+ response_data=response_data,
2099
+ response_types_map=_response_types_map,
2100
+ )
2101
+
2102
+
2103
+ @validate_call
2104
+ def process_lifecycle_event_manually_v1_admin_without_preload_content(
2105
+ self,
2106
+ subscription_id: Annotated[StrictStr, Field(description="Subscription ID")],
2107
+ tenant_id: Annotated[StrictStr, Field(description="Tenant identifier")],
2108
+ _request_timeout: Union[
2109
+ None,
2110
+ Annotated[StrictFloat, Field(gt=0)],
2111
+ Tuple[
2112
+ Annotated[StrictFloat, Field(gt=0)],
2113
+ Annotated[StrictFloat, Field(gt=0)]
2114
+ ]
2115
+ ] = None,
2116
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2117
+ _content_type: Optional[StrictStr] = None,
2118
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2119
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2120
+ ) -> RESTResponseType:
2121
+ """Process Lifecycle Event Manually
2122
+
2123
+ Manually process an existing lifecycle event. This directly calls the worker's process function to create grants and wallets without requiring Kafka. Useful for testing or reprocessing events.
2124
+
2125
+ :param subscription_id: Subscription ID (required)
2126
+ :type subscription_id: str
2127
+ :param tenant_id: Tenant identifier (required)
2128
+ :type tenant_id: str
2129
+ :param _request_timeout: timeout setting for this request. If one
2130
+ number provided, it will be total request
2131
+ timeout. It can also be a pair (tuple) of
2132
+ (connection, read) timeouts.
2133
+ :type _request_timeout: int, tuple(int, int), optional
2134
+ :param _request_auth: set to override the auth_settings for an a single
2135
+ request; this effectively ignores the
2136
+ authentication in the spec for a single request.
2137
+ :type _request_auth: dict, optional
2138
+ :param _content_type: force content-type for the request.
2139
+ :type _content_type: str, Optional
2140
+ :param _headers: set to override the headers for a single
2141
+ request; this effectively ignores the headers
2142
+ in the spec for a single request.
2143
+ :type _headers: dict, optional
2144
+ :param _host_index: set to override the host_index for a single
2145
+ request; this effectively ignores the host_index
2146
+ in the spec for a single request.
2147
+ :type _host_index: int, optional
2148
+ :return: Returns the result object.
2149
+ """ # noqa: E501
2150
+
2151
+ _param = self._process_lifecycle_event_manually_v1_admin_serialize(
2152
+ subscription_id=subscription_id,
2153
+ tenant_id=tenant_id,
2154
+ _request_auth=_request_auth,
2155
+ _content_type=_content_type,
2156
+ _headers=_headers,
2157
+ _host_index=_host_index
2158
+ )
2159
+
2160
+ _response_types_map: Dict[str, Optional[str]] = {
2161
+ '200': "object",
2162
+ '422': "HTTPValidationError",
2163
+ }
2164
+ response_data = self.api_client.call_api(
2165
+ *_param,
2166
+ _request_timeout=_request_timeout
2167
+ )
2168
+ return response_data.response
2169
+
2170
+
2171
+ def _process_lifecycle_event_manually_v1_admin_serialize(
2172
+ self,
2173
+ subscription_id,
2174
+ tenant_id,
2175
+ _request_auth,
2176
+ _content_type,
2177
+ _headers,
2178
+ _host_index,
2179
+ ) -> RequestSerialized:
2180
+
2181
+ _host = None
2182
+
2183
+ _collection_formats: Dict[str, str] = {
2184
+ }
2185
+
2186
+ _path_params: Dict[str, str] = {}
2187
+ _query_params: List[Tuple[str, str]] = []
2188
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2189
+ _form_params: List[Tuple[str, str]] = []
2190
+ _files: Dict[
2191
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2192
+ ] = {}
2193
+ _body_params: Optional[bytes] = None
2194
+
2195
+ # process the path parameters
2196
+ if subscription_id is not None:
2197
+ _path_params['subscription_id'] = subscription_id
2198
+ # process the query parameters
2199
+ if tenant_id is not None:
2200
+
2201
+ _query_params.append(('tenant_id', tenant_id))
2202
+
2203
+ # process the header parameters
2204
+ # process the form parameters
2205
+ # process the body parameter
2206
+
2207
+
2208
+ # set the HTTP header `Accept`
2209
+ if 'Accept' not in _header_params:
2210
+ _header_params['Accept'] = self.api_client.select_header_accept(
2211
+ [
2212
+ 'application/json'
2213
+ ]
2214
+ )
2215
+
2216
+
2217
+ # authentication setting
2218
+ _auth_settings: List[str] = [
2219
+ 'HTTPBearer'
2220
+ ]
2221
+
2222
+ return self.api_client.param_serialize(
2223
+ method='POST',
2224
+ resource_path='/v1/admin/subscriptions/{subscription_id}/process-lifecycle-event',
2225
+ path_params=_path_params,
2226
+ query_params=_query_params,
2227
+ header_params=_header_params,
2228
+ body=_body_params,
2229
+ post_params=_form_params,
2230
+ files=_files,
2231
+ auth_settings=_auth_settings,
2232
+ collection_formats=_collection_formats,
2233
+ _host=_host,
2234
+ _request_auth=_request_auth
2235
+ )
2236
+
2237
+
2238
+
2239
+
2240
+ @validate_call
2241
+ def replay_ingest_dead_letter_endpoint_v1(
2242
+ self,
2243
+ dead_letter_id: Annotated[StrictStr, Field(description="Dead-letter row identifier")],
2244
+ replay_dead_letter_request: Optional[ReplayDeadLetterRequest] = None,
2245
+ _request_timeout: Union[
2246
+ None,
2247
+ Annotated[StrictFloat, Field(gt=0)],
2248
+ Tuple[
2249
+ Annotated[StrictFloat, Field(gt=0)],
2250
+ Annotated[StrictFloat, Field(gt=0)]
2251
+ ]
2252
+ ] = None,
2253
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2254
+ _content_type: Optional[StrictStr] = None,
2255
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2256
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2257
+ ) -> object:
2258
+ """Replay Ingest Dead Letter Endpoint
2259
+
2260
+ Replay a dead-letter event back through normalization + usage ingest. Cross-tenant guard (PR #632 round-7 review): the replay is state-changing (rolls forward usage events, marks the row REPLAYED, can assign a tenant via ``tenant_id_override``). Without this guard, a per-tenant customer key holder who passes the subtree auth gate could replay any tenant's poison-pill rows or assign their replay to another tenant. Round 7 surfaced this sibling-to-detail-endpoint hole that earlier rounds missed.
2261
+
2262
+ :param dead_letter_id: Dead-letter row identifier (required)
2263
+ :type dead_letter_id: str
2264
+ :param replay_dead_letter_request:
2265
+ :type replay_dead_letter_request: ReplayDeadLetterRequest
2266
+ :param _request_timeout: timeout setting for this request. If one
2267
+ number provided, it will be total request
2268
+ timeout. It can also be a pair (tuple) of
2269
+ (connection, read) timeouts.
2270
+ :type _request_timeout: int, tuple(int, int), optional
2271
+ :param _request_auth: set to override the auth_settings for an a single
2272
+ request; this effectively ignores the
2273
+ authentication in the spec for a single request.
2274
+ :type _request_auth: dict, optional
2275
+ :param _content_type: force content-type for the request.
2276
+ :type _content_type: str, Optional
2277
+ :param _headers: set to override the headers for a single
2278
+ request; this effectively ignores the headers
2279
+ in the spec for a single request.
2280
+ :type _headers: dict, optional
2281
+ :param _host_index: set to override the host_index for a single
2282
+ request; this effectively ignores the host_index
2283
+ in the spec for a single request.
2284
+ :type _host_index: int, optional
2285
+ :return: Returns the result object.
2286
+ """ # noqa: E501
2287
+
2288
+ _param = self._replay_ingest_dead_letter_endpoint_v1_serialize(
2289
+ dead_letter_id=dead_letter_id,
2290
+ replay_dead_letter_request=replay_dead_letter_request,
2291
+ _request_auth=_request_auth,
2292
+ _content_type=_content_type,
2293
+ _headers=_headers,
2294
+ _host_index=_host_index
2295
+ )
2296
+
2297
+ _response_types_map: Dict[str, Optional[str]] = {
2298
+ '200': "object",
2299
+ '422': "HTTPValidationError",
2300
+ }
2301
+ response_data = self.api_client.call_api(
2302
+ *_param,
2303
+ _request_timeout=_request_timeout
2304
+ )
2305
+ response_data.read()
2306
+ return self.api_client.response_deserialize(
2307
+ response_data=response_data,
2308
+ response_types_map=_response_types_map,
2309
+ ).data
2310
+
2311
+
2312
+ @validate_call
2313
+ def replay_ingest_dead_letter_endpoint_v1_with_http_info(
2314
+ self,
2315
+ dead_letter_id: Annotated[StrictStr, Field(description="Dead-letter row identifier")],
2316
+ replay_dead_letter_request: Optional[ReplayDeadLetterRequest] = None,
2317
+ _request_timeout: Union[
2318
+ None,
2319
+ Annotated[StrictFloat, Field(gt=0)],
2320
+ Tuple[
2321
+ Annotated[StrictFloat, Field(gt=0)],
2322
+ Annotated[StrictFloat, Field(gt=0)]
2323
+ ]
2324
+ ] = None,
2325
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2326
+ _content_type: Optional[StrictStr] = None,
2327
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2328
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2329
+ ) -> ApiResponse[object]:
2330
+ """Replay Ingest Dead Letter Endpoint
2331
+
2332
+ Replay a dead-letter event back through normalization + usage ingest. Cross-tenant guard (PR #632 round-7 review): the replay is state-changing (rolls forward usage events, marks the row REPLAYED, can assign a tenant via ``tenant_id_override``). Without this guard, a per-tenant customer key holder who passes the subtree auth gate could replay any tenant's poison-pill rows or assign their replay to another tenant. Round 7 surfaced this sibling-to-detail-endpoint hole that earlier rounds missed.
2333
+
2334
+ :param dead_letter_id: Dead-letter row identifier (required)
2335
+ :type dead_letter_id: str
2336
+ :param replay_dead_letter_request:
2337
+ :type replay_dead_letter_request: ReplayDeadLetterRequest
2338
+ :param _request_timeout: timeout setting for this request. If one
2339
+ number provided, it will be total request
2340
+ timeout. It can also be a pair (tuple) of
2341
+ (connection, read) timeouts.
2342
+ :type _request_timeout: int, tuple(int, int), optional
2343
+ :param _request_auth: set to override the auth_settings for an a single
2344
+ request; this effectively ignores the
2345
+ authentication in the spec for a single request.
2346
+ :type _request_auth: dict, optional
2347
+ :param _content_type: force content-type for the request.
2348
+ :type _content_type: str, Optional
2349
+ :param _headers: set to override the headers for a single
2350
+ request; this effectively ignores the headers
2351
+ in the spec for a single request.
2352
+ :type _headers: dict, optional
2353
+ :param _host_index: set to override the host_index for a single
2354
+ request; this effectively ignores the host_index
2355
+ in the spec for a single request.
2356
+ :type _host_index: int, optional
2357
+ :return: Returns the result object.
2358
+ """ # noqa: E501
2359
+
2360
+ _param = self._replay_ingest_dead_letter_endpoint_v1_serialize(
2361
+ dead_letter_id=dead_letter_id,
2362
+ replay_dead_letter_request=replay_dead_letter_request,
2363
+ _request_auth=_request_auth,
2364
+ _content_type=_content_type,
2365
+ _headers=_headers,
2366
+ _host_index=_host_index
2367
+ )
2368
+
2369
+ _response_types_map: Dict[str, Optional[str]] = {
2370
+ '200': "object",
2371
+ '422': "HTTPValidationError",
2372
+ }
2373
+ response_data = self.api_client.call_api(
2374
+ *_param,
2375
+ _request_timeout=_request_timeout
2376
+ )
2377
+ response_data.read()
2378
+ return self.api_client.response_deserialize(
2379
+ response_data=response_data,
2380
+ response_types_map=_response_types_map,
2381
+ )
2382
+
2383
+
2384
+ @validate_call
2385
+ def replay_ingest_dead_letter_endpoint_v1_without_preload_content(
2386
+ self,
2387
+ dead_letter_id: Annotated[StrictStr, Field(description="Dead-letter row identifier")],
2388
+ replay_dead_letter_request: Optional[ReplayDeadLetterRequest] = None,
2389
+ _request_timeout: Union[
2390
+ None,
2391
+ Annotated[StrictFloat, Field(gt=0)],
2392
+ Tuple[
2393
+ Annotated[StrictFloat, Field(gt=0)],
2394
+ Annotated[StrictFloat, Field(gt=0)]
2395
+ ]
2396
+ ] = None,
2397
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2398
+ _content_type: Optional[StrictStr] = None,
2399
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2400
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2401
+ ) -> RESTResponseType:
2402
+ """Replay Ingest Dead Letter Endpoint
2403
+
2404
+ Replay a dead-letter event back through normalization + usage ingest. Cross-tenant guard (PR #632 round-7 review): the replay is state-changing (rolls forward usage events, marks the row REPLAYED, can assign a tenant via ``tenant_id_override``). Without this guard, a per-tenant customer key holder who passes the subtree auth gate could replay any tenant's poison-pill rows or assign their replay to another tenant. Round 7 surfaced this sibling-to-detail-endpoint hole that earlier rounds missed.
2405
+
2406
+ :param dead_letter_id: Dead-letter row identifier (required)
2407
+ :type dead_letter_id: str
2408
+ :param replay_dead_letter_request:
2409
+ :type replay_dead_letter_request: ReplayDeadLetterRequest
2410
+ :param _request_timeout: timeout setting for this request. If one
2411
+ number provided, it will be total request
2412
+ timeout. It can also be a pair (tuple) of
2413
+ (connection, read) timeouts.
2414
+ :type _request_timeout: int, tuple(int, int), optional
2415
+ :param _request_auth: set to override the auth_settings for an a single
2416
+ request; this effectively ignores the
2417
+ authentication in the spec for a single request.
2418
+ :type _request_auth: dict, optional
2419
+ :param _content_type: force content-type for the request.
2420
+ :type _content_type: str, Optional
2421
+ :param _headers: set to override the headers for a single
2422
+ request; this effectively ignores the headers
2423
+ in the spec for a single request.
2424
+ :type _headers: dict, optional
2425
+ :param _host_index: set to override the host_index for a single
2426
+ request; this effectively ignores the host_index
2427
+ in the spec for a single request.
2428
+ :type _host_index: int, optional
2429
+ :return: Returns the result object.
2430
+ """ # noqa: E501
2431
+
2432
+ _param = self._replay_ingest_dead_letter_endpoint_v1_serialize(
2433
+ dead_letter_id=dead_letter_id,
2434
+ replay_dead_letter_request=replay_dead_letter_request,
2435
+ _request_auth=_request_auth,
2436
+ _content_type=_content_type,
2437
+ _headers=_headers,
2438
+ _host_index=_host_index
2439
+ )
2440
+
2441
+ _response_types_map: Dict[str, Optional[str]] = {
2442
+ '200': "object",
2443
+ '422': "HTTPValidationError",
2444
+ }
2445
+ response_data = self.api_client.call_api(
2446
+ *_param,
2447
+ _request_timeout=_request_timeout
2448
+ )
2449
+ return response_data.response
2450
+
2451
+
2452
+ def _replay_ingest_dead_letter_endpoint_v1_serialize(
2453
+ self,
2454
+ dead_letter_id,
2455
+ replay_dead_letter_request,
2456
+ _request_auth,
2457
+ _content_type,
2458
+ _headers,
2459
+ _host_index,
2460
+ ) -> RequestSerialized:
2461
+
2462
+ _host = None
2463
+
2464
+ _collection_formats: Dict[str, str] = {
2465
+ }
2466
+
2467
+ _path_params: Dict[str, str] = {}
2468
+ _query_params: List[Tuple[str, str]] = []
2469
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2470
+ _form_params: List[Tuple[str, str]] = []
2471
+ _files: Dict[
2472
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2473
+ ] = {}
2474
+ _body_params: Optional[bytes] = None
2475
+
2476
+ # process the path parameters
2477
+ if dead_letter_id is not None:
2478
+ _path_params['dead_letter_id'] = dead_letter_id
2479
+ # process the query parameters
2480
+ # process the header parameters
2481
+ # process the form parameters
2482
+ # process the body parameter
2483
+ if replay_dead_letter_request is not None:
2484
+ _body_params = replay_dead_letter_request
2485
+
2486
+
2487
+ # set the HTTP header `Accept`
2488
+ if 'Accept' not in _header_params:
2489
+ _header_params['Accept'] = self.api_client.select_header_accept(
2490
+ [
2491
+ 'application/json'
2492
+ ]
2493
+ )
2494
+
2495
+ # set the HTTP header `Content-Type`
2496
+ if _content_type:
2497
+ _header_params['Content-Type'] = _content_type
2498
+ else:
2499
+ _default_content_type = (
2500
+ self.api_client.select_header_content_type(
2501
+ [
2502
+ 'application/json'
2503
+ ]
2504
+ )
2505
+ )
2506
+ if _default_content_type is not None:
2507
+ _header_params['Content-Type'] = _default_content_type
2508
+
2509
+ # authentication setting
2510
+ _auth_settings: List[str] = [
2511
+ 'HTTPBearer'
2512
+ ]
2513
+
2514
+ return self.api_client.param_serialize(
2515
+ method='POST',
2516
+ resource_path='/v1/admin/ingest/dead-letters/{dead_letter_id}/replay',
2517
+ path_params=_path_params,
2518
+ query_params=_query_params,
2519
+ header_params=_header_params,
2520
+ body=_body_params,
2521
+ post_params=_form_params,
2522
+ files=_files,
2523
+ auth_settings=_auth_settings,
2524
+ collection_formats=_collection_formats,
2525
+ _host=_host,
2526
+ _request_auth=_request_auth
2527
+ )
2528
+
2529
+
2530
+
2531
+
2532
+ @validate_call
2533
+ def retry_unpriced(
2534
+ self,
2535
+ retry_unpriced_request: RetryUnpricedRequest,
2536
+ _request_timeout: Union[
2537
+ None,
2538
+ Annotated[StrictFloat, Field(gt=0)],
2539
+ Tuple[
2540
+ Annotated[StrictFloat, Field(gt=0)],
2541
+ Annotated[StrictFloat, Field(gt=0)]
2542
+ ]
2543
+ ] = None,
2544
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2545
+ _content_type: Optional[StrictStr] = None,
2546
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2547
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2548
+ ) -> RetryUnpricedResponse:
2549
+ """Retry Unpriced
2550
+
2551
+ Retry an UNPRICED usage event. This resets the event to PENDING status so it can be re-rated.
2552
+
2553
+ :param retry_unpriced_request: (required)
2554
+ :type retry_unpriced_request: RetryUnpricedRequest
2555
+ :param _request_timeout: timeout setting for this request. If one
2556
+ number provided, it will be total request
2557
+ timeout. It can also be a pair (tuple) of
2558
+ (connection, read) timeouts.
2559
+ :type _request_timeout: int, tuple(int, int), optional
2560
+ :param _request_auth: set to override the auth_settings for an a single
2561
+ request; this effectively ignores the
2562
+ authentication in the spec for a single request.
2563
+ :type _request_auth: dict, optional
2564
+ :param _content_type: force content-type for the request.
2565
+ :type _content_type: str, Optional
2566
+ :param _headers: set to override the headers for a single
2567
+ request; this effectively ignores the headers
2568
+ in the spec for a single request.
2569
+ :type _headers: dict, optional
2570
+ :param _host_index: set to override the host_index for a single
2571
+ request; this effectively ignores the host_index
2572
+ in the spec for a single request.
2573
+ :type _host_index: int, optional
2574
+ :return: Returns the result object.
2575
+ """ # noqa: E501
2576
+
2577
+ _param = self._retry_unpriced_serialize(
2578
+ retry_unpriced_request=retry_unpriced_request,
2579
+ _request_auth=_request_auth,
2580
+ _content_type=_content_type,
2581
+ _headers=_headers,
2582
+ _host_index=_host_index
2583
+ )
2584
+
2585
+ _response_types_map: Dict[str, Optional[str]] = {
2586
+ '200': "RetryUnpricedResponse",
2587
+ '422': "HTTPValidationError",
2588
+ }
2589
+ response_data = self.api_client.call_api(
2590
+ *_param,
2591
+ _request_timeout=_request_timeout
2592
+ )
2593
+ response_data.read()
2594
+ return self.api_client.response_deserialize(
2595
+ response_data=response_data,
2596
+ response_types_map=_response_types_map,
2597
+ ).data
2598
+
2599
+
2600
+ @validate_call
2601
+ def retry_unpriced_with_http_info(
2602
+ self,
2603
+ retry_unpriced_request: RetryUnpricedRequest,
2604
+ _request_timeout: Union[
2605
+ None,
2606
+ Annotated[StrictFloat, Field(gt=0)],
2607
+ Tuple[
2608
+ Annotated[StrictFloat, Field(gt=0)],
2609
+ Annotated[StrictFloat, Field(gt=0)]
2610
+ ]
2611
+ ] = None,
2612
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2613
+ _content_type: Optional[StrictStr] = None,
2614
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2615
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2616
+ ) -> ApiResponse[RetryUnpricedResponse]:
2617
+ """Retry Unpriced
2618
+
2619
+ Retry an UNPRICED usage event. This resets the event to PENDING status so it can be re-rated.
2620
+
2621
+ :param retry_unpriced_request: (required)
2622
+ :type retry_unpriced_request: RetryUnpricedRequest
2623
+ :param _request_timeout: timeout setting for this request. If one
2624
+ number provided, it will be total request
2625
+ timeout. It can also be a pair (tuple) of
2626
+ (connection, read) timeouts.
2627
+ :type _request_timeout: int, tuple(int, int), optional
2628
+ :param _request_auth: set to override the auth_settings for an a single
2629
+ request; this effectively ignores the
2630
+ authentication in the spec for a single request.
2631
+ :type _request_auth: dict, optional
2632
+ :param _content_type: force content-type for the request.
2633
+ :type _content_type: str, Optional
2634
+ :param _headers: set to override the headers for a single
2635
+ request; this effectively ignores the headers
2636
+ in the spec for a single request.
2637
+ :type _headers: dict, optional
2638
+ :param _host_index: set to override the host_index for a single
2639
+ request; this effectively ignores the host_index
2640
+ in the spec for a single request.
2641
+ :type _host_index: int, optional
2642
+ :return: Returns the result object.
2643
+ """ # noqa: E501
2644
+
2645
+ _param = self._retry_unpriced_serialize(
2646
+ retry_unpriced_request=retry_unpriced_request,
2647
+ _request_auth=_request_auth,
2648
+ _content_type=_content_type,
2649
+ _headers=_headers,
2650
+ _host_index=_host_index
2651
+ )
2652
+
2653
+ _response_types_map: Dict[str, Optional[str]] = {
2654
+ '200': "RetryUnpricedResponse",
2655
+ '422': "HTTPValidationError",
2656
+ }
2657
+ response_data = self.api_client.call_api(
2658
+ *_param,
2659
+ _request_timeout=_request_timeout
2660
+ )
2661
+ response_data.read()
2662
+ return self.api_client.response_deserialize(
2663
+ response_data=response_data,
2664
+ response_types_map=_response_types_map,
2665
+ )
2666
+
2667
+
2668
+ @validate_call
2669
+ def retry_unpriced_without_preload_content(
2670
+ self,
2671
+ retry_unpriced_request: RetryUnpricedRequest,
2672
+ _request_timeout: Union[
2673
+ None,
2674
+ Annotated[StrictFloat, Field(gt=0)],
2675
+ Tuple[
2676
+ Annotated[StrictFloat, Field(gt=0)],
2677
+ Annotated[StrictFloat, Field(gt=0)]
2678
+ ]
2679
+ ] = None,
2680
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2681
+ _content_type: Optional[StrictStr] = None,
2682
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2683
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2684
+ ) -> RESTResponseType:
2685
+ """Retry Unpriced
2686
+
2687
+ Retry an UNPRICED usage event. This resets the event to PENDING status so it can be re-rated.
2688
+
2689
+ :param retry_unpriced_request: (required)
2690
+ :type retry_unpriced_request: RetryUnpricedRequest
2691
+ :param _request_timeout: timeout setting for this request. If one
2692
+ number provided, it will be total request
2693
+ timeout. It can also be a pair (tuple) of
2694
+ (connection, read) timeouts.
2695
+ :type _request_timeout: int, tuple(int, int), optional
2696
+ :param _request_auth: set to override the auth_settings for an a single
2697
+ request; this effectively ignores the
2698
+ authentication in the spec for a single request.
2699
+ :type _request_auth: dict, optional
2700
+ :param _content_type: force content-type for the request.
2701
+ :type _content_type: str, Optional
2702
+ :param _headers: set to override the headers for a single
2703
+ request; this effectively ignores the headers
2704
+ in the spec for a single request.
2705
+ :type _headers: dict, optional
2706
+ :param _host_index: set to override the host_index for a single
2707
+ request; this effectively ignores the host_index
2708
+ in the spec for a single request.
2709
+ :type _host_index: int, optional
2710
+ :return: Returns the result object.
2711
+ """ # noqa: E501
2712
+
2713
+ _param = self._retry_unpriced_serialize(
2714
+ retry_unpriced_request=retry_unpriced_request,
2715
+ _request_auth=_request_auth,
2716
+ _content_type=_content_type,
2717
+ _headers=_headers,
2718
+ _host_index=_host_index
2719
+ )
2720
+
2721
+ _response_types_map: Dict[str, Optional[str]] = {
2722
+ '200': "RetryUnpricedResponse",
2723
+ '422': "HTTPValidationError",
2724
+ }
2725
+ response_data = self.api_client.call_api(
2726
+ *_param,
2727
+ _request_timeout=_request_timeout
2728
+ )
2729
+ return response_data.response
2730
+
2731
+
2732
+ def _retry_unpriced_serialize(
2733
+ self,
2734
+ retry_unpriced_request,
2735
+ _request_auth,
2736
+ _content_type,
2737
+ _headers,
2738
+ _host_index,
2739
+ ) -> RequestSerialized:
2740
+
2741
+ _host = None
2742
+
2743
+ _collection_formats: Dict[str, str] = {
2744
+ }
2745
+
2746
+ _path_params: Dict[str, str] = {}
2747
+ _query_params: List[Tuple[str, str]] = []
2748
+ _header_params: Dict[str, Optional[str]] = _headers or {}
2749
+ _form_params: List[Tuple[str, str]] = []
2750
+ _files: Dict[
2751
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
2752
+ ] = {}
2753
+ _body_params: Optional[bytes] = None
2754
+
2755
+ # process the path parameters
2756
+ # process the query parameters
2757
+ # process the header parameters
2758
+ # process the form parameters
2759
+ # process the body parameter
2760
+ if retry_unpriced_request is not None:
2761
+ _body_params = retry_unpriced_request
2762
+
2763
+
2764
+ # set the HTTP header `Accept`
2765
+ if 'Accept' not in _header_params:
2766
+ _header_params['Accept'] = self.api_client.select_header_accept(
2767
+ [
2768
+ 'application/json'
2769
+ ]
2770
+ )
2771
+
2772
+ # set the HTTP header `Content-Type`
2773
+ if _content_type:
2774
+ _header_params['Content-Type'] = _content_type
2775
+ else:
2776
+ _default_content_type = (
2777
+ self.api_client.select_header_content_type(
2778
+ [
2779
+ 'application/json'
2780
+ ]
2781
+ )
2782
+ )
2783
+ if _default_content_type is not None:
2784
+ _header_params['Content-Type'] = _default_content_type
2785
+
2786
+ # authentication setting
2787
+ _auth_settings: List[str] = [
2788
+ 'HTTPBearer'
2789
+ ]
2790
+
2791
+ return self.api_client.param_serialize(
2792
+ method='POST',
2793
+ resource_path='/v1/admin/usage/unpriced/retry',
2794
+ path_params=_path_params,
2795
+ query_params=_query_params,
2796
+ header_params=_header_params,
2797
+ body=_body_params,
2798
+ post_params=_form_params,
2799
+ files=_files,
2800
+ auth_settings=_auth_settings,
2801
+ collection_formats=_collection_formats,
2802
+ _host=_host,
2803
+ _request_auth=_request_auth
2804
+ )
2805
+
2806
+
2807
+
2808
+
2809
+ @validate_call
2810
+ def review_quarantined(
2811
+ self,
2812
+ review_quarantined_request: ReviewQuarantinedRequest,
2813
+ _request_timeout: Union[
2814
+ None,
2815
+ Annotated[StrictFloat, Field(gt=0)],
2816
+ Tuple[
2817
+ Annotated[StrictFloat, Field(gt=0)],
2818
+ Annotated[StrictFloat, Field(gt=0)]
2819
+ ]
2820
+ ] = None,
2821
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2822
+ _content_type: Optional[StrictStr] = None,
2823
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2824
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2825
+ ) -> ReviewQuarantinedResponse:
2826
+ """Review Quarantined
2827
+
2828
+ Review a QUARANTINED usage event. Actions: - \"retry\": Reset to PENDING for retry - \"manual_rate\": Mark for manual rating - \"ignore\": Keep in QUARANTINED state
2829
+
2830
+ :param review_quarantined_request: (required)
2831
+ :type review_quarantined_request: ReviewQuarantinedRequest
2832
+ :param _request_timeout: timeout setting for this request. If one
2833
+ number provided, it will be total request
2834
+ timeout. It can also be a pair (tuple) of
2835
+ (connection, read) timeouts.
2836
+ :type _request_timeout: int, tuple(int, int), optional
2837
+ :param _request_auth: set to override the auth_settings for an a single
2838
+ request; this effectively ignores the
2839
+ authentication in the spec for a single request.
2840
+ :type _request_auth: dict, optional
2841
+ :param _content_type: force content-type for the request.
2842
+ :type _content_type: str, Optional
2843
+ :param _headers: set to override the headers for a single
2844
+ request; this effectively ignores the headers
2845
+ in the spec for a single request.
2846
+ :type _headers: dict, optional
2847
+ :param _host_index: set to override the host_index for a single
2848
+ request; this effectively ignores the host_index
2849
+ in the spec for a single request.
2850
+ :type _host_index: int, optional
2851
+ :return: Returns the result object.
2852
+ """ # noqa: E501
2853
+
2854
+ _param = self._review_quarantined_serialize(
2855
+ review_quarantined_request=review_quarantined_request,
2856
+ _request_auth=_request_auth,
2857
+ _content_type=_content_type,
2858
+ _headers=_headers,
2859
+ _host_index=_host_index
2860
+ )
2861
+
2862
+ _response_types_map: Dict[str, Optional[str]] = {
2863
+ '200': "ReviewQuarantinedResponse",
2864
+ '422': "HTTPValidationError",
2865
+ }
2866
+ response_data = self.api_client.call_api(
2867
+ *_param,
2868
+ _request_timeout=_request_timeout
2869
+ )
2870
+ response_data.read()
2871
+ return self.api_client.response_deserialize(
2872
+ response_data=response_data,
2873
+ response_types_map=_response_types_map,
2874
+ ).data
2875
+
2876
+
2877
+ @validate_call
2878
+ def review_quarantined_with_http_info(
2879
+ self,
2880
+ review_quarantined_request: ReviewQuarantinedRequest,
2881
+ _request_timeout: Union[
2882
+ None,
2883
+ Annotated[StrictFloat, Field(gt=0)],
2884
+ Tuple[
2885
+ Annotated[StrictFloat, Field(gt=0)],
2886
+ Annotated[StrictFloat, Field(gt=0)]
2887
+ ]
2888
+ ] = None,
2889
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2890
+ _content_type: Optional[StrictStr] = None,
2891
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2892
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2893
+ ) -> ApiResponse[ReviewQuarantinedResponse]:
2894
+ """Review Quarantined
2895
+
2896
+ Review a QUARANTINED usage event. Actions: - \"retry\": Reset to PENDING for retry - \"manual_rate\": Mark for manual rating - \"ignore\": Keep in QUARANTINED state
2897
+
2898
+ :param review_quarantined_request: (required)
2899
+ :type review_quarantined_request: ReviewQuarantinedRequest
2900
+ :param _request_timeout: timeout setting for this request. If one
2901
+ number provided, it will be total request
2902
+ timeout. It can also be a pair (tuple) of
2903
+ (connection, read) timeouts.
2904
+ :type _request_timeout: int, tuple(int, int), optional
2905
+ :param _request_auth: set to override the auth_settings for an a single
2906
+ request; this effectively ignores the
2907
+ authentication in the spec for a single request.
2908
+ :type _request_auth: dict, optional
2909
+ :param _content_type: force content-type for the request.
2910
+ :type _content_type: str, Optional
2911
+ :param _headers: set to override the headers for a single
2912
+ request; this effectively ignores the headers
2913
+ in the spec for a single request.
2914
+ :type _headers: dict, optional
2915
+ :param _host_index: set to override the host_index for a single
2916
+ request; this effectively ignores the host_index
2917
+ in the spec for a single request.
2918
+ :type _host_index: int, optional
2919
+ :return: Returns the result object.
2920
+ """ # noqa: E501
2921
+
2922
+ _param = self._review_quarantined_serialize(
2923
+ review_quarantined_request=review_quarantined_request,
2924
+ _request_auth=_request_auth,
2925
+ _content_type=_content_type,
2926
+ _headers=_headers,
2927
+ _host_index=_host_index
2928
+ )
2929
+
2930
+ _response_types_map: Dict[str, Optional[str]] = {
2931
+ '200': "ReviewQuarantinedResponse",
2932
+ '422': "HTTPValidationError",
2933
+ }
2934
+ response_data = self.api_client.call_api(
2935
+ *_param,
2936
+ _request_timeout=_request_timeout
2937
+ )
2938
+ response_data.read()
2939
+ return self.api_client.response_deserialize(
2940
+ response_data=response_data,
2941
+ response_types_map=_response_types_map,
2942
+ )
2943
+
2944
+
2945
+ @validate_call
2946
+ def review_quarantined_without_preload_content(
2947
+ self,
2948
+ review_quarantined_request: ReviewQuarantinedRequest,
2949
+ _request_timeout: Union[
2950
+ None,
2951
+ Annotated[StrictFloat, Field(gt=0)],
2952
+ Tuple[
2953
+ Annotated[StrictFloat, Field(gt=0)],
2954
+ Annotated[StrictFloat, Field(gt=0)]
2955
+ ]
2956
+ ] = None,
2957
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
2958
+ _content_type: Optional[StrictStr] = None,
2959
+ _headers: Optional[Dict[StrictStr, Any]] = None,
2960
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
2961
+ ) -> RESTResponseType:
2962
+ """Review Quarantined
2963
+
2964
+ Review a QUARANTINED usage event. Actions: - \"retry\": Reset to PENDING for retry - \"manual_rate\": Mark for manual rating - \"ignore\": Keep in QUARANTINED state
2965
+
2966
+ :param review_quarantined_request: (required)
2967
+ :type review_quarantined_request: ReviewQuarantinedRequest
2968
+ :param _request_timeout: timeout setting for this request. If one
2969
+ number provided, it will be total request
2970
+ timeout. It can also be a pair (tuple) of
2971
+ (connection, read) timeouts.
2972
+ :type _request_timeout: int, tuple(int, int), optional
2973
+ :param _request_auth: set to override the auth_settings for an a single
2974
+ request; this effectively ignores the
2975
+ authentication in the spec for a single request.
2976
+ :type _request_auth: dict, optional
2977
+ :param _content_type: force content-type for the request.
2978
+ :type _content_type: str, Optional
2979
+ :param _headers: set to override the headers for a single
2980
+ request; this effectively ignores the headers
2981
+ in the spec for a single request.
2982
+ :type _headers: dict, optional
2983
+ :param _host_index: set to override the host_index for a single
2984
+ request; this effectively ignores the host_index
2985
+ in the spec for a single request.
2986
+ :type _host_index: int, optional
2987
+ :return: Returns the result object.
2988
+ """ # noqa: E501
2989
+
2990
+ _param = self._review_quarantined_serialize(
2991
+ review_quarantined_request=review_quarantined_request,
2992
+ _request_auth=_request_auth,
2993
+ _content_type=_content_type,
2994
+ _headers=_headers,
2995
+ _host_index=_host_index
2996
+ )
2997
+
2998
+ _response_types_map: Dict[str, Optional[str]] = {
2999
+ '200': "ReviewQuarantinedResponse",
3000
+ '422': "HTTPValidationError",
3001
+ }
3002
+ response_data = self.api_client.call_api(
3003
+ *_param,
3004
+ _request_timeout=_request_timeout
3005
+ )
3006
+ return response_data.response
3007
+
3008
+
3009
+ def _review_quarantined_serialize(
3010
+ self,
3011
+ review_quarantined_request,
3012
+ _request_auth,
3013
+ _content_type,
3014
+ _headers,
3015
+ _host_index,
3016
+ ) -> RequestSerialized:
3017
+
3018
+ _host = None
3019
+
3020
+ _collection_formats: Dict[str, str] = {
3021
+ }
3022
+
3023
+ _path_params: Dict[str, str] = {}
3024
+ _query_params: List[Tuple[str, str]] = []
3025
+ _header_params: Dict[str, Optional[str]] = _headers or {}
3026
+ _form_params: List[Tuple[str, str]] = []
3027
+ _files: Dict[
3028
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
3029
+ ] = {}
3030
+ _body_params: Optional[bytes] = None
3031
+
3032
+ # process the path parameters
3033
+ # process the query parameters
3034
+ # process the header parameters
3035
+ # process the form parameters
3036
+ # process the body parameter
3037
+ if review_quarantined_request is not None:
3038
+ _body_params = review_quarantined_request
3039
+
3040
+
3041
+ # set the HTTP header `Accept`
3042
+ if 'Accept' not in _header_params:
3043
+ _header_params['Accept'] = self.api_client.select_header_accept(
3044
+ [
3045
+ 'application/json'
3046
+ ]
3047
+ )
3048
+
3049
+ # set the HTTP header `Content-Type`
3050
+ if _content_type:
3051
+ _header_params['Content-Type'] = _content_type
3052
+ else:
3053
+ _default_content_type = (
3054
+ self.api_client.select_header_content_type(
3055
+ [
3056
+ 'application/json'
3057
+ ]
3058
+ )
3059
+ )
3060
+ if _default_content_type is not None:
3061
+ _header_params['Content-Type'] = _default_content_type
3062
+
3063
+ # authentication setting
3064
+ _auth_settings: List[str] = [
3065
+ 'HTTPBearer'
3066
+ ]
3067
+
3068
+ return self.api_client.param_serialize(
3069
+ method='POST',
3070
+ resource_path='/v1/admin/usage/quarantined/review',
3071
+ path_params=_path_params,
3072
+ query_params=_query_params,
3073
+ header_params=_header_params,
3074
+ body=_body_params,
3075
+ post_params=_form_params,
3076
+ files=_files,
3077
+ auth_settings=_auth_settings,
3078
+ collection_formats=_collection_formats,
3079
+ _host=_host,
3080
+ _request_auth=_request_auth
3081
+ )
3082
+
3083
+
3084
+
3085
+
3086
+ @validate_call
3087
+ def trigger_subscription_sync(
3088
+ self,
3089
+ subscription_id: Annotated[StrictStr, Field(description="Subscription ID to sync")],
3090
+ _request_timeout: Union[
3091
+ None,
3092
+ Annotated[StrictFloat, Field(gt=0)],
3093
+ Tuple[
3094
+ Annotated[StrictFloat, Field(gt=0)],
3095
+ Annotated[StrictFloat, Field(gt=0)]
3096
+ ]
3097
+ ] = None,
3098
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3099
+ _content_type: Optional[StrictStr] = None,
3100
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3101
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
3102
+ ) -> object:
3103
+ """Trigger Subscription Sync
3104
+
3105
+ Manually trigger subscription sync and lifecycle event publishing. This endpoint: 1. Fetches subscription from OpenMeter 2. Gets tenant_id from environment variable (shared across all customers) 3. Syncs the subscription from OpenMeter 4. Publishes an ACTIVATED lifecycle event if the subscription is active and no event exists 5. Returns the sync result
3106
+
3107
+ :param subscription_id: Subscription ID to sync (required)
3108
+ :type subscription_id: str
3109
+ :param _request_timeout: timeout setting for this request. If one
3110
+ number provided, it will be total request
3111
+ timeout. It can also be a pair (tuple) of
3112
+ (connection, read) timeouts.
3113
+ :type _request_timeout: int, tuple(int, int), optional
3114
+ :param _request_auth: set to override the auth_settings for an a single
3115
+ request; this effectively ignores the
3116
+ authentication in the spec for a single request.
3117
+ :type _request_auth: dict, optional
3118
+ :param _content_type: force content-type for the request.
3119
+ :type _content_type: str, Optional
3120
+ :param _headers: set to override the headers for a single
3121
+ request; this effectively ignores the headers
3122
+ in the spec for a single request.
3123
+ :type _headers: dict, optional
3124
+ :param _host_index: set to override the host_index for a single
3125
+ request; this effectively ignores the host_index
3126
+ in the spec for a single request.
3127
+ :type _host_index: int, optional
3128
+ :return: Returns the result object.
3129
+ """ # noqa: E501
3130
+
3131
+ _param = self._trigger_subscription_sync_serialize(
3132
+ subscription_id=subscription_id,
3133
+ _request_auth=_request_auth,
3134
+ _content_type=_content_type,
3135
+ _headers=_headers,
3136
+ _host_index=_host_index
3137
+ )
3138
+
3139
+ _response_types_map: Dict[str, Optional[str]] = {
3140
+ '200': "object",
3141
+ '422': "HTTPValidationError",
3142
+ }
3143
+ response_data = self.api_client.call_api(
3144
+ *_param,
3145
+ _request_timeout=_request_timeout
3146
+ )
3147
+ response_data.read()
3148
+ return self.api_client.response_deserialize(
3149
+ response_data=response_data,
3150
+ response_types_map=_response_types_map,
3151
+ ).data
3152
+
3153
+
3154
+ @validate_call
3155
+ def trigger_subscription_sync_with_http_info(
3156
+ self,
3157
+ subscription_id: Annotated[StrictStr, Field(description="Subscription ID to sync")],
3158
+ _request_timeout: Union[
3159
+ None,
3160
+ Annotated[StrictFloat, Field(gt=0)],
3161
+ Tuple[
3162
+ Annotated[StrictFloat, Field(gt=0)],
3163
+ Annotated[StrictFloat, Field(gt=0)]
3164
+ ]
3165
+ ] = None,
3166
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3167
+ _content_type: Optional[StrictStr] = None,
3168
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3169
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
3170
+ ) -> ApiResponse[object]:
3171
+ """Trigger Subscription Sync
3172
+
3173
+ Manually trigger subscription sync and lifecycle event publishing. This endpoint: 1. Fetches subscription from OpenMeter 2. Gets tenant_id from environment variable (shared across all customers) 3. Syncs the subscription from OpenMeter 4. Publishes an ACTIVATED lifecycle event if the subscription is active and no event exists 5. Returns the sync result
3174
+
3175
+ :param subscription_id: Subscription ID to sync (required)
3176
+ :type subscription_id: str
3177
+ :param _request_timeout: timeout setting for this request. If one
3178
+ number provided, it will be total request
3179
+ timeout. It can also be a pair (tuple) of
3180
+ (connection, read) timeouts.
3181
+ :type _request_timeout: int, tuple(int, int), optional
3182
+ :param _request_auth: set to override the auth_settings for an a single
3183
+ request; this effectively ignores the
3184
+ authentication in the spec for a single request.
3185
+ :type _request_auth: dict, optional
3186
+ :param _content_type: force content-type for the request.
3187
+ :type _content_type: str, Optional
3188
+ :param _headers: set to override the headers for a single
3189
+ request; this effectively ignores the headers
3190
+ in the spec for a single request.
3191
+ :type _headers: dict, optional
3192
+ :param _host_index: set to override the host_index for a single
3193
+ request; this effectively ignores the host_index
3194
+ in the spec for a single request.
3195
+ :type _host_index: int, optional
3196
+ :return: Returns the result object.
3197
+ """ # noqa: E501
3198
+
3199
+ _param = self._trigger_subscription_sync_serialize(
3200
+ subscription_id=subscription_id,
3201
+ _request_auth=_request_auth,
3202
+ _content_type=_content_type,
3203
+ _headers=_headers,
3204
+ _host_index=_host_index
3205
+ )
3206
+
3207
+ _response_types_map: Dict[str, Optional[str]] = {
3208
+ '200': "object",
3209
+ '422': "HTTPValidationError",
3210
+ }
3211
+ response_data = self.api_client.call_api(
3212
+ *_param,
3213
+ _request_timeout=_request_timeout
3214
+ )
3215
+ response_data.read()
3216
+ return self.api_client.response_deserialize(
3217
+ response_data=response_data,
3218
+ response_types_map=_response_types_map,
3219
+ )
3220
+
3221
+
3222
+ @validate_call
3223
+ def trigger_subscription_sync_without_preload_content(
3224
+ self,
3225
+ subscription_id: Annotated[StrictStr, Field(description="Subscription ID to sync")],
3226
+ _request_timeout: Union[
3227
+ None,
3228
+ Annotated[StrictFloat, Field(gt=0)],
3229
+ Tuple[
3230
+ Annotated[StrictFloat, Field(gt=0)],
3231
+ Annotated[StrictFloat, Field(gt=0)]
3232
+ ]
3233
+ ] = None,
3234
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
3235
+ _content_type: Optional[StrictStr] = None,
3236
+ _headers: Optional[Dict[StrictStr, Any]] = None,
3237
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
3238
+ ) -> RESTResponseType:
3239
+ """Trigger Subscription Sync
3240
+
3241
+ Manually trigger subscription sync and lifecycle event publishing. This endpoint: 1. Fetches subscription from OpenMeter 2. Gets tenant_id from environment variable (shared across all customers) 3. Syncs the subscription from OpenMeter 4. Publishes an ACTIVATED lifecycle event if the subscription is active and no event exists 5. Returns the sync result
3242
+
3243
+ :param subscription_id: Subscription ID to sync (required)
3244
+ :type subscription_id: str
3245
+ :param _request_timeout: timeout setting for this request. If one
3246
+ number provided, it will be total request
3247
+ timeout. It can also be a pair (tuple) of
3248
+ (connection, read) timeouts.
3249
+ :type _request_timeout: int, tuple(int, int), optional
3250
+ :param _request_auth: set to override the auth_settings for an a single
3251
+ request; this effectively ignores the
3252
+ authentication in the spec for a single request.
3253
+ :type _request_auth: dict, optional
3254
+ :param _content_type: force content-type for the request.
3255
+ :type _content_type: str, Optional
3256
+ :param _headers: set to override the headers for a single
3257
+ request; this effectively ignores the headers
3258
+ in the spec for a single request.
3259
+ :type _headers: dict, optional
3260
+ :param _host_index: set to override the host_index for a single
3261
+ request; this effectively ignores the host_index
3262
+ in the spec for a single request.
3263
+ :type _host_index: int, optional
3264
+ :return: Returns the result object.
3265
+ """ # noqa: E501
3266
+
3267
+ _param = self._trigger_subscription_sync_serialize(
3268
+ subscription_id=subscription_id,
3269
+ _request_auth=_request_auth,
3270
+ _content_type=_content_type,
3271
+ _headers=_headers,
3272
+ _host_index=_host_index
3273
+ )
3274
+
3275
+ _response_types_map: Dict[str, Optional[str]] = {
3276
+ '200': "object",
3277
+ '422': "HTTPValidationError",
3278
+ }
3279
+ response_data = self.api_client.call_api(
3280
+ *_param,
3281
+ _request_timeout=_request_timeout
3282
+ )
3283
+ return response_data.response
3284
+
3285
+
3286
+ def _trigger_subscription_sync_serialize(
3287
+ self,
3288
+ subscription_id,
3289
+ _request_auth,
3290
+ _content_type,
3291
+ _headers,
3292
+ _host_index,
3293
+ ) -> RequestSerialized:
3294
+
3295
+ _host = None
3296
+
3297
+ _collection_formats: Dict[str, str] = {
3298
+ }
3299
+
3300
+ _path_params: Dict[str, str] = {}
3301
+ _query_params: List[Tuple[str, str]] = []
3302
+ _header_params: Dict[str, Optional[str]] = _headers or {}
3303
+ _form_params: List[Tuple[str, str]] = []
3304
+ _files: Dict[
3305
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
3306
+ ] = {}
3307
+ _body_params: Optional[bytes] = None
3308
+
3309
+ # process the path parameters
3310
+ if subscription_id is not None:
3311
+ _path_params['subscription_id'] = subscription_id
3312
+ # process the query parameters
3313
+ # process the header parameters
3314
+ # process the form parameters
3315
+ # process the body parameter
3316
+
3317
+
3318
+ # set the HTTP header `Accept`
3319
+ if 'Accept' not in _header_params:
3320
+ _header_params['Accept'] = self.api_client.select_header_accept(
3321
+ [
3322
+ 'application/json'
3323
+ ]
3324
+ )
3325
+
3326
+
3327
+ # authentication setting
3328
+ _auth_settings: List[str] = [
3329
+ 'HTTPBearer'
3330
+ ]
3331
+
3332
+ return self.api_client.param_serialize(
3333
+ method='POST',
3334
+ resource_path='/v1/admin/subscriptions/{subscription_id}/sync',
3335
+ path_params=_path_params,
3336
+ query_params=_query_params,
3337
+ header_params=_header_params,
3338
+ body=_body_params,
3339
+ post_params=_form_params,
3340
+ files=_files,
3341
+ auth_settings=_auth_settings,
3342
+ collection_formats=_collection_formats,
3343
+ _host=_host,
3344
+ _request_auth=_request_auth
3345
+ )
3346
+
3347
+