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
|
@@ -0,0 +1,2301 @@
|
|
|
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, StrictBool, StrictStr
|
|
21
|
+
from typing import Optional
|
|
22
|
+
from typing_extensions import Annotated
|
|
23
|
+
from moolabs.models.completeness_response import CompletenessResponse
|
|
24
|
+
from moolabs.models.credit_cost_ratio_response import CreditCostRatioResponse
|
|
25
|
+
from moolabs.models.customer_margin_response import CustomerMarginResponse
|
|
26
|
+
from moolabs.models.feature_margin_response import FeatureMarginResponse
|
|
27
|
+
from moolabs.models.margin_snapshot_response import MarginSnapshotResponse
|
|
28
|
+
from moolabs.models.reconcile_request import ReconcileRequest
|
|
29
|
+
from moolabs.models.reconcile_response import ReconcileResponse
|
|
30
|
+
from moolabs.models.snapshot_compute_request import SnapshotComputeRequest
|
|
31
|
+
from moolabs.models.snapshot_compute_response import SnapshotComputeResponse
|
|
32
|
+
|
|
33
|
+
from moolabs.api_client import ApiClient, RequestSerialized
|
|
34
|
+
from moolabs.api_response import ApiResponse
|
|
35
|
+
from moolabs.rest import RESTResponseType
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class MarginsApi:
|
|
39
|
+
"""NOTE: This class is auto generated by OpenAPI Generator
|
|
40
|
+
Ref: https://openapi-generator.tech
|
|
41
|
+
|
|
42
|
+
Do not edit the class manually.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
def __init__(self, api_client=None) -> None:
|
|
46
|
+
if api_client is None:
|
|
47
|
+
api_client = ApiClient.get_default()
|
|
48
|
+
self.api_client = api_client
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@validate_call
|
|
52
|
+
def get_completeness(
|
|
53
|
+
self,
|
|
54
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
55
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
56
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
57
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
58
|
+
_request_timeout: Union[
|
|
59
|
+
None,
|
|
60
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
61
|
+
Tuple[
|
|
62
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
63
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
64
|
+
]
|
|
65
|
+
] = None,
|
|
66
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
67
|
+
_content_type: Optional[StrictStr] = None,
|
|
68
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
69
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
70
|
+
) -> CompletenessResponse:
|
|
71
|
+
"""Financial completeness metric
|
|
72
|
+
|
|
73
|
+
Financial completeness = count(usage_events with status=fully_reconciled) / count(all AI usage_events in usage_event_log)
|
|
74
|
+
|
|
75
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
76
|
+
:type match_grade: str
|
|
77
|
+
:param include_partial: Include partially_reconciled billing events
|
|
78
|
+
:type include_partial: bool
|
|
79
|
+
:param period_start: ISO datetime start (inclusive)
|
|
80
|
+
:type period_start: datetime
|
|
81
|
+
:param period_end: ISO datetime end (exclusive)
|
|
82
|
+
:type period_end: datetime
|
|
83
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
84
|
+
number provided, it will be total request
|
|
85
|
+
timeout. It can also be a pair (tuple) of
|
|
86
|
+
(connection, read) timeouts.
|
|
87
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
88
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
89
|
+
request; this effectively ignores the
|
|
90
|
+
authentication in the spec for a single request.
|
|
91
|
+
:type _request_auth: dict, optional
|
|
92
|
+
:param _content_type: force content-type for the request.
|
|
93
|
+
:type _content_type: str, Optional
|
|
94
|
+
:param _headers: set to override the headers for a single
|
|
95
|
+
request; this effectively ignores the headers
|
|
96
|
+
in the spec for a single request.
|
|
97
|
+
:type _headers: dict, optional
|
|
98
|
+
:param _host_index: set to override the host_index for a single
|
|
99
|
+
request; this effectively ignores the host_index
|
|
100
|
+
in the spec for a single request.
|
|
101
|
+
:type _host_index: int, optional
|
|
102
|
+
:return: Returns the result object.
|
|
103
|
+
""" # noqa: E501
|
|
104
|
+
|
|
105
|
+
_param = self._get_completeness_serialize(
|
|
106
|
+
match_grade=match_grade,
|
|
107
|
+
include_partial=include_partial,
|
|
108
|
+
period_start=period_start,
|
|
109
|
+
period_end=period_end,
|
|
110
|
+
_request_auth=_request_auth,
|
|
111
|
+
_content_type=_content_type,
|
|
112
|
+
_headers=_headers,
|
|
113
|
+
_host_index=_host_index
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
117
|
+
'200': "CompletenessResponse",
|
|
118
|
+
'422': "AcuteHTTPValidationError",
|
|
119
|
+
}
|
|
120
|
+
response_data = self.api_client.call_api(
|
|
121
|
+
*_param,
|
|
122
|
+
_request_timeout=_request_timeout
|
|
123
|
+
)
|
|
124
|
+
response_data.read()
|
|
125
|
+
return self.api_client.response_deserialize(
|
|
126
|
+
response_data=response_data,
|
|
127
|
+
response_types_map=_response_types_map,
|
|
128
|
+
).data
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
@validate_call
|
|
132
|
+
def get_completeness_with_http_info(
|
|
133
|
+
self,
|
|
134
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
135
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
136
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
137
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
138
|
+
_request_timeout: Union[
|
|
139
|
+
None,
|
|
140
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
141
|
+
Tuple[
|
|
142
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
143
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
144
|
+
]
|
|
145
|
+
] = None,
|
|
146
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
147
|
+
_content_type: Optional[StrictStr] = None,
|
|
148
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
149
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
150
|
+
) -> ApiResponse[CompletenessResponse]:
|
|
151
|
+
"""Financial completeness metric
|
|
152
|
+
|
|
153
|
+
Financial completeness = count(usage_events with status=fully_reconciled) / count(all AI usage_events in usage_event_log)
|
|
154
|
+
|
|
155
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
156
|
+
:type match_grade: str
|
|
157
|
+
:param include_partial: Include partially_reconciled billing events
|
|
158
|
+
:type include_partial: bool
|
|
159
|
+
:param period_start: ISO datetime start (inclusive)
|
|
160
|
+
:type period_start: datetime
|
|
161
|
+
:param period_end: ISO datetime end (exclusive)
|
|
162
|
+
:type period_end: datetime
|
|
163
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
164
|
+
number provided, it will be total request
|
|
165
|
+
timeout. It can also be a pair (tuple) of
|
|
166
|
+
(connection, read) timeouts.
|
|
167
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
168
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
169
|
+
request; this effectively ignores the
|
|
170
|
+
authentication in the spec for a single request.
|
|
171
|
+
:type _request_auth: dict, optional
|
|
172
|
+
:param _content_type: force content-type for the request.
|
|
173
|
+
:type _content_type: str, Optional
|
|
174
|
+
:param _headers: set to override the headers for a single
|
|
175
|
+
request; this effectively ignores the headers
|
|
176
|
+
in the spec for a single request.
|
|
177
|
+
:type _headers: dict, optional
|
|
178
|
+
:param _host_index: set to override the host_index for a single
|
|
179
|
+
request; this effectively ignores the host_index
|
|
180
|
+
in the spec for a single request.
|
|
181
|
+
:type _host_index: int, optional
|
|
182
|
+
:return: Returns the result object.
|
|
183
|
+
""" # noqa: E501
|
|
184
|
+
|
|
185
|
+
_param = self._get_completeness_serialize(
|
|
186
|
+
match_grade=match_grade,
|
|
187
|
+
include_partial=include_partial,
|
|
188
|
+
period_start=period_start,
|
|
189
|
+
period_end=period_end,
|
|
190
|
+
_request_auth=_request_auth,
|
|
191
|
+
_content_type=_content_type,
|
|
192
|
+
_headers=_headers,
|
|
193
|
+
_host_index=_host_index
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
197
|
+
'200': "CompletenessResponse",
|
|
198
|
+
'422': "AcuteHTTPValidationError",
|
|
199
|
+
}
|
|
200
|
+
response_data = self.api_client.call_api(
|
|
201
|
+
*_param,
|
|
202
|
+
_request_timeout=_request_timeout
|
|
203
|
+
)
|
|
204
|
+
response_data.read()
|
|
205
|
+
return self.api_client.response_deserialize(
|
|
206
|
+
response_data=response_data,
|
|
207
|
+
response_types_map=_response_types_map,
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
@validate_call
|
|
212
|
+
def get_completeness_without_preload_content(
|
|
213
|
+
self,
|
|
214
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
215
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
216
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
217
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
218
|
+
_request_timeout: Union[
|
|
219
|
+
None,
|
|
220
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
221
|
+
Tuple[
|
|
222
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
223
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
224
|
+
]
|
|
225
|
+
] = None,
|
|
226
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
227
|
+
_content_type: Optional[StrictStr] = None,
|
|
228
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
229
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
230
|
+
) -> RESTResponseType:
|
|
231
|
+
"""Financial completeness metric
|
|
232
|
+
|
|
233
|
+
Financial completeness = count(usage_events with status=fully_reconciled) / count(all AI usage_events in usage_event_log)
|
|
234
|
+
|
|
235
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
236
|
+
:type match_grade: str
|
|
237
|
+
:param include_partial: Include partially_reconciled billing events
|
|
238
|
+
:type include_partial: bool
|
|
239
|
+
:param period_start: ISO datetime start (inclusive)
|
|
240
|
+
:type period_start: datetime
|
|
241
|
+
:param period_end: ISO datetime end (exclusive)
|
|
242
|
+
:type period_end: datetime
|
|
243
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
244
|
+
number provided, it will be total request
|
|
245
|
+
timeout. It can also be a pair (tuple) of
|
|
246
|
+
(connection, read) timeouts.
|
|
247
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
248
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
249
|
+
request; this effectively ignores the
|
|
250
|
+
authentication in the spec for a single request.
|
|
251
|
+
:type _request_auth: dict, optional
|
|
252
|
+
:param _content_type: force content-type for the request.
|
|
253
|
+
:type _content_type: str, Optional
|
|
254
|
+
:param _headers: set to override the headers for a single
|
|
255
|
+
request; this effectively ignores the headers
|
|
256
|
+
in the spec for a single request.
|
|
257
|
+
:type _headers: dict, optional
|
|
258
|
+
:param _host_index: set to override the host_index for a single
|
|
259
|
+
request; this effectively ignores the host_index
|
|
260
|
+
in the spec for a single request.
|
|
261
|
+
:type _host_index: int, optional
|
|
262
|
+
:return: Returns the result object.
|
|
263
|
+
""" # noqa: E501
|
|
264
|
+
|
|
265
|
+
_param = self._get_completeness_serialize(
|
|
266
|
+
match_grade=match_grade,
|
|
267
|
+
include_partial=include_partial,
|
|
268
|
+
period_start=period_start,
|
|
269
|
+
period_end=period_end,
|
|
270
|
+
_request_auth=_request_auth,
|
|
271
|
+
_content_type=_content_type,
|
|
272
|
+
_headers=_headers,
|
|
273
|
+
_host_index=_host_index
|
|
274
|
+
)
|
|
275
|
+
|
|
276
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
277
|
+
'200': "CompletenessResponse",
|
|
278
|
+
'422': "AcuteHTTPValidationError",
|
|
279
|
+
}
|
|
280
|
+
response_data = self.api_client.call_api(
|
|
281
|
+
*_param,
|
|
282
|
+
_request_timeout=_request_timeout
|
|
283
|
+
)
|
|
284
|
+
return response_data.response
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
def _get_completeness_serialize(
|
|
288
|
+
self,
|
|
289
|
+
match_grade,
|
|
290
|
+
include_partial,
|
|
291
|
+
period_start,
|
|
292
|
+
period_end,
|
|
293
|
+
_request_auth,
|
|
294
|
+
_content_type,
|
|
295
|
+
_headers,
|
|
296
|
+
_host_index,
|
|
297
|
+
) -> RequestSerialized:
|
|
298
|
+
|
|
299
|
+
_host = None
|
|
300
|
+
|
|
301
|
+
_collection_formats: Dict[str, str] = {
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
_path_params: Dict[str, str] = {}
|
|
305
|
+
_query_params: List[Tuple[str, str]] = []
|
|
306
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
307
|
+
_form_params: List[Tuple[str, str]] = []
|
|
308
|
+
_files: Dict[
|
|
309
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
310
|
+
] = {}
|
|
311
|
+
_body_params: Optional[bytes] = None
|
|
312
|
+
|
|
313
|
+
# process the path parameters
|
|
314
|
+
# process the query parameters
|
|
315
|
+
if match_grade is not None:
|
|
316
|
+
|
|
317
|
+
_query_params.append(('match_grade', match_grade))
|
|
318
|
+
|
|
319
|
+
if include_partial is not None:
|
|
320
|
+
|
|
321
|
+
_query_params.append(('include_partial', include_partial))
|
|
322
|
+
|
|
323
|
+
if period_start is not None:
|
|
324
|
+
if isinstance(period_start, datetime):
|
|
325
|
+
_query_params.append(
|
|
326
|
+
(
|
|
327
|
+
'period_start',
|
|
328
|
+
period_start.strftime(
|
|
329
|
+
self.api_client.configuration.datetime_format
|
|
330
|
+
)
|
|
331
|
+
)
|
|
332
|
+
)
|
|
333
|
+
else:
|
|
334
|
+
_query_params.append(('period_start', period_start))
|
|
335
|
+
|
|
336
|
+
if period_end is not None:
|
|
337
|
+
if isinstance(period_end, datetime):
|
|
338
|
+
_query_params.append(
|
|
339
|
+
(
|
|
340
|
+
'period_end',
|
|
341
|
+
period_end.strftime(
|
|
342
|
+
self.api_client.configuration.datetime_format
|
|
343
|
+
)
|
|
344
|
+
)
|
|
345
|
+
)
|
|
346
|
+
else:
|
|
347
|
+
_query_params.append(('period_end', period_end))
|
|
348
|
+
|
|
349
|
+
# process the header parameters
|
|
350
|
+
# process the form parameters
|
|
351
|
+
# process the body parameter
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
# set the HTTP header `Accept`
|
|
355
|
+
if 'Accept' not in _header_params:
|
|
356
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
357
|
+
[
|
|
358
|
+
'application/json'
|
|
359
|
+
]
|
|
360
|
+
)
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
# authentication setting
|
|
364
|
+
_auth_settings: List[str] = [
|
|
365
|
+
'APIKeyHeader',
|
|
366
|
+
'HTTPBearer'
|
|
367
|
+
]
|
|
368
|
+
|
|
369
|
+
return self.api_client.param_serialize(
|
|
370
|
+
method='GET',
|
|
371
|
+
resource_path='/api/v1/cost/margins/completeness',
|
|
372
|
+
path_params=_path_params,
|
|
373
|
+
query_params=_query_params,
|
|
374
|
+
header_params=_header_params,
|
|
375
|
+
body=_body_params,
|
|
376
|
+
post_params=_form_params,
|
|
377
|
+
files=_files,
|
|
378
|
+
auth_settings=_auth_settings,
|
|
379
|
+
collection_formats=_collection_formats,
|
|
380
|
+
_host=_host,
|
|
381
|
+
_request_auth=_request_auth
|
|
382
|
+
)
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
@validate_call
|
|
388
|
+
def get_credit_cost_ratio_api_v1(
|
|
389
|
+
self,
|
|
390
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
391
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
392
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
393
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
394
|
+
_request_timeout: Union[
|
|
395
|
+
None,
|
|
396
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
397
|
+
Tuple[
|
|
398
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
399
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
400
|
+
]
|
|
401
|
+
] = None,
|
|
402
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
403
|
+
_content_type: Optional[StrictStr] = None,
|
|
404
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
405
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
406
|
+
) -> CreditCostRatioResponse:
|
|
407
|
+
"""Daily valued_burn / total_cost ratio time series
|
|
408
|
+
|
|
409
|
+
Daily time series of valued_burn / total_cost ratio. Uses fully_reconciled events only.
|
|
410
|
+
|
|
411
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
412
|
+
:type match_grade: str
|
|
413
|
+
:param include_partial: Include partially_reconciled billing events
|
|
414
|
+
:type include_partial: bool
|
|
415
|
+
:param period_start: ISO datetime start (inclusive)
|
|
416
|
+
:type period_start: datetime
|
|
417
|
+
:param period_end: ISO datetime end (exclusive)
|
|
418
|
+
:type period_end: datetime
|
|
419
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
420
|
+
number provided, it will be total request
|
|
421
|
+
timeout. It can also be a pair (tuple) of
|
|
422
|
+
(connection, read) timeouts.
|
|
423
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
424
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
425
|
+
request; this effectively ignores the
|
|
426
|
+
authentication in the spec for a single request.
|
|
427
|
+
:type _request_auth: dict, optional
|
|
428
|
+
:param _content_type: force content-type for the request.
|
|
429
|
+
:type _content_type: str, Optional
|
|
430
|
+
:param _headers: set to override the headers for a single
|
|
431
|
+
request; this effectively ignores the headers
|
|
432
|
+
in the spec for a single request.
|
|
433
|
+
:type _headers: dict, optional
|
|
434
|
+
:param _host_index: set to override the host_index for a single
|
|
435
|
+
request; this effectively ignores the host_index
|
|
436
|
+
in the spec for a single request.
|
|
437
|
+
:type _host_index: int, optional
|
|
438
|
+
:return: Returns the result object.
|
|
439
|
+
""" # noqa: E501
|
|
440
|
+
|
|
441
|
+
_param = self._get_credit_cost_ratio_api_v1_serialize(
|
|
442
|
+
match_grade=match_grade,
|
|
443
|
+
include_partial=include_partial,
|
|
444
|
+
period_start=period_start,
|
|
445
|
+
period_end=period_end,
|
|
446
|
+
_request_auth=_request_auth,
|
|
447
|
+
_content_type=_content_type,
|
|
448
|
+
_headers=_headers,
|
|
449
|
+
_host_index=_host_index
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
453
|
+
'200': "CreditCostRatioResponse",
|
|
454
|
+
'422': "AcuteHTTPValidationError",
|
|
455
|
+
}
|
|
456
|
+
response_data = self.api_client.call_api(
|
|
457
|
+
*_param,
|
|
458
|
+
_request_timeout=_request_timeout
|
|
459
|
+
)
|
|
460
|
+
response_data.read()
|
|
461
|
+
return self.api_client.response_deserialize(
|
|
462
|
+
response_data=response_data,
|
|
463
|
+
response_types_map=_response_types_map,
|
|
464
|
+
).data
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
@validate_call
|
|
468
|
+
def get_credit_cost_ratio_api_v1_with_http_info(
|
|
469
|
+
self,
|
|
470
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
471
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
472
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
473
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
474
|
+
_request_timeout: Union[
|
|
475
|
+
None,
|
|
476
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
477
|
+
Tuple[
|
|
478
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
479
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
480
|
+
]
|
|
481
|
+
] = None,
|
|
482
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
483
|
+
_content_type: Optional[StrictStr] = None,
|
|
484
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
485
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
486
|
+
) -> ApiResponse[CreditCostRatioResponse]:
|
|
487
|
+
"""Daily valued_burn / total_cost ratio time series
|
|
488
|
+
|
|
489
|
+
Daily time series of valued_burn / total_cost ratio. Uses fully_reconciled events only.
|
|
490
|
+
|
|
491
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
492
|
+
:type match_grade: str
|
|
493
|
+
:param include_partial: Include partially_reconciled billing events
|
|
494
|
+
:type include_partial: bool
|
|
495
|
+
:param period_start: ISO datetime start (inclusive)
|
|
496
|
+
:type period_start: datetime
|
|
497
|
+
:param period_end: ISO datetime end (exclusive)
|
|
498
|
+
:type period_end: datetime
|
|
499
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
500
|
+
number provided, it will be total request
|
|
501
|
+
timeout. It can also be a pair (tuple) of
|
|
502
|
+
(connection, read) timeouts.
|
|
503
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
504
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
505
|
+
request; this effectively ignores the
|
|
506
|
+
authentication in the spec for a single request.
|
|
507
|
+
:type _request_auth: dict, optional
|
|
508
|
+
:param _content_type: force content-type for the request.
|
|
509
|
+
:type _content_type: str, Optional
|
|
510
|
+
:param _headers: set to override the headers for a single
|
|
511
|
+
request; this effectively ignores the headers
|
|
512
|
+
in the spec for a single request.
|
|
513
|
+
:type _headers: dict, optional
|
|
514
|
+
:param _host_index: set to override the host_index for a single
|
|
515
|
+
request; this effectively ignores the host_index
|
|
516
|
+
in the spec for a single request.
|
|
517
|
+
:type _host_index: int, optional
|
|
518
|
+
:return: Returns the result object.
|
|
519
|
+
""" # noqa: E501
|
|
520
|
+
|
|
521
|
+
_param = self._get_credit_cost_ratio_api_v1_serialize(
|
|
522
|
+
match_grade=match_grade,
|
|
523
|
+
include_partial=include_partial,
|
|
524
|
+
period_start=period_start,
|
|
525
|
+
period_end=period_end,
|
|
526
|
+
_request_auth=_request_auth,
|
|
527
|
+
_content_type=_content_type,
|
|
528
|
+
_headers=_headers,
|
|
529
|
+
_host_index=_host_index
|
|
530
|
+
)
|
|
531
|
+
|
|
532
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
533
|
+
'200': "CreditCostRatioResponse",
|
|
534
|
+
'422': "AcuteHTTPValidationError",
|
|
535
|
+
}
|
|
536
|
+
response_data = self.api_client.call_api(
|
|
537
|
+
*_param,
|
|
538
|
+
_request_timeout=_request_timeout
|
|
539
|
+
)
|
|
540
|
+
response_data.read()
|
|
541
|
+
return self.api_client.response_deserialize(
|
|
542
|
+
response_data=response_data,
|
|
543
|
+
response_types_map=_response_types_map,
|
|
544
|
+
)
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
@validate_call
|
|
548
|
+
def get_credit_cost_ratio_api_v1_without_preload_content(
|
|
549
|
+
self,
|
|
550
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
551
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
552
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
553
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
554
|
+
_request_timeout: Union[
|
|
555
|
+
None,
|
|
556
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
557
|
+
Tuple[
|
|
558
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
559
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
560
|
+
]
|
|
561
|
+
] = None,
|
|
562
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
563
|
+
_content_type: Optional[StrictStr] = None,
|
|
564
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
565
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
566
|
+
) -> RESTResponseType:
|
|
567
|
+
"""Daily valued_burn / total_cost ratio time series
|
|
568
|
+
|
|
569
|
+
Daily time series of valued_burn / total_cost ratio. Uses fully_reconciled events only.
|
|
570
|
+
|
|
571
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
572
|
+
:type match_grade: str
|
|
573
|
+
:param include_partial: Include partially_reconciled billing events
|
|
574
|
+
:type include_partial: bool
|
|
575
|
+
:param period_start: ISO datetime start (inclusive)
|
|
576
|
+
:type period_start: datetime
|
|
577
|
+
:param period_end: ISO datetime end (exclusive)
|
|
578
|
+
:type period_end: datetime
|
|
579
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
580
|
+
number provided, it will be total request
|
|
581
|
+
timeout. It can also be a pair (tuple) of
|
|
582
|
+
(connection, read) timeouts.
|
|
583
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
584
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
585
|
+
request; this effectively ignores the
|
|
586
|
+
authentication in the spec for a single request.
|
|
587
|
+
:type _request_auth: dict, optional
|
|
588
|
+
:param _content_type: force content-type for the request.
|
|
589
|
+
:type _content_type: str, Optional
|
|
590
|
+
:param _headers: set to override the headers for a single
|
|
591
|
+
request; this effectively ignores the headers
|
|
592
|
+
in the spec for a single request.
|
|
593
|
+
:type _headers: dict, optional
|
|
594
|
+
:param _host_index: set to override the host_index for a single
|
|
595
|
+
request; this effectively ignores the host_index
|
|
596
|
+
in the spec for a single request.
|
|
597
|
+
:type _host_index: int, optional
|
|
598
|
+
:return: Returns the result object.
|
|
599
|
+
""" # noqa: E501
|
|
600
|
+
|
|
601
|
+
_param = self._get_credit_cost_ratio_api_v1_serialize(
|
|
602
|
+
match_grade=match_grade,
|
|
603
|
+
include_partial=include_partial,
|
|
604
|
+
period_start=period_start,
|
|
605
|
+
period_end=period_end,
|
|
606
|
+
_request_auth=_request_auth,
|
|
607
|
+
_content_type=_content_type,
|
|
608
|
+
_headers=_headers,
|
|
609
|
+
_host_index=_host_index
|
|
610
|
+
)
|
|
611
|
+
|
|
612
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
613
|
+
'200': "CreditCostRatioResponse",
|
|
614
|
+
'422': "AcuteHTTPValidationError",
|
|
615
|
+
}
|
|
616
|
+
response_data = self.api_client.call_api(
|
|
617
|
+
*_param,
|
|
618
|
+
_request_timeout=_request_timeout
|
|
619
|
+
)
|
|
620
|
+
return response_data.response
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
def _get_credit_cost_ratio_api_v1_serialize(
|
|
624
|
+
self,
|
|
625
|
+
match_grade,
|
|
626
|
+
include_partial,
|
|
627
|
+
period_start,
|
|
628
|
+
period_end,
|
|
629
|
+
_request_auth,
|
|
630
|
+
_content_type,
|
|
631
|
+
_headers,
|
|
632
|
+
_host_index,
|
|
633
|
+
) -> RequestSerialized:
|
|
634
|
+
|
|
635
|
+
_host = None
|
|
636
|
+
|
|
637
|
+
_collection_formats: Dict[str, str] = {
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
_path_params: Dict[str, str] = {}
|
|
641
|
+
_query_params: List[Tuple[str, str]] = []
|
|
642
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
643
|
+
_form_params: List[Tuple[str, str]] = []
|
|
644
|
+
_files: Dict[
|
|
645
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
646
|
+
] = {}
|
|
647
|
+
_body_params: Optional[bytes] = None
|
|
648
|
+
|
|
649
|
+
# process the path parameters
|
|
650
|
+
# process the query parameters
|
|
651
|
+
if match_grade is not None:
|
|
652
|
+
|
|
653
|
+
_query_params.append(('match_grade', match_grade))
|
|
654
|
+
|
|
655
|
+
if include_partial is not None:
|
|
656
|
+
|
|
657
|
+
_query_params.append(('include_partial', include_partial))
|
|
658
|
+
|
|
659
|
+
if period_start is not None:
|
|
660
|
+
if isinstance(period_start, datetime):
|
|
661
|
+
_query_params.append(
|
|
662
|
+
(
|
|
663
|
+
'period_start',
|
|
664
|
+
period_start.strftime(
|
|
665
|
+
self.api_client.configuration.datetime_format
|
|
666
|
+
)
|
|
667
|
+
)
|
|
668
|
+
)
|
|
669
|
+
else:
|
|
670
|
+
_query_params.append(('period_start', period_start))
|
|
671
|
+
|
|
672
|
+
if period_end is not None:
|
|
673
|
+
if isinstance(period_end, datetime):
|
|
674
|
+
_query_params.append(
|
|
675
|
+
(
|
|
676
|
+
'period_end',
|
|
677
|
+
period_end.strftime(
|
|
678
|
+
self.api_client.configuration.datetime_format
|
|
679
|
+
)
|
|
680
|
+
)
|
|
681
|
+
)
|
|
682
|
+
else:
|
|
683
|
+
_query_params.append(('period_end', period_end))
|
|
684
|
+
|
|
685
|
+
# process the header parameters
|
|
686
|
+
# process the form parameters
|
|
687
|
+
# process the body parameter
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
# set the HTTP header `Accept`
|
|
691
|
+
if 'Accept' not in _header_params:
|
|
692
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
693
|
+
[
|
|
694
|
+
'application/json'
|
|
695
|
+
]
|
|
696
|
+
)
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
# authentication setting
|
|
700
|
+
_auth_settings: List[str] = [
|
|
701
|
+
'APIKeyHeader',
|
|
702
|
+
'HTTPBearer'
|
|
703
|
+
]
|
|
704
|
+
|
|
705
|
+
return self.api_client.param_serialize(
|
|
706
|
+
method='GET',
|
|
707
|
+
resource_path='/api/v1/cost/margins/credit-cost-ratio',
|
|
708
|
+
path_params=_path_params,
|
|
709
|
+
query_params=_query_params,
|
|
710
|
+
header_params=_header_params,
|
|
711
|
+
body=_body_params,
|
|
712
|
+
post_params=_form_params,
|
|
713
|
+
files=_files,
|
|
714
|
+
auth_settings=_auth_settings,
|
|
715
|
+
collection_formats=_collection_formats,
|
|
716
|
+
_host=_host,
|
|
717
|
+
_request_auth=_request_auth
|
|
718
|
+
)
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
@validate_call
|
|
724
|
+
def get_margin_by_customer_api(
|
|
725
|
+
self,
|
|
726
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
727
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
728
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
729
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
730
|
+
_request_timeout: Union[
|
|
731
|
+
None,
|
|
732
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
733
|
+
Tuple[
|
|
734
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
735
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
736
|
+
]
|
|
737
|
+
] = None,
|
|
738
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
739
|
+
_content_type: Optional[StrictStr] = None,
|
|
740
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
741
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
742
|
+
) -> CustomerMarginResponse:
|
|
743
|
+
"""Margin per customer
|
|
744
|
+
|
|
745
|
+
Returns margin aggregated per customer_id. Only includes fully_reconciled billing events by default (include_partial=false). Zero-valued-burn: margin_pct=null, margin_reason='zero_valued_burn'.
|
|
746
|
+
|
|
747
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
748
|
+
:type match_grade: str
|
|
749
|
+
:param include_partial: Include partially_reconciled billing events
|
|
750
|
+
:type include_partial: bool
|
|
751
|
+
:param period_start: ISO datetime start (inclusive)
|
|
752
|
+
:type period_start: datetime
|
|
753
|
+
:param period_end: ISO datetime end (exclusive)
|
|
754
|
+
:type period_end: datetime
|
|
755
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
756
|
+
number provided, it will be total request
|
|
757
|
+
timeout. It can also be a pair (tuple) of
|
|
758
|
+
(connection, read) timeouts.
|
|
759
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
760
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
761
|
+
request; this effectively ignores the
|
|
762
|
+
authentication in the spec for a single request.
|
|
763
|
+
:type _request_auth: dict, optional
|
|
764
|
+
:param _content_type: force content-type for the request.
|
|
765
|
+
:type _content_type: str, Optional
|
|
766
|
+
:param _headers: set to override the headers for a single
|
|
767
|
+
request; this effectively ignores the headers
|
|
768
|
+
in the spec for a single request.
|
|
769
|
+
:type _headers: dict, optional
|
|
770
|
+
:param _host_index: set to override the host_index for a single
|
|
771
|
+
request; this effectively ignores the host_index
|
|
772
|
+
in the spec for a single request.
|
|
773
|
+
:type _host_index: int, optional
|
|
774
|
+
:return: Returns the result object.
|
|
775
|
+
""" # noqa: E501
|
|
776
|
+
|
|
777
|
+
_param = self._get_margin_by_customer_api_serialize(
|
|
778
|
+
match_grade=match_grade,
|
|
779
|
+
include_partial=include_partial,
|
|
780
|
+
period_start=period_start,
|
|
781
|
+
period_end=period_end,
|
|
782
|
+
_request_auth=_request_auth,
|
|
783
|
+
_content_type=_content_type,
|
|
784
|
+
_headers=_headers,
|
|
785
|
+
_host_index=_host_index
|
|
786
|
+
)
|
|
787
|
+
|
|
788
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
789
|
+
'200': "CustomerMarginResponse",
|
|
790
|
+
'422': "AcuteHTTPValidationError",
|
|
791
|
+
}
|
|
792
|
+
response_data = self.api_client.call_api(
|
|
793
|
+
*_param,
|
|
794
|
+
_request_timeout=_request_timeout
|
|
795
|
+
)
|
|
796
|
+
response_data.read()
|
|
797
|
+
return self.api_client.response_deserialize(
|
|
798
|
+
response_data=response_data,
|
|
799
|
+
response_types_map=_response_types_map,
|
|
800
|
+
).data
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
@validate_call
|
|
804
|
+
def get_margin_by_customer_api_with_http_info(
|
|
805
|
+
self,
|
|
806
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
807
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
808
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
809
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
810
|
+
_request_timeout: Union[
|
|
811
|
+
None,
|
|
812
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
813
|
+
Tuple[
|
|
814
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
815
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
816
|
+
]
|
|
817
|
+
] = None,
|
|
818
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
819
|
+
_content_type: Optional[StrictStr] = None,
|
|
820
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
821
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
822
|
+
) -> ApiResponse[CustomerMarginResponse]:
|
|
823
|
+
"""Margin per customer
|
|
824
|
+
|
|
825
|
+
Returns margin aggregated per customer_id. Only includes fully_reconciled billing events by default (include_partial=false). Zero-valued-burn: margin_pct=null, margin_reason='zero_valued_burn'.
|
|
826
|
+
|
|
827
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
828
|
+
:type match_grade: str
|
|
829
|
+
:param include_partial: Include partially_reconciled billing events
|
|
830
|
+
:type include_partial: bool
|
|
831
|
+
:param period_start: ISO datetime start (inclusive)
|
|
832
|
+
:type period_start: datetime
|
|
833
|
+
:param period_end: ISO datetime end (exclusive)
|
|
834
|
+
:type period_end: datetime
|
|
835
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
836
|
+
number provided, it will be total request
|
|
837
|
+
timeout. It can also be a pair (tuple) of
|
|
838
|
+
(connection, read) timeouts.
|
|
839
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
840
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
841
|
+
request; this effectively ignores the
|
|
842
|
+
authentication in the spec for a single request.
|
|
843
|
+
:type _request_auth: dict, optional
|
|
844
|
+
:param _content_type: force content-type for the request.
|
|
845
|
+
:type _content_type: str, Optional
|
|
846
|
+
:param _headers: set to override the headers for a single
|
|
847
|
+
request; this effectively ignores the headers
|
|
848
|
+
in the spec for a single request.
|
|
849
|
+
:type _headers: dict, optional
|
|
850
|
+
:param _host_index: set to override the host_index for a single
|
|
851
|
+
request; this effectively ignores the host_index
|
|
852
|
+
in the spec for a single request.
|
|
853
|
+
:type _host_index: int, optional
|
|
854
|
+
:return: Returns the result object.
|
|
855
|
+
""" # noqa: E501
|
|
856
|
+
|
|
857
|
+
_param = self._get_margin_by_customer_api_serialize(
|
|
858
|
+
match_grade=match_grade,
|
|
859
|
+
include_partial=include_partial,
|
|
860
|
+
period_start=period_start,
|
|
861
|
+
period_end=period_end,
|
|
862
|
+
_request_auth=_request_auth,
|
|
863
|
+
_content_type=_content_type,
|
|
864
|
+
_headers=_headers,
|
|
865
|
+
_host_index=_host_index
|
|
866
|
+
)
|
|
867
|
+
|
|
868
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
869
|
+
'200': "CustomerMarginResponse",
|
|
870
|
+
'422': "AcuteHTTPValidationError",
|
|
871
|
+
}
|
|
872
|
+
response_data = self.api_client.call_api(
|
|
873
|
+
*_param,
|
|
874
|
+
_request_timeout=_request_timeout
|
|
875
|
+
)
|
|
876
|
+
response_data.read()
|
|
877
|
+
return self.api_client.response_deserialize(
|
|
878
|
+
response_data=response_data,
|
|
879
|
+
response_types_map=_response_types_map,
|
|
880
|
+
)
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
@validate_call
|
|
884
|
+
def get_margin_by_customer_api_without_preload_content(
|
|
885
|
+
self,
|
|
886
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
887
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
888
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
889
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
890
|
+
_request_timeout: Union[
|
|
891
|
+
None,
|
|
892
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
893
|
+
Tuple[
|
|
894
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
895
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
896
|
+
]
|
|
897
|
+
] = None,
|
|
898
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
899
|
+
_content_type: Optional[StrictStr] = None,
|
|
900
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
901
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
902
|
+
) -> RESTResponseType:
|
|
903
|
+
"""Margin per customer
|
|
904
|
+
|
|
905
|
+
Returns margin aggregated per customer_id. Only includes fully_reconciled billing events by default (include_partial=false). Zero-valued-burn: margin_pct=null, margin_reason='zero_valued_burn'.
|
|
906
|
+
|
|
907
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
908
|
+
:type match_grade: str
|
|
909
|
+
:param include_partial: Include partially_reconciled billing events
|
|
910
|
+
:type include_partial: bool
|
|
911
|
+
:param period_start: ISO datetime start (inclusive)
|
|
912
|
+
:type period_start: datetime
|
|
913
|
+
:param period_end: ISO datetime end (exclusive)
|
|
914
|
+
:type period_end: datetime
|
|
915
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
916
|
+
number provided, it will be total request
|
|
917
|
+
timeout. It can also be a pair (tuple) of
|
|
918
|
+
(connection, read) timeouts.
|
|
919
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
920
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
921
|
+
request; this effectively ignores the
|
|
922
|
+
authentication in the spec for a single request.
|
|
923
|
+
:type _request_auth: dict, optional
|
|
924
|
+
:param _content_type: force content-type for the request.
|
|
925
|
+
:type _content_type: str, Optional
|
|
926
|
+
:param _headers: set to override the headers for a single
|
|
927
|
+
request; this effectively ignores the headers
|
|
928
|
+
in the spec for a single request.
|
|
929
|
+
:type _headers: dict, optional
|
|
930
|
+
:param _host_index: set to override the host_index for a single
|
|
931
|
+
request; this effectively ignores the host_index
|
|
932
|
+
in the spec for a single request.
|
|
933
|
+
:type _host_index: int, optional
|
|
934
|
+
:return: Returns the result object.
|
|
935
|
+
""" # noqa: E501
|
|
936
|
+
|
|
937
|
+
_param = self._get_margin_by_customer_api_serialize(
|
|
938
|
+
match_grade=match_grade,
|
|
939
|
+
include_partial=include_partial,
|
|
940
|
+
period_start=period_start,
|
|
941
|
+
period_end=period_end,
|
|
942
|
+
_request_auth=_request_auth,
|
|
943
|
+
_content_type=_content_type,
|
|
944
|
+
_headers=_headers,
|
|
945
|
+
_host_index=_host_index
|
|
946
|
+
)
|
|
947
|
+
|
|
948
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
949
|
+
'200': "CustomerMarginResponse",
|
|
950
|
+
'422': "AcuteHTTPValidationError",
|
|
951
|
+
}
|
|
952
|
+
response_data = self.api_client.call_api(
|
|
953
|
+
*_param,
|
|
954
|
+
_request_timeout=_request_timeout
|
|
955
|
+
)
|
|
956
|
+
return response_data.response
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
def _get_margin_by_customer_api_serialize(
|
|
960
|
+
self,
|
|
961
|
+
match_grade,
|
|
962
|
+
include_partial,
|
|
963
|
+
period_start,
|
|
964
|
+
period_end,
|
|
965
|
+
_request_auth,
|
|
966
|
+
_content_type,
|
|
967
|
+
_headers,
|
|
968
|
+
_host_index,
|
|
969
|
+
) -> RequestSerialized:
|
|
970
|
+
|
|
971
|
+
_host = None
|
|
972
|
+
|
|
973
|
+
_collection_formats: Dict[str, str] = {
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
_path_params: Dict[str, str] = {}
|
|
977
|
+
_query_params: List[Tuple[str, str]] = []
|
|
978
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
979
|
+
_form_params: List[Tuple[str, str]] = []
|
|
980
|
+
_files: Dict[
|
|
981
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
982
|
+
] = {}
|
|
983
|
+
_body_params: Optional[bytes] = None
|
|
984
|
+
|
|
985
|
+
# process the path parameters
|
|
986
|
+
# process the query parameters
|
|
987
|
+
if match_grade is not None:
|
|
988
|
+
|
|
989
|
+
_query_params.append(('match_grade', match_grade))
|
|
990
|
+
|
|
991
|
+
if include_partial is not None:
|
|
992
|
+
|
|
993
|
+
_query_params.append(('include_partial', include_partial))
|
|
994
|
+
|
|
995
|
+
if period_start is not None:
|
|
996
|
+
if isinstance(period_start, datetime):
|
|
997
|
+
_query_params.append(
|
|
998
|
+
(
|
|
999
|
+
'period_start',
|
|
1000
|
+
period_start.strftime(
|
|
1001
|
+
self.api_client.configuration.datetime_format
|
|
1002
|
+
)
|
|
1003
|
+
)
|
|
1004
|
+
)
|
|
1005
|
+
else:
|
|
1006
|
+
_query_params.append(('period_start', period_start))
|
|
1007
|
+
|
|
1008
|
+
if period_end is not None:
|
|
1009
|
+
if isinstance(period_end, datetime):
|
|
1010
|
+
_query_params.append(
|
|
1011
|
+
(
|
|
1012
|
+
'period_end',
|
|
1013
|
+
period_end.strftime(
|
|
1014
|
+
self.api_client.configuration.datetime_format
|
|
1015
|
+
)
|
|
1016
|
+
)
|
|
1017
|
+
)
|
|
1018
|
+
else:
|
|
1019
|
+
_query_params.append(('period_end', period_end))
|
|
1020
|
+
|
|
1021
|
+
# process the header parameters
|
|
1022
|
+
# process the form parameters
|
|
1023
|
+
# process the body parameter
|
|
1024
|
+
|
|
1025
|
+
|
|
1026
|
+
# set the HTTP header `Accept`
|
|
1027
|
+
if 'Accept' not in _header_params:
|
|
1028
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
1029
|
+
[
|
|
1030
|
+
'application/json'
|
|
1031
|
+
]
|
|
1032
|
+
)
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
# authentication setting
|
|
1036
|
+
_auth_settings: List[str] = [
|
|
1037
|
+
'APIKeyHeader',
|
|
1038
|
+
'HTTPBearer'
|
|
1039
|
+
]
|
|
1040
|
+
|
|
1041
|
+
return self.api_client.param_serialize(
|
|
1042
|
+
method='GET',
|
|
1043
|
+
resource_path='/api/v1/cost/margins/by-customer',
|
|
1044
|
+
path_params=_path_params,
|
|
1045
|
+
query_params=_query_params,
|
|
1046
|
+
header_params=_header_params,
|
|
1047
|
+
body=_body_params,
|
|
1048
|
+
post_params=_form_params,
|
|
1049
|
+
files=_files,
|
|
1050
|
+
auth_settings=_auth_settings,
|
|
1051
|
+
collection_formats=_collection_formats,
|
|
1052
|
+
_host=_host,
|
|
1053
|
+
_request_auth=_request_auth
|
|
1054
|
+
)
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
|
|
1058
|
+
|
|
1059
|
+
@validate_call
|
|
1060
|
+
def get_margin_by_feature_api(
|
|
1061
|
+
self,
|
|
1062
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
1063
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
1064
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
1065
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
1066
|
+
_request_timeout: Union[
|
|
1067
|
+
None,
|
|
1068
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1069
|
+
Tuple[
|
|
1070
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1071
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
1072
|
+
]
|
|
1073
|
+
] = None,
|
|
1074
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
1075
|
+
_content_type: Optional[StrictStr] = None,
|
|
1076
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1077
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1078
|
+
) -> FeatureMarginResponse:
|
|
1079
|
+
"""Margin per feature
|
|
1080
|
+
|
|
1081
|
+
Returns margin aggregated per feature_id.
|
|
1082
|
+
|
|
1083
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
1084
|
+
:type match_grade: str
|
|
1085
|
+
:param include_partial: Include partially_reconciled billing events
|
|
1086
|
+
:type include_partial: bool
|
|
1087
|
+
:param period_start: ISO datetime start (inclusive)
|
|
1088
|
+
:type period_start: datetime
|
|
1089
|
+
:param period_end: ISO datetime end (exclusive)
|
|
1090
|
+
:type period_end: datetime
|
|
1091
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
1092
|
+
number provided, it will be total request
|
|
1093
|
+
timeout. It can also be a pair (tuple) of
|
|
1094
|
+
(connection, read) timeouts.
|
|
1095
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
1096
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
1097
|
+
request; this effectively ignores the
|
|
1098
|
+
authentication in the spec for a single request.
|
|
1099
|
+
:type _request_auth: dict, optional
|
|
1100
|
+
:param _content_type: force content-type for the request.
|
|
1101
|
+
:type _content_type: str, Optional
|
|
1102
|
+
:param _headers: set to override the headers for a single
|
|
1103
|
+
request; this effectively ignores the headers
|
|
1104
|
+
in the spec for a single request.
|
|
1105
|
+
:type _headers: dict, optional
|
|
1106
|
+
:param _host_index: set to override the host_index for a single
|
|
1107
|
+
request; this effectively ignores the host_index
|
|
1108
|
+
in the spec for a single request.
|
|
1109
|
+
:type _host_index: int, optional
|
|
1110
|
+
:return: Returns the result object.
|
|
1111
|
+
""" # noqa: E501
|
|
1112
|
+
|
|
1113
|
+
_param = self._get_margin_by_feature_api_serialize(
|
|
1114
|
+
match_grade=match_grade,
|
|
1115
|
+
include_partial=include_partial,
|
|
1116
|
+
period_start=period_start,
|
|
1117
|
+
period_end=period_end,
|
|
1118
|
+
_request_auth=_request_auth,
|
|
1119
|
+
_content_type=_content_type,
|
|
1120
|
+
_headers=_headers,
|
|
1121
|
+
_host_index=_host_index
|
|
1122
|
+
)
|
|
1123
|
+
|
|
1124
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
1125
|
+
'200': "FeatureMarginResponse",
|
|
1126
|
+
'422': "AcuteHTTPValidationError",
|
|
1127
|
+
}
|
|
1128
|
+
response_data = self.api_client.call_api(
|
|
1129
|
+
*_param,
|
|
1130
|
+
_request_timeout=_request_timeout
|
|
1131
|
+
)
|
|
1132
|
+
response_data.read()
|
|
1133
|
+
return self.api_client.response_deserialize(
|
|
1134
|
+
response_data=response_data,
|
|
1135
|
+
response_types_map=_response_types_map,
|
|
1136
|
+
).data
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
@validate_call
|
|
1140
|
+
def get_margin_by_feature_api_with_http_info(
|
|
1141
|
+
self,
|
|
1142
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
1143
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
1144
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
1145
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
1146
|
+
_request_timeout: Union[
|
|
1147
|
+
None,
|
|
1148
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1149
|
+
Tuple[
|
|
1150
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1151
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
1152
|
+
]
|
|
1153
|
+
] = None,
|
|
1154
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
1155
|
+
_content_type: Optional[StrictStr] = None,
|
|
1156
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1157
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1158
|
+
) -> ApiResponse[FeatureMarginResponse]:
|
|
1159
|
+
"""Margin per feature
|
|
1160
|
+
|
|
1161
|
+
Returns margin aggregated per feature_id.
|
|
1162
|
+
|
|
1163
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
1164
|
+
:type match_grade: str
|
|
1165
|
+
:param include_partial: Include partially_reconciled billing events
|
|
1166
|
+
:type include_partial: bool
|
|
1167
|
+
:param period_start: ISO datetime start (inclusive)
|
|
1168
|
+
:type period_start: datetime
|
|
1169
|
+
:param period_end: ISO datetime end (exclusive)
|
|
1170
|
+
:type period_end: datetime
|
|
1171
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
1172
|
+
number provided, it will be total request
|
|
1173
|
+
timeout. It can also be a pair (tuple) of
|
|
1174
|
+
(connection, read) timeouts.
|
|
1175
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
1176
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
1177
|
+
request; this effectively ignores the
|
|
1178
|
+
authentication in the spec for a single request.
|
|
1179
|
+
:type _request_auth: dict, optional
|
|
1180
|
+
:param _content_type: force content-type for the request.
|
|
1181
|
+
:type _content_type: str, Optional
|
|
1182
|
+
:param _headers: set to override the headers for a single
|
|
1183
|
+
request; this effectively ignores the headers
|
|
1184
|
+
in the spec for a single request.
|
|
1185
|
+
:type _headers: dict, optional
|
|
1186
|
+
:param _host_index: set to override the host_index for a single
|
|
1187
|
+
request; this effectively ignores the host_index
|
|
1188
|
+
in the spec for a single request.
|
|
1189
|
+
:type _host_index: int, optional
|
|
1190
|
+
:return: Returns the result object.
|
|
1191
|
+
""" # noqa: E501
|
|
1192
|
+
|
|
1193
|
+
_param = self._get_margin_by_feature_api_serialize(
|
|
1194
|
+
match_grade=match_grade,
|
|
1195
|
+
include_partial=include_partial,
|
|
1196
|
+
period_start=period_start,
|
|
1197
|
+
period_end=period_end,
|
|
1198
|
+
_request_auth=_request_auth,
|
|
1199
|
+
_content_type=_content_type,
|
|
1200
|
+
_headers=_headers,
|
|
1201
|
+
_host_index=_host_index
|
|
1202
|
+
)
|
|
1203
|
+
|
|
1204
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
1205
|
+
'200': "FeatureMarginResponse",
|
|
1206
|
+
'422': "AcuteHTTPValidationError",
|
|
1207
|
+
}
|
|
1208
|
+
response_data = self.api_client.call_api(
|
|
1209
|
+
*_param,
|
|
1210
|
+
_request_timeout=_request_timeout
|
|
1211
|
+
)
|
|
1212
|
+
response_data.read()
|
|
1213
|
+
return self.api_client.response_deserialize(
|
|
1214
|
+
response_data=response_data,
|
|
1215
|
+
response_types_map=_response_types_map,
|
|
1216
|
+
)
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
@validate_call
|
|
1220
|
+
def get_margin_by_feature_api_without_preload_content(
|
|
1221
|
+
self,
|
|
1222
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
1223
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
1224
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
1225
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
1226
|
+
_request_timeout: Union[
|
|
1227
|
+
None,
|
|
1228
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1229
|
+
Tuple[
|
|
1230
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1231
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
1232
|
+
]
|
|
1233
|
+
] = None,
|
|
1234
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
1235
|
+
_content_type: Optional[StrictStr] = None,
|
|
1236
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1237
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1238
|
+
) -> RESTResponseType:
|
|
1239
|
+
"""Margin per feature
|
|
1240
|
+
|
|
1241
|
+
Returns margin aggregated per feature_id.
|
|
1242
|
+
|
|
1243
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
1244
|
+
:type match_grade: str
|
|
1245
|
+
:param include_partial: Include partially_reconciled billing events
|
|
1246
|
+
:type include_partial: bool
|
|
1247
|
+
:param period_start: ISO datetime start (inclusive)
|
|
1248
|
+
:type period_start: datetime
|
|
1249
|
+
:param period_end: ISO datetime end (exclusive)
|
|
1250
|
+
:type period_end: datetime
|
|
1251
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
1252
|
+
number provided, it will be total request
|
|
1253
|
+
timeout. It can also be a pair (tuple) of
|
|
1254
|
+
(connection, read) timeouts.
|
|
1255
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
1256
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
1257
|
+
request; this effectively ignores the
|
|
1258
|
+
authentication in the spec for a single request.
|
|
1259
|
+
:type _request_auth: dict, optional
|
|
1260
|
+
:param _content_type: force content-type for the request.
|
|
1261
|
+
:type _content_type: str, Optional
|
|
1262
|
+
:param _headers: set to override the headers for a single
|
|
1263
|
+
request; this effectively ignores the headers
|
|
1264
|
+
in the spec for a single request.
|
|
1265
|
+
:type _headers: dict, optional
|
|
1266
|
+
:param _host_index: set to override the host_index for a single
|
|
1267
|
+
request; this effectively ignores the host_index
|
|
1268
|
+
in the spec for a single request.
|
|
1269
|
+
:type _host_index: int, optional
|
|
1270
|
+
:return: Returns the result object.
|
|
1271
|
+
""" # noqa: E501
|
|
1272
|
+
|
|
1273
|
+
_param = self._get_margin_by_feature_api_serialize(
|
|
1274
|
+
match_grade=match_grade,
|
|
1275
|
+
include_partial=include_partial,
|
|
1276
|
+
period_start=period_start,
|
|
1277
|
+
period_end=period_end,
|
|
1278
|
+
_request_auth=_request_auth,
|
|
1279
|
+
_content_type=_content_type,
|
|
1280
|
+
_headers=_headers,
|
|
1281
|
+
_host_index=_host_index
|
|
1282
|
+
)
|
|
1283
|
+
|
|
1284
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
1285
|
+
'200': "FeatureMarginResponse",
|
|
1286
|
+
'422': "AcuteHTTPValidationError",
|
|
1287
|
+
}
|
|
1288
|
+
response_data = self.api_client.call_api(
|
|
1289
|
+
*_param,
|
|
1290
|
+
_request_timeout=_request_timeout
|
|
1291
|
+
)
|
|
1292
|
+
return response_data.response
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
def _get_margin_by_feature_api_serialize(
|
|
1296
|
+
self,
|
|
1297
|
+
match_grade,
|
|
1298
|
+
include_partial,
|
|
1299
|
+
period_start,
|
|
1300
|
+
period_end,
|
|
1301
|
+
_request_auth,
|
|
1302
|
+
_content_type,
|
|
1303
|
+
_headers,
|
|
1304
|
+
_host_index,
|
|
1305
|
+
) -> RequestSerialized:
|
|
1306
|
+
|
|
1307
|
+
_host = None
|
|
1308
|
+
|
|
1309
|
+
_collection_formats: Dict[str, str] = {
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
_path_params: Dict[str, str] = {}
|
|
1313
|
+
_query_params: List[Tuple[str, str]] = []
|
|
1314
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
1315
|
+
_form_params: List[Tuple[str, str]] = []
|
|
1316
|
+
_files: Dict[
|
|
1317
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
1318
|
+
] = {}
|
|
1319
|
+
_body_params: Optional[bytes] = None
|
|
1320
|
+
|
|
1321
|
+
# process the path parameters
|
|
1322
|
+
# process the query parameters
|
|
1323
|
+
if match_grade is not None:
|
|
1324
|
+
|
|
1325
|
+
_query_params.append(('match_grade', match_grade))
|
|
1326
|
+
|
|
1327
|
+
if include_partial is not None:
|
|
1328
|
+
|
|
1329
|
+
_query_params.append(('include_partial', include_partial))
|
|
1330
|
+
|
|
1331
|
+
if period_start is not None:
|
|
1332
|
+
if isinstance(period_start, datetime):
|
|
1333
|
+
_query_params.append(
|
|
1334
|
+
(
|
|
1335
|
+
'period_start',
|
|
1336
|
+
period_start.strftime(
|
|
1337
|
+
self.api_client.configuration.datetime_format
|
|
1338
|
+
)
|
|
1339
|
+
)
|
|
1340
|
+
)
|
|
1341
|
+
else:
|
|
1342
|
+
_query_params.append(('period_start', period_start))
|
|
1343
|
+
|
|
1344
|
+
if period_end is not None:
|
|
1345
|
+
if isinstance(period_end, datetime):
|
|
1346
|
+
_query_params.append(
|
|
1347
|
+
(
|
|
1348
|
+
'period_end',
|
|
1349
|
+
period_end.strftime(
|
|
1350
|
+
self.api_client.configuration.datetime_format
|
|
1351
|
+
)
|
|
1352
|
+
)
|
|
1353
|
+
)
|
|
1354
|
+
else:
|
|
1355
|
+
_query_params.append(('period_end', period_end))
|
|
1356
|
+
|
|
1357
|
+
# process the header parameters
|
|
1358
|
+
# process the form parameters
|
|
1359
|
+
# process the body parameter
|
|
1360
|
+
|
|
1361
|
+
|
|
1362
|
+
# set the HTTP header `Accept`
|
|
1363
|
+
if 'Accept' not in _header_params:
|
|
1364
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
1365
|
+
[
|
|
1366
|
+
'application/json'
|
|
1367
|
+
]
|
|
1368
|
+
)
|
|
1369
|
+
|
|
1370
|
+
|
|
1371
|
+
# authentication setting
|
|
1372
|
+
_auth_settings: List[str] = [
|
|
1373
|
+
'APIKeyHeader',
|
|
1374
|
+
'HTTPBearer'
|
|
1375
|
+
]
|
|
1376
|
+
|
|
1377
|
+
return self.api_client.param_serialize(
|
|
1378
|
+
method='GET',
|
|
1379
|
+
resource_path='/api/v1/cost/margins/by-feature',
|
|
1380
|
+
path_params=_path_params,
|
|
1381
|
+
query_params=_query_params,
|
|
1382
|
+
header_params=_header_params,
|
|
1383
|
+
body=_body_params,
|
|
1384
|
+
post_params=_form_params,
|
|
1385
|
+
files=_files,
|
|
1386
|
+
auth_settings=_auth_settings,
|
|
1387
|
+
collection_formats=_collection_formats,
|
|
1388
|
+
_host=_host,
|
|
1389
|
+
_request_auth=_request_auth
|
|
1390
|
+
)
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
|
|
1394
|
+
|
|
1395
|
+
@validate_call
|
|
1396
|
+
def get_margin_snapshot(
|
|
1397
|
+
self,
|
|
1398
|
+
period_type: Annotated[Optional[StrictStr], Field(description="'daily', 'weekly', or 'monthly'")] = None,
|
|
1399
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
1400
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
1401
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
1402
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
1403
|
+
_request_timeout: Union[
|
|
1404
|
+
None,
|
|
1405
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1406
|
+
Tuple[
|
|
1407
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1408
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
1409
|
+
]
|
|
1410
|
+
] = None,
|
|
1411
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
1412
|
+
_content_type: Optional[StrictStr] = None,
|
|
1413
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1414
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1415
|
+
) -> MarginSnapshotResponse:
|
|
1416
|
+
"""Period margin snapshot with reconciliation breakdown
|
|
1417
|
+
|
|
1418
|
+
Returns margin snapshot for the given period. Includes per-billing-event reconciliation status breakdown. Zero-valued-burn events excluded from margin_pct but included in cost totals.
|
|
1419
|
+
|
|
1420
|
+
:param period_type: 'daily', 'weekly', or 'monthly'
|
|
1421
|
+
:type period_type: str
|
|
1422
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
1423
|
+
:type match_grade: str
|
|
1424
|
+
:param include_partial: Include partially_reconciled billing events
|
|
1425
|
+
:type include_partial: bool
|
|
1426
|
+
:param period_start: ISO datetime start (inclusive)
|
|
1427
|
+
:type period_start: datetime
|
|
1428
|
+
:param period_end: ISO datetime end (exclusive)
|
|
1429
|
+
:type period_end: datetime
|
|
1430
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
1431
|
+
number provided, it will be total request
|
|
1432
|
+
timeout. It can also be a pair (tuple) of
|
|
1433
|
+
(connection, read) timeouts.
|
|
1434
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
1435
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
1436
|
+
request; this effectively ignores the
|
|
1437
|
+
authentication in the spec for a single request.
|
|
1438
|
+
:type _request_auth: dict, optional
|
|
1439
|
+
:param _content_type: force content-type for the request.
|
|
1440
|
+
:type _content_type: str, Optional
|
|
1441
|
+
:param _headers: set to override the headers for a single
|
|
1442
|
+
request; this effectively ignores the headers
|
|
1443
|
+
in the spec for a single request.
|
|
1444
|
+
:type _headers: dict, optional
|
|
1445
|
+
:param _host_index: set to override the host_index for a single
|
|
1446
|
+
request; this effectively ignores the host_index
|
|
1447
|
+
in the spec for a single request.
|
|
1448
|
+
:type _host_index: int, optional
|
|
1449
|
+
:return: Returns the result object.
|
|
1450
|
+
""" # noqa: E501
|
|
1451
|
+
|
|
1452
|
+
_param = self._get_margin_snapshot_serialize(
|
|
1453
|
+
period_type=period_type,
|
|
1454
|
+
match_grade=match_grade,
|
|
1455
|
+
include_partial=include_partial,
|
|
1456
|
+
period_start=period_start,
|
|
1457
|
+
period_end=period_end,
|
|
1458
|
+
_request_auth=_request_auth,
|
|
1459
|
+
_content_type=_content_type,
|
|
1460
|
+
_headers=_headers,
|
|
1461
|
+
_host_index=_host_index
|
|
1462
|
+
)
|
|
1463
|
+
|
|
1464
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
1465
|
+
'200': "MarginSnapshotResponse",
|
|
1466
|
+
'422': "AcuteHTTPValidationError",
|
|
1467
|
+
}
|
|
1468
|
+
response_data = self.api_client.call_api(
|
|
1469
|
+
*_param,
|
|
1470
|
+
_request_timeout=_request_timeout
|
|
1471
|
+
)
|
|
1472
|
+
response_data.read()
|
|
1473
|
+
return self.api_client.response_deserialize(
|
|
1474
|
+
response_data=response_data,
|
|
1475
|
+
response_types_map=_response_types_map,
|
|
1476
|
+
).data
|
|
1477
|
+
|
|
1478
|
+
|
|
1479
|
+
@validate_call
|
|
1480
|
+
def get_margin_snapshot_with_http_info(
|
|
1481
|
+
self,
|
|
1482
|
+
period_type: Annotated[Optional[StrictStr], Field(description="'daily', 'weekly', or 'monthly'")] = None,
|
|
1483
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
1484
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
1485
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
1486
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
1487
|
+
_request_timeout: Union[
|
|
1488
|
+
None,
|
|
1489
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1490
|
+
Tuple[
|
|
1491
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1492
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
1493
|
+
]
|
|
1494
|
+
] = None,
|
|
1495
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
1496
|
+
_content_type: Optional[StrictStr] = None,
|
|
1497
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1498
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1499
|
+
) -> ApiResponse[MarginSnapshotResponse]:
|
|
1500
|
+
"""Period margin snapshot with reconciliation breakdown
|
|
1501
|
+
|
|
1502
|
+
Returns margin snapshot for the given period. Includes per-billing-event reconciliation status breakdown. Zero-valued-burn events excluded from margin_pct but included in cost totals.
|
|
1503
|
+
|
|
1504
|
+
:param period_type: 'daily', 'weekly', or 'monthly'
|
|
1505
|
+
:type period_type: str
|
|
1506
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
1507
|
+
:type match_grade: str
|
|
1508
|
+
:param include_partial: Include partially_reconciled billing events
|
|
1509
|
+
:type include_partial: bool
|
|
1510
|
+
:param period_start: ISO datetime start (inclusive)
|
|
1511
|
+
:type period_start: datetime
|
|
1512
|
+
:param period_end: ISO datetime end (exclusive)
|
|
1513
|
+
:type period_end: datetime
|
|
1514
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
1515
|
+
number provided, it will be total request
|
|
1516
|
+
timeout. It can also be a pair (tuple) of
|
|
1517
|
+
(connection, read) timeouts.
|
|
1518
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
1519
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
1520
|
+
request; this effectively ignores the
|
|
1521
|
+
authentication in the spec for a single request.
|
|
1522
|
+
:type _request_auth: dict, optional
|
|
1523
|
+
:param _content_type: force content-type for the request.
|
|
1524
|
+
:type _content_type: str, Optional
|
|
1525
|
+
:param _headers: set to override the headers for a single
|
|
1526
|
+
request; this effectively ignores the headers
|
|
1527
|
+
in the spec for a single request.
|
|
1528
|
+
:type _headers: dict, optional
|
|
1529
|
+
:param _host_index: set to override the host_index for a single
|
|
1530
|
+
request; this effectively ignores the host_index
|
|
1531
|
+
in the spec for a single request.
|
|
1532
|
+
:type _host_index: int, optional
|
|
1533
|
+
:return: Returns the result object.
|
|
1534
|
+
""" # noqa: E501
|
|
1535
|
+
|
|
1536
|
+
_param = self._get_margin_snapshot_serialize(
|
|
1537
|
+
period_type=period_type,
|
|
1538
|
+
match_grade=match_grade,
|
|
1539
|
+
include_partial=include_partial,
|
|
1540
|
+
period_start=period_start,
|
|
1541
|
+
period_end=period_end,
|
|
1542
|
+
_request_auth=_request_auth,
|
|
1543
|
+
_content_type=_content_type,
|
|
1544
|
+
_headers=_headers,
|
|
1545
|
+
_host_index=_host_index
|
|
1546
|
+
)
|
|
1547
|
+
|
|
1548
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
1549
|
+
'200': "MarginSnapshotResponse",
|
|
1550
|
+
'422': "AcuteHTTPValidationError",
|
|
1551
|
+
}
|
|
1552
|
+
response_data = self.api_client.call_api(
|
|
1553
|
+
*_param,
|
|
1554
|
+
_request_timeout=_request_timeout
|
|
1555
|
+
)
|
|
1556
|
+
response_data.read()
|
|
1557
|
+
return self.api_client.response_deserialize(
|
|
1558
|
+
response_data=response_data,
|
|
1559
|
+
response_types_map=_response_types_map,
|
|
1560
|
+
)
|
|
1561
|
+
|
|
1562
|
+
|
|
1563
|
+
@validate_call
|
|
1564
|
+
def get_margin_snapshot_without_preload_content(
|
|
1565
|
+
self,
|
|
1566
|
+
period_type: Annotated[Optional[StrictStr], Field(description="'daily', 'weekly', or 'monthly'")] = None,
|
|
1567
|
+
match_grade: Annotated[Optional[StrictStr], Field(description="'financial_only' or 'include_operational'")] = None,
|
|
1568
|
+
include_partial: Annotated[Optional[StrictBool], Field(description="Include partially_reconciled billing events")] = None,
|
|
1569
|
+
period_start: Annotated[Optional[datetime], Field(description="ISO datetime start (inclusive)")] = None,
|
|
1570
|
+
period_end: Annotated[Optional[datetime], Field(description="ISO datetime end (exclusive)")] = None,
|
|
1571
|
+
_request_timeout: Union[
|
|
1572
|
+
None,
|
|
1573
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1574
|
+
Tuple[
|
|
1575
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1576
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
1577
|
+
]
|
|
1578
|
+
] = None,
|
|
1579
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
1580
|
+
_content_type: Optional[StrictStr] = None,
|
|
1581
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1582
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1583
|
+
) -> RESTResponseType:
|
|
1584
|
+
"""Period margin snapshot with reconciliation breakdown
|
|
1585
|
+
|
|
1586
|
+
Returns margin snapshot for the given period. Includes per-billing-event reconciliation status breakdown. Zero-valued-burn events excluded from margin_pct but included in cost totals.
|
|
1587
|
+
|
|
1588
|
+
:param period_type: 'daily', 'weekly', or 'monthly'
|
|
1589
|
+
:type period_type: str
|
|
1590
|
+
:param match_grade: 'financial_only' or 'include_operational'
|
|
1591
|
+
:type match_grade: str
|
|
1592
|
+
:param include_partial: Include partially_reconciled billing events
|
|
1593
|
+
:type include_partial: bool
|
|
1594
|
+
:param period_start: ISO datetime start (inclusive)
|
|
1595
|
+
:type period_start: datetime
|
|
1596
|
+
:param period_end: ISO datetime end (exclusive)
|
|
1597
|
+
:type period_end: datetime
|
|
1598
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
1599
|
+
number provided, it will be total request
|
|
1600
|
+
timeout. It can also be a pair (tuple) of
|
|
1601
|
+
(connection, read) timeouts.
|
|
1602
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
1603
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
1604
|
+
request; this effectively ignores the
|
|
1605
|
+
authentication in the spec for a single request.
|
|
1606
|
+
:type _request_auth: dict, optional
|
|
1607
|
+
:param _content_type: force content-type for the request.
|
|
1608
|
+
:type _content_type: str, Optional
|
|
1609
|
+
:param _headers: set to override the headers for a single
|
|
1610
|
+
request; this effectively ignores the headers
|
|
1611
|
+
in the spec for a single request.
|
|
1612
|
+
:type _headers: dict, optional
|
|
1613
|
+
:param _host_index: set to override the host_index for a single
|
|
1614
|
+
request; this effectively ignores the host_index
|
|
1615
|
+
in the spec for a single request.
|
|
1616
|
+
:type _host_index: int, optional
|
|
1617
|
+
:return: Returns the result object.
|
|
1618
|
+
""" # noqa: E501
|
|
1619
|
+
|
|
1620
|
+
_param = self._get_margin_snapshot_serialize(
|
|
1621
|
+
period_type=period_type,
|
|
1622
|
+
match_grade=match_grade,
|
|
1623
|
+
include_partial=include_partial,
|
|
1624
|
+
period_start=period_start,
|
|
1625
|
+
period_end=period_end,
|
|
1626
|
+
_request_auth=_request_auth,
|
|
1627
|
+
_content_type=_content_type,
|
|
1628
|
+
_headers=_headers,
|
|
1629
|
+
_host_index=_host_index
|
|
1630
|
+
)
|
|
1631
|
+
|
|
1632
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
1633
|
+
'200': "MarginSnapshotResponse",
|
|
1634
|
+
'422': "AcuteHTTPValidationError",
|
|
1635
|
+
}
|
|
1636
|
+
response_data = self.api_client.call_api(
|
|
1637
|
+
*_param,
|
|
1638
|
+
_request_timeout=_request_timeout
|
|
1639
|
+
)
|
|
1640
|
+
return response_data.response
|
|
1641
|
+
|
|
1642
|
+
|
|
1643
|
+
def _get_margin_snapshot_serialize(
|
|
1644
|
+
self,
|
|
1645
|
+
period_type,
|
|
1646
|
+
match_grade,
|
|
1647
|
+
include_partial,
|
|
1648
|
+
period_start,
|
|
1649
|
+
period_end,
|
|
1650
|
+
_request_auth,
|
|
1651
|
+
_content_type,
|
|
1652
|
+
_headers,
|
|
1653
|
+
_host_index,
|
|
1654
|
+
) -> RequestSerialized:
|
|
1655
|
+
|
|
1656
|
+
_host = None
|
|
1657
|
+
|
|
1658
|
+
_collection_formats: Dict[str, str] = {
|
|
1659
|
+
}
|
|
1660
|
+
|
|
1661
|
+
_path_params: Dict[str, str] = {}
|
|
1662
|
+
_query_params: List[Tuple[str, str]] = []
|
|
1663
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
1664
|
+
_form_params: List[Tuple[str, str]] = []
|
|
1665
|
+
_files: Dict[
|
|
1666
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
1667
|
+
] = {}
|
|
1668
|
+
_body_params: Optional[bytes] = None
|
|
1669
|
+
|
|
1670
|
+
# process the path parameters
|
|
1671
|
+
# process the query parameters
|
|
1672
|
+
if period_type is not None:
|
|
1673
|
+
|
|
1674
|
+
_query_params.append(('period_type', period_type))
|
|
1675
|
+
|
|
1676
|
+
if match_grade is not None:
|
|
1677
|
+
|
|
1678
|
+
_query_params.append(('match_grade', match_grade))
|
|
1679
|
+
|
|
1680
|
+
if include_partial is not None:
|
|
1681
|
+
|
|
1682
|
+
_query_params.append(('include_partial', include_partial))
|
|
1683
|
+
|
|
1684
|
+
if period_start is not None:
|
|
1685
|
+
if isinstance(period_start, datetime):
|
|
1686
|
+
_query_params.append(
|
|
1687
|
+
(
|
|
1688
|
+
'period_start',
|
|
1689
|
+
period_start.strftime(
|
|
1690
|
+
self.api_client.configuration.datetime_format
|
|
1691
|
+
)
|
|
1692
|
+
)
|
|
1693
|
+
)
|
|
1694
|
+
else:
|
|
1695
|
+
_query_params.append(('period_start', period_start))
|
|
1696
|
+
|
|
1697
|
+
if period_end is not None:
|
|
1698
|
+
if isinstance(period_end, datetime):
|
|
1699
|
+
_query_params.append(
|
|
1700
|
+
(
|
|
1701
|
+
'period_end',
|
|
1702
|
+
period_end.strftime(
|
|
1703
|
+
self.api_client.configuration.datetime_format
|
|
1704
|
+
)
|
|
1705
|
+
)
|
|
1706
|
+
)
|
|
1707
|
+
else:
|
|
1708
|
+
_query_params.append(('period_end', period_end))
|
|
1709
|
+
|
|
1710
|
+
# process the header parameters
|
|
1711
|
+
# process the form parameters
|
|
1712
|
+
# process the body parameter
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
# set the HTTP header `Accept`
|
|
1716
|
+
if 'Accept' not in _header_params:
|
|
1717
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
1718
|
+
[
|
|
1719
|
+
'application/json'
|
|
1720
|
+
]
|
|
1721
|
+
)
|
|
1722
|
+
|
|
1723
|
+
|
|
1724
|
+
# authentication setting
|
|
1725
|
+
_auth_settings: List[str] = [
|
|
1726
|
+
'APIKeyHeader',
|
|
1727
|
+
'HTTPBearer'
|
|
1728
|
+
]
|
|
1729
|
+
|
|
1730
|
+
return self.api_client.param_serialize(
|
|
1731
|
+
method='GET',
|
|
1732
|
+
resource_path='/api/v1/cost/margins/snapshot',
|
|
1733
|
+
path_params=_path_params,
|
|
1734
|
+
query_params=_query_params,
|
|
1735
|
+
header_params=_header_params,
|
|
1736
|
+
body=_body_params,
|
|
1737
|
+
post_params=_form_params,
|
|
1738
|
+
files=_files,
|
|
1739
|
+
auth_settings=_auth_settings,
|
|
1740
|
+
collection_formats=_collection_formats,
|
|
1741
|
+
_host=_host,
|
|
1742
|
+
_request_auth=_request_auth
|
|
1743
|
+
)
|
|
1744
|
+
|
|
1745
|
+
|
|
1746
|
+
|
|
1747
|
+
|
|
1748
|
+
@validate_call
|
|
1749
|
+
def trigger_reconciliation(
|
|
1750
|
+
self,
|
|
1751
|
+
reconcile_request: ReconcileRequest,
|
|
1752
|
+
_request_timeout: Union[
|
|
1753
|
+
None,
|
|
1754
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1755
|
+
Tuple[
|
|
1756
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1757
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
1758
|
+
]
|
|
1759
|
+
] = None,
|
|
1760
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
1761
|
+
_content_type: Optional[StrictStr] = None,
|
|
1762
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1763
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1764
|
+
) -> ReconcileResponse:
|
|
1765
|
+
"""Trigger manual reconciliation (operator)
|
|
1766
|
+
|
|
1767
|
+
Operator endpoint: trigger reconciliation for specific cost_event_ids or all pending. Returns a job_id for tracking (synchronous in this implementation; async in production). body.tenant_id must match the API-key-derived tenant for security.
|
|
1768
|
+
|
|
1769
|
+
:param reconcile_request: (required)
|
|
1770
|
+
:type reconcile_request: ReconcileRequest
|
|
1771
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
1772
|
+
number provided, it will be total request
|
|
1773
|
+
timeout. It can also be a pair (tuple) of
|
|
1774
|
+
(connection, read) timeouts.
|
|
1775
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
1776
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
1777
|
+
request; this effectively ignores the
|
|
1778
|
+
authentication in the spec for a single request.
|
|
1779
|
+
:type _request_auth: dict, optional
|
|
1780
|
+
:param _content_type: force content-type for the request.
|
|
1781
|
+
:type _content_type: str, Optional
|
|
1782
|
+
:param _headers: set to override the headers for a single
|
|
1783
|
+
request; this effectively ignores the headers
|
|
1784
|
+
in the spec for a single request.
|
|
1785
|
+
:type _headers: dict, optional
|
|
1786
|
+
:param _host_index: set to override the host_index for a single
|
|
1787
|
+
request; this effectively ignores the host_index
|
|
1788
|
+
in the spec for a single request.
|
|
1789
|
+
:type _host_index: int, optional
|
|
1790
|
+
:return: Returns the result object.
|
|
1791
|
+
""" # noqa: E501
|
|
1792
|
+
|
|
1793
|
+
_param = self._trigger_reconciliation_serialize(
|
|
1794
|
+
reconcile_request=reconcile_request,
|
|
1795
|
+
_request_auth=_request_auth,
|
|
1796
|
+
_content_type=_content_type,
|
|
1797
|
+
_headers=_headers,
|
|
1798
|
+
_host_index=_host_index
|
|
1799
|
+
)
|
|
1800
|
+
|
|
1801
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
1802
|
+
'202': "ReconcileResponse",
|
|
1803
|
+
'422': "AcuteHTTPValidationError",
|
|
1804
|
+
}
|
|
1805
|
+
response_data = self.api_client.call_api(
|
|
1806
|
+
*_param,
|
|
1807
|
+
_request_timeout=_request_timeout
|
|
1808
|
+
)
|
|
1809
|
+
response_data.read()
|
|
1810
|
+
return self.api_client.response_deserialize(
|
|
1811
|
+
response_data=response_data,
|
|
1812
|
+
response_types_map=_response_types_map,
|
|
1813
|
+
).data
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
@validate_call
|
|
1817
|
+
def trigger_reconciliation_with_http_info(
|
|
1818
|
+
self,
|
|
1819
|
+
reconcile_request: ReconcileRequest,
|
|
1820
|
+
_request_timeout: Union[
|
|
1821
|
+
None,
|
|
1822
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1823
|
+
Tuple[
|
|
1824
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1825
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
1826
|
+
]
|
|
1827
|
+
] = None,
|
|
1828
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
1829
|
+
_content_type: Optional[StrictStr] = None,
|
|
1830
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1831
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1832
|
+
) -> ApiResponse[ReconcileResponse]:
|
|
1833
|
+
"""Trigger manual reconciliation (operator)
|
|
1834
|
+
|
|
1835
|
+
Operator endpoint: trigger reconciliation for specific cost_event_ids or all pending. Returns a job_id for tracking (synchronous in this implementation; async in production). body.tenant_id must match the API-key-derived tenant for security.
|
|
1836
|
+
|
|
1837
|
+
:param reconcile_request: (required)
|
|
1838
|
+
:type reconcile_request: ReconcileRequest
|
|
1839
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
1840
|
+
number provided, it will be total request
|
|
1841
|
+
timeout. It can also be a pair (tuple) of
|
|
1842
|
+
(connection, read) timeouts.
|
|
1843
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
1844
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
1845
|
+
request; this effectively ignores the
|
|
1846
|
+
authentication in the spec for a single request.
|
|
1847
|
+
:type _request_auth: dict, optional
|
|
1848
|
+
:param _content_type: force content-type for the request.
|
|
1849
|
+
:type _content_type: str, Optional
|
|
1850
|
+
:param _headers: set to override the headers for a single
|
|
1851
|
+
request; this effectively ignores the headers
|
|
1852
|
+
in the spec for a single request.
|
|
1853
|
+
:type _headers: dict, optional
|
|
1854
|
+
:param _host_index: set to override the host_index for a single
|
|
1855
|
+
request; this effectively ignores the host_index
|
|
1856
|
+
in the spec for a single request.
|
|
1857
|
+
:type _host_index: int, optional
|
|
1858
|
+
:return: Returns the result object.
|
|
1859
|
+
""" # noqa: E501
|
|
1860
|
+
|
|
1861
|
+
_param = self._trigger_reconciliation_serialize(
|
|
1862
|
+
reconcile_request=reconcile_request,
|
|
1863
|
+
_request_auth=_request_auth,
|
|
1864
|
+
_content_type=_content_type,
|
|
1865
|
+
_headers=_headers,
|
|
1866
|
+
_host_index=_host_index
|
|
1867
|
+
)
|
|
1868
|
+
|
|
1869
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
1870
|
+
'202': "ReconcileResponse",
|
|
1871
|
+
'422': "AcuteHTTPValidationError",
|
|
1872
|
+
}
|
|
1873
|
+
response_data = self.api_client.call_api(
|
|
1874
|
+
*_param,
|
|
1875
|
+
_request_timeout=_request_timeout
|
|
1876
|
+
)
|
|
1877
|
+
response_data.read()
|
|
1878
|
+
return self.api_client.response_deserialize(
|
|
1879
|
+
response_data=response_data,
|
|
1880
|
+
response_types_map=_response_types_map,
|
|
1881
|
+
)
|
|
1882
|
+
|
|
1883
|
+
|
|
1884
|
+
@validate_call
|
|
1885
|
+
def trigger_reconciliation_without_preload_content(
|
|
1886
|
+
self,
|
|
1887
|
+
reconcile_request: ReconcileRequest,
|
|
1888
|
+
_request_timeout: Union[
|
|
1889
|
+
None,
|
|
1890
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1891
|
+
Tuple[
|
|
1892
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
1893
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
1894
|
+
]
|
|
1895
|
+
] = None,
|
|
1896
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
1897
|
+
_content_type: Optional[StrictStr] = None,
|
|
1898
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1899
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1900
|
+
) -> RESTResponseType:
|
|
1901
|
+
"""Trigger manual reconciliation (operator)
|
|
1902
|
+
|
|
1903
|
+
Operator endpoint: trigger reconciliation for specific cost_event_ids or all pending. Returns a job_id for tracking (synchronous in this implementation; async in production). body.tenant_id must match the API-key-derived tenant for security.
|
|
1904
|
+
|
|
1905
|
+
:param reconcile_request: (required)
|
|
1906
|
+
:type reconcile_request: ReconcileRequest
|
|
1907
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
1908
|
+
number provided, it will be total request
|
|
1909
|
+
timeout. It can also be a pair (tuple) of
|
|
1910
|
+
(connection, read) timeouts.
|
|
1911
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
1912
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
1913
|
+
request; this effectively ignores the
|
|
1914
|
+
authentication in the spec for a single request.
|
|
1915
|
+
:type _request_auth: dict, optional
|
|
1916
|
+
:param _content_type: force content-type for the request.
|
|
1917
|
+
:type _content_type: str, Optional
|
|
1918
|
+
:param _headers: set to override the headers for a single
|
|
1919
|
+
request; this effectively ignores the headers
|
|
1920
|
+
in the spec for a single request.
|
|
1921
|
+
:type _headers: dict, optional
|
|
1922
|
+
:param _host_index: set to override the host_index for a single
|
|
1923
|
+
request; this effectively ignores the host_index
|
|
1924
|
+
in the spec for a single request.
|
|
1925
|
+
:type _host_index: int, optional
|
|
1926
|
+
:return: Returns the result object.
|
|
1927
|
+
""" # noqa: E501
|
|
1928
|
+
|
|
1929
|
+
_param = self._trigger_reconciliation_serialize(
|
|
1930
|
+
reconcile_request=reconcile_request,
|
|
1931
|
+
_request_auth=_request_auth,
|
|
1932
|
+
_content_type=_content_type,
|
|
1933
|
+
_headers=_headers,
|
|
1934
|
+
_host_index=_host_index
|
|
1935
|
+
)
|
|
1936
|
+
|
|
1937
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
1938
|
+
'202': "ReconcileResponse",
|
|
1939
|
+
'422': "AcuteHTTPValidationError",
|
|
1940
|
+
}
|
|
1941
|
+
response_data = self.api_client.call_api(
|
|
1942
|
+
*_param,
|
|
1943
|
+
_request_timeout=_request_timeout
|
|
1944
|
+
)
|
|
1945
|
+
return response_data.response
|
|
1946
|
+
|
|
1947
|
+
|
|
1948
|
+
def _trigger_reconciliation_serialize(
|
|
1949
|
+
self,
|
|
1950
|
+
reconcile_request,
|
|
1951
|
+
_request_auth,
|
|
1952
|
+
_content_type,
|
|
1953
|
+
_headers,
|
|
1954
|
+
_host_index,
|
|
1955
|
+
) -> RequestSerialized:
|
|
1956
|
+
|
|
1957
|
+
_host = None
|
|
1958
|
+
|
|
1959
|
+
_collection_formats: Dict[str, str] = {
|
|
1960
|
+
}
|
|
1961
|
+
|
|
1962
|
+
_path_params: Dict[str, str] = {}
|
|
1963
|
+
_query_params: List[Tuple[str, str]] = []
|
|
1964
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
1965
|
+
_form_params: List[Tuple[str, str]] = []
|
|
1966
|
+
_files: Dict[
|
|
1967
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
1968
|
+
] = {}
|
|
1969
|
+
_body_params: Optional[bytes] = None
|
|
1970
|
+
|
|
1971
|
+
# process the path parameters
|
|
1972
|
+
# process the query parameters
|
|
1973
|
+
# process the header parameters
|
|
1974
|
+
# process the form parameters
|
|
1975
|
+
# process the body parameter
|
|
1976
|
+
if reconcile_request is not None:
|
|
1977
|
+
_body_params = reconcile_request
|
|
1978
|
+
|
|
1979
|
+
|
|
1980
|
+
# set the HTTP header `Accept`
|
|
1981
|
+
if 'Accept' not in _header_params:
|
|
1982
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
1983
|
+
[
|
|
1984
|
+
'application/json'
|
|
1985
|
+
]
|
|
1986
|
+
)
|
|
1987
|
+
|
|
1988
|
+
# set the HTTP header `Content-Type`
|
|
1989
|
+
if _content_type:
|
|
1990
|
+
_header_params['Content-Type'] = _content_type
|
|
1991
|
+
else:
|
|
1992
|
+
_default_content_type = (
|
|
1993
|
+
self.api_client.select_header_content_type(
|
|
1994
|
+
[
|
|
1995
|
+
'application/json'
|
|
1996
|
+
]
|
|
1997
|
+
)
|
|
1998
|
+
)
|
|
1999
|
+
if _default_content_type is not None:
|
|
2000
|
+
_header_params['Content-Type'] = _default_content_type
|
|
2001
|
+
|
|
2002
|
+
# authentication setting
|
|
2003
|
+
_auth_settings: List[str] = [
|
|
2004
|
+
'APIKeyHeader',
|
|
2005
|
+
'HTTPBearer'
|
|
2006
|
+
]
|
|
2007
|
+
|
|
2008
|
+
return self.api_client.param_serialize(
|
|
2009
|
+
method='POST',
|
|
2010
|
+
resource_path='/api/v1/cost/margins/reconcile',
|
|
2011
|
+
path_params=_path_params,
|
|
2012
|
+
query_params=_query_params,
|
|
2013
|
+
header_params=_header_params,
|
|
2014
|
+
body=_body_params,
|
|
2015
|
+
post_params=_form_params,
|
|
2016
|
+
files=_files,
|
|
2017
|
+
auth_settings=_auth_settings,
|
|
2018
|
+
collection_formats=_collection_formats,
|
|
2019
|
+
_host=_host,
|
|
2020
|
+
_request_auth=_request_auth
|
|
2021
|
+
)
|
|
2022
|
+
|
|
2023
|
+
|
|
2024
|
+
|
|
2025
|
+
|
|
2026
|
+
@validate_call
|
|
2027
|
+
def trigger_snapshot_compute(
|
|
2028
|
+
self,
|
|
2029
|
+
snapshot_compute_request: SnapshotComputeRequest,
|
|
2030
|
+
_request_timeout: Union[
|
|
2031
|
+
None,
|
|
2032
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
2033
|
+
Tuple[
|
|
2034
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
2035
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
2036
|
+
]
|
|
2037
|
+
] = None,
|
|
2038
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
2039
|
+
_content_type: Optional[StrictStr] = None,
|
|
2040
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
2041
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
2042
|
+
) -> SnapshotComputeResponse:
|
|
2043
|
+
"""Trigger snapshot computation (operator)
|
|
2044
|
+
|
|
2045
|
+
Operator endpoint: compute and upsert a margin_snapshot for the given period. body.tenant_id must match the API-key-derived tenant for security.
|
|
2046
|
+
|
|
2047
|
+
:param snapshot_compute_request: (required)
|
|
2048
|
+
:type snapshot_compute_request: SnapshotComputeRequest
|
|
2049
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
2050
|
+
number provided, it will be total request
|
|
2051
|
+
timeout. It can also be a pair (tuple) of
|
|
2052
|
+
(connection, read) timeouts.
|
|
2053
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
2054
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
2055
|
+
request; this effectively ignores the
|
|
2056
|
+
authentication in the spec for a single request.
|
|
2057
|
+
:type _request_auth: dict, optional
|
|
2058
|
+
:param _content_type: force content-type for the request.
|
|
2059
|
+
:type _content_type: str, Optional
|
|
2060
|
+
:param _headers: set to override the headers for a single
|
|
2061
|
+
request; this effectively ignores the headers
|
|
2062
|
+
in the spec for a single request.
|
|
2063
|
+
:type _headers: dict, optional
|
|
2064
|
+
:param _host_index: set to override the host_index for a single
|
|
2065
|
+
request; this effectively ignores the host_index
|
|
2066
|
+
in the spec for a single request.
|
|
2067
|
+
:type _host_index: int, optional
|
|
2068
|
+
:return: Returns the result object.
|
|
2069
|
+
""" # noqa: E501
|
|
2070
|
+
|
|
2071
|
+
_param = self._trigger_snapshot_compute_serialize(
|
|
2072
|
+
snapshot_compute_request=snapshot_compute_request,
|
|
2073
|
+
_request_auth=_request_auth,
|
|
2074
|
+
_content_type=_content_type,
|
|
2075
|
+
_headers=_headers,
|
|
2076
|
+
_host_index=_host_index
|
|
2077
|
+
)
|
|
2078
|
+
|
|
2079
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
2080
|
+
'202': "SnapshotComputeResponse",
|
|
2081
|
+
'422': "AcuteHTTPValidationError",
|
|
2082
|
+
}
|
|
2083
|
+
response_data = self.api_client.call_api(
|
|
2084
|
+
*_param,
|
|
2085
|
+
_request_timeout=_request_timeout
|
|
2086
|
+
)
|
|
2087
|
+
response_data.read()
|
|
2088
|
+
return self.api_client.response_deserialize(
|
|
2089
|
+
response_data=response_data,
|
|
2090
|
+
response_types_map=_response_types_map,
|
|
2091
|
+
).data
|
|
2092
|
+
|
|
2093
|
+
|
|
2094
|
+
@validate_call
|
|
2095
|
+
def trigger_snapshot_compute_with_http_info(
|
|
2096
|
+
self,
|
|
2097
|
+
snapshot_compute_request: SnapshotComputeRequest,
|
|
2098
|
+
_request_timeout: Union[
|
|
2099
|
+
None,
|
|
2100
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
2101
|
+
Tuple[
|
|
2102
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
2103
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
2104
|
+
]
|
|
2105
|
+
] = None,
|
|
2106
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
2107
|
+
_content_type: Optional[StrictStr] = None,
|
|
2108
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
2109
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
2110
|
+
) -> ApiResponse[SnapshotComputeResponse]:
|
|
2111
|
+
"""Trigger snapshot computation (operator)
|
|
2112
|
+
|
|
2113
|
+
Operator endpoint: compute and upsert a margin_snapshot for the given period. body.tenant_id must match the API-key-derived tenant for security.
|
|
2114
|
+
|
|
2115
|
+
:param snapshot_compute_request: (required)
|
|
2116
|
+
:type snapshot_compute_request: SnapshotComputeRequest
|
|
2117
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
2118
|
+
number provided, it will be total request
|
|
2119
|
+
timeout. It can also be a pair (tuple) of
|
|
2120
|
+
(connection, read) timeouts.
|
|
2121
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
2122
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
2123
|
+
request; this effectively ignores the
|
|
2124
|
+
authentication in the spec for a single request.
|
|
2125
|
+
:type _request_auth: dict, optional
|
|
2126
|
+
:param _content_type: force content-type for the request.
|
|
2127
|
+
:type _content_type: str, Optional
|
|
2128
|
+
:param _headers: set to override the headers for a single
|
|
2129
|
+
request; this effectively ignores the headers
|
|
2130
|
+
in the spec for a single request.
|
|
2131
|
+
:type _headers: dict, optional
|
|
2132
|
+
:param _host_index: set to override the host_index for a single
|
|
2133
|
+
request; this effectively ignores the host_index
|
|
2134
|
+
in the spec for a single request.
|
|
2135
|
+
:type _host_index: int, optional
|
|
2136
|
+
:return: Returns the result object.
|
|
2137
|
+
""" # noqa: E501
|
|
2138
|
+
|
|
2139
|
+
_param = self._trigger_snapshot_compute_serialize(
|
|
2140
|
+
snapshot_compute_request=snapshot_compute_request,
|
|
2141
|
+
_request_auth=_request_auth,
|
|
2142
|
+
_content_type=_content_type,
|
|
2143
|
+
_headers=_headers,
|
|
2144
|
+
_host_index=_host_index
|
|
2145
|
+
)
|
|
2146
|
+
|
|
2147
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
2148
|
+
'202': "SnapshotComputeResponse",
|
|
2149
|
+
'422': "AcuteHTTPValidationError",
|
|
2150
|
+
}
|
|
2151
|
+
response_data = self.api_client.call_api(
|
|
2152
|
+
*_param,
|
|
2153
|
+
_request_timeout=_request_timeout
|
|
2154
|
+
)
|
|
2155
|
+
response_data.read()
|
|
2156
|
+
return self.api_client.response_deserialize(
|
|
2157
|
+
response_data=response_data,
|
|
2158
|
+
response_types_map=_response_types_map,
|
|
2159
|
+
)
|
|
2160
|
+
|
|
2161
|
+
|
|
2162
|
+
@validate_call
|
|
2163
|
+
def trigger_snapshot_compute_without_preload_content(
|
|
2164
|
+
self,
|
|
2165
|
+
snapshot_compute_request: SnapshotComputeRequest,
|
|
2166
|
+
_request_timeout: Union[
|
|
2167
|
+
None,
|
|
2168
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
2169
|
+
Tuple[
|
|
2170
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
2171
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
2172
|
+
]
|
|
2173
|
+
] = None,
|
|
2174
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
2175
|
+
_content_type: Optional[StrictStr] = None,
|
|
2176
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
2177
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
2178
|
+
) -> RESTResponseType:
|
|
2179
|
+
"""Trigger snapshot computation (operator)
|
|
2180
|
+
|
|
2181
|
+
Operator endpoint: compute and upsert a margin_snapshot for the given period. body.tenant_id must match the API-key-derived tenant for security.
|
|
2182
|
+
|
|
2183
|
+
:param snapshot_compute_request: (required)
|
|
2184
|
+
:type snapshot_compute_request: SnapshotComputeRequest
|
|
2185
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
2186
|
+
number provided, it will be total request
|
|
2187
|
+
timeout. It can also be a pair (tuple) of
|
|
2188
|
+
(connection, read) timeouts.
|
|
2189
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
2190
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
2191
|
+
request; this effectively ignores the
|
|
2192
|
+
authentication in the spec for a single request.
|
|
2193
|
+
:type _request_auth: dict, optional
|
|
2194
|
+
:param _content_type: force content-type for the request.
|
|
2195
|
+
:type _content_type: str, Optional
|
|
2196
|
+
:param _headers: set to override the headers for a single
|
|
2197
|
+
request; this effectively ignores the headers
|
|
2198
|
+
in the spec for a single request.
|
|
2199
|
+
:type _headers: dict, optional
|
|
2200
|
+
:param _host_index: set to override the host_index for a single
|
|
2201
|
+
request; this effectively ignores the host_index
|
|
2202
|
+
in the spec for a single request.
|
|
2203
|
+
:type _host_index: int, optional
|
|
2204
|
+
:return: Returns the result object.
|
|
2205
|
+
""" # noqa: E501
|
|
2206
|
+
|
|
2207
|
+
_param = self._trigger_snapshot_compute_serialize(
|
|
2208
|
+
snapshot_compute_request=snapshot_compute_request,
|
|
2209
|
+
_request_auth=_request_auth,
|
|
2210
|
+
_content_type=_content_type,
|
|
2211
|
+
_headers=_headers,
|
|
2212
|
+
_host_index=_host_index
|
|
2213
|
+
)
|
|
2214
|
+
|
|
2215
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
2216
|
+
'202': "SnapshotComputeResponse",
|
|
2217
|
+
'422': "AcuteHTTPValidationError",
|
|
2218
|
+
}
|
|
2219
|
+
response_data = self.api_client.call_api(
|
|
2220
|
+
*_param,
|
|
2221
|
+
_request_timeout=_request_timeout
|
|
2222
|
+
)
|
|
2223
|
+
return response_data.response
|
|
2224
|
+
|
|
2225
|
+
|
|
2226
|
+
def _trigger_snapshot_compute_serialize(
|
|
2227
|
+
self,
|
|
2228
|
+
snapshot_compute_request,
|
|
2229
|
+
_request_auth,
|
|
2230
|
+
_content_type,
|
|
2231
|
+
_headers,
|
|
2232
|
+
_host_index,
|
|
2233
|
+
) -> RequestSerialized:
|
|
2234
|
+
|
|
2235
|
+
_host = None
|
|
2236
|
+
|
|
2237
|
+
_collection_formats: Dict[str, str] = {
|
|
2238
|
+
}
|
|
2239
|
+
|
|
2240
|
+
_path_params: Dict[str, str] = {}
|
|
2241
|
+
_query_params: List[Tuple[str, str]] = []
|
|
2242
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
2243
|
+
_form_params: List[Tuple[str, str]] = []
|
|
2244
|
+
_files: Dict[
|
|
2245
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
2246
|
+
] = {}
|
|
2247
|
+
_body_params: Optional[bytes] = None
|
|
2248
|
+
|
|
2249
|
+
# process the path parameters
|
|
2250
|
+
# process the query parameters
|
|
2251
|
+
# process the header parameters
|
|
2252
|
+
# process the form parameters
|
|
2253
|
+
# process the body parameter
|
|
2254
|
+
if snapshot_compute_request is not None:
|
|
2255
|
+
_body_params = snapshot_compute_request
|
|
2256
|
+
|
|
2257
|
+
|
|
2258
|
+
# set the HTTP header `Accept`
|
|
2259
|
+
if 'Accept' not in _header_params:
|
|
2260
|
+
_header_params['Accept'] = self.api_client.select_header_accept(
|
|
2261
|
+
[
|
|
2262
|
+
'application/json'
|
|
2263
|
+
]
|
|
2264
|
+
)
|
|
2265
|
+
|
|
2266
|
+
# set the HTTP header `Content-Type`
|
|
2267
|
+
if _content_type:
|
|
2268
|
+
_header_params['Content-Type'] = _content_type
|
|
2269
|
+
else:
|
|
2270
|
+
_default_content_type = (
|
|
2271
|
+
self.api_client.select_header_content_type(
|
|
2272
|
+
[
|
|
2273
|
+
'application/json'
|
|
2274
|
+
]
|
|
2275
|
+
)
|
|
2276
|
+
)
|
|
2277
|
+
if _default_content_type is not None:
|
|
2278
|
+
_header_params['Content-Type'] = _default_content_type
|
|
2279
|
+
|
|
2280
|
+
# authentication setting
|
|
2281
|
+
_auth_settings: List[str] = [
|
|
2282
|
+
'APIKeyHeader',
|
|
2283
|
+
'HTTPBearer'
|
|
2284
|
+
]
|
|
2285
|
+
|
|
2286
|
+
return self.api_client.param_serialize(
|
|
2287
|
+
method='POST',
|
|
2288
|
+
resource_path='/api/v1/cost/margins/snapshot/compute',
|
|
2289
|
+
path_params=_path_params,
|
|
2290
|
+
query_params=_query_params,
|
|
2291
|
+
header_params=_header_params,
|
|
2292
|
+
body=_body_params,
|
|
2293
|
+
post_params=_form_params,
|
|
2294
|
+
files=_files,
|
|
2295
|
+
auth_settings=_auth_settings,
|
|
2296
|
+
collection_formats=_collection_formats,
|
|
2297
|
+
_host=_host,
|
|
2298
|
+
_request_auth=_request_auth
|
|
2299
|
+
)
|
|
2300
|
+
|
|
2301
|
+
|