proxyrequest-sdk 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- proxyrequest_sdk/__init__.py +36 -0
- proxyrequest_sdk/_generated/__init__.py +8 -0
- proxyrequest_sdk/_generated/api/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/affiliates/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/affiliates/affiliates_list.py +259 -0
- proxyrequest_sdk/_generated/api/affiliates/affiliates_rewards_list.py +255 -0
- proxyrequest_sdk/_generated/api/affiliates/affiliates_rewards_overall_retrieve.py +230 -0
- proxyrequest_sdk/_generated/api/analytics/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/analytics/analytics_connections_retrieve.py +312 -0
- proxyrequest_sdk/_generated/api/analytics/analytics_domains_retrieve.py +447 -0
- proxyrequest_sdk/_generated/api/analytics/analytics_feed_retrieve.py +473 -0
- proxyrequest_sdk/_generated/api/analytics/analytics_logs_retrieve.py +469 -0
- proxyrequest_sdk/_generated/api/analytics/analytics_overall_retrieve.py +375 -0
- proxyrequest_sdk/_generated/api/analytics/analytics_transactions_retrieve.py +412 -0
- proxyrequest_sdk/_generated/api/api_keys/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/api_keys/api_keys_create.py +234 -0
- proxyrequest_sdk/_generated/api/api_keys/api_keys_destroy.py +249 -0
- proxyrequest_sdk/_generated/api/api_keys/api_keys_list.py +250 -0
- proxyrequest_sdk/_generated/api/authorization/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/authorization/login_create.py +197 -0
- proxyrequest_sdk/_generated/api/authorization/login_google_create.py +207 -0
- proxyrequest_sdk/_generated/api/authorization/recover_password_create.py +197 -0
- proxyrequest_sdk/_generated/api/authorization/refresh_create.py +199 -0
- proxyrequest_sdk/_generated/api/authorization/signup_create.py +207 -0
- proxyrequest_sdk/_generated/api/coupons/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/coupons/coupons_calculate_price_create.py +248 -0
- proxyrequest_sdk/_generated/api/coupons/coupons_create.py +211 -0
- proxyrequest_sdk/_generated/api/coupons/coupons_destroy.py +245 -0
- proxyrequest_sdk/_generated/api/coupons/coupons_list.py +324 -0
- proxyrequest_sdk/_generated/api/coupons/coupons_partial_update.py +266 -0
- proxyrequest_sdk/_generated/api/coupons/coupons_redeems_list.py +332 -0
- proxyrequest_sdk/_generated/api/coupons/coupons_retrieve.py +247 -0
- proxyrequest_sdk/_generated/api/coupons/coupons_update.py +265 -0
- proxyrequest_sdk/_generated/api/invoices/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/invoices/invoices_create.py +233 -0
- proxyrequest_sdk/_generated/api/invoices/invoices_destroy.py +245 -0
- proxyrequest_sdk/_generated/api/invoices/invoices_download_pdf_retrieve.py +260 -0
- proxyrequest_sdk/_generated/api/invoices/invoices_list.py +413 -0
- proxyrequest_sdk/_generated/api/invoices/invoices_pay_retrieve.py +251 -0
- proxyrequest_sdk/_generated/api/invoices/invoices_retrieve.py +251 -0
- proxyrequest_sdk/_generated/api/locations/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/locations/locations_asn_list.py +368 -0
- proxyrequest_sdk/_generated/api/locations/locations_cities_list.py +368 -0
- proxyrequest_sdk/_generated/api/locations/locations_cities_retrieve.py +247 -0
- proxyrequest_sdk/_generated/api/locations/locations_continents_list.py +338 -0
- proxyrequest_sdk/_generated/api/locations/locations_continents_retrieve.py +255 -0
- proxyrequest_sdk/_generated/api/locations/locations_countries_list.py +338 -0
- proxyrequest_sdk/_generated/api/locations/locations_countries_retrieve.py +255 -0
- proxyrequest_sdk/_generated/api/locations/locations_isps_list.py +353 -0
- proxyrequest_sdk/_generated/api/locations/locations_regions_list.py +353 -0
- proxyrequest_sdk/_generated/api/locations/locations_regions_retrieve.py +247 -0
- proxyrequest_sdk/_generated/api/news/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/news/news_list.py +256 -0
- proxyrequest_sdk/_generated/api/orders/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/orders/orders_destroy.py +249 -0
- proxyrequest_sdk/_generated/api/orders/orders_list.py +364 -0
- proxyrequest_sdk/_generated/api/orders/orders_partial_update.py +270 -0
- proxyrequest_sdk/_generated/api/orders/orders_retrieve.py +247 -0
- proxyrequest_sdk/_generated/api/orders/reset_password_create.py +224 -0
- proxyrequest_sdk/_generated/api/packages/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/packages/packages_commissions_list.py +329 -0
- proxyrequest_sdk/_generated/api/packages/packages_list.py +344 -0
- proxyrequest_sdk/_generated/api/profile/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/profile/profile_2fa_confirm_create.py +242 -0
- proxyrequest_sdk/_generated/api/profile/profile_2fa_disable_create.py +242 -0
- proxyrequest_sdk/_generated/api/profile/profile_2fa_setup_create.py +224 -0
- proxyrequest_sdk/_generated/api/profile/profile_2fa_status_retrieve.py +220 -0
- proxyrequest_sdk/_generated/api/profile/profile_change_password_create.py +248 -0
- proxyrequest_sdk/_generated/api/profile/profile_destroy.py +195 -0
- proxyrequest_sdk/_generated/api/profile/profile_partial_update.py +259 -0
- proxyrequest_sdk/_generated/api/profile/profile_retrieve.py +215 -0
- proxyrequest_sdk/_generated/api/proxies/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/proxies/proxies_generate_create.py +262 -0
- proxyrequest_sdk/_generated/api/rewards/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/rewards/rewards_claim_create.py +240 -0
- proxyrequest_sdk/_generated/api/rewards/rewards_list.py +319 -0
- proxyrequest_sdk/_generated/api/sessions/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/sessions/sessions_destroy.py +251 -0
- proxyrequest_sdk/_generated/api/sessions/sessions_list.py +229 -0
- proxyrequest_sdk/_generated/api/settings/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/settings/settings_retrieve.py +236 -0
- proxyrequest_sdk/_generated/api/telegram_dashboard/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/telegram_dashboard/integrations_telegram_connection_destroy.py +224 -0
- proxyrequest_sdk/_generated/api/telegram_dashboard/integrations_telegram_connection_partial_update.py +253 -0
- proxyrequest_sdk/_generated/api/telegram_dashboard/integrations_telegram_connection_retrieve.py +226 -0
- proxyrequest_sdk/_generated/api/telegram_dashboard/integrations_telegram_link_create.py +226 -0
- proxyrequest_sdk/_generated/api/telegram_dashboard_service/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/telegram_dashboard_service/integrations_telegram_link_consume_create.py +210 -0
- proxyrequest_sdk/_generated/api/telegram_dashboard_service/integrations_telegram_session_create.py +210 -0
- proxyrequest_sdk/_generated/api/users/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/users/users_create.py +213 -0
- proxyrequest_sdk/_generated/api/users/users_data_add_create.py +270 -0
- proxyrequest_sdk/_generated/api/users/users_data_subtract_create.py +270 -0
- proxyrequest_sdk/_generated/api/users/users_destroy.py +246 -0
- proxyrequest_sdk/_generated/api/users/users_list.py +329 -0
- proxyrequest_sdk/_generated/api/users/users_orders_list.py +350 -0
- proxyrequest_sdk/_generated/api/users/users_partial_update.py +271 -0
- proxyrequest_sdk/_generated/api/users/users_password_create.py +271 -0
- proxyrequest_sdk/_generated/api/users/users_retrieve.py +248 -0
- proxyrequest_sdk/_generated/api/webhooks/__init__.py +1 -0
- proxyrequest_sdk/_generated/api/webhooks/webhooks_create.py +242 -0
- proxyrequest_sdk/_generated/api/webhooks/webhooks_destroy.py +245 -0
- proxyrequest_sdk/_generated/api/webhooks/webhooks_list.py +259 -0
- proxyrequest_sdk/_generated/api/webhooks/webhooks_retrieve.py +247 -0
- proxyrequest_sdk/_generated/client.py +264 -0
- proxyrequest_sdk/_generated/errors.py +16 -0
- proxyrequest_sdk/_generated/models/__init__.py +883 -0
- proxyrequest_sdk/_generated/models/add_data_request.py +68 -0
- proxyrequest_sdk/_generated/models/affiliate.py +123 -0
- proxyrequest_sdk/_generated/models/affiliate_reward.py +132 -0
- proxyrequest_sdk/_generated/models/affiliate_stats_point.py +92 -0
- proxyrequest_sdk/_generated/models/affiliate_stats_response.py +76 -0
- proxyrequest_sdk/_generated/models/affiliates_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/affiliates_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/affiliates_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/affiliates_rewards_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/affiliates_rewards_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/affiliates_rewards_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/affiliates_rewards_overall_retrieve_response_400.py +101 -0
- proxyrequest_sdk/_generated/models/affiliates_rewards_overall_retrieve_response_401.py +101 -0
- proxyrequest_sdk/_generated/models/affiliates_rewards_overall_retrieve_response_403.py +101 -0
- proxyrequest_sdk/_generated/models/analytics_connections_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_connections_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_connections_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_connections_retrieve_response_500.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_domains_retrieve_ordering.py +20 -0
- proxyrequest_sdk/_generated/models/analytics_domains_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_domains_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_domains_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_domains_retrieve_response_500.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_feed_retrieve_protocol.py +18 -0
- proxyrequest_sdk/_generated/models/analytics_feed_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_feed_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_feed_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_feed_retrieve_response_500.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_logs_retrieve_protocol.py +18 -0
- proxyrequest_sdk/_generated/models/analytics_logs_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_logs_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_logs_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_logs_retrieve_response_500.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_overall_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_overall_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_overall_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_overall_retrieve_response_500.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_transactions_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_transactions_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_transactions_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_transactions_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/analytics_transactions_retrieve_response_500.py +99 -0
- proxyrequest_sdk/_generated/models/api_key_create.py +95 -0
- proxyrequest_sdk/_generated/models/api_key_create_request.py +70 -0
- proxyrequest_sdk/_generated/models/api_key_list.py +111 -0
- proxyrequest_sdk/_generated/models/api_keys_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/api_keys_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/api_keys_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/api_keys_destroy_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/api_keys_destroy_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/api_keys_destroy_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/api_keys_destroy_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/api_keys_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/api_keys_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/api_keys_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/change_password_request.py +73 -0
- proxyrequest_sdk/_generated/models/city.py +136 -0
- proxyrequest_sdk/_generated/models/commission_type_enum.py +19 -0
- proxyrequest_sdk/_generated/models/connection_record.py +82 -0
- proxyrequest_sdk/_generated/models/connections_response.py +109 -0
- proxyrequest_sdk/_generated/models/continent.py +78 -0
- proxyrequest_sdk/_generated/models/country.py +125 -0
- proxyrequest_sdk/_generated/models/coupon.py +279 -0
- proxyrequest_sdk/_generated/models/coupon_calculate_price_request.py +84 -0
- proxyrequest_sdk/_generated/models/coupon_create_request.py +182 -0
- proxyrequest_sdk/_generated/models/coupon_price_response.py +75 -0
- proxyrequest_sdk/_generated/models/coupon_redeem.py +153 -0
- proxyrequest_sdk/_generated/models/coupon_short.py +245 -0
- proxyrequest_sdk/_generated/models/coupon_short_packages_item.py +48 -0
- proxyrequest_sdk/_generated/models/coupon_stats_type_0.py +48 -0
- proxyrequest_sdk/_generated/models/coupon_type_enum.py +19 -0
- proxyrequest_sdk/_generated/models/coupon_update_request.py +182 -0
- proxyrequest_sdk/_generated/models/coupons_calculate_price_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_calculate_price_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_calculate_price_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_destroy_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_destroy_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_destroy_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_destroy_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_list_type.py +19 -0
- proxyrequest_sdk/_generated/models/coupons_partial_update_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_partial_update_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_partial_update_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_partial_update_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_redeems_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_redeems_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_redeems_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_redeems_list_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_redeems_list_type.py +19 -0
- proxyrequest_sdk/_generated/models/coupons_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_update_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_update_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_update_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/coupons_update_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/domain_record.py +73 -0
- proxyrequest_sdk/_generated/models/domains_response.py +125 -0
- proxyrequest_sdk/_generated/models/enabled_response.py +59 -0
- proxyrequest_sdk/_generated/models/feed_record.py +212 -0
- proxyrequest_sdk/_generated/models/feed_response.py +131 -0
- proxyrequest_sdk/_generated/models/generate_proxy_request.py +150 -0
- proxyrequest_sdk/_generated/models/generate_proxy_response.py +83 -0
- proxyrequest_sdk/_generated/models/generated_proxy.py +94 -0
- proxyrequest_sdk/_generated/models/google_auth_request.py +100 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_connection_destroy_response_400.py +101 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_connection_destroy_response_401.py +101 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_connection_destroy_response_403.py +101 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_connection_partial_update_response_400.py +101 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_connection_partial_update_response_401.py +101 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_connection_partial_update_response_403.py +101 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_connection_retrieve_response_400.py +101 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_connection_retrieve_response_401.py +101 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_connection_retrieve_response_403.py +101 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_link_consume_create_response_400.py +101 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_link_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_link_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_link_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/integrations_telegram_session_create_response_400.py +101 -0
- proxyrequest_sdk/_generated/models/invoice.py +368 -0
- proxyrequest_sdk/_generated/models/invoice_create_request.py +188 -0
- proxyrequest_sdk/_generated/models/invoice_create_request_gateway_enum.py +20 -0
- proxyrequest_sdk/_generated/models/invoice_gateway_enum.py +22 -0
- proxyrequest_sdk/_generated/models/invoice_status_enum.py +20 -0
- proxyrequest_sdk/_generated/models/invoice_type_enum.py +19 -0
- proxyrequest_sdk/_generated/models/invoices_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_destroy_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_destroy_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_destroy_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_destroy_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_download_pdf_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_download_pdf_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_download_pdf_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_download_pdf_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_list_payment_gateway.py +22 -0
- proxyrequest_sdk/_generated/models/invoices_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_list_status.py +20 -0
- proxyrequest_sdk/_generated/models/invoices_list_type.py +19 -0
- proxyrequest_sdk/_generated/models/invoices_pay_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_pay_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_pay_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_pay_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/invoices_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/isp.py +69 -0
- proxyrequest_sdk/_generated/models/language_enum.py +21 -0
- proxyrequest_sdk/_generated/models/level_enum.py +20 -0
- proxyrequest_sdk/_generated/models/location_asn_geo_item.py +99 -0
- proxyrequest_sdk/_generated/models/location_asn_record.py +96 -0
- proxyrequest_sdk/_generated/models/location_code_name.py +66 -0
- proxyrequest_sdk/_generated/models/location_country_summary.py +76 -0
- proxyrequest_sdk/_generated/models/location_region_summary.py +76 -0
- proxyrequest_sdk/_generated/models/locations_asn_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/locations_asn_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/locations_asn_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/locations_cities_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/locations_cities_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/locations_cities_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/locations_cities_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/locations_cities_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/locations_cities_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/locations_cities_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/locations_continents_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/locations_continents_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/locations_continents_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/locations_continents_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/locations_continents_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/locations_continents_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/locations_continents_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/locations_countries_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/locations_countries_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/locations_countries_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/locations_countries_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/locations_countries_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/locations_countries_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/locations_countries_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/locations_isps_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/locations_isps_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/locations_isps_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/locations_regions_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/locations_regions_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/locations_regions_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/locations_regions_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/locations_regions_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/locations_regions_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/locations_regions_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/log_record.py +225 -0
- proxyrequest_sdk/_generated/models/login_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/login_google_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/login_google_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/login_request.py +80 -0
- proxyrequest_sdk/_generated/models/logs_response.py +131 -0
- proxyrequest_sdk/_generated/models/message_response.py +59 -0
- proxyrequest_sdk/_generated/models/news.py +95 -0
- proxyrequest_sdk/_generated/models/news_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/news_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/news_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/order.py +263 -0
- proxyrequest_sdk/_generated/models/order_detailed.py +297 -0
- proxyrequest_sdk/_generated/models/order_detailed_ledgers_item.py +48 -0
- proxyrequest_sdk/_generated/models/order_ledgers_item.py +48 -0
- proxyrequest_sdk/_generated/models/order_package.py +48 -0
- proxyrequest_sdk/_generated/models/orders_destroy_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/orders_destroy_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/orders_destroy_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/orders_destroy_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/orders_list_package_type.py +18 -0
- proxyrequest_sdk/_generated/models/orders_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/orders_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/orders_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/orders_partial_update_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/orders_partial_update_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/orders_partial_update_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/orders_partial_update_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/orders_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/orders_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/orders_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/orders_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/overall_point.py +76 -0
- proxyrequest_sdk/_generated/models/overall_response.py +131 -0
- proxyrequest_sdk/_generated/models/package.py +266 -0
- proxyrequest_sdk/_generated/models/package_billing_model.py +48 -0
- proxyrequest_sdk/_generated/models/package_commission.py +110 -0
- proxyrequest_sdk/_generated/models/package_short.py +104 -0
- proxyrequest_sdk/_generated/models/packages_commissions_list_pricing_unit.py +18 -0
- proxyrequest_sdk/_generated/models/packages_commissions_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/packages_commissions_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/packages_commissions_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/packages_commissions_list_type.py +18 -0
- proxyrequest_sdk/_generated/models/packages_list_pricing_unit.py +18 -0
- proxyrequest_sdk/_generated/models/packages_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/packages_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/packages_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/packages_list_type.py +18 -0
- proxyrequest_sdk/_generated/models/paginated_affiliate_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_affiliate_reward_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_api_key_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_city_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_continent_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_country_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_coupon_redeem_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_coupon_short_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_invoice_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_isp_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_location_asn_record_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_news_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_order_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_package_commission_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_package_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_region_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_reward_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_user_list.py +122 -0
- proxyrequest_sdk/_generated/models/paginated_webhook_list.py +122 -0
- proxyrequest_sdk/_generated/models/password_recovery_response.py +66 -0
- proxyrequest_sdk/_generated/models/patched_coupon_update_request.py +188 -0
- proxyrequest_sdk/_generated/models/patched_order_auto_renewal_request.py +67 -0
- proxyrequest_sdk/_generated/models/patched_profile_update_request.py +207 -0
- proxyrequest_sdk/_generated/models/patched_telegram_connection_update_request.py +67 -0
- proxyrequest_sdk/_generated/models/patched_user_update_request.py +252 -0
- proxyrequest_sdk/_generated/models/patched_user_update_request_meta.py +50 -0
- proxyrequest_sdk/_generated/models/payment_link_response.py +60 -0
- proxyrequest_sdk/_generated/models/pricing_enum.py +18 -0
- proxyrequest_sdk/_generated/models/pricing_unit_enum.py +18 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_confirm_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_confirm_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_confirm_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_disable_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_disable_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_disable_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_setup_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_setup_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_setup_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_status_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_status_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/profile_2_fa_status_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/profile_change_password_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/profile_change_password_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/profile_change_password_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/profile_destroy_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/profile_destroy_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/profile_destroy_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/profile_partial_update_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/profile_partial_update_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/profile_partial_update_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/profile_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/profile_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/profile_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/protocol_enum.py +19 -0
- proxyrequest_sdk/_generated/models/proxies_generate_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/proxies_generate_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/proxies_generate_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/proxies_generate_create_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/proxy_generation_connection_request.py +95 -0
- proxyrequest_sdk/_generated/models/proxy_generation_session_request.py +60 -0
- proxyrequest_sdk/_generated/models/proxy_generation_targeting_request.py +124 -0
- proxyrequest_sdk/_generated/models/proxy_password_reset_response.py +66 -0
- proxyrequest_sdk/_generated/models/proxy_type_enum.py +18 -0
- proxyrequest_sdk/_generated/models/recover_password_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/recover_password_request.py +70 -0
- proxyrequest_sdk/_generated/models/refresh_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/refresh_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/region.py +145 -0
- proxyrequest_sdk/_generated/models/reset_password_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/reset_password_create_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/reset_password_request.py +61 -0
- proxyrequest_sdk/_generated/models/reward.py +138 -0
- proxyrequest_sdk/_generated/models/reward_claim_request.py +71 -0
- proxyrequest_sdk/_generated/models/reward_status_enum.py +20 -0
- proxyrequest_sdk/_generated/models/rewards_claim_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/rewards_claim_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/rewards_claim_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/rewards_list_level.py +20 -0
- proxyrequest_sdk/_generated/models/rewards_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/rewards_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/rewards_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/session_delete_response.py +59 -0
- proxyrequest_sdk/_generated/models/session_list_response.py +68 -0
- proxyrequest_sdk/_generated/models/sessions_destroy_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/sessions_destroy_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/sessions_destroy_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/sessions_destroy_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/sessions_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/sessions_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/sessions_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/settings_crypto.py +61 -0
- proxyrequest_sdk/_generated/models/settings_gateway.py +118 -0
- proxyrequest_sdk/_generated/models/settings_referral.py +80 -0
- proxyrequest_sdk/_generated/models/settings_response.py +138 -0
- proxyrequest_sdk/_generated/models/settings_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/settings_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/settings_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/settings_retrieve_response_500.py +99 -0
- proxyrequest_sdk/_generated/models/sign_up_request.py +98 -0
- proxyrequest_sdk/_generated/models/signup_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/signup_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/subtract_data_request.py +68 -0
- proxyrequest_sdk/_generated/models/targeting_options.py +227 -0
- proxyrequest_sdk/_generated/models/telegram_connection_response.py +157 -0
- proxyrequest_sdk/_generated/models/telegram_link_consume_request.py +91 -0
- proxyrequest_sdk/_generated/models/telegram_link_response.py +76 -0
- proxyrequest_sdk/_generated/models/telegram_session_request.py +66 -0
- proxyrequest_sdk/_generated/models/telegram_session_response.py +96 -0
- proxyrequest_sdk/_generated/models/telegram_session_response_user.py +48 -0
- proxyrequest_sdk/_generated/models/token_pair_response.py +68 -0
- proxyrequest_sdk/_generated/models/token_refresh_request.py +60 -0
- proxyrequest_sdk/_generated/models/token_refresh_response.py +60 -0
- proxyrequest_sdk/_generated/models/transaction_record.py +170 -0
- proxyrequest_sdk/_generated/models/transactions_response.py +131 -0
- proxyrequest_sdk/_generated/models/two_factor_confirm_request.py +59 -0
- proxyrequest_sdk/_generated/models/two_factor_disable_request.py +59 -0
- proxyrequest_sdk/_generated/models/two_factor_setup_response.py +76 -0
- proxyrequest_sdk/_generated/models/user.py +473 -0
- proxyrequest_sdk/_generated/models/user_coupons_item.py +48 -0
- proxyrequest_sdk/_generated/models/user_create_request.py +244 -0
- proxyrequest_sdk/_generated/models/user_create_request_meta.py +50 -0
- proxyrequest_sdk/_generated/models/user_currency.py +50 -0
- proxyrequest_sdk/_generated/models/user_password_reset_request.py +69 -0
- proxyrequest_sdk/_generated/models/users_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/users_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/users_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/users_data_add_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/users_data_add_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/users_data_add_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/users_data_add_create_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/users_data_subtract_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/users_data_subtract_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/users_data_subtract_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/users_data_subtract_create_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/users_destroy_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/users_destroy_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/users_destroy_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/users_destroy_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/users_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/users_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/users_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/users_orders_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/users_orders_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/users_orders_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/users_orders_list_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/users_partial_update_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/users_partial_update_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/users_partial_update_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/users_partial_update_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/users_password_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/users_password_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/users_password_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/users_password_create_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/users_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/users_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/users_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/users_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/webhook_create_request.py +102 -0
- proxyrequest_sdk/_generated/models/webhook_created.py +147 -0
- proxyrequest_sdk/_generated/models/webhook_list.py +136 -0
- proxyrequest_sdk/_generated/models/webhook_scope_enum.py +19 -0
- proxyrequest_sdk/_generated/models/webhooks_create_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_create_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_create_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_destroy_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_destroy_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_destroy_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_destroy_response_404.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_list_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_list_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_list_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_retrieve_response_400.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_retrieve_response_401.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_retrieve_response_403.py +99 -0
- proxyrequest_sdk/_generated/models/webhooks_retrieve_response_404.py +99 -0
- proxyrequest_sdk/_generated/types.py +54 -0
- proxyrequest_sdk/client.py +427 -0
- proxyrequest_sdk/errors.py +177 -0
- proxyrequest_sdk/files.py +53 -0
- proxyrequest_sdk/models/__init__.py +312 -0
- proxyrequest_sdk/py.typed +1 -0
- proxyrequest_sdk/resources/__init__.py +80 -0
- proxyrequest_sdk/resources/affiliates.py +121 -0
- proxyrequest_sdk/resources/analytics.py +453 -0
- proxyrequest_sdk/resources/api_keys.py +94 -0
- proxyrequest_sdk/resources/authorization.py +143 -0
- proxyrequest_sdk/resources/coupons.py +277 -0
- proxyrequest_sdk/resources/invoices.py +202 -0
- proxyrequest_sdk/resources/locations.py +477 -0
- proxyrequest_sdk/resources/news.py +64 -0
- proxyrequest_sdk/resources/orders.py +183 -0
- proxyrequest_sdk/resources/packages.py +136 -0
- proxyrequest_sdk/resources/profile.py +208 -0
- proxyrequest_sdk/resources/proxies.py +45 -0
- proxyrequest_sdk/resources/rewards.py +92 -0
- proxyrequest_sdk/resources/sessions.py +58 -0
- proxyrequest_sdk/resources/settings.py +36 -0
- proxyrequest_sdk/resources/telegram.py +122 -0
- proxyrequest_sdk/resources/telegram_service.py +100 -0
- proxyrequest_sdk/resources/users.py +331 -0
- proxyrequest_sdk/resources/webhooks.py +114 -0
- proxyrequest_sdk/webhooks.py +95 -0
- proxyrequest_sdk-1.0.0.dist-info/METADATA +322 -0
- proxyrequest_sdk-1.0.0.dist-info/RECORD +560 -0
- proxyrequest_sdk-1.0.0.dist-info/WHEEL +4 -0
- proxyrequest_sdk-1.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
from typing import cast
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
T = TypeVar("T", bound="WebhooksRetrieveResponse403")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@_attrs_define
|
|
19
|
+
class WebhooksRetrieveResponse403:
|
|
20
|
+
"""Validation and API error payload. Field names may be added dynamically; field errors are returned as arrays of
|
|
21
|
+
human-readable messages.
|
|
22
|
+
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
detail: str | Unset = UNSET
|
|
26
|
+
non_field_errors: list[str] | Unset = UNSET
|
|
27
|
+
additional_properties: dict[str, list[str] | str] = _attrs_field(init=False, factory=dict)
|
|
28
|
+
|
|
29
|
+
def to_dict(self) -> dict[str, Any]:
|
|
30
|
+
detail = self.detail
|
|
31
|
+
|
|
32
|
+
non_field_errors: list[str] | Unset = UNSET
|
|
33
|
+
if not isinstance(self.non_field_errors, Unset):
|
|
34
|
+
non_field_errors = self.non_field_errors
|
|
35
|
+
|
|
36
|
+
field_dict: dict[str, Any] = {}
|
|
37
|
+
for prop_name, prop in self.additional_properties.items():
|
|
38
|
+
if isinstance(prop, list):
|
|
39
|
+
field_dict[prop_name] = prop
|
|
40
|
+
|
|
41
|
+
else:
|
|
42
|
+
field_dict[prop_name] = prop
|
|
43
|
+
|
|
44
|
+
field_dict.update({})
|
|
45
|
+
if detail is not UNSET:
|
|
46
|
+
field_dict["detail"] = detail
|
|
47
|
+
if non_field_errors is not UNSET:
|
|
48
|
+
field_dict["non_field_errors"] = non_field_errors
|
|
49
|
+
|
|
50
|
+
return field_dict
|
|
51
|
+
|
|
52
|
+
@classmethod
|
|
53
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
54
|
+
d = dict(src_dict)
|
|
55
|
+
detail = d.pop("detail", UNSET)
|
|
56
|
+
|
|
57
|
+
non_field_errors = cast(list[str], d.pop("non_field_errors", UNSET))
|
|
58
|
+
|
|
59
|
+
webhooks_retrieve_response_403 = cls(
|
|
60
|
+
detail=detail,
|
|
61
|
+
non_field_errors=non_field_errors,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
additional_properties = {}
|
|
65
|
+
for prop_name, prop_dict in d.items():
|
|
66
|
+
|
|
67
|
+
def _parse_additional_property(data: object) -> list[str] | str:
|
|
68
|
+
try:
|
|
69
|
+
if not isinstance(data, list):
|
|
70
|
+
raise TypeError()
|
|
71
|
+
additional_property_type_1 = cast(list[str], data)
|
|
72
|
+
|
|
73
|
+
return additional_property_type_1
|
|
74
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
75
|
+
pass
|
|
76
|
+
return cast(list[str] | str, data)
|
|
77
|
+
|
|
78
|
+
additional_property = _parse_additional_property(prop_dict)
|
|
79
|
+
|
|
80
|
+
additional_properties[prop_name] = additional_property
|
|
81
|
+
|
|
82
|
+
webhooks_retrieve_response_403.additional_properties = additional_properties
|
|
83
|
+
return webhooks_retrieve_response_403
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def additional_keys(self) -> list[str]:
|
|
87
|
+
return list(self.additional_properties.keys())
|
|
88
|
+
|
|
89
|
+
def __getitem__(self, key: str) -> list[str] | str:
|
|
90
|
+
return self.additional_properties[key]
|
|
91
|
+
|
|
92
|
+
def __setitem__(self, key: str, value: list[str] | str) -> None:
|
|
93
|
+
self.additional_properties[key] = value
|
|
94
|
+
|
|
95
|
+
def __delitem__(self, key: str) -> None:
|
|
96
|
+
del self.additional_properties[key]
|
|
97
|
+
|
|
98
|
+
def __contains__(self, key: str) -> bool:
|
|
99
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
from typing import cast
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
T = TypeVar("T", bound="WebhooksRetrieveResponse404")
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@_attrs_define
|
|
19
|
+
class WebhooksRetrieveResponse404:
|
|
20
|
+
"""Validation and API error payload. Field names may be added dynamically; field errors are returned as arrays of
|
|
21
|
+
human-readable messages.
|
|
22
|
+
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
detail: str | Unset = UNSET
|
|
26
|
+
non_field_errors: list[str] | Unset = UNSET
|
|
27
|
+
additional_properties: dict[str, list[str] | str] = _attrs_field(init=False, factory=dict)
|
|
28
|
+
|
|
29
|
+
def to_dict(self) -> dict[str, Any]:
|
|
30
|
+
detail = self.detail
|
|
31
|
+
|
|
32
|
+
non_field_errors: list[str] | Unset = UNSET
|
|
33
|
+
if not isinstance(self.non_field_errors, Unset):
|
|
34
|
+
non_field_errors = self.non_field_errors
|
|
35
|
+
|
|
36
|
+
field_dict: dict[str, Any] = {}
|
|
37
|
+
for prop_name, prop in self.additional_properties.items():
|
|
38
|
+
if isinstance(prop, list):
|
|
39
|
+
field_dict[prop_name] = prop
|
|
40
|
+
|
|
41
|
+
else:
|
|
42
|
+
field_dict[prop_name] = prop
|
|
43
|
+
|
|
44
|
+
field_dict.update({})
|
|
45
|
+
if detail is not UNSET:
|
|
46
|
+
field_dict["detail"] = detail
|
|
47
|
+
if non_field_errors is not UNSET:
|
|
48
|
+
field_dict["non_field_errors"] = non_field_errors
|
|
49
|
+
|
|
50
|
+
return field_dict
|
|
51
|
+
|
|
52
|
+
@classmethod
|
|
53
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
54
|
+
d = dict(src_dict)
|
|
55
|
+
detail = d.pop("detail", UNSET)
|
|
56
|
+
|
|
57
|
+
non_field_errors = cast(list[str], d.pop("non_field_errors", UNSET))
|
|
58
|
+
|
|
59
|
+
webhooks_retrieve_response_404 = cls(
|
|
60
|
+
detail=detail,
|
|
61
|
+
non_field_errors=non_field_errors,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
additional_properties = {}
|
|
65
|
+
for prop_name, prop_dict in d.items():
|
|
66
|
+
|
|
67
|
+
def _parse_additional_property(data: object) -> list[str] | str:
|
|
68
|
+
try:
|
|
69
|
+
if not isinstance(data, list):
|
|
70
|
+
raise TypeError()
|
|
71
|
+
additional_property_type_1 = cast(list[str], data)
|
|
72
|
+
|
|
73
|
+
return additional_property_type_1
|
|
74
|
+
except (TypeError, ValueError, AttributeError, KeyError):
|
|
75
|
+
pass
|
|
76
|
+
return cast(list[str] | str, data)
|
|
77
|
+
|
|
78
|
+
additional_property = _parse_additional_property(prop_dict)
|
|
79
|
+
|
|
80
|
+
additional_properties[prop_name] = additional_property
|
|
81
|
+
|
|
82
|
+
webhooks_retrieve_response_404.additional_properties = additional_properties
|
|
83
|
+
return webhooks_retrieve_response_404
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def additional_keys(self) -> list[str]:
|
|
87
|
+
return list(self.additional_properties.keys())
|
|
88
|
+
|
|
89
|
+
def __getitem__(self, key: str) -> list[str] | str:
|
|
90
|
+
return self.additional_properties[key]
|
|
91
|
+
|
|
92
|
+
def __setitem__(self, key: str, value: list[str] | str) -> None:
|
|
93
|
+
self.additional_properties[key] = value
|
|
94
|
+
|
|
95
|
+
def __delitem__(self, key: str) -> None:
|
|
96
|
+
del self.additional_properties[key]
|
|
97
|
+
|
|
98
|
+
def __contains__(self, key: str) -> bool:
|
|
99
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"""Contains some shared types for properties"""
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping, MutableMapping
|
|
4
|
+
from http import HTTPStatus
|
|
5
|
+
from typing import BinaryIO, Generic, TypeVar, Literal, IO
|
|
6
|
+
|
|
7
|
+
from attrs import define
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Unset:
|
|
11
|
+
def __bool__(self) -> Literal[False]:
|
|
12
|
+
return False
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
UNSET: Unset = Unset()
|
|
16
|
+
|
|
17
|
+
# The types that `httpx.Client(files=)` can accept, copied from that library.
|
|
18
|
+
FileContent = IO[bytes] | bytes | str
|
|
19
|
+
FileTypes = (
|
|
20
|
+
# (filename, file (or bytes), content_type)
|
|
21
|
+
tuple[str | None, FileContent, str | None]
|
|
22
|
+
# (filename, file (or bytes), content_type, headers)
|
|
23
|
+
| tuple[str | None, FileContent, str | None, Mapping[str, str]]
|
|
24
|
+
)
|
|
25
|
+
RequestFiles = list[tuple[str, FileTypes]]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@define
|
|
29
|
+
class File:
|
|
30
|
+
"""Contains information for file uploads"""
|
|
31
|
+
|
|
32
|
+
payload: BinaryIO
|
|
33
|
+
file_name: str | None = None
|
|
34
|
+
mime_type: str | None = None
|
|
35
|
+
|
|
36
|
+
def to_tuple(self) -> FileTypes:
|
|
37
|
+
"""Return a tuple representation that httpx will accept for multipart/form-data"""
|
|
38
|
+
return self.file_name, self.payload, self.mime_type
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
T = TypeVar("T")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@define
|
|
45
|
+
class Response(Generic[T]):
|
|
46
|
+
"""A response from an endpoint"""
|
|
47
|
+
|
|
48
|
+
status_code: HTTPStatus
|
|
49
|
+
content: bytes
|
|
50
|
+
headers: MutableMapping[str, str]
|
|
51
|
+
parsed: T | None
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
__all__ = ["UNSET", "File", "FileTypes", "RequestFiles", "Response", "Unset"]
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import AsyncIterator, Awaitable, Callable, Iterator, Mapping
|
|
4
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
5
|
+
from types import TracebackType
|
|
6
|
+
from typing import Any, TypeVar
|
|
7
|
+
from urllib.parse import parse_qs, urlparse
|
|
8
|
+
|
|
9
|
+
import httpx
|
|
10
|
+
|
|
11
|
+
from . import resources
|
|
12
|
+
from ._generated.client import AuthenticatedClient as GeneratedClient
|
|
13
|
+
from ._generated.types import Response, Unset
|
|
14
|
+
from .errors import ApiError, PaginationError
|
|
15
|
+
from .files import FileDownload
|
|
16
|
+
|
|
17
|
+
DEFAULT_BASE_URL = "https://api.proxyrequest.com/api/v1"
|
|
18
|
+
T = TypeVar("T")
|
|
19
|
+
|
|
20
|
+
try:
|
|
21
|
+
_PACKAGE_VERSION = version("proxyrequest-sdk")
|
|
22
|
+
except PackageNotFoundError: # pragma: no cover - only possible in an uninstalled source tree
|
|
23
|
+
_PACKAGE_VERSION = "0.0.0"
|
|
24
|
+
USER_AGENT = f"proxyrequest-python-sdk/{_PACKAGE_VERSION}"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _base_url(value: str) -> str:
|
|
28
|
+
normalized = value.rstrip("/")
|
|
29
|
+
url = httpx.URL(normalized)
|
|
30
|
+
if url.scheme not in {"http", "https"} or not url.host:
|
|
31
|
+
raise ValueError("base_url must be an absolute HTTP or HTTPS URL.")
|
|
32
|
+
return normalized
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _timeout(value: float | httpx.Timeout, connect_timeout: float) -> httpx.Timeout:
|
|
36
|
+
return (
|
|
37
|
+
value if isinstance(value, httpx.Timeout) else httpx.Timeout(value, connect=connect_timeout)
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _headers(language: str, authorization: str | None, user_agent: str) -> dict[str, str]:
|
|
42
|
+
if not language.strip():
|
|
43
|
+
raise ValueError("language must not be empty.")
|
|
44
|
+
headers = {
|
|
45
|
+
"Accept": "application/json",
|
|
46
|
+
"Accept-Language": language,
|
|
47
|
+
"User-Agent": user_agent,
|
|
48
|
+
}
|
|
49
|
+
if authorization is not None:
|
|
50
|
+
headers["Authorization"] = authorization
|
|
51
|
+
return headers
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _authorization(api_key: str | None, bearer_token: str | None) -> str | None:
|
|
55
|
+
if api_key and bearer_token:
|
|
56
|
+
raise ValueError("Configure either api_key or bearer_token, not both.")
|
|
57
|
+
if api_key is not None:
|
|
58
|
+
if not api_key:
|
|
59
|
+
raise ValueError("api_key must not be empty.")
|
|
60
|
+
return f"Static {api_key}"
|
|
61
|
+
if bearer_token is not None:
|
|
62
|
+
if not bearer_token:
|
|
63
|
+
raise ValueError("bearer_token must not be empty.")
|
|
64
|
+
return f"Bearer {bearer_token}"
|
|
65
|
+
return None
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _ensure_base_url(client: httpx.Client | httpx.AsyncClient, base_url: str) -> None:
|
|
69
|
+
configured = str(client.base_url).rstrip("/")
|
|
70
|
+
if configured != base_url:
|
|
71
|
+
raise ValueError(f"The injected httpx client must use base_url={base_url!r}.")
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def _apply_headers(client: httpx.Client | httpx.AsyncClient, headers: Mapping[str, str]) -> None:
|
|
75
|
+
client.headers.update(headers)
|
|
76
|
+
if "Authorization" not in headers:
|
|
77
|
+
client.headers.pop("Authorization", None)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _response_value(response: Response[Any]) -> Any:
|
|
81
|
+
status_code = int(response.status_code)
|
|
82
|
+
if not 200 <= status_code < 300:
|
|
83
|
+
raise ApiError.from_response(status_code, response.content, response.headers)
|
|
84
|
+
if response.parsed is None and response.content and status_code not in {204, 205}:
|
|
85
|
+
raise ApiError.unexpected(
|
|
86
|
+
f"ProxyRequest returned an unreadable HTTP {status_code} response."
|
|
87
|
+
)
|
|
88
|
+
return response.parsed
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def _next_offset(page: Any, current_offset: int, count: int, visited: set[str]) -> int | None:
|
|
92
|
+
next_url = getattr(page, "next_", None)
|
|
93
|
+
if next_url is None or isinstance(next_url, Unset) or next_url == "":
|
|
94
|
+
return None
|
|
95
|
+
if not isinstance(next_url, str) or next_url in visited:
|
|
96
|
+
raise PaginationError("The API returned an invalid or repeated pagination URL.")
|
|
97
|
+
visited.add(next_url)
|
|
98
|
+
values = parse_qs(urlparse(next_url).query).get("offset", [])
|
|
99
|
+
if values:
|
|
100
|
+
try:
|
|
101
|
+
return int(values[0])
|
|
102
|
+
except ValueError as error:
|
|
103
|
+
raise PaginationError("The API returned a non-integer pagination offset.") from error
|
|
104
|
+
return current_offset + count
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class Client:
|
|
108
|
+
"""Synchronous ProxyRequest API client."""
|
|
109
|
+
|
|
110
|
+
def __init__(
|
|
111
|
+
self,
|
|
112
|
+
*,
|
|
113
|
+
api_key: str | None = None,
|
|
114
|
+
bearer_token: str | None = None,
|
|
115
|
+
base_url: str = DEFAULT_BASE_URL,
|
|
116
|
+
language: str = "en",
|
|
117
|
+
timeout: float | httpx.Timeout = 15.0,
|
|
118
|
+
connect_timeout: float = 5.0,
|
|
119
|
+
verify: bool = True,
|
|
120
|
+
follow_redirects: bool = False,
|
|
121
|
+
http_client: httpx.Client | None = None,
|
|
122
|
+
) -> None:
|
|
123
|
+
self.base_url = _base_url(base_url)
|
|
124
|
+
authorization = _authorization(api_key, bearer_token)
|
|
125
|
+
default_headers = _headers(language, authorization, USER_AGENT)
|
|
126
|
+
self._owns_http_client = http_client is None
|
|
127
|
+
if http_client is None:
|
|
128
|
+
http_client = httpx.Client(
|
|
129
|
+
base_url=self.base_url,
|
|
130
|
+
headers=default_headers,
|
|
131
|
+
timeout=_timeout(timeout, connect_timeout),
|
|
132
|
+
verify=verify,
|
|
133
|
+
follow_redirects=follow_redirects,
|
|
134
|
+
)
|
|
135
|
+
else:
|
|
136
|
+
_ensure_base_url(http_client, self.base_url)
|
|
137
|
+
_apply_headers(http_client, default_headers)
|
|
138
|
+
self._http_client = http_client
|
|
139
|
+
self._generated = GeneratedClient(base_url=self.base_url, token="")
|
|
140
|
+
self._generated.set_httpx_client(http_client)
|
|
141
|
+
self._closed = False
|
|
142
|
+
self._attach_resources()
|
|
143
|
+
|
|
144
|
+
@classmethod
|
|
145
|
+
def with_api_key(cls, api_key: str, **options: Any) -> Client:
|
|
146
|
+
return cls(api_key=api_key, **options)
|
|
147
|
+
|
|
148
|
+
@classmethod
|
|
149
|
+
def with_bearer_token(cls, token: str, **options: Any) -> Client:
|
|
150
|
+
return cls(bearer_token=token, **options)
|
|
151
|
+
|
|
152
|
+
@classmethod
|
|
153
|
+
def anonymous(cls, **options: Any) -> Client:
|
|
154
|
+
return cls(**options)
|
|
155
|
+
|
|
156
|
+
def _attach_resources(self) -> None:
|
|
157
|
+
self.api_keys = resources.APIKeysResource(self)
|
|
158
|
+
self.affiliates = resources.AffiliatesResource(self)
|
|
159
|
+
self.analytics = resources.AnalyticsResource(self)
|
|
160
|
+
self.authorization = resources.AuthorizationResource(self)
|
|
161
|
+
self.coupons = resources.CouponsResource(self)
|
|
162
|
+
self.invoices = resources.InvoicesResource(self)
|
|
163
|
+
self.locations = resources.LocationsResource(self)
|
|
164
|
+
self.news = resources.NewsResource(self)
|
|
165
|
+
self.orders = resources.OrdersResource(self)
|
|
166
|
+
self.packages = resources.PackagesResource(self)
|
|
167
|
+
self.profile = resources.ProfileResource(self)
|
|
168
|
+
self.proxies = resources.ProxiesResource(self)
|
|
169
|
+
self.rewards = resources.RewardsResource(self)
|
|
170
|
+
self.sessions = resources.SessionsResource(self)
|
|
171
|
+
self.settings = resources.SettingsResource(self)
|
|
172
|
+
self.telegram = resources.TelegramDashboardResource(self)
|
|
173
|
+
self.telegram_service = resources.TelegramServiceResource(self)
|
|
174
|
+
self.users = resources.UsersResource(self)
|
|
175
|
+
self.webhooks = resources.WebhooksResource(self)
|
|
176
|
+
|
|
177
|
+
def _call(self, endpoint: Callable[..., Response[Any]], **kwargs: Any) -> Any:
|
|
178
|
+
try:
|
|
179
|
+
return _response_value(endpoint(client=self._generated, **kwargs))
|
|
180
|
+
except ApiError:
|
|
181
|
+
raise
|
|
182
|
+
except httpx.HTTPError as error:
|
|
183
|
+
raise ApiError.network(error) from error
|
|
184
|
+
except Exception as error:
|
|
185
|
+
raise ApiError.unexpected(
|
|
186
|
+
"Unable to decode the ProxyRequest API response.", error
|
|
187
|
+
) from error
|
|
188
|
+
|
|
189
|
+
def _download(self, endpoint: Callable[..., Response[Any]], **kwargs: Any) -> FileDownload:
|
|
190
|
+
try:
|
|
191
|
+
response = endpoint(client=self._generated, **kwargs)
|
|
192
|
+
_response_value(response)
|
|
193
|
+
return FileDownload.from_response(response.content, response.headers)
|
|
194
|
+
except ApiError:
|
|
195
|
+
raise
|
|
196
|
+
except httpx.HTTPError as error:
|
|
197
|
+
raise ApiError.network(error) from error
|
|
198
|
+
|
|
199
|
+
def request(
|
|
200
|
+
self,
|
|
201
|
+
method: str,
|
|
202
|
+
path: str,
|
|
203
|
+
*,
|
|
204
|
+
params: Mapping[str, Any] | None = None,
|
|
205
|
+
json: Any = None,
|
|
206
|
+
headers: Mapping[str, str] | None = None,
|
|
207
|
+
**options: Any,
|
|
208
|
+
) -> httpx.Response:
|
|
209
|
+
try:
|
|
210
|
+
response = self._http_client.request(
|
|
211
|
+
method.upper(), path, params=params, json=json, headers=headers, **options
|
|
212
|
+
)
|
|
213
|
+
except httpx.HTTPError as error:
|
|
214
|
+
raise ApiError.network(error) from error
|
|
215
|
+
if not response.is_success:
|
|
216
|
+
raise ApiError.from_response(response.status_code, response.content, response.headers)
|
|
217
|
+
return response
|
|
218
|
+
|
|
219
|
+
def paginate(
|
|
220
|
+
self,
|
|
221
|
+
page_fetcher: Callable[..., Any],
|
|
222
|
+
*,
|
|
223
|
+
limit: int = 100,
|
|
224
|
+
offset: int = 0,
|
|
225
|
+
max_pages: int = 10_000,
|
|
226
|
+
**filters: Any,
|
|
227
|
+
) -> Iterator[Any]:
|
|
228
|
+
if limit <= 0 or offset < 0 or max_pages <= 0:
|
|
229
|
+
raise ValueError("limit and max_pages must be positive; offset must not be negative.")
|
|
230
|
+
visited: set[str] = set()
|
|
231
|
+
current_offset = offset
|
|
232
|
+
for _ in range(max_pages):
|
|
233
|
+
page = page_fetcher(limit=limit, offset=current_offset, **filters)
|
|
234
|
+
results = getattr(page, "results", None)
|
|
235
|
+
if not isinstance(results, list):
|
|
236
|
+
raise PaginationError("A page object must expose a list in results.")
|
|
237
|
+
yield from results
|
|
238
|
+
next_offset = _next_offset(page, current_offset, len(results), visited)
|
|
239
|
+
if next_offset is None:
|
|
240
|
+
return
|
|
241
|
+
current_offset = next_offset
|
|
242
|
+
raise PaginationError("Pagination stopped after the configured maximum number of pages.")
|
|
243
|
+
|
|
244
|
+
def download_invoice_pdf(self, invoice_id: str) -> FileDownload:
|
|
245
|
+
return self.invoices.download_pdf(invoice_id)
|
|
246
|
+
|
|
247
|
+
def close(self) -> None:
|
|
248
|
+
if not self._closed and self._owns_http_client:
|
|
249
|
+
self._http_client.close()
|
|
250
|
+
self._closed = True
|
|
251
|
+
|
|
252
|
+
def __enter__(self) -> Client:
|
|
253
|
+
return self
|
|
254
|
+
|
|
255
|
+
def __exit__(
|
|
256
|
+
self,
|
|
257
|
+
exc_type: type[BaseException] | None,
|
|
258
|
+
exc_value: BaseException | None,
|
|
259
|
+
traceback: TracebackType | None,
|
|
260
|
+
) -> None:
|
|
261
|
+
self.close()
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
class AsyncClient:
|
|
265
|
+
"""Asynchronous ProxyRequest API client."""
|
|
266
|
+
|
|
267
|
+
def __init__(
|
|
268
|
+
self,
|
|
269
|
+
*,
|
|
270
|
+
api_key: str | None = None,
|
|
271
|
+
bearer_token: str | None = None,
|
|
272
|
+
base_url: str = DEFAULT_BASE_URL,
|
|
273
|
+
language: str = "en",
|
|
274
|
+
timeout: float | httpx.Timeout = 15.0,
|
|
275
|
+
connect_timeout: float = 5.0,
|
|
276
|
+
verify: bool = True,
|
|
277
|
+
follow_redirects: bool = False,
|
|
278
|
+
http_client: httpx.AsyncClient | None = None,
|
|
279
|
+
) -> None:
|
|
280
|
+
self.base_url = _base_url(base_url)
|
|
281
|
+
authorization = _authorization(api_key, bearer_token)
|
|
282
|
+
default_headers = _headers(language, authorization, USER_AGENT)
|
|
283
|
+
self._owns_http_client = http_client is None
|
|
284
|
+
if http_client is None:
|
|
285
|
+
http_client = httpx.AsyncClient(
|
|
286
|
+
base_url=self.base_url,
|
|
287
|
+
headers=default_headers,
|
|
288
|
+
timeout=_timeout(timeout, connect_timeout),
|
|
289
|
+
verify=verify,
|
|
290
|
+
follow_redirects=follow_redirects,
|
|
291
|
+
)
|
|
292
|
+
else:
|
|
293
|
+
_ensure_base_url(http_client, self.base_url)
|
|
294
|
+
_apply_headers(http_client, default_headers)
|
|
295
|
+
self._http_client = http_client
|
|
296
|
+
self._generated = GeneratedClient(base_url=self.base_url, token="")
|
|
297
|
+
self._generated.set_async_httpx_client(http_client)
|
|
298
|
+
self._closed = False
|
|
299
|
+
self._attach_resources()
|
|
300
|
+
|
|
301
|
+
@classmethod
|
|
302
|
+
def with_api_key(cls, api_key: str, **options: Any) -> AsyncClient:
|
|
303
|
+
return cls(api_key=api_key, **options)
|
|
304
|
+
|
|
305
|
+
@classmethod
|
|
306
|
+
def with_bearer_token(cls, token: str, **options: Any) -> AsyncClient:
|
|
307
|
+
return cls(bearer_token=token, **options)
|
|
308
|
+
|
|
309
|
+
@classmethod
|
|
310
|
+
def anonymous(cls, **options: Any) -> AsyncClient:
|
|
311
|
+
return cls(**options)
|
|
312
|
+
|
|
313
|
+
def _attach_resources(self) -> None:
|
|
314
|
+
self.api_keys = resources.AsyncAPIKeysResource(self)
|
|
315
|
+
self.affiliates = resources.AsyncAffiliatesResource(self)
|
|
316
|
+
self.analytics = resources.AsyncAnalyticsResource(self)
|
|
317
|
+
self.authorization = resources.AsyncAuthorizationResource(self)
|
|
318
|
+
self.coupons = resources.AsyncCouponsResource(self)
|
|
319
|
+
self.invoices = resources.AsyncInvoicesResource(self)
|
|
320
|
+
self.locations = resources.AsyncLocationsResource(self)
|
|
321
|
+
self.news = resources.AsyncNewsResource(self)
|
|
322
|
+
self.orders = resources.AsyncOrdersResource(self)
|
|
323
|
+
self.packages = resources.AsyncPackagesResource(self)
|
|
324
|
+
self.profile = resources.AsyncProfileResource(self)
|
|
325
|
+
self.proxies = resources.AsyncProxiesResource(self)
|
|
326
|
+
self.rewards = resources.AsyncRewardsResource(self)
|
|
327
|
+
self.sessions = resources.AsyncSessionsResource(self)
|
|
328
|
+
self.settings = resources.AsyncSettingsResource(self)
|
|
329
|
+
self.telegram = resources.AsyncTelegramDashboardResource(self)
|
|
330
|
+
self.telegram_service = resources.AsyncTelegramServiceResource(self)
|
|
331
|
+
self.users = resources.AsyncUsersResource(self)
|
|
332
|
+
self.webhooks = resources.AsyncWebhooksResource(self)
|
|
333
|
+
|
|
334
|
+
async def _call(
|
|
335
|
+
self,
|
|
336
|
+
endpoint: Callable[..., Awaitable[Response[Any]]],
|
|
337
|
+
**kwargs: Any,
|
|
338
|
+
) -> Any:
|
|
339
|
+
try:
|
|
340
|
+
return _response_value(await endpoint(client=self._generated, **kwargs))
|
|
341
|
+
except ApiError:
|
|
342
|
+
raise
|
|
343
|
+
except httpx.HTTPError as error:
|
|
344
|
+
raise ApiError.network(error) from error
|
|
345
|
+
except Exception as error:
|
|
346
|
+
raise ApiError.unexpected(
|
|
347
|
+
"Unable to decode the ProxyRequest API response.", error
|
|
348
|
+
) from error
|
|
349
|
+
|
|
350
|
+
async def _download(
|
|
351
|
+
self,
|
|
352
|
+
endpoint: Callable[..., Awaitable[Response[Any]]],
|
|
353
|
+
**kwargs: Any,
|
|
354
|
+
) -> FileDownload:
|
|
355
|
+
try:
|
|
356
|
+
response = await endpoint(client=self._generated, **kwargs)
|
|
357
|
+
_response_value(response)
|
|
358
|
+
return FileDownload.from_response(response.content, response.headers)
|
|
359
|
+
except ApiError:
|
|
360
|
+
raise
|
|
361
|
+
except httpx.HTTPError as error:
|
|
362
|
+
raise ApiError.network(error) from error
|
|
363
|
+
|
|
364
|
+
async def request(
|
|
365
|
+
self,
|
|
366
|
+
method: str,
|
|
367
|
+
path: str,
|
|
368
|
+
*,
|
|
369
|
+
params: Mapping[str, Any] | None = None,
|
|
370
|
+
json: Any = None,
|
|
371
|
+
headers: Mapping[str, str] | None = None,
|
|
372
|
+
**options: Any,
|
|
373
|
+
) -> httpx.Response:
|
|
374
|
+
try:
|
|
375
|
+
response = await self._http_client.request(
|
|
376
|
+
method.upper(), path, params=params, json=json, headers=headers, **options
|
|
377
|
+
)
|
|
378
|
+
except httpx.HTTPError as error:
|
|
379
|
+
raise ApiError.network(error) from error
|
|
380
|
+
if not response.is_success:
|
|
381
|
+
raise ApiError.from_response(response.status_code, response.content, response.headers)
|
|
382
|
+
return response
|
|
383
|
+
|
|
384
|
+
async def paginate(
|
|
385
|
+
self,
|
|
386
|
+
page_fetcher: Callable[..., Awaitable[Any]],
|
|
387
|
+
*,
|
|
388
|
+
limit: int = 100,
|
|
389
|
+
offset: int = 0,
|
|
390
|
+
max_pages: int = 10_000,
|
|
391
|
+
**filters: Any,
|
|
392
|
+
) -> AsyncIterator[Any]:
|
|
393
|
+
if limit <= 0 or offset < 0 or max_pages <= 0:
|
|
394
|
+
raise ValueError("limit and max_pages must be positive; offset must not be negative.")
|
|
395
|
+
visited: set[str] = set()
|
|
396
|
+
current_offset = offset
|
|
397
|
+
for _ in range(max_pages):
|
|
398
|
+
page = await page_fetcher(limit=limit, offset=current_offset, **filters)
|
|
399
|
+
results = getattr(page, "results", None)
|
|
400
|
+
if not isinstance(results, list):
|
|
401
|
+
raise PaginationError("A page object must expose a list in results.")
|
|
402
|
+
for result in results:
|
|
403
|
+
yield result
|
|
404
|
+
next_offset = _next_offset(page, current_offset, len(results), visited)
|
|
405
|
+
if next_offset is None:
|
|
406
|
+
return
|
|
407
|
+
current_offset = next_offset
|
|
408
|
+
raise PaginationError("Pagination stopped after the configured maximum number of pages.")
|
|
409
|
+
|
|
410
|
+
async def download_invoice_pdf(self, invoice_id: str) -> FileDownload:
|
|
411
|
+
return await self.invoices.download_pdf(invoice_id)
|
|
412
|
+
|
|
413
|
+
async def close(self) -> None:
|
|
414
|
+
if not self._closed and self._owns_http_client:
|
|
415
|
+
await self._http_client.aclose()
|
|
416
|
+
self._closed = True
|
|
417
|
+
|
|
418
|
+
async def __aenter__(self) -> AsyncClient:
|
|
419
|
+
return self
|
|
420
|
+
|
|
421
|
+
async def __aexit__(
|
|
422
|
+
self,
|
|
423
|
+
exc_type: type[BaseException] | None,
|
|
424
|
+
exc_value: BaseException | None,
|
|
425
|
+
traceback: TracebackType | None,
|
|
426
|
+
) -> None:
|
|
427
|
+
await self.close()
|