paid-python 1.10.0__tar.gz → 1.12.0__tar.gz
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.
- paid_python-1.12.0/PKG-INFO +792 -0
- paid_python-1.12.0/pyproject.toml +111 -0
- paid_python-1.12.0/src/paid/__init__.py +2087 -0
- paid_python-1.12.0/src/paid/amendments/__init__.py +37 -0
- paid_python-1.12.0/src/paid/amendments/client.py +392 -0
- paid_python-1.12.0/src/paid/amendments/raw_client.py +714 -0
- paid_python-1.12.0/src/paid/amendments/types/__init__.py +38 -0
- paid_python-1.12.0/src/paid/amendments/types/unified_amendment_execute_request_default_treatment.py +7 -0
- paid_python-1.12.0/src/paid/amendments/types/unified_amendment_preview_request_default_treatment.py +7 -0
- paid_python-1.12.0/src/paid/analytics/client.py +288 -0
- paid_python-1.12.0/src/paid/analytics/raw_client.py +492 -0
- paid_python-1.12.0/src/paid/analytics_experimental/client.py +302 -0
- paid_python-1.12.0/src/paid/analytics_experimental/raw_client.py +504 -0
- paid_python-1.12.0/src/paid/checkouts/client.py +468 -0
- paid_python-1.12.0/src/paid/checkouts/raw_client.py +777 -0
- paid_python-1.12.0/src/paid/client.py +610 -0
- paid_python-1.12.0/src/paid/contacts/raw_client.py +1487 -0
- paid_python-1.12.0/src/paid/core/client_wrapper.py +99 -0
- paid_python-1.12.0/src/paid/costs/raw_client.py +189 -0
- paid_python-1.12.0/src/paid/credits/__init__.py +46 -0
- paid_python-1.12.0/src/paid/credits/client.py +500 -0
- paid_python-1.12.0/src/paid/credits/raw_client.py +798 -0
- paid_python-1.12.0/src/paid/credits/types/__init__.py +44 -0
- paid_python-1.12.0/src/paid/credits/types/list_credit_transactions_request_type.py +5 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/__init__.py +64 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/client.py +959 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/raw_client.py +1669 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/types/__init__.py +62 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/types/create_custom_view_request_period.py +48 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/types/create_custom_view_request_period_kind.py +5 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/types/create_custom_view_request_period_unit.py +5 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/types/create_custom_view_request_scope.py +5 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/types/get_custom_view_data_request_period_kind.py +5 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/types/get_custom_view_data_request_period_unit.py +5 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/types/update_custom_view_period_request_period.py +48 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/types/update_custom_view_period_request_period_kind.py +5 -0
- paid_python-1.12.0/src/paid/custom_views_experimental/types/update_custom_view_period_request_period_unit.py +5 -0
- paid_python-1.12.0/src/paid/customer_groups/client.py +708 -0
- paid_python-1.12.0/src/paid/customer_groups/raw_client.py +1234 -0
- paid_python-1.12.0/src/paid/customer_portals/raw_client.py +241 -0
- paid_python-1.12.0/src/paid/customers/__init__.py +49 -0
- paid_python-1.12.0/src/paid/customers/client.py +4394 -0
- paid_python-1.12.0/src/paid/customers/raw_client.py +8018 -0
- paid_python-1.12.0/src/paid/customers/types/__init__.py +47 -0
- paid_python-1.12.0/src/paid/customers/types/list_customer_units_by_external_id_request_status.py +5 -0
- paid_python-1.12.0/src/paid/customers/types/list_customer_units_request_status.py +5 -0
- paid_python-1.12.0/src/paid/customers/types/list_customers_request_creation_state.py +5 -0
- paid_python-1.12.0/src/paid/customers/types/list_customers_request_status.py +5 -0
- paid_python-1.12.0/src/paid/errors/__init__.py +56 -0
- paid_python-1.12.0/src/paid/errors/bad_request_error.py +10 -0
- paid_python-1.12.0/src/paid/errors/conflict_error.py +10 -0
- paid_python-1.12.0/src/paid/errors/forbidden_error.py +10 -0
- paid_python-1.12.0/src/paid/errors/internal_server_error.py +10 -0
- paid_python-1.12.0/src/paid/errors/not_found_error.py +10 -0
- paid_python-1.12.0/src/paid/errors/request_timeout_error.py +11 -0
- paid_python-1.12.0/src/paid/errors/too_many_requests_error.py +11 -0
- paid_python-1.12.0/src/paid/invoices/__init__.py +37 -0
- paid_python-1.12.0/src/paid/invoices/client.py +499 -0
- paid_python-1.12.0/src/paid/invoices/raw_client.py +815 -0
- paid_python-1.12.0/src/paid/invoices/types/__init__.py +38 -0
- paid_python-1.12.0/src/paid/invoices/types/list_invoices_request_payment_status.py +7 -0
- paid_python-1.12.0/src/paid/invoices/types/list_invoices_request_status.py +7 -0
- paid_python-1.12.0/src/paid/orders/__init__.py +49 -0
- paid_python-1.12.0/src/paid/orders/client.py +1285 -0
- paid_python-1.12.0/src/paid/orders/raw_client.py +2181 -0
- paid_python-1.12.0/src/paid/orders/types/__init__.py +47 -0
- paid_python-1.12.0/src/paid/orders/types/list_orders_request_creation_state.py +5 -0
- paid_python-1.12.0/src/paid/orders/types/order_status_filter.py +5 -0
- paid_python-1.12.0/src/paid/payment_allocations/client.py +255 -0
- paid_python-1.12.0/src/paid/payment_allocations/raw_client.py +435 -0
- paid_python-1.12.0/src/paid/payment_methods/client.py +498 -0
- paid_python-1.12.0/src/paid/payment_methods/raw_client.py +964 -0
- paid_python-1.12.0/src/paid/payments/__init__.py +34 -0
- paid_python-1.12.0/src/paid/payments/client.py +390 -0
- paid_python-1.12.0/src/paid/payments/raw_client.py +662 -0
- paid_python-1.12.0/src/paid/payments/types/__init__.py +34 -0
- paid_python-1.12.0/src/paid/payments/types/list_payments_request_status.py +7 -0
- paid_python-1.12.0/src/paid/plans/__init__.py +4 -0
- paid_python-1.12.0/src/paid/plans/client.py +836 -0
- paid_python-1.12.0/src/paid/plans/raw_client.py +1429 -0
- paid_python-1.12.0/src/paid/pricing/__init__.py +4 -0
- paid_python-1.12.0/src/paid/pricing/client.py +304 -0
- paid_python-1.12.0/src/paid/pricing/raw_client.py +464 -0
- paid_python-1.12.0/src/paid/products/__init__.py +4 -0
- paid_python-1.12.0/src/paid/products/client.py +700 -0
- paid_python-1.12.0/src/paid/products/raw_client.py +1195 -0
- paid_python-1.12.0/src/paid/signals/__init__.py +4 -0
- paid_python-1.12.0/src/paid/signals/client.py +362 -0
- paid_python-1.12.0/src/paid/signals/raw_client.py +704 -0
- paid_python-1.12.0/src/paid/types/__init__.py +1999 -0
- paid_python-1.12.0/src/paid/types/add_attribute_intent.py +69 -0
- paid_python-1.12.0/src/paid/types/add_attribute_intent_charge_stub.py +5 -0
- paid_python-1.12.0/src/paid/types/add_attribute_intent_credit_grant.py +5 -0
- paid_python-1.12.0/src/paid/types/add_attribute_intent_treatment.py +7 -0
- paid_python-1.12.0/src/paid/types/add_from_catalog_intent.py +53 -0
- paid_python-1.12.0/src/paid/types/add_from_catalog_intent_charge_stub.py +5 -0
- paid_python-1.12.0/src/paid/types/add_members_response.py +25 -0
- paid_python-1.12.0/src/paid/types/amendment_add_attribute_options.py +24 -0
- paid_python-1.12.0/src/paid/types/amendment_add_axis_options.py +56 -0
- paid_python-1.12.0/src/paid/types/amendment_attribute_options.py +48 -0
- paid_python-1.12.0/src/paid/types/amendment_attribute_state.py +80 -0
- paid_python-1.12.0/src/paid/types/amendment_axis_choice_value.py +7 -0
- paid_python-1.12.0/src/paid/types/amendment_axis_id.py +5 -0
- paid_python-1.12.0/src/paid/types/amendment_axis_options.py +85 -0
- paid_python-1.12.0/src/paid/types/amendment_axis_relevance.py +5 -0
- paid_python-1.12.0/src/paid/types/amendment_billing_type.py +5 -0
- paid_python-1.12.0/src/paid/types/amendment_charge_type.py +5 -0
- paid_python-1.12.0/src/paid/types/amendment_credit_effect_kind.py +5 -0
- paid_python-1.12.0/src/paid/types/amendment_error_response.py +31 -0
- paid_python-1.12.0/src/paid/types/amendment_intent_kind.py +10 -0
- paid_python-1.12.0/src/paid/types/amendment_intent_options.py +22 -0
- paid_python-1.12.0/src/paid/types/amendment_line_options.py +38 -0
- paid_python-1.12.0/src/paid/types/amendment_money_billing.py +5 -0
- paid_python-1.12.0/src/paid/types/amendment_options.py +79 -0
- paid_python-1.12.0/src/paid/types/amendment_plan.py +77 -0
- paid_python-1.12.0/src/paid/types/amendment_plan_attribute_diff.py +57 -0
- paid_python-1.12.0/src/paid/types/amendment_plan_change.py +7 -0
- paid_python-1.12.0/src/paid/types/amendment_plan_credit_effect.py +45 -0
- paid_python-1.12.0/src/paid/types/amendment_plan_line_type.py +7 -0
- paid_python-1.12.0/src/paid/types/amendment_plan_money_effect.py +63 -0
- paid_python-1.12.0/src/paid/types/amendment_plan_money_effect_kind.py +7 -0
- paid_python-1.12.0/src/paid/types/amendment_plan_treatment_resolution.py +35 -0
- paid_python-1.12.0/src/paid/types/amendment_plan_usage_effect.py +34 -0
- paid_python-1.12.0/src/paid/types/amendment_plan_usage_effect_kind.py +5 -0
- paid_python-1.12.0/src/paid/types/amendment_pricing_clause.py +42 -0
- paid_python-1.12.0/src/paid/types/amendment_pricing_model.py +16 -0
- paid_python-1.12.0/src/paid/types/amendment_treatment_source.py +5 -0
- paid_python-1.12.0/src/paid/types/analytics_column.py +23 -0
- paid_python-1.12.0/src/paid/types/analytics_query_request.py +22 -0
- paid_python-1.12.0/src/paid/types/analytics_query_response.py +27 -0
- paid_python-1.12.0/src/paid/types/analytics_query_response_meta.py +26 -0
- paid_python-1.12.0/src/paid/types/analytics_schema_column.py +25 -0
- paid_python-1.12.0/src/paid/types/analytics_schema_response.py +20 -0
- paid_python-1.12.0/src/paid/types/analytics_schema_view.py +22 -0
- paid_python-1.12.0/src/paid/types/backfill_response.py +24 -0
- paid_python-1.12.0/src/paid/types/charge_stub_add_axis_options.py +33 -0
- paid_python-1.12.0/src/paid/types/charge_stub_add_axis_options_options_item.py +39 -0
- paid_python-1.12.0/src/paid/types/charge_stub_add_axis_options_options_item_value.py +5 -0
- paid_python-1.12.0/src/paid/types/charge_stub_axis_options.py +22 -0
- paid_python-1.12.0/src/paid/types/charge_stub_axis_options_options_item.py +43 -0
- paid_python-1.12.0/src/paid/types/charge_stub_axis_options_options_item_value.py +5 -0
- paid_python-1.12.0/src/paid/types/checkout.py +65 -0
- paid_python-1.12.0/src/paid/types/checkout_custom_card.py +40 -0
- paid_python-1.12.0/src/paid/types/checkout_custom_card_input.py +40 -0
- paid_python-1.12.0/src/paid/types/checkout_details.py +79 -0
- paid_python-1.12.0/src/paid/types/checkout_plan.py +20 -0
- paid_python-1.12.0/src/paid/types/checkout_plan_input.py +27 -0
- paid_python-1.12.0/src/paid/types/checkout_product.py +24 -0
- paid_python-1.12.0/src/paid/types/checkout_product_input.py +24 -0
- paid_python-1.12.0/src/paid/types/checkout_selected_product.py +25 -0
- paid_python-1.12.0/src/paid/types/create_order_line_attribute_request_pricing.py +111 -0
- paid_python-1.12.0/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item.py +65 -0
- paid_python-1.12.0/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_credit_grant_timing.py +7 -0
- paid_python-1.12.0/src/paid/types/create_order_line_attribute_request_pricing_credit_unit_brackets_item.py +36 -0
- paid_python-1.12.0/src/paid/types/create_order_line_attribute_request_pricing_price_points.py +36 -0
- paid_python-1.12.0/src/paid/types/create_order_line_attribute_request_pricing_price_points_tiers_item.py +42 -0
- paid_python-1.12.0/src/paid/types/create_order_line_attribute_request_pricing_pricing_input.py +26 -0
- paid_python-1.12.0/src/paid/types/credit_balance.py +73 -0
- paid_python-1.12.0/src/paid/types/credit_benefit_input.py +59 -0
- paid_python-1.12.0/src/paid/types/credit_benefit_output.py +47 -0
- paid_python-1.12.0/src/paid/types/credit_grant.py +54 -0
- paid_python-1.12.0/src/paid/types/credit_grant_add_axis_options.py +33 -0
- paid_python-1.12.0/src/paid/types/credit_grant_add_axis_options_options_item.py +35 -0
- paid_python-1.12.0/src/paid/types/credit_grant_axis_options.py +22 -0
- paid_python-1.12.0/src/paid/types/credit_grant_axis_options_options_item.py +39 -0
- paid_python-1.12.0/src/paid/types/credit_grant_create_request.py +50 -0
- paid_python-1.12.0/src/paid/types/credit_grant_currency.py +27 -0
- paid_python-1.12.0/src/paid/types/credit_grant_customer.py +30 -0
- paid_python-1.12.0/src/paid/types/credit_grant_result.py +54 -0
- paid_python-1.12.0/src/paid/types/credit_grant_result_status.py +5 -0
- paid_python-1.12.0/src/paid/types/credit_grant_value.py +5 -0
- paid_python-1.12.0/src/paid/types/credit_transaction.py +82 -0
- paid_python-1.12.0/src/paid/types/credit_transaction_currency.py +27 -0
- paid_python-1.12.0/src/paid/types/credit_transaction_customer.py +30 -0
- paid_python-1.12.0/src/paid/types/credit_transaction_list_response.py +26 -0
- paid_python-1.12.0/src/paid/types/credit_transaction_product.py +38 -0
- paid_python-1.12.0/src/paid/types/credit_transaction_type.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view.py +45 -0
- paid_python-1.12.0/src/paid/types/custom_view_authoring_detail.py +74 -0
- paid_python-1.12.0/src/paid/types/custom_view_authoring_detail_period.py +48 -0
- paid_python-1.12.0/src/paid/types/custom_view_authoring_detail_period_kind.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_authoring_detail_period_unit.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_authoring_detail_scope.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_authoring_detail_status.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_authoring_guide.py +33 -0
- paid_python-1.12.0/src/paid/types/custom_view_detail.py +55 -0
- paid_python-1.12.0/src/paid/types/custom_view_detail_period.py +48 -0
- paid_python-1.12.0/src/paid/types/custom_view_detail_period_kind.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_detail_period_unit.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_detail_scope.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_detail_status.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_embed_token_response.py +31 -0
- paid_python-1.12.0/src/paid/types/custom_view_filter.py +27 -0
- paid_python-1.12.0/src/paid/types/custom_view_list_response.py +20 -0
- paid_python-1.12.0/src/paid/types/custom_view_preview_harness.py +22 -0
- paid_python-1.12.0/src/paid/types/custom_view_preview_harness_request.py +49 -0
- paid_python-1.12.0/src/paid/types/custom_view_preview_harness_request_synthetic_value_item.py +30 -0
- paid_python-1.12.0/src/paid/types/custom_view_preview_harness_request_synthetic_value_item_type.py +7 -0
- paid_python-1.12.0/src/paid/types/custom_view_query.py +27 -0
- paid_python-1.12.0/src/paid/types/custom_view_scope.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_status.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_summary.py +46 -0
- paid_python-1.12.0/src/paid/types/custom_view_summary_period.py +48 -0
- paid_python-1.12.0/src/paid/types/custom_view_summary_period_kind.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_summary_period_unit.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_summary_scope.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_summary_status.py +5 -0
- paid_python-1.12.0/src/paid/types/custom_view_validation_finding.py +32 -0
- paid_python-1.12.0/src/paid/types/customer.py +71 -0
- paid_python-1.12.0/src/paid/types/customer_alias.py +39 -0
- paid_python-1.12.0/src/paid/types/customer_alias_create_request.py +32 -0
- paid_python-1.12.0/src/paid/types/customer_alias_list_response.py +22 -0
- paid_python-1.12.0/src/paid/types/customer_connections.py +24 -0
- paid_python-1.12.0/src/paid/types/customer_group_delete_response.py +26 -0
- paid_python-1.12.0/src/paid/types/customer_group_detail.py +35 -0
- paid_python-1.12.0/src/paid/types/customer_group_list_response.py +22 -0
- paid_python-1.12.0/src/paid/types/customer_group_member.py +25 -0
- paid_python-1.12.0/src/paid/types/customer_group_summary.py +33 -0
- paid_python-1.12.0/src/paid/types/customer_status.py +5 -0
- paid_python-1.12.0/src/paid/types/customer_unit.py +68 -0
- paid_python-1.12.0/src/paid/types/customer_unit_attribution.py +31 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_current_period.py +33 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_end_response.py +51 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_ended_policy.py +57 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_ended_policy_frequency.py +5 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_open_policy.py +58 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_open_policy_effective_until.py +5 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_open_policy_frequency.py +5 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_period.py +28 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_policy.py +60 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_policy_frequency.py +5 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_response.py +49 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_set.py +48 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_set_frequency.py +5 -0
- paid_python-1.12.0/src/paid/types/customer_unit_cap_set_response.py +49 -0
- paid_python-1.12.0/src/paid/types/customer_unit_create.py +53 -0
- paid_python-1.12.0/src/paid/types/customer_unit_list_response.py +26 -0
- paid_python-1.12.0/src/paid/types/customer_unit_status.py +5 -0
- paid_python-1.12.0/src/paid/types/customer_unit_update.py +45 -0
- paid_python-1.12.0/src/paid/types/end_attribute_intent.py +33 -0
- paid_python-1.12.0/src/paid/types/end_attribute_intent_treatment.py +7 -0
- paid_python-1.12.0/src/paid/types/grant_customer_credits_response.py +37 -0
- paid_python-1.12.0/src/paid/types/invoice.py +105 -0
- paid_python-1.12.0/src/paid/types/member_request.py +25 -0
- paid_python-1.12.0/src/paid/types/money_axis_options.py +22 -0
- paid_python-1.12.0/src/paid/types/money_axis_options_options_item.py +39 -0
- paid_python-1.12.0/src/paid/types/money_axis_value.py +5 -0
- paid_python-1.12.0/src/paid/types/payment.py +100 -0
- paid_python-1.12.0/src/paid/types/payment_allocation.py +72 -0
- paid_python-1.12.0/src/paid/types/payment_allocation_create_response.py +20 -0
- paid_python-1.12.0/src/paid/types/payment_allocation_input.py +36 -0
- paid_python-1.12.0/src/paid/types/payment_allocation_list_response.py +22 -0
- paid_python-1.12.0/src/paid/types/payment_create_status.py +5 -0
- paid_python-1.12.0/src/paid/types/payment_list_response.py +22 -0
- paid_python-1.12.0/src/paid/types/payment_method.py +54 -0
- paid_python-1.12.0/src/paid/types/payment_method_card.py +44 -0
- paid_python-1.12.0/src/paid/types/payment_method_list_response.py +22 -0
- paid_python-1.12.0/src/paid/types/payment_method_setup.py +39 -0
- paid_python-1.12.0/src/paid/types/payment_method_setup_setup_intent.py +41 -0
- paid_python-1.12.0/src/paid/types/payment_type.py +5 -0
- paid_python-1.12.0/src/paid/types/pending_credit_consumption.py +60 -0
- paid_python-1.12.0/src/paid/types/pending_credit_consumption_currency.py +31 -0
- paid_python-1.12.0/src/paid/types/pending_credit_consumption_list_response.py +26 -0
- paid_python-1.12.0/src/paid/types/plan.py +47 -0
- paid_python-1.12.0/src/paid/types/plan_attribute.py +31 -0
- paid_python-1.12.0/src/paid/types/plan_attribute_input.py +33 -0
- paid_python-1.12.0/src/paid/types/plan_credit_benefit.py +54 -0
- paid_python-1.12.0/src/paid/types/plan_credit_benefit_allocation_cadence.py +5 -0
- paid_python-1.12.0/src/paid/types/plan_credit_benefit_credit_grant_timing.py +7 -0
- paid_python-1.12.0/src/paid/types/plan_credit_benefit_recipient.py +5 -0
- paid_python-1.12.0/src/paid/types/plan_credit_benefit_rollover_duration_unit.py +5 -0
- paid_python-1.12.0/src/paid/types/plan_list_response.py +22 -0
- paid_python-1.12.0/src/paid/types/plan_pricing.py +37 -0
- paid_python-1.12.0/src/paid/types/plan_pricing_pricing_type.py +24 -0
- paid_python-1.12.0/src/paid/types/plan_ref.py +25 -0
- paid_python-1.12.0/src/paid/types/plan_status.py +5 -0
- paid_python-1.12.0/src/paid/types/plan_upgrade_path_group.py +24 -0
- paid_python-1.12.0/src/paid/types/plan_upgrade_path_response.py +20 -0
- paid_python-1.12.0/src/paid/types/planned_add.py +56 -0
- paid_python-1.12.0/src/paid/types/planned_add_charge_stub.py +5 -0
- paid_python-1.12.0/src/paid/types/planned_copy.py +32 -0
- paid_python-1.12.0/src/paid/types/planned_end.py +32 -0
- paid_python-1.12.0/src/paid/types/planned_operations.py +36 -0
- paid_python-1.12.0/src/paid/types/planned_order_term.py +32 -0
- paid_python-1.12.0/src/paid/types/planned_replace.py +47 -0
- paid_python-1.12.0/src/paid/types/pricing_input.py +667 -0
- paid_python-1.12.0/src/paid/types/pricing_output.py +60 -0
- paid_python-1.12.0/src/paid/types/pricing_output_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/pricing_price_point_output.py +33 -0
- paid_python-1.12.0/src/paid/types/pricing_tier_output.py +40 -0
- paid_python-1.12.0/src/paid/types/pricing_tier_output_tier_billing_type.py +5 -0
- paid_python-1.12.0/src/paid/types/product_attribute_upsert.py +36 -0
- paid_python-1.12.0/src/paid/types/product_credit_benefit_input.py +59 -0
- paid_python-1.12.0/src/paid/types/product_credit_benefit_output.py +47 -0
- paid_python-1.12.0/src/paid/types/product_price_point_output.py +33 -0
- paid_python-1.12.0/src/paid/types/product_pricing_input.py +681 -0
- paid_python-1.12.0/src/paid/types/product_pricing_output.py +62 -0
- paid_python-1.12.0/src/paid/types/product_pricing_output_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/product_pricing_tier_output.py +40 -0
- paid_python-1.12.0/src/paid/types/product_pricing_tier_output_tier_billing_type.py +5 -0
- paid_python-1.12.0/src/paid/types/product_seat_based_prepaid_credits_input.py +56 -0
- paid_python-1.12.0/src/paid/types/product_simple_price_point.py +33 -0
- paid_python-1.12.0/src/paid/types/product_simple_price_point_tiers_item.py +38 -0
- paid_python-1.12.0/src/paid/types/product_tiered_price_point.py +33 -0
- paid_python-1.12.0/src/paid/types/product_tiered_price_point_tiers_item.py +38 -0
- paid_python-1.12.0/src/paid/types/product_usage_bracketed_prepaid_credits_input.py +86 -0
- paid_python-1.12.0/src/paid/types/product_usage_bracketed_prepaid_credits_input_credit_unit_brackets_item.py +36 -0
- paid_python-1.12.0/src/paid/types/product_usage_bracketed_prepaid_credits_input_pricing_input.py +26 -0
- paid_python-1.12.0/src/paid/types/product_usage_bracketed_prepaid_credits_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/product_usage_cost_plus_input.py +52 -0
- paid_python-1.12.0/src/paid/types/product_usage_cost_plus_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/product_usage_graduated_input.py +48 -0
- paid_python-1.12.0/src/paid/types/product_usage_graduated_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/product_usage_per_unit_input.py +48 -0
- paid_python-1.12.0/src/paid/types/product_usage_per_unit_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/product_usage_prepaid_credits_input.py +67 -0
- paid_python-1.12.0/src/paid/types/product_usage_prepaid_credits_input_pricing_input.py +24 -0
- paid_python-1.12.0/src/paid/types/product_usage_prepaid_credits_input_pricing_input_kind.py +5 -0
- paid_python-1.12.0/src/paid/types/product_usage_prepaid_credits_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/product_usage_volume_input.py +48 -0
- paid_python-1.12.0/src/paid/types/product_usage_volume_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/remove_members_response.py +25 -0
- paid_python-1.12.0/src/paid/types/render_bundle_edit.py +41 -0
- paid_python-1.12.0/src/paid/types/seat_based_prepaid_credits_input.py +54 -0
- paid_python-1.12.0/src/paid/types/set_members_response.py +26 -0
- paid_python-1.12.0/src/paid/types/signal.py +41 -0
- paid_python-1.12.0/src/paid/types/signal_list_item.py +76 -0
- paid_python-1.12.0/src/paid/types/signal_list_response.py +22 -0
- paid_python-1.12.0/src/paid/types/signals_metadata_response.py +22 -0
- paid_python-1.12.0/src/paid/types/signals_metadata_response_meta.py +22 -0
- paid_python-1.12.0/src/paid/types/signals_metadata_response_signals_item.py +23 -0
- paid_python-1.12.0/src/paid/types/signals_metadata_response_signals_item_paths_item.py +27 -0
- paid_python-1.12.0/src/paid/types/simple_price_point.py +33 -0
- paid_python-1.12.0/src/paid/types/simple_price_point_tiers_item.py +38 -0
- paid_python-1.12.0/src/paid/types/stripe_connection.py +27 -0
- paid_python-1.12.0/src/paid/types/sync_value_receipt_request.py +50 -0
- paid_python-1.12.0/src/paid/types/sync_value_receipt_request_product.py +26 -0
- paid_python-1.12.0/src/paid/types/tiered_price_point.py +33 -0
- paid_python-1.12.0/src/paid/types/tiered_price_point_tiers_item.py +38 -0
- paid_python-1.12.0/src/paid/types/unified_amendment_intent.py +199 -0
- paid_python-1.12.0/src/paid/types/unified_amendment_response.py +53 -0
- paid_python-1.12.0/src/paid/types/update_line_term_intent.py +36 -0
- paid_python-1.12.0/src/paid/types/update_line_term_intent_treatment.py +7 -0
- paid_python-1.12.0/src/paid/types/update_order_term_intent.py +42 -0
- paid_python-1.12.0/src/paid/types/update_order_term_intent_treatment.py +7 -0
- paid_python-1.12.0/src/paid/types/update_plan_request.py +40 -0
- paid_python-1.12.0/src/paid/types/update_plan_request_status.py +5 -0
- paid_python-1.12.0/src/paid/types/update_pricing_intent.py +54 -0
- paid_python-1.12.0/src/paid/types/update_pricing_intent_treatment.py +7 -0
- paid_python-1.12.0/src/paid/types/update_quantity_intent.py +38 -0
- paid_python-1.12.0/src/paid/types/update_quantity_intent_treatment.py +7 -0
- paid_python-1.12.0/src/paid/types/usage_attribution_axis_options.py +22 -0
- paid_python-1.12.0/src/paid/types/usage_attribution_axis_options_options_item.py +39 -0
- paid_python-1.12.0/src/paid/types/usage_attribution_axis_value.py +5 -0
- paid_python-1.12.0/src/paid/types/usage_bracketed_prepaid_credits_input.py +78 -0
- paid_python-1.12.0/src/paid/types/usage_bracketed_prepaid_credits_input_credit_unit_brackets_item.py +36 -0
- paid_python-1.12.0/src/paid/types/usage_bracketed_prepaid_credits_input_pricing_input.py +24 -0
- paid_python-1.12.0/src/paid/types/usage_bracketed_prepaid_credits_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/usage_cost_plus_input.py +52 -0
- paid_python-1.12.0/src/paid/types/usage_cost_plus_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/usage_graduated_input.py +48 -0
- paid_python-1.12.0/src/paid/types/usage_graduated_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/usage_per_unit_input.py +48 -0
- paid_python-1.12.0/src/paid/types/usage_per_unit_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/usage_prepaid_credits_input.py +67 -0
- paid_python-1.12.0/src/paid/types/usage_prepaid_credits_input_pricing_input.py +24 -0
- paid_python-1.12.0/src/paid/types/usage_prepaid_credits_input_pricing_input_kind.py +5 -0
- paid_python-1.12.0/src/paid/types/usage_prepaid_credits_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/usage_volume_input.py +48 -0
- paid_python-1.12.0/src/paid/types/usage_volume_input_signal_type.py +5 -0
- paid_python-1.12.0/src/paid/types/validate_custom_view_request.py +51 -0
- paid_python-1.12.0/src/paid/types/validate_custom_view_request_period.py +48 -0
- paid_python-1.12.0/src/paid/types/validate_custom_view_request_period_kind.py +5 -0
- paid_python-1.12.0/src/paid/types/validate_custom_view_request_period_unit.py +5 -0
- paid_python-1.12.0/src/paid/types/validate_custom_view_request_scope.py +5 -0
- paid_python-1.12.0/src/paid/types/validate_custom_view_response.py +28 -0
- paid_python-1.12.0/src/paid/types/value_metric_detail.py +44 -0
- paid_python-1.12.0/src/paid/types/value_metric_detail_formula.py +23 -0
- paid_python-1.12.0/src/paid/types/value_metric_detail_monetary_conversion.py +36 -0
- paid_python-1.12.0/src/paid/types/value_metric_detail_monetary_conversion_variables_item.py +21 -0
- paid_python-1.12.0/src/paid/types/value_metric_detail_sources_item.py +20 -0
- paid_python-1.12.0/src/paid/types/value_metric_formula.py +33 -0
- paid_python-1.12.0/src/paid/types/value_metric_formula_variable.py +37 -0
- paid_python-1.12.0/src/paid/types/value_metric_formula_variable_format.py +5 -0
- paid_python-1.12.0/src/paid/types/value_metric_formula_variable_format_unit.py +5 -0
- paid_python-1.12.0/src/paid/types/value_metric_formula_variable_type.py +5 -0
- paid_python-1.12.0/src/paid/types/value_metric_list_response.py +22 -0
- paid_python-1.12.0/src/paid/types/value_metric_monetary_conversion.py +31 -0
- paid_python-1.12.0/src/paid/types/value_metric_signal_binding.py +42 -0
- paid_python-1.12.0/src/paid/types/value_metric_summary.py +35 -0
- paid_python-1.12.0/src/paid/types/value_metric_summary_monetary_conversion.py +36 -0
- paid_python-1.12.0/src/paid/types/value_metric_summary_monetary_conversion_variables_item.py +21 -0
- paid_python-1.12.0/src/paid/types/value_metric_unit.py +44 -0
- paid_python-1.12.0/src/paid/types/value_metric_unit_duration_unit.py +5 -0
- paid_python-1.12.0/src/paid/types/value_metric_unit_type.py +5 -0
- paid_python-1.12.0/src/paid/types/value_metric_validation_response.py +21 -0
- paid_python-1.12.0/src/paid/types/value_metric_validation_response_errors_item.py +20 -0
- paid_python-1.12.0/src/paid/types/value_metric_variable_edit.py +45 -0
- paid_python-1.12.0/src/paid/types/value_metric_variable_edit_format.py +5 -0
- paid_python-1.12.0/src/paid/types/value_metric_variable_edit_format_unit.py +5 -0
- paid_python-1.12.0/src/paid/types/value_metric_write_ack.py +24 -0
- paid_python-1.12.0/src/paid/types/value_model_authoring_guide.py +35 -0
- paid_python-1.12.0/src/paid/types/value_model_authoring_guide_examples_item.py +21 -0
- paid_python-1.12.0/src/paid/types/value_model_content.py +43 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item.py +37 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_conditions_item.py +27 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_conditions_item_operator.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_conditions_item_result.py +24 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_conditions_item_result_type.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_conditions_item_value.py +5 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_default_result.py +22 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_default_result_type.py +5 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_variables_item.py +50 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_variables_item_derived_from.py +31 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_variables_item_derived_from_target_unit.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_variables_item_format.py +5 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_variables_item_format_unit.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_formulas_item_variables_item_type.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_overrides_item.py +60 -0
- paid_python-1.12.0/src/paid/types/value_model_content_overrides_item_additional_signals_item.py +42 -0
- paid_python-1.12.0/src/paid/types/value_model_content_overrides_item_additional_signals_item_defaults_value.py +5 -0
- paid_python-1.12.0/src/paid/types/value_model_content_overrides_item_monetary_conversion_overrides_value.py +19 -0
- paid_python-1.12.0/src/paid/types/value_model_content_overrides_item_scope.py +28 -0
- paid_python-1.12.0/src/paid/types/value_model_content_overrides_item_signal_overrides_value.py +22 -0
- paid_python-1.12.0/src/paid/types/value_model_content_overrides_item_signal_overrides_value_defaults_value.py +5 -0
- paid_python-1.12.0/src/paid/types/value_model_content_overrides_item_value_type_overrides_value.py +27 -0
- paid_python-1.12.0/src/paid/types/value_model_content_overrides_item_value_type_overrides_value_variables_value.py +5 -0
- paid_python-1.12.0/src/paid/types/value_model_content_segment_tables_item.py +32 -0
- paid_python-1.12.0/src/paid/types/value_model_content_segment_tables_item_columns_item.py +24 -0
- paid_python-1.12.0/src/paid/types/value_model_content_segment_tables_item_columns_item_type.py +5 -0
- paid_python-1.12.0/src/paid/types/value_model_content_segment_tables_item_rows_item.py +24 -0
- paid_python-1.12.0/src/paid/types/value_model_content_signals_item.py +40 -0
- paid_python-1.12.0/src/paid/types/value_model_content_signals_item_defaults_value.py +5 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item.py +47 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item.py +28 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation.py +44 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_monetary_conversion.py +31 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_monetary_conversion_conditions_item.py +33 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_monetary_conversion_conditions_item_operator.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_monetary_conversion_conditions_item_result.py +26 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_monetary_conversion_conditions_item_result_type.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_monetary_conversion_conditions_item_value.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_monetary_conversion_variables_item.py +23 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_unit.py +19 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_unit_duration_unit.py +32 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_unit_duration_unit_duration_unit.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_unit_duration_unit_type.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_unit_type.py +24 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_unit_type_type.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_unit_zero.py +22 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_calculation_timeline_item_calculation_unit_zero_type.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_category.py +7 -0
- paid_python-1.12.0/src/paid/types/value_model_content_value_types_item_sources_item.py +20 -0
- paid_python-1.12.0/src/paid/types/value_model_detail.py +45 -0
- paid_python-1.12.0/src/paid/types/value_model_summary.py +40 -0
- paid_python-1.12.0/src/paid/types/value_model_summary_status.py +5 -0
- paid_python-1.12.0/src/paid/types/value_model_version_list_response.py +22 -0
- paid_python-1.12.0/src/paid/types/value_receipt_sync_response.py +30 -0
- paid_python-1.12.0/src/paid/types/view_data_response.py +22 -0
- paid_python-1.12.0/src/paid/types/webhook_name.py +20 -0
- paid_python-1.12.0/src/paid/types/webhook_update_response_name.py +20 -0
- paid_python-1.12.0/src/paid/value_metrics/__init__.py +49 -0
- paid_python-1.12.0/src/paid/value_metrics/client.py +699 -0
- paid_python-1.12.0/src/paid/value_metrics/raw_client.py +1094 -0
- paid_python-1.12.0/src/paid/value_metrics/types/__init__.py +47 -0
- paid_python-1.12.0/src/paid/value_metrics/types/create_value_metric_request_category.py +5 -0
- paid_python-1.12.0/src/paid/value_metrics/types/create_value_metric_request_sources_item.py +20 -0
- paid_python-1.12.0/src/paid/value_metrics/types/update_value_metric_request_category.py +5 -0
- paid_python-1.12.0/src/paid/value_metrics/types/update_value_metric_request_sources_item.py +20 -0
- paid_python-1.12.0/src/paid/value_models/__init__.py +4 -0
- paid_python-1.12.0/src/paid/value_models/client.py +534 -0
- paid_python-1.12.0/src/paid/value_models/raw_client.py +673 -0
- paid_python-1.12.0/src/paid/value_receipts/__init__.py +34 -0
- paid_python-1.12.0/src/paid/value_receipts/client.py +993 -0
- paid_python-1.12.0/src/paid/value_receipts/raw_client.py +1897 -0
- paid_python-1.12.0/src/paid/value_receipts/types/__init__.py +34 -0
- paid_python-1.12.0/src/paid/webhooks/raw_client.py +674 -0
- paid_python-1.12.0/src/paid/webhooks/types/test_webhook_request_webhook_name.py +20 -0
- paid_python-1.12.0/src/paid/webhooks/types/update_webhook_request_webhook_name.py +20 -0
- paid_python-1.10.0/PKG-INFO +0 -792
- paid_python-1.10.0/pyproject.toml +0 -111
- paid_python-1.10.0/src/paid/__init__.py +0 -984
- paid_python-1.10.0/src/paid/checkouts/client.py +0 -457
- paid_python-1.10.0/src/paid/checkouts/raw_client.py +0 -763
- paid_python-1.10.0/src/paid/client.py +0 -401
- paid_python-1.10.0/src/paid/contacts/raw_client.py +0 -1488
- paid_python-1.10.0/src/paid/core/client_wrapper.py +0 -99
- paid_python-1.10.0/src/paid/costs/raw_client.py +0 -190
- paid_python-1.10.0/src/paid/credits/__init__.py +0 -37
- paid_python-1.10.0/src/paid/credits/client.py +0 -330
- paid_python-1.10.0/src/paid/credits/raw_client.py +0 -555
- paid_python-1.10.0/src/paid/credits/types/__init__.py +0 -38
- paid_python-1.10.0/src/paid/customer_portals/raw_client.py +0 -242
- paid_python-1.10.0/src/paid/customers/client.py +0 -1364
- paid_python-1.10.0/src/paid/customers/raw_client.py +0 -2416
- paid_python-1.10.0/src/paid/errors/__init__.py +0 -44
- paid_python-1.10.0/src/paid/errors/bad_request_error.py +0 -11
- paid_python-1.10.0/src/paid/errors/conflict_error.py +0 -11
- paid_python-1.10.0/src/paid/errors/forbidden_error.py +0 -11
- paid_python-1.10.0/src/paid/errors/internal_server_error.py +0 -11
- paid_python-1.10.0/src/paid/errors/not_found_error.py +0 -11
- paid_python-1.10.0/src/paid/invoices/client.py +0 -369
- paid_python-1.10.0/src/paid/invoices/raw_client.py +0 -694
- paid_python-1.10.0/src/paid/orders/__init__.py +0 -37
- paid_python-1.10.0/src/paid/orders/client.py +0 -1117
- paid_python-1.10.0/src/paid/orders/raw_client.py +0 -1926
- paid_python-1.10.0/src/paid/orders/types/__init__.py +0 -38
- paid_python-1.10.0/src/paid/pricing/client.py +0 -304
- paid_python-1.10.0/src/paid/pricing/raw_client.py +0 -465
- paid_python-1.10.0/src/paid/products/client.py +0 -672
- paid_python-1.10.0/src/paid/products/raw_client.py +0 -1166
- paid_python-1.10.0/src/paid/signals/client.py +0 -130
- paid_python-1.10.0/src/paid/signals/raw_client.py +0 -190
- paid_python-1.10.0/src/paid/types/__init__.py +0 -947
- paid_python-1.10.0/src/paid/types/checkout.py +0 -57
- paid_python-1.10.0/src/paid/types/checkout_details.py +0 -65
- paid_python-1.10.0/src/paid/types/checkout_product.py +0 -19
- paid_python-1.10.0/src/paid/types/checkout_product_input.py +0 -19
- paid_python-1.10.0/src/paid/types/create_order_line_attribute_request_pricing.py +0 -106
- paid_python-1.10.0/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item.py +0 -59
- paid_python-1.10.0/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_credit_grant_timing.py +0 -7
- paid_python-1.10.0/src/paid/types/create_order_line_attribute_request_pricing_credit_unit_brackets_item.py +0 -26
- paid_python-1.10.0/src/paid/types/create_order_line_attribute_request_pricing_price_points.py +0 -32
- paid_python-1.10.0/src/paid/types/create_order_line_attribute_request_pricing_price_points_tiers_item.py +0 -42
- paid_python-1.10.0/src/paid/types/create_order_line_attribute_request_pricing_pricing_input.py +0 -22
- paid_python-1.10.0/src/paid/types/credit_balance.py +0 -65
- paid_python-1.10.0/src/paid/types/credit_benefit_input.py +0 -53
- paid_python-1.10.0/src/paid/types/credit_benefit_output.py +0 -47
- paid_python-1.10.0/src/paid/types/credit_grant.py +0 -42
- paid_python-1.10.0/src/paid/types/customer.py +0 -63
- paid_python-1.10.0/src/paid/types/invoice.py +0 -95
- paid_python-1.10.0/src/paid/types/pricing_input.py +0 -625
- paid_python-1.10.0/src/paid/types/pricing_output.py +0 -56
- paid_python-1.10.0/src/paid/types/pricing_price_point_output.py +0 -33
- paid_python-1.10.0/src/paid/types/pricing_price_point_output_tiers_item.py +0 -40
- paid_python-1.10.0/src/paid/types/pricing_price_point_output_tiers_item_tier_billing_type.py +0 -5
- paid_python-1.10.0/src/paid/types/product_attribute_upsert.py +0 -33
- paid_python-1.10.0/src/paid/types/product_credit_benefit_input.py +0 -53
- paid_python-1.10.0/src/paid/types/product_credit_benefit_output.py +0 -47
- paid_python-1.10.0/src/paid/types/product_price_point_output.py +0 -33
- paid_python-1.10.0/src/paid/types/product_price_point_output_tiers_item.py +0 -40
- paid_python-1.10.0/src/paid/types/product_price_point_output_tiers_item_tier_billing_type.py +0 -5
- paid_python-1.10.0/src/paid/types/product_pricing_input.py +0 -637
- paid_python-1.10.0/src/paid/types/product_pricing_output.py +0 -56
- paid_python-1.10.0/src/paid/types/product_seat_based_prepaid_credits_input.py +0 -54
- paid_python-1.10.0/src/paid/types/product_simple_price_point.py +0 -33
- paid_python-1.10.0/src/paid/types/product_simple_price_point_tiers_item.py +0 -40
- paid_python-1.10.0/src/paid/types/product_tiered_price_point.py +0 -33
- paid_python-1.10.0/src/paid/types/product_tiered_price_point_tiers_item.py +0 -40
- paid_python-1.10.0/src/paid/types/product_usage_bracketed_prepaid_credits_input.py +0 -78
- paid_python-1.10.0/src/paid/types/product_usage_bracketed_prepaid_credits_input_credit_unit_brackets_item.py +0 -26
- paid_python-1.10.0/src/paid/types/product_usage_bracketed_prepaid_credits_input_pricing_input.py +0 -22
- paid_python-1.10.0/src/paid/types/product_usage_cost_plus_input.py +0 -46
- paid_python-1.10.0/src/paid/types/product_usage_graduated_input.py +0 -42
- paid_python-1.10.0/src/paid/types/product_usage_per_unit_input.py +0 -42
- paid_python-1.10.0/src/paid/types/product_usage_prepaid_credits_input.py +0 -53
- paid_python-1.10.0/src/paid/types/product_usage_volume_input.py +0 -42
- paid_python-1.10.0/src/paid/types/seat_based_prepaid_credits_input.py +0 -52
- paid_python-1.10.0/src/paid/types/signal.py +0 -35
- paid_python-1.10.0/src/paid/types/simple_price_point.py +0 -33
- paid_python-1.10.0/src/paid/types/simple_price_point_tiers_item.py +0 -40
- paid_python-1.10.0/src/paid/types/tiered_price_point.py +0 -33
- paid_python-1.10.0/src/paid/types/tiered_price_point_tiers_item.py +0 -40
- paid_python-1.10.0/src/paid/types/usage_bracketed_prepaid_credits_input.py +0 -72
- paid_python-1.10.0/src/paid/types/usage_bracketed_prepaid_credits_input_credit_unit_brackets_item.py +0 -26
- paid_python-1.10.0/src/paid/types/usage_bracketed_prepaid_credits_input_pricing_input.py +0 -20
- paid_python-1.10.0/src/paid/types/usage_cost_plus_input.py +0 -46
- paid_python-1.10.0/src/paid/types/usage_graduated_input.py +0 -42
- paid_python-1.10.0/src/paid/types/usage_per_unit_input.py +0 -42
- paid_python-1.10.0/src/paid/types/usage_prepaid_credits_input.py +0 -53
- paid_python-1.10.0/src/paid/types/usage_volume_input.py +0 -42
- paid_python-1.10.0/src/paid/types/value_receipt_sync_response.py +0 -26
- paid_python-1.10.0/src/paid/types/webhook_name.py +0 -18
- paid_python-1.10.0/src/paid/types/webhook_update_response_name.py +0 -18
- paid_python-1.10.0/src/paid/value_receipts/__init__.py +0 -37
- paid_python-1.10.0/src/paid/value_receipts/client.py +0 -848
- paid_python-1.10.0/src/paid/value_receipts/raw_client.py +0 -1397
- paid_python-1.10.0/src/paid/value_receipts/types/__init__.py +0 -38
- paid_python-1.10.0/src/paid/value_receipts/types/sync_value_receipt_request_product.py +0 -26
- paid_python-1.10.0/src/paid/webhooks/raw_client.py +0 -675
- paid_python-1.10.0/src/paid/webhooks/types/test_webhook_request_webhook_name.py +0 -18
- paid_python-1.10.0/src/paid/webhooks/types/update_webhook_request_webhook_name.py +0 -18
- {paid_python-1.10.0 → paid_python-1.12.0}/LICENSE +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/README.md +0 -0
- {paid_python-1.10.0/src/paid/costs → paid_python-1.12.0/src/paid/analytics}/__init__.py +0 -0
- {paid_python-1.10.0/src/paid/customer_portals → paid_python-1.12.0/src/paid/analytics_experimental}/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/checkouts/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/checkouts/types/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/checkouts/types/list_checkouts_request_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/contacts/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/contacts/client.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/contacts/types/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/contacts/types/create_contact_request_roles_item.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/api_error.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/datetime_utils.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/file.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/force_multipart.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/http_client.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/http_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/http_sse/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/http_sse/_api.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/http_sse/_decoders.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/http_sse/_exceptions.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/http_sse/_models.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/jsonable_encoder.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/pydantic_utilities.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/query_encoder.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/remove_none_from_dict.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/request_options.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/core/serialization.py +0 -0
- {paid_python-1.10.0/src/paid/customers → paid_python-1.12.0/src/paid/costs}/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/costs/client.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/credits/types/list_credit_currencies_request_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/credits/types/update_credit_currency_request_status.py +0 -0
- {paid_python-1.10.0/src/paid/invoices → paid_python-1.12.0/src/paid/customer_groups}/__init__.py +0 -0
- {paid_python-1.10.0/src/paid/pricing → paid_python-1.12.0/src/paid/customer_portals}/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/customer_portals/client.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/environment.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/logger.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/orders/types/batch_seat_assignments_request_assignments_item.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/orders/types/list_order_seats_request_status.py +0 -0
- {paid_python-1.10.0/src/paid/products → paid_python-1.12.0/src/paid/payment_allocations}/__init__.py +0 -0
- {paid_python-1.10.0/src/paid/signals → paid_python-1.12.0/src/paid/payment_methods}/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/py.typed +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/anthropic_patches/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/anthropic_patches/patches.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/autoinstrumentation.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/context_data.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/context_manager.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/distributed_tracing.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/gemini_patches/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/gemini_patches/patches.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/openai_agents_patches/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/openai_agents_patches/patches.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/openai_patches/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/openai_patches/patches.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/signal.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/tracing.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/anthropic/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/anthropic/anthropicWrapper.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/bedrock/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/bedrock/bedrockWrapper.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/gemini/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/gemini/geminiWrapper.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/langchain/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/langchain/paidLangChainCallback.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/mistral/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/mistral/mistralWrapper.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/openai/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/openai/openAiWrapper.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/openai_agents/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/openai_agents/openaiAgentsHook.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/tracing/wrappers/utils.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/attribution.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/batch_seat_assignments_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/bulk_signals_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/checkout_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/checkout_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/contact.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/contact_billing_address.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/contact_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/contact_roles_item.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/cost.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/cost_ingest_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/cost_override.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request_pricing_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request_pricing_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request_pricing_charge_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_allocation_cadence.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_recipient.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request_pricing_credit_benefits_item_rollover_duration_unit.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request_pricing_price_points_tiers_item_tier_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request_pricing_pricing_input_kind.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request_pricing_pricing_model.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_attribute_request_pricing_signal_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/create_order_line_request.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/credit_balance_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/credit_balance_recipient.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/credit_benefit_input_allocation_cadence.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/credit_benefit_input_credit_grant_timing.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/credit_benefit_input_recipient.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/credit_currency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/credit_currency_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/credit_currency_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/currency_code.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_attribution.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_billing_address_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_billing_address_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_by_external_id.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_by_id.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_creation_state.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_portal.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_portal_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_checkout_link.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_checkout_link_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_credit_balance.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_credit_summary.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_customer.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_order.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_order_state.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_product_ref.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_seat.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_seat_assignee.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_seat_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_state_seats.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_user.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/customer_user_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/empty_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/error_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/invoice_line.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/invoice_line_payment_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/invoice_lines_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/invoice_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/invoice_payment_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/invoice_source.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/invoice_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/invoice_tax_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/one_time_per_unit_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/one_time_per_unit_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/one_time_per_unit_input_fee_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/order.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/order_billing_frequency_override.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/order_billing_frequency_override_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/order_creation_state.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/order_line.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/order_line_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/order_lines_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/order_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/order_seat.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/order_seat_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/pagination.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/precomputed_cost.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/pricing_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/pricing_output_pricing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/pricing_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_attribute_output.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_attribution.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_by_external_id.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_by_id.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_credit_benefit_input_allocation_cadence.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_credit_benefit_input_credit_grant_timing.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_credit_benefit_input_recipient.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_detail.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_one_time_per_unit_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_one_time_per_unit_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_one_time_per_unit_input_fee_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_pricing_output_pricing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_graduated_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_graduated_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_graduated_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_per_unit_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_per_unit_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_per_unit_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_percent_of_total_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_percent_of_total_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_percent_of_total_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_volume_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_volume_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_recurring_volume_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_graduated_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_graduated_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_graduated_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_per_unit_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_per_unit_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_per_unit_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_prepaid_credits_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_prepaid_credits_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_volume_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_volume_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_seat_based_volume_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_simple_price_point_tiers_item_tier_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_tiered_price_point_tiers_item_tier_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_bracketed_prepaid_credits_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_bracketed_prepaid_credits_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_bracketed_prepaid_credits_input_pricing_input_kind.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_cost_plus_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_cost_plus_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_graduated_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_graduated_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_per_unit_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_per_unit_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_prepaid_credits_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_prepaid_credits_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_volume_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/product_usage_volume_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_graduated_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_graduated_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_graduated_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_per_unit_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_per_unit_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_per_unit_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_percent_of_total_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_percent_of_total_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_percent_of_total_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_volume_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_volume_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/recurring_volume_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/rotate_webhook_secret_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_assignee.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_assignment_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_graduated_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_graduated_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_graduated_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_per_unit_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_per_unit_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_per_unit_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_prepaid_credits_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_prepaid_credits_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_volume_input.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_volume_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/seat_based_volume_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/simple_price_point_tiers_item_tier_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/success_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/tiered_price_point_tiers_item_tier_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/token_usage.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/update_contact_request.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/update_contact_request_roles_item.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/update_customer_request.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/update_product_request.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_bracketed_prepaid_credits_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_bracketed_prepaid_credits_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_bracketed_prepaid_credits_input_pricing_input_kind.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_cost.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_cost_plus_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_cost_plus_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_graduated_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_graduated_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_per_unit_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_per_unit_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_prepaid_credits_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_prepaid_credits_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_volume_input_billing_frequency.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/usage_volume_input_billing_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/value_receipt_detail.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/value_receipt_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/value_receipt_summary.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/webhook.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/webhook_delivery_status.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/webhook_list_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/webhook_test_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/webhook_update_response.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/types/writable_order_line_type.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/value_receipts/types/list_value_receipts_request_archived.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/version.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/webhooks/__init__.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/webhooks/client.py +0 -0
- {paid_python-1.10.0 → paid_python-1.12.0}/src/paid/webhooks/types/__init__.py +0 -0
|
@@ -0,0 +1,792 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: paid-python
|
|
3
|
+
Version: 1.12.0
|
|
4
|
+
Summary:
|
|
5
|
+
Requires-Python: >=3.10,<3.14
|
|
6
|
+
Classifier: Intended Audience :: Developers
|
|
7
|
+
Classifier: Operating System :: MacOS
|
|
8
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Classifier: Operating System :: POSIX
|
|
11
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
+
Classifier: Typing :: Typed
|
|
20
|
+
Requires-Dist: httpx (>=0.21.2)
|
|
21
|
+
Requires-Dist: mutagen (>=1.47.0)
|
|
22
|
+
Requires-Dist: openinference-instrumentation-anthropic (>=0.1.20,<1.0.0)
|
|
23
|
+
Requires-Dist: openinference-instrumentation-bedrock (>=0.1.0)
|
|
24
|
+
Requires-Dist: openinference-instrumentation-claude-agent-sdk (>=0.1.0)
|
|
25
|
+
Requires-Dist: openinference-instrumentation-google-genai (>=0.1.8)
|
|
26
|
+
Requires-Dist: openinference-instrumentation-instructor (>=0.1.0)
|
|
27
|
+
Requires-Dist: openinference-instrumentation-langchain (>=0.1.55)
|
|
28
|
+
Requires-Dist: openinference-instrumentation-openai (>=0.1.40)
|
|
29
|
+
Requires-Dist: openinference-instrumentation-openai-agents (>=1.0.0)
|
|
30
|
+
Requires-Dist: opentelemetry-api (>=1.23.0)
|
|
31
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http (>=1.23.0)
|
|
32
|
+
Requires-Dist: opentelemetry-instrumentation-cohere (>=0.51.0)
|
|
33
|
+
Requires-Dist: opentelemetry-sdk (>=1.23.0)
|
|
34
|
+
Requires-Dist: pydantic (>=1.9.2)
|
|
35
|
+
Requires-Dist: pydantic-core (>=2.18.2)
|
|
36
|
+
Requires-Dist: typing_extensions (>=4.0.0)
|
|
37
|
+
Requires-Dist: wrapt (<2)
|
|
38
|
+
Project-URL: Repository, https://github.com/paid-ai/paid-python
|
|
39
|
+
Description-Content-Type: text/markdown
|
|
40
|
+
|
|
41
|
+
<div align="center">
|
|
42
|
+
<picture>
|
|
43
|
+
<source media="(prefers-color-scheme: dark)" srcset="./assets/paid_light.svg" width=600>
|
|
44
|
+
<source media="(prefers-color-scheme: light)" srcset="./assets/paid_dark.svg" width=600>
|
|
45
|
+
<img alt="Fallback image description" src="./assets/paid_light.svg" width=600>
|
|
46
|
+
</picture>
|
|
47
|
+
</div>
|
|
48
|
+
|
|
49
|
+
#
|
|
50
|
+
|
|
51
|
+
<div align="center">
|
|
52
|
+
<a href="https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2FAgentPaid%2Fpaid-python">
|
|
53
|
+
<img src="https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen" alt="fern shield">
|
|
54
|
+
</a>
|
|
55
|
+
<a href="https://pypi.org/project/paid-python">
|
|
56
|
+
<img src="https://img.shields.io/pypi/v/paid-python" alt="pypi shield">
|
|
57
|
+
</a>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
Paid is the all-in-one, drop-in Business Engine for AI Agents that handles your pricing, subscriptions, margins, billing, and renewals with just 5 lines of code.
|
|
61
|
+
The Paid Python library provides convenient access to the Paid API from Python applications.
|
|
62
|
+
|
|
63
|
+
## Documentation
|
|
64
|
+
|
|
65
|
+
See the full API docs [here](https://paid.docs.buildwithfern.com/api-reference/api-reference/customers/list)
|
|
66
|
+
|
|
67
|
+
## Installation
|
|
68
|
+
|
|
69
|
+
You can install the package using pip:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
pip install paid-python
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Usage
|
|
76
|
+
|
|
77
|
+
The client needs to be configured with your account's API key, which is available in the [Paid dashboard](https://app.paid.ai/agent-integration/api-keys).
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
from paid import Paid
|
|
81
|
+
|
|
82
|
+
client = Paid(token="API_KEY")
|
|
83
|
+
|
|
84
|
+
client.customers.create_customer(
|
|
85
|
+
name="name"
|
|
86
|
+
)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Request And Response Types
|
|
90
|
+
|
|
91
|
+
The SDK provides Python classes for all request and response types. These are automatically handled when making API calls.
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
# Example of creating a customer
|
|
95
|
+
response = client.customers.create_customer(
|
|
96
|
+
name="John Doe",
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
# Access response data
|
|
100
|
+
print(response.name)
|
|
101
|
+
print(response.email)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Exception Handling
|
|
105
|
+
|
|
106
|
+
When the API returns a non-success status code (4xx or 5xx response), the SDK will raise an appropriate error.
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
from paid import BadRequestError, NotFoundError
|
|
110
|
+
from paid.core.api_error import ApiError
|
|
111
|
+
|
|
112
|
+
try:
|
|
113
|
+
client.customers.create_customer(name="John Doe")
|
|
114
|
+
except BadRequestError as e:
|
|
115
|
+
print(e.status_code) # 400
|
|
116
|
+
print(e.body) # ErrorResponse with error details
|
|
117
|
+
except NotFoundError as e:
|
|
118
|
+
print(e.status_code) # 404
|
|
119
|
+
print(e.body)
|
|
120
|
+
except ApiError as e:
|
|
121
|
+
# Catch-all for other API errors
|
|
122
|
+
print(e.status_code)
|
|
123
|
+
print(e.body)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Logging
|
|
127
|
+
|
|
128
|
+
Supported log levels are `DEBUG`, `INFO`, `WARNING`, `ERROR`, and `CRITICAL`.
|
|
129
|
+
|
|
130
|
+
For example, to set the log level to debug, you can set the environment variable:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
export PAID_LOG_LEVEL=DEBUG
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Defaults to ERROR.
|
|
137
|
+
|
|
138
|
+
## Environment Variables
|
|
139
|
+
|
|
140
|
+
The Paid SDK supports the following environment variables for configuration:
|
|
141
|
+
|
|
142
|
+
### `PAID_API_KEY`
|
|
143
|
+
|
|
144
|
+
Your Paid API key for authentication. This is used as a fallback when you don't explicitly pass the `token` parameter to the `Paid()` client or `initialize_tracing()`.
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
export PAID_API_KEY="your_api_key_here"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### `PAID_ENABLED`
|
|
151
|
+
|
|
152
|
+
Controls whether Paid tracing is enabled. Set to `false` (case-insensitive) to disable all tracing functionality.
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
export PAID_ENABLED=false
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
This is useful for:
|
|
159
|
+
|
|
160
|
+
- Development/testing environments where tracing isn't needed
|
|
161
|
+
- Temporarily disabling tracing without modifying code
|
|
162
|
+
- Feature flagging in different deployment environments
|
|
163
|
+
|
|
164
|
+
Defaults to `true` if not set.
|
|
165
|
+
|
|
166
|
+
### `PAID_LOG_LEVEL`
|
|
167
|
+
|
|
168
|
+
Sets the logging level for Paid SDK operations. See the [Logging](#logging) section for details.
|
|
169
|
+
|
|
170
|
+
### `PAID_OTEL_COLLECTOR_ENDPOINT`
|
|
171
|
+
|
|
172
|
+
Overrides the default OpenTelemetry collector endpoint URL. Only needed if you want to route traces to a custom endpoint.
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
export PAID_OTEL_COLLECTOR_ENDPOINT="https://your-custom-endpoint.com:4318/v1/traces"
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Defaults to `https://collector.agentpaid.io:4318/v1/traces`.
|
|
179
|
+
|
|
180
|
+
## Cost Tracking via OTEL tracing
|
|
181
|
+
|
|
182
|
+
### Simple Decorator and Context Manager Methods
|
|
183
|
+
|
|
184
|
+
The easiest way to add cost tracking is using the `@paid_tracing` decorator or context manager:
|
|
185
|
+
|
|
186
|
+
> **Important:** Always call `initialize_tracing()` and `paid_autoinstrument()` once at startup before using `paid_tracing`. `initialize_tracing` also accepts optional arguments like OTEL collector endpoint and api key if you want to reroute your tracing somewhere else.
|
|
187
|
+
|
|
188
|
+
#### As a Decorator
|
|
189
|
+
|
|
190
|
+
```python
|
|
191
|
+
from paid.tracing import paid_tracing, initialize_tracing, paid_autoinstrument
|
|
192
|
+
|
|
193
|
+
initialize_tracing()
|
|
194
|
+
paid_autoinstrument() # instruments all supported libraries by default
|
|
195
|
+
|
|
196
|
+
@paid_tracing("<external_customer_id>", external_product_id="<optional_external_product_id>")
|
|
197
|
+
def some_agent_workflow(): # your function
|
|
198
|
+
# Your logic - use any AI providers and send signals with signal().
|
|
199
|
+
# This function is typically an event processor that should lead to AI calls or events emitted as Paid signals
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
#### As a Context Manager
|
|
203
|
+
|
|
204
|
+
You can also use `paid_tracing` as a context manager with `with` statements:
|
|
205
|
+
|
|
206
|
+
```python
|
|
207
|
+
from paid.tracing import paid_tracing, initialize_tracing, paid_autoinstrument
|
|
208
|
+
|
|
209
|
+
initialize_tracing()
|
|
210
|
+
paid_autoinstrument() # instruments all supported libraries by default
|
|
211
|
+
|
|
212
|
+
# Synchronous
|
|
213
|
+
with paid_tracing("customer_123", external_product_id="product_456"):
|
|
214
|
+
result = workflow()
|
|
215
|
+
|
|
216
|
+
# Asynchronous
|
|
217
|
+
async with paid_tracing("customer_123", external_product_id="product_456"):
|
|
218
|
+
result = await workflow()
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Both approaches:
|
|
222
|
+
|
|
223
|
+
- Handle both sync and async functions/code blocks
|
|
224
|
+
- Gracefully fall back to normal execution if tracing fails
|
|
225
|
+
- Support the same parameters: `external_customer_id`, `external_product_id`, `tracing_token`, `store_prompt`, `metadata`
|
|
226
|
+
|
|
227
|
+
### Using AI Provider SDKs
|
|
228
|
+
|
|
229
|
+
After calling `initialize_tracing()` and `paid_autoinstrument()`, use your AI provider SDKs directly — no wrapper classes needed:
|
|
230
|
+
|
|
231
|
+
```python
|
|
232
|
+
from openai import OpenAI
|
|
233
|
+
from paid.tracing import paid_tracing, initialize_tracing, paid_autoinstrument
|
|
234
|
+
|
|
235
|
+
initialize_tracing()
|
|
236
|
+
paid_autoinstrument(libraries=["openai"])
|
|
237
|
+
|
|
238
|
+
openai_client = OpenAI(api_key="<OPENAI_API_KEY>")
|
|
239
|
+
|
|
240
|
+
@paid_tracing("your_external_customer_id", external_product_id="your_external_product_id")
|
|
241
|
+
def image_generate():
|
|
242
|
+
response = openai_client.images.generate(
|
|
243
|
+
model="dall-e-3",
|
|
244
|
+
prompt="A sunset over mountains",
|
|
245
|
+
size="1024x1024",
|
|
246
|
+
quality="hd",
|
|
247
|
+
style="vivid",
|
|
248
|
+
n=1
|
|
249
|
+
)
|
|
250
|
+
return response
|
|
251
|
+
|
|
252
|
+
image_generate()
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Passing User Metadata
|
|
256
|
+
|
|
257
|
+
You can attach custom metadata to your traces by passing a `metadata` dictionary to the `paid_tracing()` decorator or context manager. This metadata will be stored with the trace and can be used to filter and query traces later.
|
|
258
|
+
|
|
259
|
+
<details>
|
|
260
|
+
<summary><strong>Python - Decorator</strong></summary>
|
|
261
|
+
|
|
262
|
+
```python
|
|
263
|
+
from paid.tracing import paid_tracing, signal, initialize_tracing, paid_autoinstrument
|
|
264
|
+
from openai import OpenAI
|
|
265
|
+
|
|
266
|
+
initialize_tracing()
|
|
267
|
+
paid_autoinstrument(libraries=["openai"])
|
|
268
|
+
|
|
269
|
+
openai_client = OpenAI(api_key="<OPENAI_API_KEY>")
|
|
270
|
+
|
|
271
|
+
@paid_tracing(
|
|
272
|
+
"customer_123",
|
|
273
|
+
external_product_id="product_123",
|
|
274
|
+
metadata={
|
|
275
|
+
"campaign_id": "campaign_456",
|
|
276
|
+
"environment": "production",
|
|
277
|
+
"user_tier": "enterprise"
|
|
278
|
+
}
|
|
279
|
+
)
|
|
280
|
+
def process_event(event):
|
|
281
|
+
"""Process event with custom metadata"""
|
|
282
|
+
response = openai_client.chat.completions.create(
|
|
283
|
+
model="gpt-4",
|
|
284
|
+
messages=[{"role": "user", "content": event.content}]
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
signal("event_processed", enable_cost_tracing=True)
|
|
288
|
+
return response
|
|
289
|
+
|
|
290
|
+
process_event(incoming_event)
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
</details>
|
|
294
|
+
|
|
295
|
+
<details>
|
|
296
|
+
<summary><strong>Python - Context Manager</strong></summary>
|
|
297
|
+
|
|
298
|
+
```python
|
|
299
|
+
from paid.tracing import paid_tracing, signal, initialize_tracing, paid_autoinstrument
|
|
300
|
+
from openai import OpenAI
|
|
301
|
+
|
|
302
|
+
initialize_tracing()
|
|
303
|
+
paid_autoinstrument(libraries=["openai"])
|
|
304
|
+
|
|
305
|
+
openai_client = OpenAI(api_key="<OPENAI_API_KEY>")
|
|
306
|
+
|
|
307
|
+
def process_event(event):
|
|
308
|
+
"""Process event with custom metadata"""
|
|
309
|
+
response = openai_client.chat.completions.create(
|
|
310
|
+
model="gpt-4",
|
|
311
|
+
messages=[{"role": "user", "content": event.content}]
|
|
312
|
+
)
|
|
313
|
+
|
|
314
|
+
signal("event_processed", enable_cost_tracing=True)
|
|
315
|
+
return response
|
|
316
|
+
|
|
317
|
+
# Pass metadata to context manager
|
|
318
|
+
with paid_tracing(
|
|
319
|
+
"customer_123",
|
|
320
|
+
external_product_id="product_123",
|
|
321
|
+
metadata={
|
|
322
|
+
"campaign_id": "campaign_456",
|
|
323
|
+
"environment": "production",
|
|
324
|
+
"user_tier": "enterprise"
|
|
325
|
+
}
|
|
326
|
+
):
|
|
327
|
+
process_event(incoming_event)
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
</details>
|
|
331
|
+
|
|
332
|
+
#### Querying Traces by Metadata
|
|
333
|
+
|
|
334
|
+
Once you've added metadata to your traces, you can filter traces using the metadata parameter in the traces API endpoint:
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
# Filter by single metadata field
|
|
338
|
+
curl -G "https://api.paid.ai/api/organizations/{orgId}/traces" \
|
|
339
|
+
--data-urlencode 'metadata={"campaign_id":"campaign_456"}' \
|
|
340
|
+
-H "Authorization: Bearer YOUR_API_KEY"
|
|
341
|
+
|
|
342
|
+
# Filter by multiple metadata fields (all must match)
|
|
343
|
+
curl -G "https://api.paid.ai/api/organizations/{orgId}/traces" \
|
|
344
|
+
--data-urlencode 'metadata={"campaign_id":"campaign_456","environment":"production"}' \
|
|
345
|
+
-H "Authorization: Bearer YOUR_API_KEY"
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Auto-Instrumentation (OpenTelemetry Instrumentors)
|
|
349
|
+
|
|
350
|
+
For maximum convenience, you can use OpenTelemetry auto-instrumentation to automatically track costs without modifying your AI library calls. This approach uses official OpenTelemetry instrumentors for supported AI libraries.
|
|
351
|
+
|
|
352
|
+
#### Quick Start
|
|
353
|
+
|
|
354
|
+
```python
|
|
355
|
+
from paid import Paid
|
|
356
|
+
from paid.tracing import paid_autoinstrument, initialize_tracing, paid_tracing
|
|
357
|
+
from openai import OpenAI
|
|
358
|
+
|
|
359
|
+
# Initialize Paid SDK
|
|
360
|
+
client = Paid(token="PAID_API_KEY")
|
|
361
|
+
initialize_tracing()
|
|
362
|
+
paid_autoinstrument(libraries=["openai"])
|
|
363
|
+
|
|
364
|
+
# Now all OpenAI calls will be automatically traced
|
|
365
|
+
openai_client = OpenAI(api_key="<OPENAI_API_KEY>")
|
|
366
|
+
|
|
367
|
+
@paid_tracing("your_external_customer_id", external_product_id="your_external_product_id")
|
|
368
|
+
def chat_with_gpt():
|
|
369
|
+
response = openai_client.chat.completions.create(
|
|
370
|
+
model="gpt-4",
|
|
371
|
+
messages=[{"role": "user", "content": "Hello!"}]
|
|
372
|
+
)
|
|
373
|
+
return response
|
|
374
|
+
|
|
375
|
+
chat_with_gpt() # Costs are automatically tracked!
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
#### Supported Libraries
|
|
379
|
+
|
|
380
|
+
Auto-instrumentation supports the following AI libraries:
|
|
381
|
+
|
|
382
|
+
```
|
|
383
|
+
anthropic - Anthropic SDK
|
|
384
|
+
gemini - Google Generative AI (google-generativeai)
|
|
385
|
+
openai - OpenAI Python SDK
|
|
386
|
+
openai-agents - OpenAI Agents SDK
|
|
387
|
+
claude-agent-sdk - Claude Agent SDK
|
|
388
|
+
bedrock - AWS Bedrock (boto3)
|
|
389
|
+
langchain - LangChain framework
|
|
390
|
+
instructor - Instructor
|
|
391
|
+
cohere - Cohere SDK
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
#### Selective Instrumentation
|
|
395
|
+
|
|
396
|
+
If you only want to instrument specific libraries, pass them to `paid_autoinstrument()`:
|
|
397
|
+
|
|
398
|
+
```python
|
|
399
|
+
from paid.tracing import paid_autoinstrument
|
|
400
|
+
|
|
401
|
+
# Instrument only Anthropic and OpenAI
|
|
402
|
+
paid_autoinstrument(libraries=["anthropic", "openai"])
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
#### How It Works
|
|
406
|
+
|
|
407
|
+
- Auto-instrumentation uses official OpenTelemetry instrumentors for each AI library
|
|
408
|
+
- It automatically wraps library calls without requiring you to use Paid wrapper classes
|
|
409
|
+
- Works seamlessly with `@paid_tracing()` decorator or context manager
|
|
410
|
+
- Costs are tracked in the same way as when using manual wrappers
|
|
411
|
+
- Should be called once during application startup, typically before creating AI client instances
|
|
412
|
+
|
|
413
|
+
## Signaling via OTEL tracing
|
|
414
|
+
|
|
415
|
+
Signals allow you to emit events within your tracing context. They have access to all tracing information, so you need fewer arguments compared to manual API calls.
|
|
416
|
+
Use the `signal()` function which must be called within an active `@paid_tracing()` context (decorator or context manager).
|
|
417
|
+
|
|
418
|
+
Here's an example of how to use it:
|
|
419
|
+
|
|
420
|
+
```python
|
|
421
|
+
from paid.tracing import paid_tracing, signal, initialize_tracing, paid_autoinstrument
|
|
422
|
+
|
|
423
|
+
initialize_tracing()
|
|
424
|
+
paid_autoinstrument()
|
|
425
|
+
|
|
426
|
+
@paid_tracing("your_external_customer_id", external_product_id="your_external_product_id")
|
|
427
|
+
def do_work():
|
|
428
|
+
# ...do some work...
|
|
429
|
+
signal(
|
|
430
|
+
event_name="<your_signal_name>",
|
|
431
|
+
data={ } # optional data (ex. manual cost tracking data)
|
|
432
|
+
)
|
|
433
|
+
|
|
434
|
+
do_work()
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
Same approach with context manager:
|
|
438
|
+
|
|
439
|
+
```python
|
|
440
|
+
from paid.tracing import paid_tracing, signal, initialize_tracing, paid_autoinstrument
|
|
441
|
+
|
|
442
|
+
initialize_tracing()
|
|
443
|
+
paid_autoinstrument()
|
|
444
|
+
|
|
445
|
+
def do_work():
|
|
446
|
+
# ...do some work...
|
|
447
|
+
signal(
|
|
448
|
+
event_name="<your_signal_name>",
|
|
449
|
+
data={ } # optional data (ex. manual cost tracking data)
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
# Use context manager instead
|
|
453
|
+
with paid_tracing("your_external_customer_id", external_product_id="your_external_product_id"):
|
|
454
|
+
do_work()
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
### Signal-costs - Attaching cost traces to a signal
|
|
458
|
+
|
|
459
|
+
If you want a signal to carry information about costs,
|
|
460
|
+
then the signal should be sent from the same tracing context
|
|
461
|
+
as the wrappers and hooks that recorded those costs.
|
|
462
|
+
|
|
463
|
+
This will look something like this:
|
|
464
|
+
|
|
465
|
+
```python
|
|
466
|
+
from paid.tracing import paid_tracing, signal, initialize_tracing, paid_autoinstrument
|
|
467
|
+
|
|
468
|
+
initialize_tracing()
|
|
469
|
+
paid_autoinstrument()
|
|
470
|
+
|
|
471
|
+
@paid_tracing("your_external_customer_id", external_product_id="your_external_product_id")
|
|
472
|
+
def do_work():
|
|
473
|
+
# ... your workflow logic
|
|
474
|
+
# ... your AI calls (auto-instrumented)
|
|
475
|
+
signal(
|
|
476
|
+
event_name="<your_signal_name>",
|
|
477
|
+
data={ }, # optional data (ex. manual cost tracking data)
|
|
478
|
+
enable_cost_tracing=True, # set this flag to associate it with costs
|
|
479
|
+
)
|
|
480
|
+
# ... your workflow logic
|
|
481
|
+
# ... your AI calls (auto-instrumented, can be sent after the signal too)
|
|
482
|
+
|
|
483
|
+
do_work()
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
Then, all of the costs traced in @paid_tracing() context are related to that signal.
|
|
487
|
+
|
|
488
|
+
### Signal-costs - Distributed tracing
|
|
489
|
+
|
|
490
|
+
Sometimes your agent workflow cannot fit into a single traceable function like above,
|
|
491
|
+
because it has to be disjoint for whatever reason. It could even be running across different machines.
|
|
492
|
+
|
|
493
|
+
For such cases, you can pass a tracing token directly to `@paid_tracing()` or context manager to link distributed traces together.
|
|
494
|
+
|
|
495
|
+
#### Using `tracing_token` parameter (Recommended)
|
|
496
|
+
|
|
497
|
+
The simplest way to implement distributed tracing is to pass the token directly to the decorator or context manager:
|
|
498
|
+
|
|
499
|
+
```python
|
|
500
|
+
from paid.tracing import paid_tracing, signal, generate_tracing_token, initialize_tracing, paid_autoinstrument
|
|
501
|
+
from openai import OpenAI
|
|
502
|
+
|
|
503
|
+
initialize_tracing()
|
|
504
|
+
paid_autoinstrument(libraries=["openai"])
|
|
505
|
+
|
|
506
|
+
openai_client = OpenAI(api_key="<OPENAI_API_KEY>")
|
|
507
|
+
|
|
508
|
+
# Process 1: Generate token and do initial work
|
|
509
|
+
token = generate_tracing_token()
|
|
510
|
+
print(f"Tracing token: {token}")
|
|
511
|
+
|
|
512
|
+
# Store token for other processes (e.g., in Redis, database, message queue)
|
|
513
|
+
save_to_storage("workflow_123", token)
|
|
514
|
+
|
|
515
|
+
@paid_tracing("customer_123", tracing_token=token, external_product_id="product_123")
|
|
516
|
+
def process_part_1():
|
|
517
|
+
# AI calls here will be traced
|
|
518
|
+
response = openai_client.chat.completions.create(
|
|
519
|
+
model="gpt-4",
|
|
520
|
+
messages=[{"role": "user", "content": "Analyze data"}]
|
|
521
|
+
)
|
|
522
|
+
# Signal without cost tracing
|
|
523
|
+
signal("part_1_complete", enable_cost_tracing=False)
|
|
524
|
+
|
|
525
|
+
process_part_1()
|
|
526
|
+
|
|
527
|
+
# Process 2 (different machine/process): Retrieve and use token
|
|
528
|
+
token = load_from_storage("workflow_123")
|
|
529
|
+
|
|
530
|
+
@paid_tracing("customer_123", tracing_token=token, external_product_id="product_123")
|
|
531
|
+
def process_part_2():
|
|
532
|
+
# AI calls here will be linked to the same trace
|
|
533
|
+
response = openai_client.chat.completions.create(
|
|
534
|
+
model="gpt-4",
|
|
535
|
+
messages=[{"role": "user", "content": "Generate response"}]
|
|
536
|
+
)
|
|
537
|
+
# Signal WITH cost tracing - links all costs from both processes
|
|
538
|
+
signal("workflow_complete", enable_cost_tracing=True)
|
|
539
|
+
|
|
540
|
+
process_part_2()
|
|
541
|
+
# No cleanup needed - token is scoped to the decorated function
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
Using context manager instead of decorator:
|
|
545
|
+
|
|
546
|
+
```python
|
|
547
|
+
from paid.tracing import paid_tracing, signal, generate_tracing_token, initialize_tracing, paid_autoinstrument
|
|
548
|
+
from openai import OpenAI
|
|
549
|
+
|
|
550
|
+
initialize_tracing()
|
|
551
|
+
paid_autoinstrument(libraries=["openai"])
|
|
552
|
+
|
|
553
|
+
openai_client = OpenAI(api_key="<OPENAI_API_KEY>")
|
|
554
|
+
|
|
555
|
+
# Process 1: Generate token and do initial work
|
|
556
|
+
token = generate_tracing_token()
|
|
557
|
+
save_to_storage("workflow_123", token)
|
|
558
|
+
|
|
559
|
+
with paid_tracing("customer_123", external_product_id="product_123", tracing_token=token):
|
|
560
|
+
response = openai_client.chat.completions.create(
|
|
561
|
+
model="gpt-4",
|
|
562
|
+
messages=[{"role": "user", "content": "Analyze data"}]
|
|
563
|
+
)
|
|
564
|
+
signal("part_1_complete", enable_cost_tracing=False)
|
|
565
|
+
|
|
566
|
+
# Process 2: Retrieve and use the same token
|
|
567
|
+
token = load_from_storage("workflow_123")
|
|
568
|
+
|
|
569
|
+
with paid_tracing("customer_123", external_product_id="product_123", tracing_token=token):
|
|
570
|
+
response = openai_client.chat.completions.create(
|
|
571
|
+
model="gpt-4",
|
|
572
|
+
messages=[{"role": "user", "content": "Generate response"}]
|
|
573
|
+
)
|
|
574
|
+
signal("workflow_complete", enable_cost_tracing=True)
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
## Manual Cost Tracking
|
|
578
|
+
|
|
579
|
+
If you would prefer to not use Paid to track your costs automatically but you want to send us the costs yourself,
|
|
580
|
+
then you can use manual cost tracking mechanism. Just attach the cost information in the following format to a signal payload:
|
|
581
|
+
|
|
582
|
+
```python
|
|
583
|
+
from paid import Paid, Signal, CustomerByExternalId, ProductByExternalId
|
|
584
|
+
|
|
585
|
+
client = Paid(token="<PAID_API_KEY>")
|
|
586
|
+
|
|
587
|
+
signal = Signal(
|
|
588
|
+
event_name="<your_signal_name>",
|
|
589
|
+
customer=CustomerByExternalId(external_customer_id="<your_external_customer_id>"),
|
|
590
|
+
attribution=ProductByExternalId(external_product_id="<your_external_product_id>"),
|
|
591
|
+
data={
|
|
592
|
+
"costData": {
|
|
593
|
+
"vendor": "<any_vendor_name>", # can be anything, traces are grouped by vendors in the UI
|
|
594
|
+
"cost": {
|
|
595
|
+
"amount": 0.002,
|
|
596
|
+
"currency": "USD"
|
|
597
|
+
},
|
|
598
|
+
"gen_ai.response.model": "<ai_model_name>", # optional, but will be displayed on UI
|
|
599
|
+
"start_time": "2024-01-01T11:45:00.000Z", # optional, affects where trace is on the timeline
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
)
|
|
603
|
+
|
|
604
|
+
client.signals.create_signals(signals=[signal])
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
Alternatively the same `costData` payload can be passed to OTLP signaling mechanism:
|
|
608
|
+
|
|
609
|
+
```python
|
|
610
|
+
from paid.tracing import paid_tracing, signal, initialize_tracing, paid_autoinstrument
|
|
611
|
+
|
|
612
|
+
initialize_tracing()
|
|
613
|
+
paid_autoinstrument()
|
|
614
|
+
|
|
615
|
+
@paid_tracing("your_external_customer_id", external_product_id="your_external_product_id")
|
|
616
|
+
def do_work():
|
|
617
|
+
# ...do some work...
|
|
618
|
+
signal(
|
|
619
|
+
event_name="<your_signal_name>",
|
|
620
|
+
data={
|
|
621
|
+
"costData": {
|
|
622
|
+
"vendor": "<any_vendor_name>", # can be anything, traces are grouped by vendors in the UI
|
|
623
|
+
"cost": {
|
|
624
|
+
"amount": 0.002,
|
|
625
|
+
"currency": "USD"
|
|
626
|
+
},
|
|
627
|
+
"gen_ai.response.model": "<ai_model_name>", # optional, but will be displayed on UI
|
|
628
|
+
"start_time": "2024-01-01T11:45:00.000Z", # optional, affects where trace is on the timeline
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
)
|
|
632
|
+
|
|
633
|
+
do_work()
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
### Manual Usage Tracking
|
|
637
|
+
|
|
638
|
+
If you would prefer to send us raw usage manually (without wrappers) and have us compute the cost, you can attach usage data in the following format:
|
|
639
|
+
|
|
640
|
+
```python
|
|
641
|
+
from paid import Paid, Signal, CustomerByExternalId, ProductByExternalId
|
|
642
|
+
|
|
643
|
+
client = Paid(token="<PAID_API_KEY>")
|
|
644
|
+
|
|
645
|
+
signal = Signal(
|
|
646
|
+
event_name="<your_signal_name>",
|
|
647
|
+
customer=CustomerByExternalId(external_customer_id="<your_external_customer_id>"),
|
|
648
|
+
attribution=ProductByExternalId(external_product_id="<your_external_product_id>"),
|
|
649
|
+
data={
|
|
650
|
+
"costData": {
|
|
651
|
+
"vendor": "<any_vendor_name>", # can be anything, traces are grouped by vendors in the UI
|
|
652
|
+
"attributes": {
|
|
653
|
+
"gen_ai.response.model": "gpt-4.1-mini",
|
|
654
|
+
"gen_ai.usage.input_tokens": 100,
|
|
655
|
+
"gen_ai.usage.output_tokens": 300,
|
|
656
|
+
"gen_ai.usage.cached_input_tokens": 600,
|
|
657
|
+
"gen_ai.usage.cache_creation_input_tokens": 200,
|
|
658
|
+
},
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
)
|
|
662
|
+
|
|
663
|
+
client.signals.create_signals(signals=[signal])
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
Same but via OTEL signaling:
|
|
667
|
+
|
|
668
|
+
```python
|
|
669
|
+
from paid.tracing import paid_tracing, signal, initialize_tracing, paid_autoinstrument
|
|
670
|
+
|
|
671
|
+
initialize_tracing()
|
|
672
|
+
paid_autoinstrument()
|
|
673
|
+
|
|
674
|
+
@paid_tracing("your_external_customer_id", external_product_id="your_external_product_id")
|
|
675
|
+
def do_work():
|
|
676
|
+
# ...do some work...
|
|
677
|
+
signal(
|
|
678
|
+
event_name="<your_signal_name>",
|
|
679
|
+
data={
|
|
680
|
+
"costData": {
|
|
681
|
+
"vendor": "<any_vendor_name>", # can be anything, traces are grouped by vendors in the UI
|
|
682
|
+
"attributes": {
|
|
683
|
+
"gen_ai.response.model": "gpt-4.1-mini",
|
|
684
|
+
"gen_ai.usage.input_tokens": 100,
|
|
685
|
+
"gen_ai.usage.output_tokens": 300,
|
|
686
|
+
"gen_ai.usage.cached_input_tokens": 600,
|
|
687
|
+
"gen_ai.usage.cache_creation_input_tokens": 200,
|
|
688
|
+
},
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
)
|
|
692
|
+
|
|
693
|
+
do_work()
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
## Async Support
|
|
697
|
+
|
|
698
|
+
All of the functionality from above is available in async flavor too.
|
|
699
|
+
|
|
700
|
+
### Async Client
|
|
701
|
+
|
|
702
|
+
Use `AsyncPaid` instead of `Paid` for async operations:
|
|
703
|
+
|
|
704
|
+
```python
|
|
705
|
+
from paid import AsyncPaid
|
|
706
|
+
|
|
707
|
+
client = AsyncPaid(token="API_KEY")
|
|
708
|
+
|
|
709
|
+
# Async API calls
|
|
710
|
+
customer = await client.customers.create_customer(name="John Doe")
|
|
711
|
+
```
|
|
712
|
+
|
|
713
|
+
### Async Cost Tracking with Decorator
|
|
714
|
+
|
|
715
|
+
The `@paid_tracing` decorator automatically handles both sync and async functions:
|
|
716
|
+
|
|
717
|
+
```python
|
|
718
|
+
from openai import AsyncOpenAI
|
|
719
|
+
from paid.tracing import paid_tracing, initialize_tracing, paid_autoinstrument
|
|
720
|
+
|
|
721
|
+
initialize_tracing()
|
|
722
|
+
paid_autoinstrument(libraries=["openai"])
|
|
723
|
+
|
|
724
|
+
openai_client = AsyncOpenAI(api_key="<OPENAI_API_KEY>")
|
|
725
|
+
|
|
726
|
+
@paid_tracing("your_external_customer_id", external_product_id="your_external_product_id")
|
|
727
|
+
async def generate_image():
|
|
728
|
+
response = await openai_client.images.generate(
|
|
729
|
+
model="dall-e-3",
|
|
730
|
+
prompt="A sunset over mountains",
|
|
731
|
+
size="1024x1024",
|
|
732
|
+
quality="hd",
|
|
733
|
+
n=1
|
|
734
|
+
)
|
|
735
|
+
return response
|
|
736
|
+
|
|
737
|
+
# Call the async function
|
|
738
|
+
await generate_image()
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
### Async Signaling
|
|
742
|
+
|
|
743
|
+
The `signal()` function works seamlessly in async contexts:
|
|
744
|
+
|
|
745
|
+
```python
|
|
746
|
+
from paid.tracing import paid_tracing, signal, initialize_tracing, paid_autoinstrument
|
|
747
|
+
from openai import AsyncOpenAI
|
|
748
|
+
|
|
749
|
+
initialize_tracing()
|
|
750
|
+
paid_autoinstrument(libraries=["openai"])
|
|
751
|
+
|
|
752
|
+
openai_client = AsyncOpenAI(api_key="<OPENAI_API_KEY>")
|
|
753
|
+
|
|
754
|
+
@paid_tracing("your_external_customer_id", external_product_id="your_external_product_id")
|
|
755
|
+
async def do_work():
|
|
756
|
+
# Perform async AI operations
|
|
757
|
+
response = await openai_client.chat.completions.create(
|
|
758
|
+
model="gpt-4",
|
|
759
|
+
messages=[{"role": "user", "content": "Hello!"}]
|
|
760
|
+
)
|
|
761
|
+
|
|
762
|
+
# Send signal (works in async context)
|
|
763
|
+
signal(
|
|
764
|
+
event_name="<your_signal_name>",
|
|
765
|
+
enable_cost_tracing=True # Associate with traced costs
|
|
766
|
+
)
|
|
767
|
+
|
|
768
|
+
return response
|
|
769
|
+
|
|
770
|
+
# Execute
|
|
771
|
+
await do_work()
|
|
772
|
+
```
|
|
773
|
+
|
|
774
|
+
### Paid OTEL Tracer Provider
|
|
775
|
+
|
|
776
|
+
If you would like to use the Paid OTEL tracer provider:
|
|
777
|
+
|
|
778
|
+
```python
|
|
779
|
+
from paid.tracing import get_paid_tracer_provider
|
|
780
|
+
paid_tracer_provider = get_paid_tracer_provider()
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
## Contributing
|
|
784
|
+
|
|
785
|
+
While we value open-source contributions to this SDK, this library is generated programmatically.
|
|
786
|
+
Additions made directly to this library would have to be moved over to our generation code,
|
|
787
|
+
otherwise they would be overwritten upon the next generated release. Feel free to open a PR as
|
|
788
|
+
a proof of concept, but know that we will not be able to merge it as-is. We suggest opening
|
|
789
|
+
an issue first to discuss with us!
|
|
790
|
+
|
|
791
|
+
On the other hand, contributions to the README are always very welcome!
|
|
792
|
+
|