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.
- moolabs/__init__.py +1487 -0
- moolabs/_dx_attribution_context.py +213 -0
- moolabs/_dx_attribution_db_time.py +2126 -0
- moolabs/_dx_attribution_db_time_transport.py +173 -0
- moolabs/_dx_attribution_delta.py +142 -0
- moolabs/_dx_attribution_deposits.py +552 -0
- moolabs/_dx_attribution_instrument.py +416 -0
- moolabs/_dx_attribution_middleware.py +541 -0
- moolabs/_dx_attribution_propagate.py +509 -0
- moolabs/_dx_attribution_signal_transport.py +232 -0
- moolabs/_dx_attribution_signals.py +927 -0
- moolabs/_dx_buffer.py +429 -0
- moolabs/_dx_client.py +726 -0
- moolabs/_dx_exceptions.py +84 -0
- moolabs/_dx_namespaces.py +1780 -0
- moolabs/_dx_pagination.py +131 -0
- moolabs/_dx_routing.py +276 -0
- moolabs/_dx_urls.py +629 -0
- moolabs/_dx_webhooks.py +82 -0
- moolabs/api/__init__.py +121 -0
- moolabs/api/account_team_api.py +1444 -0
- moolabs/api/accounts_api.py +4950 -0
- moolabs/api/acute_analytics_api.py +5750 -0
- moolabs/api/acute_integrations_api.py +3449 -0
- moolabs/api/admin_api.py +3347 -0
- moolabs/api/alerts_api.py +1626 -0
- moolabs/api/allocation_rules_api.py +1720 -0
- moolabs/api/analytics_api.py +3204 -0
- moolabs/api/app_custom_invoicing_api.py +952 -0
- moolabs/api/app_stripe_api.py +958 -0
- moolabs/api/apps_api.py +3064 -0
- moolabs/api/arc_admin_api.py +8773 -0
- moolabs/api/arc_communications_api.py +1991 -0
- moolabs/api/arc_portal_api.py +1737 -0
- moolabs/api/arc_webhooks_api.py +2087 -0
- moolabs/api/attribution_allocation_api.py +2345 -0
- moolabs/api/attribution_api.py +1717 -0
- moolabs/api/attribution_customer_keys_api.py +600 -0
- moolabs/api/attribution_db_time_api.py +918 -0
- moolabs/api/attribution_opencost_api.py +1372 -0
- moolabs/api/attribution_readouts_api.py +393 -0
- moolabs/api/attribution_signals_api.py +315 -0
- moolabs/api/auto_topup_api.py +3095 -0
- moolabs/api/batch_api.py +6714 -0
- moolabs/api/billing_api.py +300 -0
- moolabs/api/bom_api.py +2769 -0
- moolabs/api/budgets_api.py +2112 -0
- moolabs/api/buyer_quotes_api.py +2007 -0
- moolabs/api/cases_api.py +5075 -0
- moolabs/api/cash_credits_api.py +1548 -0
- moolabs/api/chat_api.py +3101 -0
- moolabs/api/clause_packs_api.py +2785 -0
- moolabs/api/cloud_billing_api.py +1747 -0
- moolabs/api/contract_editor_api.py +3384 -0
- moolabs/api/cost_events_api.py +1732 -0
- moolabs/api/credit_memos_api.py +3478 -0
- moolabs/api/customers_api.py +3931 -0
- moolabs/api/dashboard_api.py +771 -0
- moolabs/api/debug_api.py +300 -0
- moolabs/api/default_api.py +526 -0
- moolabs/api/disputes_api.py +3586 -0
- moolabs/api/dunning_templates_api.py +8737 -0
- moolabs/api/email_provider_api.py +526 -0
- moolabs/api/entitlements_api.py +9846 -0
- moolabs/api/escalations_api.py +2541 -0
- moolabs/api/events_api.py +1125 -0
- moolabs/api/fx_rates_api.py +1452 -0
- moolabs/api/governance_api.py +4402 -0
- moolabs/api/grants_api.py +1370 -0
- moolabs/api/handoffs_api.py +2138 -0
- moolabs/api/health_api.py +281 -0
- moolabs/api/homepage_api.py +305 -0
- moolabs/api/integrations_api.py +3374 -0
- moolabs/api/internal_api.py +7145 -0
- moolabs/api/internal_credit_memos_api.py +914 -0
- moolabs/api/internal_grants_api.py +1000 -0
- moolabs/api/internal_period_settlements_api.py +657 -0
- moolabs/api/internal_plan_pricing_api.py +326 -0
- moolabs/api/internal_subscriptions_api.py +326 -0
- moolabs/api/ledger_api.py +1483 -0
- moolabs/api/lookup_information_api.py +587 -0
- moolabs/api/mapping_rules_api.py +1782 -0
- moolabs/api/mappings_api.py +632 -0
- moolabs/api/margin_simulation_api.py +595 -0
- moolabs/api/margins_api.py +2301 -0
- moolabs/api/meter_billing_api.py +7419 -0
- moolabs/api/meter_portal_api.py +1368 -0
- moolabs/api/meter_subscriptions_api.py +4358 -0
- moolabs/api/meters_api.py +3707 -0
- moolabs/api/monitoring_api.py +561 -0
- moolabs/api/moolabs_api.py +1182 -0
- moolabs/api/moometer_proxy_api.py +1357 -0
- moolabs/api/netsuite_sync_api.py +2180 -0
- moolabs/api/notes_api.py +1425 -0
- moolabs/api/notifications_api.py +4490 -0
- moolabs/api/ops_api.py +315 -0
- moolabs/api/outbox_api.py +653 -0
- moolabs/api/payments_api.py +2889 -0
- moolabs/api/performance_api.py +2471 -0
- moolabs/api/plan_pricing_api.py +3409 -0
- moolabs/api/plans_api.py +2197 -0
- moolabs/api/pools_api.py +2358 -0
- moolabs/api/portal_api.py +1103 -0
- moolabs/api/product_catalog_api.py +7644 -0
- moolabs/api/promises_api.py +2814 -0
- moolabs/api/quote_agents_api.py +2036 -0
- moolabs/api/quote_contract_webhooks_api.py +327 -0
- moolabs/api/quote_contracts_api.py +2551 -0
- moolabs/api/quote_sessions_api.py +881 -0
- moolabs/api/quotes_api.py +12880 -0
- moolabs/api/rate_cards_api.py +578 -0
- moolabs/api/rate_catalog_api.py +2120 -0
- moolabs/api/rate_schedules_api.py +1224 -0
- moolabs/api/rating_api.py +617 -0
- moolabs/api/reconstruction_api.py +1281 -0
- moolabs/api/remittances_api.py +1521 -0
- moolabs/api/reports_api.py +722 -0
- moolabs/api/rollover_api.py +313 -0
- moolabs/api/sdk_ingest_api.py +312 -0
- moolabs/api/snapshots_api.py +1218 -0
- moolabs/api/state_projection_api.py +961 -0
- moolabs/api/steering_api.py +1862 -0
- moolabs/api/subjects_api.py +1160 -0
- moolabs/api/subscription_overrides_api.py +579 -0
- moolabs/api/subscriptions_api.py +1200 -0
- moolabs/api/tasks_api.py +1509 -0
- moolabs/api/tenant_api.py +22395 -0
- moolabs/api/tenant_config_api.py +282 -0
- moolabs/api/topup_api.py +632 -0
- moolabs/api/unpriced_api.py +933 -0
- moolabs/api/usage_api.py +999 -0
- moolabs/api/variance_api.py +1327 -0
- moolabs/api/wallets_api.py +3787 -0
- moolabs/api/webhooks_api.py +281 -0
- moolabs/api/well_known_api.py +278 -0
- moolabs/api/word_addin_api.py +623 -0
- moolabs/api_client.py +797 -0
- moolabs/api_response.py +21 -0
- moolabs/configuration.py +620 -0
- moolabs/exceptions.py +199 -0
- moolabs/models/__init__.py +1286 -0
- moolabs/models/account_create.py +114 -0
- moolabs/models/account_filter_options_response.py +97 -0
- moolabs/models/account_invoice_list_response.py +95 -0
- moolabs/models/account_list_item_response.py +152 -0
- moolabs/models/account_list_item_response_subsidiaries_inner.py +152 -0
- moolabs/models/account_list_response.py +101 -0
- moolabs/models/account_overview_bucket_response.py +91 -0
- moolabs/models/account_overview_response.py +106 -0
- moolabs/models/account_response.py +132 -0
- moolabs/models/account_segment_row.py +91 -0
- moolabs/models/account_subsidiary_option.py +89 -0
- moolabs/models/account_summary.py +97 -0
- moolabs/models/account_team_member_in.py +97 -0
- moolabs/models/account_team_member_out.py +101 -0
- moolabs/models/account_team_member_patch.py +97 -0
- moolabs/models/account_team_role.py +39 -0
- moolabs/models/account_update.py +106 -0
- moolabs/models/action_kind.py +45 -0
- moolabs/models/acute_approve_request.py +87 -0
- moolabs/models/acute_demo_seed_lifecycle_request.py +103 -0
- moolabs/models/acute_http_validation_error.py +95 -0
- moolabs/models/acute_validation_error.py +99 -0
- moolabs/models/add_contract_participant_request.py +107 -0
- moolabs/models/addon.py +178 -0
- moolabs/models/addon1.py +115 -0
- moolabs/models/addon2.py +95 -0
- moolabs/models/addon_create.py +123 -0
- moolabs/models/addon_instance_type.py +37 -0
- moolabs/models/addon_order_by.py +40 -0
- moolabs/models/addon_paginated_response.py +101 -0
- moolabs/models/addon_replace_update.py +105 -0
- moolabs/models/addon_status.py +38 -0
- moolabs/models/address.py +110 -0
- moolabs/models/adjusted_total.py +152 -0
- moolabs/models/adjustment_amount.py +152 -0
- moolabs/models/aging_bucket_detail.py +93 -0
- moolabs/models/aging_report_response.py +106 -0
- moolabs/models/alb_bootstrap_response.py +89 -0
- moolabs/models/alb_connector_config.py +128 -0
- moolabs/models/alb_connector_health_response.py +112 -0
- moolabs/models/alb_connector_list_response.py +138 -0
- moolabs/models/alb_load_balancer_config.py +111 -0
- moolabs/models/alb_route_rule.py +107 -0
- moolabs/models/alb_source_config.py +123 -0
- moolabs/models/alb_source_health_response.py +93 -0
- moolabs/models/alb_status_patch_request.py +94 -0
- moolabs/models/alb_status_patch_response.py +94 -0
- moolabs/models/alb_target_group_config.py +103 -0
- moolabs/models/algorithm_breakdown_item.py +89 -0
- moolabs/models/algorithm_info.py +93 -0
- moolabs/models/alignment.py +87 -0
- moolabs/models/allocate_credits_request.py +95 -0
- moolabs/models/allocation_coverage_response.py +157 -0
- moolabs/models/allocation_fact_page_response.py +97 -0
- moolabs/models/allocation_fact_response.py +146 -0
- moolabs/models/allocation_key.py +91 -0
- moolabs/models/allocation_rule_create.py +114 -0
- moolabs/models/allocation_rule_response.py +113 -0
- moolabs/models/allocation_rule_update.py +111 -0
- moolabs/models/allocation_run_create_request.py +100 -0
- moolabs/models/allocation_run_create_response.py +142 -0
- moolabs/models/allocation_run_open_cost_snapshot_response.py +120 -0
- moolabs/models/allocation_run_readout_response.py +110 -0
- moolabs/models/allocation_run_response.py +133 -0
- moolabs/models/allocations_list_response.py +97 -0
- moolabs/models/amount.py +152 -0
- moolabs/models/amount1.py +152 -0
- moolabs/models/api_key_item.py +103 -0
- moolabs/models/app.py +164 -0
- moolabs/models/app_api_v1_auto_topup_router_trigger_response.py +108 -0
- moolabs/models/app_api_v1_fx_rates_router_fx_rate_response.py +104 -0
- moolabs/models/app_api_v1_integrations_netsuite_sync_router_trigger_response.py +89 -0
- moolabs/models/app_api_v1_internal_subscription_sync_schemas_subscription_sync_request.py +123 -0
- moolabs/models/app_api_v1_portal_router_create_portal_token_request.py +92 -0
- moolabs/models/app_api_v1_quotes_schemas_quote_settings_response.py +91 -0
- moolabs/models/app_api_v1_quotes_schemas_update_quote_settings_request.py +89 -0
- moolabs/models/app_api_v1_subscriptions_router_subscription_sync_request.py +125 -0
- moolabs/models/app_api_v1_tenant_access_router_create_portal_token_request.py +101 -0
- moolabs/models/app_api_v1_tenant_fx_rates_router_fx_rate_response.py +93 -0
- moolabs/models/app_api_v1_tenant_quote_settings_router_quote_settings_response.py +89 -0
- moolabs/models/app_api_v1_tenant_quote_settings_router_update_quote_settings_request.py +87 -0
- moolabs/models/app_capability.py +102 -0
- moolabs/models/app_capability_type.py +40 -0
- moolabs/models/app_paginated_response.py +101 -0
- moolabs/models/app_reference.py +95 -0
- moolabs/models/app_replace_update.py +164 -0
- moolabs/models/app_status.py +37 -0
- moolabs/models/app_type.py +38 -0
- moolabs/models/apply_credit_request.py +92 -0
- moolabs/models/approval_action_request.py +88 -0
- moolabs/models/approval_action_response.py +95 -0
- moolabs/models/approval_policy_response.py +91 -0
- moolabs/models/approve_request.py +88 -0
- moolabs/models/approve_response.py +91 -0
- moolabs/models/approver_in.py +95 -0
- moolabs/models/arc_demo_seed_lifecycle_request.py +103 -0
- moolabs/models/arc_dunning_permission_grant_request.py +96 -0
- moolabs/models/arc_dunning_permission_revoke_request.py +90 -0
- moolabs/models/arc_dunning_template_admin_grant_request.py +90 -0
- moolabs/models/arc_dunning_template_admin_grant_response.py +115 -0
- moolabs/models/arc_dunning_template_admin_revoke_request.py +88 -0
- moolabs/models/arc_dunning_template_admin_user_dto.py +107 -0
- moolabs/models/arc_dunning_template_admin_user_grant_dto.py +105 -0
- moolabs/models/arc_dunning_template_admin_users_response.py +110 -0
- moolabs/models/arc_http_validation_error.py +95 -0
- moolabs/models/arc_transaction_request.py +110 -0
- moolabs/models/arc_validation_error.py +99 -0
- moolabs/models/ask_customer_request.py +97 -0
- moolabs/models/ask_customer_response.py +91 -0
- moolabs/models/ask_moo_redline_request.py +98 -0
- moolabs/models/attribution_allocation_error_detail.py +94 -0
- moolabs/models/attribution_allocation_error_response.py +91 -0
- moolabs/models/attribution_completeness_response.py +97 -0
- moolabs/models/attribution_signal_conflict_detail.py +94 -0
- moolabs/models/attribution_signal_conflict_response.py +91 -0
- moolabs/models/attribution_signal_delta.py +98 -0
- moolabs/models/attribution_signal_request.py +123 -0
- moolabs/models/attribution_signal_response.py +96 -0
- moolabs/models/audit_request.py +91 -0
- moolabs/models/auto_topup_activity_item.py +104 -0
- moolabs/models/auto_topup_activity_response.py +97 -0
- moolabs/models/auto_topup_rule_response.py +114 -0
- moolabs/models/availability.py +43 -0
- moolabs/models/backfill_candidate.py +97 -0
- moolabs/models/backfill_malformed_disputes_request.py +87 -0
- moolabs/models/backfill_malformed_disputes_response.py +101 -0
- moolabs/models/balance_history_window.py +99 -0
- moolabs/models/basis.py +37 -0
- moolabs/models/batch_ingest_request.py +96 -0
- moolabs/models/batch_wallet_state_request.py +105 -0
- moolabs/models/batch_wallet_state_request_item.py +91 -0
- moolabs/models/batch_wallet_state_response.py +97 -0
- moolabs/models/batch_wallets_by_subjects_request.py +88 -0
- moolabs/models/billing_customer_profile.py +109 -0
- moolabs/models/billing_discount_percentage.py +100 -0
- moolabs/models/billing_discount_reason.py +164 -0
- moolabs/models/billing_discount_usage.py +107 -0
- moolabs/models/billing_discounts.py +97 -0
- moolabs/models/billing_import_request.py +105 -0
- moolabs/models/billing_import_response.py +104 -0
- moolabs/models/billing_invoice_customer_extended_details.py +116 -0
- moolabs/models/billing_party.py +110 -0
- moolabs/models/billing_party_replace_update.py +106 -0
- moolabs/models/billing_party_tax_identity.py +88 -0
- moolabs/models/billing_profile.py +140 -0
- moolabs/models/billing_profile_app_references.py +107 -0
- moolabs/models/billing_profile_apps.py +107 -0
- moolabs/models/billing_profile_apps_create.py +113 -0
- moolabs/models/billing_profile_apps_or_reference.py +148 -0
- moolabs/models/billing_profile_create.py +112 -0
- moolabs/models/billing_profile_customer_override.py +116 -0
- moolabs/models/billing_profile_customer_override_create.py +98 -0
- moolabs/models/billing_profile_customer_override_expand.py +37 -0
- moolabs/models/billing_profile_customer_override_order_by.py +40 -0
- moolabs/models/billing_profile_customer_override_with_details.py +113 -0
- moolabs/models/billing_profile_customer_override_with_details_paginated_response.py +101 -0
- moolabs/models/billing_profile_expand.py +36 -0
- moolabs/models/billing_profile_order_by.py +39 -0
- moolabs/models/billing_profile_paginated_response.py +101 -0
- moolabs/models/billing_profile_replace_update_with_workflow.py +106 -0
- moolabs/models/billing_tenant_settings_out.py +89 -0
- moolabs/models/billing_tenant_settings_update.py +88 -0
- moolabs/models/billing_workflow.py +109 -0
- moolabs/models/billing_workflow_collection_alignment.py +150 -0
- moolabs/models/billing_workflow_collection_alignment_anchored.py +100 -0
- moolabs/models/billing_workflow_collection_alignment_subscription.py +94 -0
- moolabs/models/billing_workflow_collection_settings.py +93 -0
- moolabs/models/billing_workflow_create.py +109 -0
- moolabs/models/billing_workflow_invoicing_settings.py +99 -0
- moolabs/models/billing_workflow_payment_settings.py +88 -0
- moolabs/models/billing_workflow_tax_settings.py +89 -0
- moolabs/models/bom_component_in.py +105 -0
- moolabs/models/bom_component_out.py +109 -0
- moolabs/models/bom_create_request.py +107 -0
- moolabs/models/bom_out.py +127 -0
- moolabs/models/bom_update_request.py +103 -0
- moolabs/models/bom_variance_out.py +115 -0
- moolabs/models/breakdown_response.py +124 -0
- moolabs/models/breakdown_row.py +121 -0
- moolabs/models/breakdown_row_kind.py +39 -0
- moolabs/models/budget_alert_response.py +107 -0
- moolabs/models/budget_amount.py +152 -0
- moolabs/models/budget_amount1.py +152 -0
- moolabs/models/budget_create.py +110 -0
- moolabs/models/budget_pace_status.py +38 -0
- moolabs/models/budget_response.py +113 -0
- moolabs/models/budget_status_item.py +105 -0
- moolabs/models/budget_update.py +107 -0
- moolabs/models/budget_with_utilization.py +119 -0
- moolabs/models/bulk_action_request.py +92 -0
- moolabs/models/bulk_replay_request.py +92 -0
- moolabs/models/buyer_accept_request.py +95 -0
- moolabs/models/buyer_otp_request_response.py +91 -0
- moolabs/models/buyer_otp_verify_request.py +95 -0
- moolabs/models/buyer_otp_verify_response.py +89 -0
- moolabs/models/buyer_quote_line_item.py +103 -0
- moolabs/models/buyer_quote_pricing.py +93 -0
- moolabs/models/buyer_quote_projection.py +133 -0
- moolabs/models/buyer_reject_request.py +88 -0
- moolabs/models/buyer_request_changes_request.py +94 -0
- moolabs/models/buyer_request_changes_response.py +93 -0
- moolabs/models/buyer_requested_changes.py +90 -0
- moolabs/models/cancel_subscription_request.py +91 -0
- moolabs/models/card_type.py +37 -0
- moolabs/models/case_create.py +112 -0
- moolabs/models/case_escalate_request.py +90 -0
- moolabs/models/case_invoice_create.py +127 -0
- moolabs/models/case_invoice_response.py +150 -0
- moolabs/models/case_list_item_response.py +171 -0
- moolabs/models/case_list_response.py +101 -0
- moolabs/models/case_pause_request.py +91 -0
- moolabs/models/case_response.py +169 -0
- moolabs/models/case_update.py +102 -0
- moolabs/models/case_write_off_request.py +90 -0
- moolabs/models/cash_app_config_update_request.py +96 -0
- moolabs/models/cei_response.py +102 -0
- moolabs/models/change_item.py +101 -0
- moolabs/models/channel_policy_schema.py +112 -0
- moolabs/models/channel_preference_create.py +99 -0
- moolabs/models/channel_preference_response.py +106 -0
- moolabs/models/channel_preference_update.py +95 -0
- moolabs/models/channel_preferences_response.py +95 -0
- moolabs/models/chat_feedback_in.py +91 -0
- moolabs/models/chat_message_in.py +89 -0
- moolabs/models/chat_request.py +101 -0
- moolabs/models/check_trigger_request.py +88 -0
- moolabs/models/checkout_session_custom_text_after_submit_params.py +109 -0
- moolabs/models/checkout_session_custom_text_after_submit_params_after_submit.py +88 -0
- moolabs/models/checkout_session_custom_text_after_submit_params_shipping_address.py +88 -0
- moolabs/models/checkout_session_custom_text_after_submit_params_submit.py +88 -0
- moolabs/models/checkout_session_custom_text_after_submit_params_terms_of_service_acceptance.py +88 -0
- moolabs/models/checkout_session_ui_mode.py +37 -0
- moolabs/models/clause_citations.py +91 -0
- moolabs/models/clause_family.py +129 -0
- moolabs/models/clause_finding.py +110 -0
- moolabs/models/clause_pack.py +118 -0
- moolabs/models/clause_position.py +91 -0
- moolabs/models/client_app_start_response.py +87 -0
- moolabs/models/cloud_cost_row_input.py +105 -0
- moolabs/models/cloud_provider.py +38 -0
- moolabs/models/cloud_provider_data_through.py +116 -0
- moolabs/models/cloud_provider_quality_axis.py +107 -0
- moolabs/models/cloud_temporal_coverage_summary.py +114 -0
- moolabs/models/collection_method.py +37 -0
- moolabs/models/commercial_basis.py +39 -0
- moolabs/models/commercial_overrides.py +113 -0
- moolabs/models/commercial_overrides_input.py +115 -0
- moolabs/models/commercial_overrides_payload.py +113 -0
- moolabs/models/communication_create.py +110 -0
- moolabs/models/communication_list_response.py +101 -0
- moolabs/models/communication_response.py +138 -0
- moolabs/models/comparison_mode.py +37 -0
- moolabs/models/completeness_response.py +105 -0
- moolabs/models/component_coverage_response.py +123 -0
- moolabs/models/compute_variance_request.py +96 -0
- moolabs/models/compute_variance_response.py +105 -0
- moolabs/models/config_upload_gap_out.py +89 -0
- moolabs/models/config_upload_response.py +109 -0
- moolabs/models/config_upload_summary_out.py +95 -0
- moolabs/models/connector_config_response.py +93 -0
- moolabs/models/connector_health_response.py +102 -0
- moolabs/models/connector_item.py +105 -0
- moolabs/models/contact_create.py +100 -0
- moolabs/models/contact_list_response.py +101 -0
- moolabs/models/contact_response.py +134 -0
- moolabs/models/contact_update.py +102 -0
- moolabs/models/contract_document_response.py +104 -0
- moolabs/models/contract_event_response.py +108 -0
- moolabs/models/contract_inbound_message_response.py +106 -0
- moolabs/models/contract_participant_response.py +131 -0
- moolabs/models/contract_segment_response.py +95 -0
- moolabs/models/contract_thread_response.py +115 -0
- moolabs/models/contract_thread_snapshot_response.py +121 -0
- moolabs/models/contract_upload_detail_response.py +103 -0
- moolabs/models/contract_version_response.py +128 -0
- moolabs/models/contributor_item.py +123 -0
- moolabs/models/contributor_kind.py +38 -0
- moolabs/models/contributor_query_request.py +146 -0
- moolabs/models/contributor_response.py +174 -0
- moolabs/models/cost.py +152 -0
- moolabs/models/cost_adjustment_create.py +131 -0
- moolabs/models/cost_adjustment_response.py +102 -0
- moolabs/models/cost_driver_rule_create_request.py +158 -0
- moolabs/models/cost_driver_rule_response.py +126 -0
- moolabs/models/cost_driver_rule_update_request.py +100 -0
- moolabs/models/cost_event_detail_response.py +132 -0
- moolabs/models/cost_event_ingest.py +177 -0
- moolabs/models/cost_event_response.py +122 -0
- moolabs/models/cost_event_summary_item.py +103 -0
- moolabs/models/cost_event_summary_request.py +88 -0
- moolabs/models/cost_event_summary_response.py +95 -0
- moolabs/models/cost_explorer_response.py +155 -0
- moolabs/models/cost_scope.py +37 -0
- moolabs/models/coverage_snapshot_response.py +114 -0
- moolabs/models/cpu_core_hours.py +152 -0
- moolabs/models/cpu_cost_weight.py +152 -0
- moolabs/models/create_allocation_run_api422_response.py +147 -0
- moolabs/models/create_api_key_request.py +89 -0
- moolabs/models/create_api_key_response.py +105 -0
- moolabs/models/create_auto_topup_rule_request.py +106 -0
- moolabs/models/create_checkout_session_tax_id_collection.py +90 -0
- moolabs/models/create_checkout_session_tax_id_collection_required.py +37 -0
- moolabs/models/create_contract_thread_request.py +87 -0
- moolabs/models/create_credit_request.py +97 -0
- moolabs/models/create_fx_rate_request.py +103 -0
- moolabs/models/create_grant_request.py +136 -0
- moolabs/models/create_mapping_request.py +91 -0
- moolabs/models/create_matrix_price_row_request.py +91 -0
- moolabs/models/create_matrix_price_row_response.py +89 -0
- moolabs/models/create_portal_token_response.py +91 -0
- moolabs/models/create_quote_redline_request.py +103 -0
- moolabs/models/create_quote_request.py +119 -0
- moolabs/models/create_quote_template_request.py +102 -0
- moolabs/models/create_rate_card_request.py +105 -0
- moolabs/models/create_reconstruction_run_request.py +101 -0
- moolabs/models/create_session_response.py +97 -0
- moolabs/models/create_snapshot_request.py +98 -0
- moolabs/models/create_stripe_checkout_session_billing_address_collection.py +37 -0
- moolabs/models/create_stripe_checkout_session_consent_collection.py +97 -0
- moolabs/models/create_stripe_checkout_session_consent_collection_payment_method_reuse_agreement.py +88 -0
- moolabs/models/create_stripe_checkout_session_consent_collection_payment_method_reuse_agreement_position.py +37 -0
- moolabs/models/create_stripe_checkout_session_consent_collection_promotions.py +37 -0
- moolabs/models/create_stripe_checkout_session_consent_collection_terms_of_service.py +37 -0
- moolabs/models/create_stripe_checkout_session_customer_update.py +92 -0
- moolabs/models/create_stripe_checkout_session_customer_update_behavior.py +37 -0
- moolabs/models/create_stripe_checkout_session_redirect_on_completion.py +38 -0
- moolabs/models/create_stripe_checkout_session_request.py +112 -0
- moolabs/models/create_stripe_checkout_session_request_customer.py +163 -0
- moolabs/models/create_stripe_checkout_session_request_options.py +147 -0
- moolabs/models/create_stripe_checkout_session_result.py +139 -0
- moolabs/models/create_stripe_customer_portal_session_params.py +91 -0
- moolabs/models/create_threshold_request.py +99 -0
- moolabs/models/create_value_recognition_request.py +100 -0
- moolabs/models/create_wallet_request.py +106 -0
- moolabs/models/credit_config.py +119 -0
- moolabs/models/credit_config_payload.py +135 -0
- moolabs/models/credit_cost_ratio_item.py +93 -0
- moolabs/models/credit_cost_ratio_response.py +101 -0
- moolabs/models/credit_memo_apply_request.py +90 -0
- moolabs/models/credit_memo_create.py +104 -0
- moolabs/models/credit_memo_create_internal.py +114 -0
- moolabs/models/credit_memo_create_public.py +108 -0
- moolabs/models/credit_memo_item.py +102 -0
- moolabs/models/credit_memo_line_in.py +90 -0
- moolabs/models/credit_memo_list_response.py +101 -0
- moolabs/models/credit_memo_out.py +138 -0
- moolabs/models/credit_memo_response.py +124 -0
- moolabs/models/credit_memo_update.py +94 -0
- moolabs/models/credit_note_original_invoice_ref.py +114 -0
- moolabs/models/credit_override.py +87 -0
- moolabs/models/credit_override_input.py +101 -0
- moolabs/models/credit_override_payload.py +100 -0
- moolabs/models/crm_quote_context_request.py +94 -0
- moolabs/models/crm_quote_context_response.py +101 -0
- moolabs/models/crm_quote_draft_request.py +98 -0
- moolabs/models/crm_quote_draft_response.py +107 -0
- moolabs/models/crm_quote_record_card_response.py +97 -0
- moolabs/models/crm_surface_response.py +97 -0
- moolabs/models/currency.py +101 -0
- moolabs/models/current.py +152 -0
- moolabs/models/custom_invoicing_app.py +142 -0
- moolabs/models/custom_invoicing_app_replace_update.py +105 -0
- moolabs/models/custom_invoicing_customer_app_data.py +117 -0
- moolabs/models/custom_invoicing_draft_synchronized_request.py +91 -0
- moolabs/models/custom_invoicing_finalized_invoicing_request.py +91 -0
- moolabs/models/custom_invoicing_finalized_payment_request.py +87 -0
- moolabs/models/custom_invoicing_finalized_request.py +97 -0
- moolabs/models/custom_invoicing_line_discount_external_id_mapping.py +97 -0
- moolabs/models/custom_invoicing_line_external_id_mapping.py +97 -0
- moolabs/models/custom_invoicing_payment_trigger.py +41 -0
- moolabs/models/custom_invoicing_sync_result.py +110 -0
- moolabs/models/custom_invoicing_tax_config.py +87 -0
- moolabs/models/custom_invoicing_update_payment_status_request.py +92 -0
- moolabs/models/custom_plan_input.py +136 -0
- moolabs/models/custom_subscription_change.py +119 -0
- moolabs/models/custom_subscription_create.py +153 -0
- moolabs/models/customer.py +172 -0
- moolabs/models/customer_access.py +102 -0
- moolabs/models/customer_app_data.py +164 -0
- moolabs/models/customer_app_data_create_or_update_item.py +164 -0
- moolabs/models/customer_app_data_paginated_response.py +101 -0
- moolabs/models/customer_cost_item.py +95 -0
- moolabs/models/customer_create.py +120 -0
- moolabs/models/customer_expand.py +36 -0
- moolabs/models/customer_id.py +95 -0
- moolabs/models/customer_item.py +114 -0
- moolabs/models/customer_key.py +87 -0
- moolabs/models/customer_key_page_response.py +101 -0
- moolabs/models/customer_key_put_request.py +103 -0
- moolabs/models/customer_key_response.py +94 -0
- moolabs/models/customer_margin_item.py +99 -0
- moolabs/models/customer_margin_response.py +101 -0
- moolabs/models/customer_order_by.py +38 -0
- moolabs/models/customer_paginated_response.py +101 -0
- moolabs/models/customer_replace_update.py +120 -0
- moolabs/models/customer_subscription_order_by.py +37 -0
- moolabs/models/customer_upsert_request.py +102 -0
- moolabs/models/customer_usage_attribution.py +88 -0
- moolabs/models/danger_request.py +89 -0
- moolabs/models/dashboard_meta.py +172 -0
- moolabs/models/dashboard_overview_response.py +115 -0
- moolabs/models/data_through.py +115 -0
- moolabs/models/db_time_coverage_response.py +154 -0
- moolabs/models/db_time_evidence_batch_readback_response.py +135 -0
- moolabs/models/db_time_evidence_batch_request.py +147 -0
- moolabs/models/db_time_evidence_batch_response.py +100 -0
- moolabs/models/db_time_evidence_conflict_detail.py +94 -0
- moolabs/models/db_time_evidence_conflict_response.py +91 -0
- moolabs/models/db_time_evidence_not_found_detail.py +94 -0
- moolabs/models/db_time_evidence_not_found_response.py +91 -0
- moolabs/models/db_time_observation_request.py +131 -0
- moolabs/models/db_time_readout_quality_response.py +103 -0
- moolabs/models/deal_context.py +97 -0
- moolabs/models/deal_context_rule.py +105 -0
- moolabs/models/decision_item.py +131 -0
- moolabs/models/decision_kind.py +46 -0
- moolabs/models/decision_overview_response.py +172 -0
- moolabs/models/decision_queue_response.py +115 -0
- moolabs/models/decision_reason_code.py +53 -0
- moolabs/models/delta.py +152 -0
- moolabs/models/delta_pct.py +152 -0
- moolabs/models/demo_seed_acute_history_baseline_request.py +106 -0
- moolabs/models/demo_seed_acute_tenant_registration_request.py +114 -0
- moolabs/models/demo_seed_agent_report_baseline_request.py +106 -0
- moolabs/models/demo_seed_arc_invoice_ref.py +107 -0
- moolabs/models/demo_seed_arc_portfolio_baseline_request.py +121 -0
- moolabs/models/demo_seed_catalog_baseline_request.py +108 -0
- moolabs/models/demo_seed_customer_portfolio_baseline_request.py +103 -0
- moolabs/models/demo_seed_integration_crm_baseline_request.py +106 -0
- moolabs/models/demo_seed_integration_finance_baseline_request.py +106 -0
- moolabs/models/demo_seed_integration_netsuite_baseline_request.py +106 -0
- moolabs/models/demo_seed_integration_webhook_baseline_request.py +106 -0
- moolabs/models/demo_seed_invoice_payment_baseline_request.py +106 -0
- moolabs/models/demo_seed_isolation_canary_baseline_request.py +106 -0
- moolabs/models/demo_seed_lifecycle_request.py +103 -0
- moolabs/models/demo_seed_quote_contract_baseline_request.py +106 -0
- moolabs/models/demo_seed_security_credentials_baseline_request.py +106 -0
- moolabs/models/demo_seed_settings_baseline_request.py +106 -0
- moolabs/models/demo_seed_subscription_baseline_request.py +106 -0
- moolabs/models/demo_seed_tenant_config_baseline_request.py +119 -0
- moolabs/models/demo_seed_usage_baseline_request.py +106 -0
- moolabs/models/derive_request.py +94 -0
- moolabs/models/dimension.py +39 -0
- moolabs/models/dimension_coverage_response.py +102 -0
- moolabs/models/disclosure_policy_response.py +93 -0
- moolabs/models/disclosure_policy_update_request.py +102 -0
- moolabs/models/discount_percentage.py +87 -0
- moolabs/models/discount_reason_maximum_spend.py +94 -0
- moolabs/models/discount_reason_ratecard_percentage.py +109 -0
- moolabs/models/discount_reason_ratecard_usage.py +116 -0
- moolabs/models/discount_usage.py +95 -0
- moolabs/models/discounts.py +97 -0
- moolabs/models/dismiss_refinement_request.py +87 -0
- moolabs/models/dispute_approval_request.py +88 -0
- moolabs/models/dispute_list_response.py +101 -0
- moolabs/models/dispute_resolve_request.py +92 -0
- moolabs/models/dispute_response.py +134 -0
- moolabs/models/dispute_summary_response.py +104 -0
- moolabs/models/dispute_update_request.py +102 -0
- moolabs/models/dns_record.py +119 -0
- moolabs/models/domain_response.py +95 -0
- moolabs/models/domain_update.py +87 -0
- moolabs/models/draft_lock_request.py +88 -0
- moolabs/models/draft_lock_response.py +97 -0
- moolabs/models/draft_save_request.py +114 -0
- moolabs/models/draft_unlock_request.py +90 -0
- moolabs/models/driver_item.py +122 -0
- moolabs/models/dry_run_request.py +89 -0
- moolabs/models/dry_run_response.py +97 -0
- moolabs/models/dso_response.py +100 -0
- moolabs/models/dynamic_price_with_commitments.py +131 -0
- moolabs/models/economics_summary.py +114 -0
- moolabs/models/edit_subscription_add_item.py +102 -0
- moolabs/models/edit_subscription_add_phase.py +100 -0
- moolabs/models/edit_subscription_remove_item.py +98 -0
- moolabs/models/edit_subscription_remove_phase.py +99 -0
- moolabs/models/edit_subscription_stretch_phase.py +98 -0
- moolabs/models/edit_subscription_unschedule_edit.py +94 -0
- moolabs/models/effective_permission_grant_dto.py +105 -0
- moolabs/models/effective_permissions_response.py +129 -0
- moolabs/models/email_config_out.py +188 -0
- moolabs/models/email_config_upsert.py +111 -0
- moolabs/models/email_context.py +44 -0
- moolabs/models/email_message_status.py +42 -0
- moolabs/models/email_provider.py +37 -0
- moolabs/models/email_provider_identity.py +157 -0
- moolabs/models/email_provider_identity_list.py +108 -0
- moolabs/models/email_provider_operator_upsert.py +131 -0
- moolabs/models/email_provider_route.py +128 -0
- moolabs/models/email_provider_route_list.py +108 -0
- moolabs/models/enable_tier3_response.py +93 -0
- moolabs/models/endpoints_response.py +89 -0
- moolabs/models/entitlement.py +164 -0
- moolabs/models/entitlement_boolean.py +168 -0
- moolabs/models/entitlement_boolean_create_inputs.py +127 -0
- moolabs/models/entitlement_boolean_v2.py +170 -0
- moolabs/models/entitlement_create_inputs.py +164 -0
- moolabs/models/entitlement_grant.py +148 -0
- moolabs/models/entitlement_grant_create_input.py +111 -0
- moolabs/models/entitlement_grant_create_input_v2.py +113 -0
- moolabs/models/entitlement_grant_v2.py +148 -0
- moolabs/models/entitlement_metered.py +190 -0
- moolabs/models/entitlement_metered_create_inputs.py +143 -0
- moolabs/models/entitlement_metered_v2.py +196 -0
- moolabs/models/entitlement_metered_v2_create_inputs.py +157 -0
- moolabs/models/entitlement_order_by.py +37 -0
- moolabs/models/entitlement_override.py +89 -0
- moolabs/models/entitlement_override_input.py +95 -0
- moolabs/models/entitlement_override_payload.py +93 -0
- moolabs/models/entitlement_paginated_response.py +101 -0
- moolabs/models/entitlement_payload.py +103 -0
- moolabs/models/entitlement_static.py +170 -0
- moolabs/models/entitlement_static_create_inputs.py +129 -0
- moolabs/models/entitlement_static_v2.py +172 -0
- moolabs/models/entitlement_type.py +38 -0
- moolabs/models/entitlement_v2.py +164 -0
- moolabs/models/entitlement_v2_create_inputs.py +164 -0
- moolabs/models/entitlement_v2_paginated_response.py +101 -0
- moolabs/models/entitlement_value.py +109 -0
- moolabs/models/error_extension.py +110 -0
- moolabs/models/escalate_request.py +90 -0
- moolabs/models/escalate_response.py +91 -0
- moolabs/models/escalation_action_request.py +90 -0
- moolabs/models/escalation_action_response.py +91 -0
- moolabs/models/escalation_create.py +97 -0
- moolabs/models/escalation_dismiss_request.py +90 -0
- moolabs/models/escalation_list_response.py +101 -0
- moolabs/models/escalation_resolve_request.py +87 -0
- moolabs/models/escalation_response.py +112 -0
- moolabs/models/escalation_update.py +93 -0
- moolabs/models/event.py +115 -0
- moolabs/models/event_delivery_attempt_response.py +101 -0
- moolabs/models/evidence_create_request.py +96 -0
- moolabs/models/evidence_kind.py +39 -0
- moolabs/models/evidence_list_response.py +97 -0
- moolabs/models/evidence_response.py +106 -0
- moolabs/models/evidence_review_request.py +90 -0
- moolabs/models/evidence_window.py +37 -0
- moolabs/models/exchange_rate.py +152 -0
- moolabs/models/expiration_duration.py +40 -0
- moolabs/models/expiration_period.py +91 -0
- moolabs/models/explorer_alias_hint.py +104 -0
- moolabs/models/explorer_alias_hint1.py +110 -0
- moolabs/models/explorer_alias_kind.py +39 -0
- moolabs/models/explorer_breakdown_page.py +166 -0
- moolabs/models/explorer_breakdown_row.py +200 -0
- moolabs/models/explorer_cloud_provider_quality_axis.py +107 -0
- moolabs/models/explorer_cloud_temporal_coverage_summary.py +115 -0
- moolabs/models/explorer_contributor_kind.py +40 -0
- moolabs/models/explorer_contributor_query_request.py +190 -0
- moolabs/models/explorer_contributor_response.py +201 -0
- moolabs/models/explorer_contributor_row.py +177 -0
- moolabs/models/explorer_cost_event_status.py +39 -0
- moolabs/models/explorer_dimension.py +40 -0
- moolabs/models/explorer_effective_sort.py +107 -0
- moolabs/models/explorer_effective_sort_field.py +41 -0
- moolabs/models/explorer_evidence_kind.py +41 -0
- moolabs/models/explorer_evidence_role.py +37 -0
- moolabs/models/explorer_excluded_event_count.py +104 -0
- moolabs/models/explorer_excluded_event_reason.py +38 -0
- moolabs/models/explorer_exposure_summary.py +124 -0
- moolabs/models/explorer_measure_source.py +40 -0
- moolabs/models/explorer_meta.py +196 -0
- moolabs/models/explorer_quality_axis.py +117 -0
- moolabs/models/explorer_quality_caveat_code.py +45 -0
- moolabs/models/explorer_quality_summary.py +151 -0
- moolabs/models/explorer_query_request.py +184 -0
- moolabs/models/explorer_request_detail_event.py +134 -0
- moolabs/models/explorer_request_detail_line.py +133 -0
- moolabs/models/explorer_request_detail_query_request.py +201 -0
- moolabs/models/explorer_request_detail_response.py +205 -0
- moolabs/models/explorer_request_detail_result_cap.py +125 -0
- moolabs/models/explorer_request_distribution.py +109 -0
- moolabs/models/explorer_request_query_request.py +190 -0
- moolabs/models/explorer_search.py +111 -0
- moolabs/models/explorer_selection_result.py +107 -0
- moolabs/models/explorer_selection_row.py +185 -0
- moolabs/models/explorer_selection_status.py +39 -0
- moolabs/models/explorer_sort.py +104 -0
- moolabs/models/explorer_sort1.py +116 -0
- moolabs/models/explorer_sort_fallback_reason.py +39 -0
- moolabs/models/explorer_sort_field.py +40 -0
- moolabs/models/explorer_source_scope.py +38 -0
- moolabs/models/explorer_summary.py +134 -0
- moolabs/models/explorer_trend_point.py +124 -0
- moolabs/models/explorer_usage_history_evidence.py +110 -0
- moolabs/models/explorer_usage_history_source.py +38 -0
- moolabs/models/feature.py +156 -0
- moolabs/models/feature_contributor_customer.py +91 -0
- moolabs/models/feature_contributor_model.py +93 -0
- moolabs/models/feature_contributor_request.py +91 -0
- moolabs/models/feature_contributors_response.py +121 -0
- moolabs/models/feature_cost_item.py +97 -0
- moolabs/models/feature_create_inputs.py +128 -0
- moolabs/models/feature_flag_item.py +97 -0
- moolabs/models/feature_flag_update.py +87 -0
- moolabs/models/feature_margin_item.py +101 -0
- moolabs/models/feature_margin_response.py +101 -0
- moolabs/models/feature_meta.py +97 -0
- moolabs/models/feature_order_by.py +40 -0
- moolabs/models/feature_override_request.py +93 -0
- moolabs/models/feature_paginated_response.py +101 -0
- moolabs/models/feature_pool.py +99 -0
- moolabs/models/feature_pool_payload.py +107 -0
- moolabs/models/feature_price_request.py +93 -0
- moolabs/models/feature_pricing_input.py +120 -0
- moolabs/models/filter_id_exact.py +88 -0
- moolabs/models/filter_string.py +129 -0
- moolabs/models/filter_time.py +114 -0
- moolabs/models/finance_summary.py +143 -0
- moolabs/models/first_pass_redline_request.py +88 -0
- moolabs/models/first_pass_redline_response.py +89 -0
- moolabs/models/flag_disputed_request.py +92 -0
- moolabs/models/flag_disputed_response.py +97 -0
- moolabs/models/flat_price.py +104 -0
- moolabs/models/flat_price_with_payment_term.py +107 -0
- moolabs/models/flatamount.py +152 -0
- moolabs/models/freshness_axis.py +121 -0
- moolabs/models/freshness_source.py +40 -0
- moolabs/models/fx_rate_to_reporting.py +153 -0
- moolabs/models/fx_rates_list_response.py +97 -0
- moolabs/models/gate_status_response.py +105 -0
- moolabs/models/get_fx_rate_request.py +92 -0
- moolabs/models/get_matrix_price_rows_response.py +107 -0
- moolabs/models/google_chat_quote_response.py +89 -0
- moolabs/models/grant_activation_request.py +122 -0
- moolabs/models/grant_burn_down_history_segment.py +125 -0
- moolabs/models/grant_order_by.py +38 -0
- moolabs/models/grant_paginated_response.py +101 -0
- moolabs/models/grant_plan_change_request.py +126 -0
- moolabs/models/grant_renewal_request.py +122 -0
- moolabs/models/grant_response.py +128 -0
- moolabs/models/grant_source_type.py +40 -0
- moolabs/models/grant_usage_record.py +97 -0
- moolabs/models/grant_v2_paginated_response.py +101 -0
- moolabs/models/grants_list_response.py +99 -0
- moolabs/models/handoff_create_request.py +92 -0
- moolabs/models/helicone_config_request.py +92 -0
- moolabs/models/homepage_response.py +107 -0
- moolabs/models/hosted_checkout_settlement_ptp_response.py +100 -0
- moolabs/models/hosted_checkout_settlement_request.py +109 -0
- moolabs/models/hosted_checkout_settlement_response.py +97 -0
- moolabs/models/http_validation_error.py +95 -0
- moolabs/models/hub_spot_connect_request.py +91 -0
- moolabs/models/id_resource.py +97 -0
- moolabs/models/identity_scope.py +39 -0
- moolabs/models/identity_scope_coverage_response.py +96 -0
- moolabs/models/import_batch_detail_response.py +105 -0
- moolabs/models/import_batch_detail_row.py +111 -0
- moolabs/models/import_batch_request.py +112 -0
- moolabs/models/import_batch_response.py +101 -0
- moolabs/models/import_batch_summary.py +111 -0
- moolabs/models/import_dispute_item.py +122 -0
- moolabs/models/import_disputes_request.py +96 -0
- moolabs/models/import_invoice_item.py +133 -0
- moolabs/models/import_invoices_request.py +96 -0
- moolabs/models/import_promise_item.py +155 -0
- moolabs/models/import_promises_request.py +96 -0
- moolabs/models/inbound_email_attachment.py +91 -0
- moolabs/models/inbound_email_payload.py +103 -0
- moolabs/models/inbound_email_process_response.py +97 -0
- moolabs/models/ingest_events_body.py +150 -0
- moolabs/models/ingest_health.py +97 -0
- moolabs/models/ingested_event.py +111 -0
- moolabs/models/ingested_event_cursor_paginated_response.py +98 -0
- moolabs/models/initialamount.py +152 -0
- moolabs/models/insight_card.py +111 -0
- moolabs/models/install_method.py +38 -0
- moolabs/models/integration_update.py +89 -0
- moolabs/models/invalidate_portal_token_request.py +89 -0
- moolabs/models/invalidate_portal_tokens_request.py +89 -0
- moolabs/models/invoice.py +249 -0
- moolabs/models/invoice_allocation_out.py +103 -0
- moolabs/models/invoice_app_external_ids.py +97 -0
- moolabs/models/invoice_available_action_details.py +89 -0
- moolabs/models/invoice_available_actions.py +132 -0
- moolabs/models/invoice_detailed_line.py +244 -0
- moolabs/models/invoice_detailed_line_cost_category.py +37 -0
- moolabs/models/invoice_detailed_line_rate_card.py +116 -0
- moolabs/models/invoice_document_ref_type.py +36 -0
- moolabs/models/invoice_expand.py +38 -0
- moolabs/models/invoice_generic_document_ref.py +98 -0
- moolabs/models/invoice_item.py +112 -0
- moolabs/models/invoice_line.py +296 -0
- moolabs/models/invoice_line_amount_discount.py +141 -0
- moolabs/models/invoice_line_app_external_ids.py +93 -0
- moolabs/models/invoice_line_discounts.py +105 -0
- moolabs/models/invoice_line_managed_by.py +38 -0
- moolabs/models/invoice_line_out.py +99 -0
- moolabs/models/invoice_line_replace_update.py +143 -0
- moolabs/models/invoice_line_status.py +38 -0
- moolabs/models/invoice_line_subscription_reference.py +115 -0
- moolabs/models/invoice_line_tax_behavior.py +37 -0
- moolabs/models/invoice_line_tax_item.py +117 -0
- moolabs/models/invoice_line_usage_discount.py +155 -0
- moolabs/models/invoice_order_by.py +41 -0
- moolabs/models/invoice_paginated_response.py +101 -0
- moolabs/models/invoice_payment_terms.py +91 -0
- moolabs/models/invoice_pending_line_create.py +131 -0
- moolabs/models/invoice_pending_line_create_input.py +105 -0
- moolabs/models/invoice_pending_line_create_response.py +107 -0
- moolabs/models/invoice_pending_lines_action_filters_input.py +88 -0
- moolabs/models/invoice_pending_lines_action_input.py +106 -0
- moolabs/models/invoice_reference.py +101 -0
- moolabs/models/invoice_replace_update.py +117 -0
- moolabs/models/invoice_simulation_input.py +107 -0
- moolabs/models/invoice_simulation_line.py +164 -0
- moolabs/models/invoice_status.py +44 -0
- moolabs/models/invoice_status_details.py +103 -0
- moolabs/models/invoice_totals.py +163 -0
- moolabs/models/invoice_type.py +37 -0
- moolabs/models/invoice_upsert_request.py +112 -0
- moolabs/models/invoice_usage_based_rate_card.py +116 -0
- moolabs/models/invoice_workflow_invoicing_settings_replace_update.py +97 -0
- moolabs/models/invoice_workflow_replace_update.py +91 -0
- moolabs/models/invoice_workflow_settings.py +111 -0
- moolabs/models/invoice_workflow_settings_replace_update.py +97 -0
- moolabs/models/issue_after_reset.py +90 -0
- moolabs/models/jurisdiction_profile_response.py +102 -0
- moolabs/models/jurisdiction_resolution_request.py +92 -0
- moolabs/models/kill_switch_request.py +87 -0
- moolabs/models/langfuse_config_request.py +92 -0
- moolabs/models/lesson_action_request.py +89 -0
- moolabs/models/level_in.py +91 -0
- moolabs/models/lifecycle_event_request.py +97 -0
- moolabs/models/line_item_create.py +118 -0
- moolabs/models/line_total.py +153 -0
- moolabs/models/link_net_suite_account_request.py +89 -0
- moolabs/models/list_auto_topup_rules_response.py +97 -0
- moolabs/models/list_connectors200_response_inner.py +148 -0
- moolabs/models/list_entitlements_result.py +151 -0
- moolabs/models/list_events_v2_filter_param.py +123 -0
- moolabs/models/list_features_result.py +151 -0
- moolabs/models/list_grants_get200_response.py +151 -0
- moolabs/models/mapping_response.py +97 -0
- moolabs/models/mapping_rule_create.py +105 -0
- moolabs/models/mapping_rule_response.py +118 -0
- moolabs/models/mapping_rule_update.py +103 -0
- moolabs/models/margin_snapshot_response.py +131 -0
- moolabs/models/marketplace_app_api_key_install_request.py +91 -0
- moolabs/models/marketplace_install_request_payload.py +89 -0
- moolabs/models/marketplace_install_response.py +94 -0
- moolabs/models/marketplace_listing.py +105 -0
- moolabs/models/marketplace_listing_paginated_response.py +101 -0
- moolabs/models/matrix_price_row.py +91 -0
- moolabs/models/measure.py +146 -0
- moolabs/models/measure_kind.py +41 -0
- moolabs/models/measure_usage_from.py +151 -0
- moolabs/models/measure_usage_from_preset.py +37 -0
- moolabs/models/merge_remittances_request.py +89 -0
- moolabs/models/meter.py +176 -0
- moolabs/models/meter_aggregation.py +42 -0
- moolabs/models/meter_create.py +113 -0
- moolabs/models/meter_mapping_item.py +95 -0
- moolabs/models/meter_order_by.py +40 -0
- moolabs/models/meter_query_request.py +121 -0
- moolabs/models/meter_query_result.py +103 -0
- moolabs/models/meter_query_row.py +98 -0
- moolabs/models/meter_test_event_request.py +87 -0
- moolabs/models/meter_test_event_response.py +93 -0
- moolabs/models/meter_update.py +94 -0
- moolabs/models/meter_usage_summary_item.py +103 -0
- moolabs/models/meter_usage_summary_response.py +95 -0
- moolabs/models/meter_validation_error.py +101 -0
- moolabs/models/migrate_subscription_request.py +105 -0
- moolabs/models/model_cost_item.py +95 -0
- moolabs/models/net_suite_connect_request.py +103 -0
- moolabs/models/net_suite_cutover_guard_request.py +87 -0
- moolabs/models/net_suite_m2_m_finalize_request.py +87 -0
- moolabs/models/net_suite_m2_m_setup_request.py +101 -0
- moolabs/models/net_suite_managed_portal_backfill_cancel_request.py +87 -0
- moolabs/models/net_suite_managed_portal_backfill_request.py +89 -0
- moolabs/models/net_suite_managed_portal_backfill_run_request.py +90 -0
- moolabs/models/net_suite_managed_portal_mapping_delete_request.py +91 -0
- moolabs/models/net_suite_managed_portal_mapping_request.py +97 -0
- moolabs/models/net_suite_managed_portal_protection_ack_request.py +89 -0
- moolabs/models/next_action_type.py +41 -0
- moolabs/models/note_create.py +94 -0
- moolabs/models/note_list_response.py +101 -0
- moolabs/models/note_response.py +104 -0
- moolabs/models/notification_channel_meta.py +100 -0
- moolabs/models/notification_channel_order_by.py +39 -0
- moolabs/models/notification_channel_paginated_response.py +101 -0
- moolabs/models/notification_channel_type.py +36 -0
- moolabs/models/notification_channel_webhook.py +145 -0
- moolabs/models/notification_channel_webhook_create_request.py +117 -0
- moolabs/models/notification_event.py +137 -0
- moolabs/models/notification_event_balance_threshold_payload.py +121 -0
- moolabs/models/notification_event_balance_threshold_payload_data.py +133 -0
- moolabs/models/notification_event_delivery_attempt.py +103 -0
- moolabs/models/notification_event_delivery_status.py +125 -0
- moolabs/models/notification_event_delivery_status_state.py +40 -0
- moolabs/models/notification_event_entitlement_value_payload_base.py +125 -0
- moolabs/models/notification_event_invoice_created_payload.py +121 -0
- moolabs/models/notification_event_invoice_updated_payload.py +121 -0
- moolabs/models/notification_event_order_by.py +37 -0
- moolabs/models/notification_event_paginated_response.py +101 -0
- moolabs/models/notification_event_payload.py +178 -0
- moolabs/models/notification_event_resend_request.py +88 -0
- moolabs/models/notification_event_reset_payload.py +121 -0
- moolabs/models/notification_event_type.py +39 -0
- moolabs/models/notification_rule.py +178 -0
- moolabs/models/notification_rule_balance_threshold.py +159 -0
- moolabs/models/notification_rule_balance_threshold_create_request.py +115 -0
- moolabs/models/notification_rule_balance_threshold_value.py +90 -0
- moolabs/models/notification_rule_balance_threshold_value_type.py +40 -0
- moolabs/models/notification_rule_create_request.py +178 -0
- moolabs/models/notification_rule_entitlement_reset.py +149 -0
- moolabs/models/notification_rule_entitlement_reset_create_request.py +105 -0
- moolabs/models/notification_rule_invoice_created.py +139 -0
- moolabs/models/notification_rule_invoice_created_create_request.py +103 -0
- moolabs/models/notification_rule_invoice_updated.py +139 -0
- moolabs/models/notification_rule_invoice_updated_create_request.py +103 -0
- moolabs/models/notification_rule_order_by.py +39 -0
- moolabs/models/notification_rule_paginated_response.py +101 -0
- moolabs/models/notify_channel.py +89 -0
- moolabs/models/o_auth2_authorization_code_grant_error_type.py +42 -0
- moolabs/models/observation_out.py +103 -0
- moolabs/models/observed_total_cost.py +153 -0
- moolabs/models/open_cost_cluster_binding.py +115 -0
- moolabs/models/open_cost_dedicated_namespace.py +104 -0
- moolabs/models/open_cost_installation_create_request.py +122 -0
- moolabs/models/open_cost_installation_create_response.py +116 -0
- moolabs/models/open_cost_installation_response.py +114 -0
- moolabs/models/open_cost_snapshot_request.py +139 -0
- moolabs/models/open_cost_snapshot_response.py +125 -0
- moolabs/models/open_cost_trust_policy.py +145 -0
- moolabs/models/open_cost_wire_row.py +140 -0
- moolabs/models/open_from_scope_request.py +98 -0
- moolabs/models/operations_summary.py +120 -0
- moolabs/models/opt_out_request.py +90 -0
- moolabs/models/opt_out_response.py +93 -0
- moolabs/models/org_role.py +152 -0
- moolabs/models/original_total.py +152 -0
- moolabs/models/otlp_ingest_response.py +91 -0
- moolabs/models/overall_freshness.py +116 -0
- moolabs/models/overdraft_settings.py +93 -0
- moolabs/models/overdraft_settings_payload.py +93 -0
- moolabs/models/override_first_ingress_request.py +94 -0
- moolabs/models/override_request.py +90 -0
- moolabs/models/override_response.py +91 -0
- moolabs/models/overview_response.py +109 -0
- moolabs/models/pack_provenance.py +101 -0
- moolabs/models/package_price_with_commitments.py +137 -0
- moolabs/models/paginated_credit_memos.py +97 -0
- moolabs/models/paginated_customers.py +99 -0
- moolabs/models/paginated_invoices.py +97 -0
- moolabs/models/paginated_payments.py +97 -0
- moolabs/models/paginated_sync_runs.py +97 -0
- moolabs/models/patch_quote_agent_policy_request.py +98 -0
- moolabs/models/patch_rows_request.py +95 -0
- moolabs/models/patch_session_request.py +107 -0
- moolabs/models/payment_allocation_response.py +104 -0
- moolabs/models/payment_create.py +109 -0
- moolabs/models/payment_due_date.py +124 -0
- moolabs/models/payment_failed_request.py +101 -0
- moolabs/models/payment_failed_response.py +93 -0
- moolabs/models/payment_instructions_response.py +95 -0
- moolabs/models/payment_instructions_update_request.py +90 -0
- moolabs/models/payment_item.py +104 -0
- moolabs/models/payment_link_request.py +105 -0
- moolabs/models/payment_link_response.py +89 -0
- moolabs/models/payment_list_response.py +101 -0
- moolabs/models/payment_match_request.py +90 -0
- moolabs/models/payment_response.py +136 -0
- moolabs/models/payment_reversal_request.py +90 -0
- moolabs/models/payment_succeeded_request.py +103 -0
- moolabs/models/payment_succeeded_response.py +97 -0
- moolabs/models/payment_term_due_date.py +113 -0
- moolabs/models/payment_term_instant.py +102 -0
- moolabs/models/payment_terms.py +148 -0
- moolabs/models/pending_provider_confirmation_reconcile_request.py +88 -0
- moolabs/models/pending_sns_confirmation_out.py +102 -0
- moolabs/models/period.py +90 -0
- moolabs/models/period_settlement_out.py +143 -0
- moolabs/models/period_window.py +103 -0
- moolabs/models/persona.py +39 -0
- moolabs/models/plan.py +191 -0
- moolabs/models/plan_addon.py +126 -0
- moolabs/models/plan_addon_create.py +101 -0
- moolabs/models/plan_addon_order_by.py +40 -0
- moolabs/models/plan_addon_paginated_response.py +101 -0
- moolabs/models/plan_addon_replace_update.py +91 -0
- moolabs/models/plan_amend_request.py +103 -0
- moolabs/models/plan_cost_item.py +97 -0
- moolabs/models/plan_create.py +140 -0
- moolabs/models/plan_create_request.py +103 -0
- moolabs/models/plan_order_by.py +40 -0
- moolabs/models/plan_paginated_response.py +101 -0
- moolabs/models/plan_phase.py +113 -0
- moolabs/models/plan_pricing_input.py +103 -0
- moolabs/models/plan_pricing_sync_request.py +105 -0
- moolabs/models/plan_pricing_view.py +107 -0
- moolabs/models/plan_ref_payload.py +91 -0
- moolabs/models/plan_reference.py +106 -0
- moolabs/models/plan_reference_input.py +97 -0
- moolabs/models/plan_replace_update.py +122 -0
- moolabs/models/plan_status.py +39 -0
- moolabs/models/plan_subscription_change.py +153 -0
- moolabs/models/plan_subscription_create.py +167 -0
- moolabs/models/policy_update_request.py +94 -0
- moolabs/models/pool_notification_config_request.py +87 -0
- moolabs/models/pooloverrides_value.py +152 -0
- moolabs/models/portal_case_response.py +108 -0
- moolabs/models/portal_channel_preference_request.py +100 -0
- moolabs/models/portal_dispute_request.py +94 -0
- moolabs/models/portal_dispute_response.py +102 -0
- moolabs/models/portal_invoice_response.py +124 -0
- moolabs/models/portal_payment_intent_response.py +91 -0
- moolabs/models/portal_payment_request.py +102 -0
- moolabs/models/portal_preferences_request.py +113 -0
- moolabs/models/portal_preferences_response.py +87 -0
- moolabs/models/portal_promise_to_pay_response.py +106 -0
- moolabs/models/portal_ptp_request.py +95 -0
- moolabs/models/portal_token.py +121 -0
- moolabs/models/portal_token_item.py +97 -0
- moolabs/models/preview_resolution_request.py +89 -0
- moolabs/models/preview_resolution_response.py +101 -0
- moolabs/models/preview_template_request.py +102 -0
- moolabs/models/preview_template_response.py +95 -0
- moolabs/models/preview_trace_entry.py +97 -0
- moolabs/models/previous.py +152 -0
- moolabs/models/price_payment_term.py +37 -0
- moolabs/models/price_session_response.py +109 -0
- moolabs/models/price_tier.py +110 -0
- moolabs/models/price_tier_payload.py +103 -0
- moolabs/models/pricing_override_input.py +100 -0
- moolabs/models/pricing_result.py +100 -0
- moolabs/models/pricing_snapshot_response.py +109 -0
- moolabs/models/pricing_tier_input.py +90 -0
- moolabs/models/priority.py +38 -0
- moolabs/models/pro_rating_config.py +90 -0
- moolabs/models/pro_rating_mode.py +36 -0
- moolabs/models/process_value_recognition_request.py +94 -0
- moolabs/models/progress.py +94 -0
- moolabs/models/projection_link_in.py +91 -0
- moolabs/models/projection_links_request.py +98 -0
- moolabs/models/projection_links_response.py +89 -0
- moolabs/models/promise_response.py +112 -0
- moolabs/models/promote_response.py +89 -0
- moolabs/models/provider_billing_reference.py +146 -0
- moolabs/models/provider_billing_reference_kind.py +37 -0
- moolabs/models/provider_blocking_reason.py +115 -0
- moolabs/models/provider_confirmation_repair_request.py +99 -0
- moolabs/models/provider_connection_status.py +42 -0
- moolabs/models/provider_identity_details.py +110 -0
- moolabs/models/provider_identity_purpose.py +38 -0
- moolabs/models/provider_kind.py +37 -0
- moolabs/models/provider_readiness_response.py +97 -0
- moolabs/models/provider_readiness_summary.py +123 -0
- moolabs/models/provider_route_status.py +39 -0
- moolabs/models/provider_safe_test_send_request.py +107 -0
- moolabs/models/provider_safe_test_send_response.py +109 -0
- moolabs/models/provider_summary.py +89 -0
- moolabs/models/provider_warning.py +115 -0
- moolabs/models/ptp_approval_request.py +88 -0
- moolabs/models/ptp_create_request.py +103 -0
- moolabs/models/ptp_fulfill_request.py +90 -0
- moolabs/models/ptp_payment_link_response.py +89 -0
- moolabs/models/ptp_summary_response.py +104 -0
- moolabs/models/publish_plan_request.py +93 -0
- moolabs/models/publish_plan_result.py +93 -0
- moolabs/models/publish_template_request.py +96 -0
- moolabs/models/put_account_segment_request.py +89 -0
- moolabs/models/put_sku_eligibility_request.py +89 -0
- moolabs/models/put_tenant_segments_request.py +89 -0
- moolabs/models/quality_axis.py +116 -0
- moolabs/models/quality_caveat_code.py +40 -0
- moolabs/models/quality_status.py +40 -0
- moolabs/models/quality_summary.py +135 -0
- moolabs/models/quantity.py +153 -0
- moolabs/models/quick_action.py +99 -0
- moolabs/models/quick_books_connect_request.py +93 -0
- moolabs/models/quick_redline_response.py +123 -0
- moolabs/models/quote_agent_evaluation_response.py +106 -0
- moolabs/models/quote_agent_policy_response.py +112 -0
- moolabs/models/quote_agent_provenance_run_response.py +114 -0
- moolabs/models/quote_agent_run_response.py +122 -0
- moolabs/models/quote_approval_decision_request.py +88 -0
- moolabs/models/quote_approval_response.py +107 -0
- moolabs/models/quote_line_item_input.py +144 -0
- moolabs/models/quote_list_response.py +101 -0
- moolabs/models/quote_metrics_response.py +105 -0
- moolabs/models/quote_redline_decision_request.py +88 -0
- moolabs/models/quote_redline_response.py +125 -0
- moolabs/models/quote_response.py +125 -0
- moolabs/models/quote_template_list_response.py +95 -0
- moolabs/models/quote_template_response.py +109 -0
- moolabs/models/quote_version_response.py +129 -0
- moolabs/models/ram_cost_weight.py +152 -0
- moolabs/models/ram_gib_hours.py +152 -0
- moolabs/models/rate_bulk_import_request.py +97 -0
- moolabs/models/rate_bulk_import_response.py +91 -0
- moolabs/models/rate_card.py +150 -0
- moolabs/models/rate_card_boolean_entitlement.py +96 -0
- moolabs/models/rate_card_cost_list_response.py +95 -0
- moolabs/models/rate_card_cost_row.py +103 -0
- moolabs/models/rate_card_discount.py +87 -0
- moolabs/models/rate_card_discount_input.py +103 -0
- moolabs/models/rate_card_discount_payload.py +87 -0
- moolabs/models/rate_card_entitlement.py +164 -0
- moolabs/models/rate_card_flat_fee.py +148 -0
- moolabs/models/rate_card_metered_entitlement.py +107 -0
- moolabs/models/rate_card_payload.py +103 -0
- moolabs/models/rate_card_response.py +106 -0
- moolabs/models/rate_card_static_entitlement.py +98 -0
- moolabs/models/rate_card_usage_based.py +148 -0
- moolabs/models/rate_card_usage_based_price.py +192 -0
- moolabs/models/rate_catalog_create.py +117 -0
- moolabs/models/rate_catalog_response.py +118 -0
- moolabs/models/rate_catalog_update.py +107 -0
- moolabs/models/rate_generation_list_view.py +97 -0
- moolabs/models/rate_generation_view.py +98 -0
- moolabs/models/rate_per_unit.py +153 -0
- moolabs/models/rate_per_unit1.py +153 -0
- moolabs/models/rate_schedule_list_response.py +95 -0
- moolabs/models/rate_schedule_preview_response.py +105 -0
- moolabs/models/rate_schedule_version_out.py +101 -0
- moolabs/models/ratify_family_request.py +91 -0
- moolabs/models/ratify_refinement_request.py +93 -0
- moolabs/models/re_scope_request.py +89 -0
- moolabs/models/readiness_summary.py +89 -0
- moolabs/models/readout_page_response.py +119 -0
- moolabs/models/readout_row_response.py +104 -0
- moolabs/models/readout_snapshot_response.py +116 -0
- moolabs/models/reallocate_request.py +90 -0
- moolabs/models/reallocate_response.py +97 -0
- moolabs/models/reattempt_request.py +88 -0
- moolabs/models/reattempt_response.py +89 -0
- moolabs/models/recall_request.py +87 -0
- moolabs/models/reconcile_request.py +89 -0
- moolabs/models/reconcile_response.py +95 -0
- moolabs/models/reconciliation_basis.py +99 -0
- moolabs/models/reconciliation_basis_out.py +95 -0
- moolabs/models/reconstruction_run_response.py +95 -0
- moolabs/models/record_usage_request.py +115 -0
- moolabs/models/recurring_period.py +96 -0
- moolabs/models/recurring_period_create_input.py +94 -0
- moolabs/models/recurring_period_interval.py +151 -0
- moolabs/models/recurring_period_interval_enum.py +39 -0
- moolabs/models/recurring_period_v2.py +94 -0
- moolabs/models/recurringamount.py +152 -0
- moolabs/models/redline_summary.py +89 -0
- moolabs/models/refund_credit_request.py +90 -0
- moolabs/models/reject_rate_generation_request.py +87 -0
- moolabs/models/remittance_create_request.py +103 -0
- moolabs/models/remittance_list_response.py +101 -0
- moolabs/models/remittance_response.py +120 -0
- moolabs/models/remove_contract_participant_response.py +131 -0
- moolabs/models/remove_phase_shifting.py +37 -0
- moolabs/models/replace_levels_request.py +95 -0
- moolabs/models/replay_dead_letter_request.py +89 -0
- moolabs/models/report_create_request.py +105 -0
- moolabs/models/report_create_response.py +139 -0
- moolabs/models/reporting_line_total.py +153 -0
- moolabs/models/reporting_total_cost.py +153 -0
- moolabs/models/request_cost_distribution.py +127 -0
- moolabs/models/request_evidence_response.py +197 -0
- moolabs/models/request_evidence_row.py +154 -0
- moolabs/models/request_pricing_state.py +40 -0
- moolabs/models/reschedule_request.py +88 -0
- moolabs/models/resend_identity_details.py +104 -0
- moolabs/models/reset_entitlement_usage_input.py +92 -0
- moolabs/models/resolve_unapplied_request.py +87 -0
- moolabs/models/resource_map_create_request.py +103 -0
- moolabs/models/resource_map_response.py +113 -0
- moolabs/models/retry_unpriced_request.py +91 -0
- moolabs/models/retry_unpriced_response.py +91 -0
- moolabs/models/revenue_recognition_request.py +89 -0
- moolabs/models/reversed_settlement_ref.py +93 -0
- moolabs/models/review_quarantined_request.py +95 -0
- moolabs/models/review_quarantined_response.py +95 -0
- moolabs/models/revoke_api_key_request.py +87 -0
- moolabs/models/revoke_portal_token_request.py +87 -0
- moolabs/models/rollover_mode.py +38 -0
- moolabs/models/rollover_request.py +95 -0
- moolabs/models/rollover_response.py +98 -0
- moolabs/models/rollovercapamount.py +152 -0
- moolabs/models/rolloverpercent.py +152 -0
- moolabs/models/rotate_key_request.py +88 -0
- moolabs/models/rotate_key_response.py +92 -0
- moolabs/models/route_update_request.py +110 -0
- moolabs/models/salesforce_connect_request.py +93 -0
- moolabs/models/sample_rate.py +153 -0
- moolabs/models/sandbox_app.py +138 -0
- moolabs/models/sandbox_app_replace_update.py +101 -0
- moolabs/models/sandbox_customer_app_data.py +115 -0
- moolabs/models/save_redline_edit_request.py +95 -0
- moolabs/models/scenario_compare_response.py +97 -0
- moolabs/models/scenario_item.py +117 -0
- moolabs/models/scenario_request.py +96 -0
- moolabs/models/scope_type.py +38 -0
- moolabs/models/sdk_batch_ingest_request.py +96 -0
- moolabs/models/sdk_batch_ingest_response.py +91 -0
- moolabs/models/sdk_event.py +111 -0
- moolabs/models/sdk_span.py +106 -0
- moolabs/models/segment_out.py +95 -0
- moolabs/models/sender_response.py +93 -0
- moolabs/models/sender_update.py +93 -0
- moolabs/models/ses_identity_details.py +127 -0
- moolabs/models/ses_provider_scope_status.py +89 -0
- moolabs/models/set_rate_card_cost_request.py +89 -0
- moolabs/models/severity.py +38 -0
- moolabs/models/shadow_mode_request.py +87 -0
- moolabs/models/shadow_run_list_item.py +101 -0
- moolabs/models/shadow_run_metrics.py +114 -0
- moolabs/models/shadow_run_request.py +92 -0
- moolabs/models/shadow_run_summary.py +95 -0
- moolabs/models/simulate_margin_request.py +100 -0
- moolabs/models/simulate_margin_response.py +115 -0
- moolabs/models/simulate_out.py +103 -0
- moolabs/models/sku_eligibility_list_response.py +95 -0
- moolabs/models/sku_eligibility_row.py +91 -0
- moolabs/models/slack_quote_command_response.py +93 -0
- moolabs/models/snapshot_compute_request.py +104 -0
- moolabs/models/snapshot_compute_response.py +99 -0
- moolabs/models/snapshot_response.py +104 -0
- moolabs/models/sns_confirmation_command_out.py +98 -0
- moolabs/models/sns_confirmation_confirmed_out.py +94 -0
- moolabs/models/sns_confirmation_confirmed_request.py +101 -0
- moolabs/models/sns_confirmation_list_out.py +95 -0
- moolabs/models/sort_direction.py +37 -0
- moolabs/models/sort_order.py +37 -0
- moolabs/models/spend_summary.py +114 -0
- moolabs/models/stage_schema.py +117 -0
- moolabs/models/strategy_create_request.py +130 -0
- moolabs/models/strategy_preview_request.py +87 -0
- moolabs/models/strategy_update_request.py +133 -0
- moolabs/models/stripe_api_key_input.py +87 -0
- moolabs/models/stripe_app.py +150 -0
- moolabs/models/stripe_app_replace_update.py +103 -0
- moolabs/models/stripe_checkout_session_mode.py +36 -0
- moolabs/models/stripe_customer_app_data.py +119 -0
- moolabs/models/stripe_customer_app_data_base.py +89 -0
- moolabs/models/stripe_customer_app_data_create_or_update_item.py +111 -0
- moolabs/models/stripe_customer_portal_session.py +102 -0
- moolabs/models/stripe_tax_config.py +95 -0
- moolabs/models/stripe_webhook_event.py +99 -0
- moolabs/models/stripe_webhook_event_data.py +92 -0
- moolabs/models/stripe_webhook_response.py +118 -0
- moolabs/models/subject.py +122 -0
- moolabs/models/subject_upsert.py +98 -0
- moolabs/models/subscription.py +201 -0
- moolabs/models/subscription_activate_request.py +101 -0
- moolabs/models/subscription_addon.py +167 -0
- moolabs/models/subscription_addon_create.py +106 -0
- moolabs/models/subscription_addon_rate_card.py +94 -0
- moolabs/models/subscription_addon_timeline_segment.py +95 -0
- moolabs/models/subscription_addon_update.py +100 -0
- moolabs/models/subscription_alignment.py +93 -0
- moolabs/models/subscription_bad_request_error_response.py +102 -0
- moolabs/models/subscription_change.py +147 -0
- moolabs/models/subscription_change_response_body.py +97 -0
- moolabs/models/subscription_conflict_error_response.py +102 -0
- moolabs/models/subscription_create.py +147 -0
- moolabs/models/subscription_edit.py +102 -0
- moolabs/models/subscription_edit_operation.py +206 -0
- moolabs/models/subscription_error_extensions.py +95 -0
- moolabs/models/subscription_expanded.py +211 -0
- moolabs/models/subscription_item.py +167 -0
- moolabs/models/subscription_item_included.py +97 -0
- moolabs/models/subscription_item_price_override.py +111 -0
- moolabs/models/subscription_item_price_override_type.py +37 -0
- moolabs/models/subscription_paginated_response.py +101 -0
- moolabs/models/subscription_phase_create.py +109 -0
- moolabs/models/subscription_phase_expanded.py +163 -0
- moolabs/models/subscription_ramp_phase.py +91 -0
- moolabs/models/subscription_status.py +39 -0
- moolabs/models/subscription_timing.py +151 -0
- moolabs/models/subscription_timing_enum.py +37 -0
- moolabs/models/sync_config_request.py +109 -0
- moolabs/models/sync_config_response.py +111 -0
- moolabs/models/sync_invoices_request.py +87 -0
- moolabs/models/sync_run_item.py +102 -0
- moolabs/models/synthetic_request_evidence_row.py +118 -0
- moolabs/models/task_complete_request.py +92 -0
- moolabs/models/task_list_response.py +101 -0
- moolabs/models/task_response.py +130 -0
- moolabs/models/task_update.py +93 -0
- moolabs/models/tax_behavior.py +37 -0
- moolabs/models/tax_config.py +100 -0
- moolabs/models/template_archive_request.py +88 -0
- moolabs/models/template_card_action_request.py +99 -0
- moolabs/models/template_item.py +97 -0
- moolabs/models/template_key_create_request.py +92 -0
- moolabs/models/template_key_list_response.py +116 -0
- moolabs/models/template_key_response.py +126 -0
- moolabs/models/template_meta_response.py +93 -0
- moolabs/models/template_preview_request.py +87 -0
- moolabs/models/template_preview_response.py +101 -0
- moolabs/models/template_test_send_request.py +87 -0
- moolabs/models/template_test_send_response.py +93 -0
- moolabs/models/template_update.py +91 -0
- moolabs/models/template_version_list_response.py +95 -0
- moolabs/models/template_version_response.py +143 -0
- moolabs/models/tenant_config_response.py +95 -0
- moolabs/models/tenant_escalation_config_out.py +97 -0
- moolabs/models/tenant_escalation_config_patch.py +92 -0
- moolabs/models/tenant_provision_request.py +89 -0
- moolabs/models/tenant_segment_entry.py +89 -0
- moolabs/models/tenant_segments_response.py +97 -0
- moolabs/models/tenant_unit_economics.py +97 -0
- moolabs/models/territory_in.py +89 -0
- moolabs/models/test_send_request.py +104 -0
- moolabs/models/test_send_response.py +93 -0
- moolabs/models/tiered_price_mode.py +37 -0
- moolabs/models/tiered_price_with_commitments.py +132 -0
- moolabs/models/tiered_pricing_payload.py +97 -0
- moolabs/models/timestamp_window.py +103 -0
- moolabs/models/top_consumer.py +93 -0
- moolabs/models/topup_defaults_request.py +93 -0
- moolabs/models/total_cost.py +153 -0
- moolabs/models/traces_response.py +95 -0
- moolabs/models/trend_data_point.py +91 -0
- moolabs/models/trend_point.py +116 -0
- moolabs/models/trigger_request.py +87 -0
- moolabs/models/ulidor_external_key.py +153 -0
- moolabs/models/unapplied_cash_response.py +106 -0
- moolabs/models/unavailable_reason.py +66 -0
- moolabs/models/unexpected_problem_response.py +111 -0
- moolabs/models/unified_price_row_input.py +99 -0
- moolabs/models/unified_price_row_out.py +109 -0
- moolabs/models/unit_cost.py +153 -0
- moolabs/models/unit_economics.py +97 -0
- moolabs/models/unit_price.py +104 -0
- moolabs/models/unit_price_with_commitments.py +128 -0
- moolabs/models/unitamount.py +152 -0
- moolabs/models/update_approval_policy_request.py +87 -0
- moolabs/models/update_auto_topup_rule_request.py +102 -0
- moolabs/models/update_credit_pool_request.py +98 -0
- moolabs/models/update_quote_template_request.py +102 -0
- moolabs/models/update_threshold_request.py +97 -0
- moolabs/models/update_wallet_settings_request.py +95 -0
- moolabs/models/update_wallet_thresholds_request.py +92 -0
- moolabs/models/upsert_fx_rate_request.py +92 -0
- moolabs/models/upsert_provider_identity_request.py +115 -0
- moolabs/models/upto.py +152 -0
- moolabs/models/usage_summary_window_size.py +37 -0
- moolabs/models/validate_template_request.py +116 -0
- moolabs/models/validate_template_response.py +89 -0
- moolabs/models/validation_error.py +99 -0
- moolabs/models/validation_error_loc_inner.py +152 -0
- moolabs/models/validation_issue.py +135 -0
- moolabs/models/validation_issue_severity.py +37 -0
- moolabs/models/validation_response.py +105 -0
- moolabs/models/value_recognition_response.py +93 -0
- moolabs/models/variance_decomposition_out.py +117 -0
- moolabs/models/variance_summary_response.py +101 -0
- moolabs/models/verification_status.py +39 -0
- moolabs/models/void_grant_request.py +88 -0
- moolabs/models/void_invoice_action_create.py +93 -0
- moolabs/models/void_invoice_action_create_item.py +93 -0
- moolabs/models/void_invoice_action_input.py +103 -0
- moolabs/models/void_invoice_action_line_override.py +101 -0
- moolabs/models/void_invoice_line_action_create.py +150 -0
- moolabs/models/void_invoice_line_action_create_item.py +150 -0
- moolabs/models/void_invoice_line_discard_action.py +94 -0
- moolabs/models/void_invoice_line_pending_action_create.py +97 -0
- moolabs/models/void_invoice_line_pending_action_create_item.py +97 -0
- moolabs/models/volume_summary.py +114 -0
- moolabs/models/wallet_owner_type.py +43 -0
- moolabs/models/wallet_policy.py +38 -0
- moolabs/models/wallet_response.py +112 -0
- moolabs/models/wallet_state_response.py +105 -0
- moolabs/models/warning_item.py +93 -0
- moolabs/models/webhook_response.py +95 -0
- moolabs/models/webhook_update.py +95 -0
- moolabs/models/window_size.py +39 -0
- moolabs/models/windowed_balance_history.py +105 -0
- moolabs/models/xero_connect_request.py +91 -0
- moolabs/py.typed +0 -0
- moolabs/rest.py +257 -0
- moolabs-0.3.0.dist-info/METADATA +31 -0
- moolabs-0.3.0.dist-info/RECORD +1417 -0
- moolabs-0.3.0.dist-info/WHEEL +5 -0
- moolabs-0.3.0.dist-info/top_level.txt +1 -0
moolabs/api/admin_api.py
ADDED
|
@@ -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
|
+
|