proxyrequest-sdk 1.0.0__tar.gz → 2.0.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.
- proxyrequest_sdk-2.0.0/CHANGELOG.md +32 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/PKG-INFO +41 -27
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/README.md +40 -26
- proxyrequest_sdk-2.0.0/docs/SDK-AUDIT.md +346 -0
- proxyrequest_sdk-2.0.0/docs/backend-compatibility.md +80 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/docs/guides/purchase-flow.md +1 -2
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/docs/reference/api.md +5 -18
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/docs/reference/models.md +11 -8
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/openapi/openapi.yaml +1985 -620
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/openapi/operations.yaml +1 -6
- proxyrequest_sdk-2.0.0/openapi/source.json +12 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/pyproject.toml +1 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/scripts/generate.py +94 -33
- proxyrequest_sdk-2.0.0/scripts/sdk_schema.py +32 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/scripts/sync_openapi.py +19 -3
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/__init__.py +2 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/affiliates/affiliates_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/affiliates/affiliates_rewards_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/affiliates/affiliates_rewards_overall_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/analytics/analytics_connections_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/analytics/analytics_domains_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/analytics/analytics_feed_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/analytics/analytics_logs_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/analytics/analytics_overall_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/analytics/analytics_transactions_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/api_keys/api_keys_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/api_keys/api_keys_destroy.py +36 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/api_keys/api_keys_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/authorization/login_create.py +20 -11
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/authorization/login_google_create.py +44 -11
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/api/authorization/login_otp_create.py +196 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/authorization/recover_password_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/authorization/refresh_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/authorization/signup_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/coupons/coupons_calculate_price_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/coupons/coupons_create.py +69 -11
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/coupons/coupons_destroy.py +64 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/coupons/coupons_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/coupons/coupons_partial_update.py +36 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/coupons/coupons_redeems_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/coupons/coupons_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/coupons/coupons_update.py +36 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/invoices/invoices_create.py +76 -16
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/invoices/invoices_destroy.py +64 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/invoices/invoices_download_pdf_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/invoices/invoices_list.py +16 -13
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/invoices/invoices_pay_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/invoices/invoices_retrieve.py +32 -6
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/locations_asn_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/locations_cities_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/locations_cities_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/locations_continents_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/locations_continents_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/locations_countries_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/locations_countries_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/locations_isps_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/locations_regions_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/locations_regions_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/news/news_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/orders/orders_destroy.py +64 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/orders/orders_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/orders/orders_partial_update.py +36 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/orders/orders_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/orders/reset_password_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/packages/packages_commissions_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/packages/packages_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/profile/profile_2fa_confirm_create.py +12 -13
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/profile/profile_2fa_disable_create.py +8 -9
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/profile/profile_2fa_setup_create.py +31 -13
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/profile/profile_2fa_status_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/profile/profile_change_password_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/profile/profile_destroy.py +69 -11
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/profile/profile_partial_update.py +36 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/profile/profile_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/proxies/proxies_generate_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/rewards/rewards_claim_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/rewards/rewards_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/settings/settings_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/telegram_dashboard/integrations_telegram_connection_destroy.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/telegram_dashboard/integrations_telegram_connection_partial_update.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/telegram_dashboard/integrations_telegram_connection_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/telegram_dashboard/integrations_telegram_link_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/users/users_create.py +75 -11
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/users/users_data_add_create.py +36 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/users/users_data_subtract_create.py +36 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/users/users_destroy.py +64 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/users/users_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/users/users_orders_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/users/users_partial_update.py +36 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/users/users_password_create.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/users/users_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/webhooks/webhooks_create.py +36 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/webhooks/webhooks_destroy.py +64 -5
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/webhooks/webhooks_list.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/webhooks/webhooks_retrieve.py +4 -1
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/__init__.py +66 -36
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/api_keys_destroy_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/checkout_status_enum.py +20 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/coupons_create_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/coupons_destroy_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/coupons_destroy_response_412.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/coupons_partial_update_response_412.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/coupons_update_response_412.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/invoice.py +511 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoice_create_request.py +35 -1
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/invoice_create_request_gateway_enum.py +54 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/invoice_create_request_status_enum.py +18 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/invoice_gateway_enum.py +52 -0
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/invoice.py → proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/invoice_short.py +124 -80
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/invoices_create_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/invoices_create_response_502.py +83 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/invoices_destroy_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/invoices_destroy_response_412.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/invoices_list_payment_gateway.py +52 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/login_otp_create_response_400.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/orders_destroy_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/orders_destroy_response_412.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/orders_partial_update_response_412.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/otp_challenge.py +73 -0
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/paginated_invoice_list.py → proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/paginated_invoice_read_list.py +32 -8
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/payment_gateway.py +96 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/profile_destroy_response_412.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/profile_partial_update_response_412.py +99 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/settings_response.py +18 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/two_factor_disable_request.py +77 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/two_factor_setup_request_request.py +75 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/user.py +144 -92
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/users_create_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/users_data_add_create_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/users_data_subtract_create_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/users_destroy_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/users_destroy_response_412.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/users_partial_update_response_412.py +99 -0
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/two_factor_disable_request.py → proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/verify_otp_request.py +12 -5
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/webhooks_create_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/webhooks_destroy_response_409.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/models/webhooks_destroy_response_412.py +99 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_response.py +23 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/client.py +126 -31
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/errors.py +42 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/models/__init__.py +16 -14
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/resources/__init__.py +0 -8
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/resources/affiliates.py +96 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/resources/analytics.py +415 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/resources/api_keys.py +197 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/resources/authorization.py +303 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/resources/coupons.py +656 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/resources/invoices.py +468 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/resources/locations.py +453 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/resources/news.py +45 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/resources/orders.py +404 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/resources/packages.py +109 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/resources/profile.py +444 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/resources/proxies.py +25 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/resources/rewards.py +75 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/resources/settings.py +23 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/resources/telegram.py +103 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/resources/users.py +786 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/resources/webhooks.py +295 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/response.py +17 -0
- proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/webhooks.py +45 -0
- proxyrequest_sdk-2.0.0/tests/fixtures/backend-responses.json +162 -0
- proxyrequest_sdk-2.0.0/tests/fixtures/webhook-signatures.json +32 -0
- proxyrequest_sdk-2.0.0/tests/test_backend_compatibility.py +211 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/tests/test_client.py +170 -34
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/tests/test_contract.py +38 -8
- proxyrequest_sdk-2.0.0/tests/test_webhooks.py +49 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/uv.lock +1 -1
- proxyrequest_sdk-1.0.0/CHANGELOG.md +0 -11
- proxyrequest_sdk-1.0.0/openapi/source.json +0 -8
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/api/sessions/sessions_destroy.py +0 -251
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/api/sessions/sessions_list.py +0 -229
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/api/telegram_dashboard_service/integrations_telegram_link_consume_create.py +0 -210
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/api/telegram_dashboard_service/integrations_telegram_session_create.py +0 -210
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/api/users/__init__.py +0 -1
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/api/webhooks/__init__.py +0 -1
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/integrations_telegram_link_consume_create_response_400.py +0 -101
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/integrations_telegram_session_create_response_400.py +0 -101
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/invoice_create_request_gateway_enum.py +0 -20
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/invoice_gateway_enum.py +0 -22
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/invoices_list_payment_gateway.py +0 -22
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/session_delete_response.py +0 -59
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/session_list_response.py +0 -68
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/sessions_destroy_response_400.py +0 -99
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/sessions_destroy_response_401.py +0 -99
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/sessions_destroy_response_403.py +0 -99
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/sessions_destroy_response_404.py +0 -99
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/sessions_list_response_400.py +0 -99
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/sessions_list_response_401.py +0 -99
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/sessions_list_response_403.py +0 -99
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/telegram_link_consume_request.py +0 -91
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/telegram_session_request.py +0 -66
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/telegram_session_response.py +0 -96
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/models/telegram_session_response_user.py +0 -48
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/resources/api_keys.py +0 -94
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/resources/authorization.py +0 -143
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/resources/coupons.py +0 -277
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/resources/invoices.py +0 -202
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/resources/orders.py +0 -183
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/resources/profile.py +0 -208
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/resources/sessions.py +0 -58
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/resources/telegram_service.py +0 -100
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/resources/users.py +0 -331
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/resources/webhooks.py +0 -114
- proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/webhooks.py +0 -95
- proxyrequest_sdk-1.0.0/tests/test_webhooks.py +0 -48
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/.gitignore +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/CONTRIBUTING.md +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/LICENSE +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/Makefile +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/SECURITY.md +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/docs/guides/reseller-provisioning.md +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/docs/publishing.md +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/openapi/generator.yaml +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/scripts/check_generated.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/scripts/verify_release.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/affiliates/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/analytics/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/api_keys/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/authorization/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/coupons/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/invoices/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/locations/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/news/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/orders/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/packages/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/profile/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/proxies/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/api/rewards/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/api/sessions → proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/api/settings}/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/api/settings → proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/api/telegram_dashboard}/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/api/telegram_dashboard → proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/api/users}/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0/src/proxyrequest_sdk/_generated/api/telegram_dashboard_service → proxyrequest_sdk-2.0.0/src/proxyrequest_sdk/_generated/api/webhooks}/__init__.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/client.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/errors.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/add_data_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliate.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliate_reward.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliate_stats_point.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliate_stats_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliates_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliates_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliates_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliates_rewards_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliates_rewards_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliates_rewards_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliates_rewards_overall_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliates_rewards_overall_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/affiliates_rewards_overall_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_connections_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_connections_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_connections_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_connections_retrieve_response_500.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_domains_retrieve_ordering.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_domains_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_domains_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_domains_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_domains_retrieve_response_500.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_feed_retrieve_protocol.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_feed_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_feed_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_feed_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_feed_retrieve_response_500.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_logs_retrieve_protocol.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_logs_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_logs_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_logs_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_logs_retrieve_response_500.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_overall_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_overall_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_overall_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_overall_retrieve_response_500.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_transactions_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_transactions_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_transactions_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_transactions_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/analytics_transactions_retrieve_response_500.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_key_create.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_key_create_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_key_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_keys_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_keys_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_keys_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_keys_destroy_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_keys_destroy_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_keys_destroy_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_keys_destroy_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_keys_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_keys_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/api_keys_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/change_password_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/city.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/commission_type_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/connection_record.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/connections_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/continent.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/country.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupon.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupon_calculate_price_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupon_create_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupon_price_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupon_redeem.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupon_short.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupon_short_packages_item.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupon_stats_type_0.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupon_type_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupon_update_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_calculate_price_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_calculate_price_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_calculate_price_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_destroy_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_destroy_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_destroy_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_destroy_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_list_type.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_partial_update_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_partial_update_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_partial_update_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_partial_update_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_redeems_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_redeems_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_redeems_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_redeems_list_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_redeems_list_type.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_update_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_update_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_update_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/coupons_update_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/domain_record.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/domains_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/enabled_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/feed_record.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/feed_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/generate_proxy_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/generate_proxy_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/generated_proxy.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/google_auth_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_connection_destroy_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_connection_destroy_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_connection_destroy_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_connection_partial_update_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_connection_partial_update_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_connection_partial_update_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_connection_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_connection_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_connection_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_link_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_link_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/integrations_telegram_link_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoice_status_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoice_type_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_destroy_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_destroy_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_destroy_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_destroy_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_download_pdf_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_download_pdf_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_download_pdf_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_download_pdf_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_list_status.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_list_type.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_pay_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_pay_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_pay_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_pay_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/invoices_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/isp.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/language_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/level_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/location_asn_geo_item.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/location_asn_record.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/location_code_name.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/location_country_summary.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/location_region_summary.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_asn_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_asn_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_asn_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_cities_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_cities_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_cities_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_cities_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_cities_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_cities_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_cities_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_continents_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_continents_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_continents_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_continents_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_continents_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_continents_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_continents_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_countries_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_countries_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_countries_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_countries_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_countries_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_countries_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_countries_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_isps_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_isps_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_isps_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_regions_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_regions_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_regions_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_regions_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_regions_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_regions_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/locations_regions_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/log_record.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/login_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/login_google_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/login_google_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/login_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/logs_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/message_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/news.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/news_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/news_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/news_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/order.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/order_detailed.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/order_detailed_ledgers_item.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/order_ledgers_item.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/order_package.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_destroy_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_destroy_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_destroy_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_destroy_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_list_package_type.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_partial_update_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_partial_update_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_partial_update_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_partial_update_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/orders_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/overall_point.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/overall_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/package.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/package_billing_model.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/package_commission.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/package_short.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/packages_commissions_list_pricing_unit.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/packages_commissions_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/packages_commissions_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/packages_commissions_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/packages_commissions_list_type.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/packages_list_pricing_unit.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/packages_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/packages_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/packages_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/packages_list_type.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_affiliate_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_affiliate_reward_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_api_key_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_city_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_continent_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_country_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_coupon_redeem_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_coupon_short_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_isp_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_location_asn_record_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_news_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_order_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_package_commission_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_package_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_region_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_reward_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_user_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/paginated_webhook_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/password_recovery_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/patched_coupon_update_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/patched_order_auto_renewal_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/patched_profile_update_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/patched_telegram_connection_update_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/patched_user_update_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/patched_user_update_request_meta.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/payment_link_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/pricing_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/pricing_unit_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_confirm_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_confirm_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_confirm_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_disable_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_disable_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_disable_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_setup_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_setup_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_setup_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_status_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_status_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_2_fa_status_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_change_password_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_change_password_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_change_password_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_destroy_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_destroy_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_destroy_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_partial_update_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_partial_update_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_partial_update_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/profile_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/protocol_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/proxies_generate_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/proxies_generate_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/proxies_generate_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/proxies_generate_create_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/proxy_generation_connection_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/proxy_generation_session_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/proxy_generation_targeting_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/proxy_password_reset_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/proxy_type_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/recover_password_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/recover_password_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/refresh_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/refresh_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/region.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/reset_password_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/reset_password_create_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/reset_password_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/reward.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/reward_claim_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/reward_status_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/rewards_claim_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/rewards_claim_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/rewards_claim_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/rewards_list_level.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/rewards_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/rewards_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/rewards_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/settings_crypto.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/settings_gateway.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/settings_referral.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/settings_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/settings_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/settings_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/settings_retrieve_response_500.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/sign_up_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/signup_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/signup_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/subtract_data_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/targeting_options.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/telegram_connection_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/telegram_link_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/token_pair_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/token_refresh_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/token_refresh_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/transaction_record.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/transactions_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/two_factor_confirm_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/two_factor_setup_response.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/user_coupons_item.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/user_create_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/user_create_request_meta.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/user_currency.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/user_password_reset_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_data_add_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_data_add_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_data_add_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_data_add_create_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_data_subtract_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_data_subtract_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_data_subtract_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_data_subtract_create_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_destroy_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_destroy_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_destroy_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_destroy_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_orders_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_orders_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_orders_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_orders_list_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_partial_update_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_partial_update_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_partial_update_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_partial_update_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_password_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_password_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_password_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_password_create_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/users_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhook_create_request.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhook_created.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhook_list.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhook_scope_enum.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_create_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_create_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_create_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_destroy_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_destroy_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_destroy_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_destroy_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_list_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_list_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_list_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_retrieve_response_400.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_retrieve_response_401.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_retrieve_response_403.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/models/webhooks_retrieve_response_404.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/_generated/types.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/files.py +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/src/proxyrequest_sdk/py.typed +0 -0
- {proxyrequest_sdk-1.0.0 → proxyrequest_sdk-2.0.0}/tests/test_downloads.py +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to the ProxyRequest Python SDK are documented here.
|
|
4
|
+
|
|
5
|
+
## Unreleased
|
|
6
|
+
|
|
7
|
+
## 2.0.0 - 2026-09-16
|
|
8
|
+
|
|
9
|
+
- Replace the incorrect webhook verifier with the actual `X-Signature`
|
|
10
|
+
Base64 HMAC-SHA256 format over exact raw bytes.
|
|
11
|
+
|
|
12
|
+
- Regenerated from the public backend contract (81 operations, 130 schemas),
|
|
13
|
+
excluding the two disabled sessions-management operations from generated clients.
|
|
14
|
+
- Added the optional `pending`/`paid` status to invoice creation requests.
|
|
15
|
+
- Added typed OTP verification and 200/202 login support for sync and async clients.
|
|
16
|
+
- Corrected MFA bodies, payment fields, nullable invoices, and both backend user modes.
|
|
17
|
+
- Preserved HTTP status, raw response, headers, cause, and idempotency key when
|
|
18
|
+
response decoding fails; HTTP errors are classified before model decoding.
|
|
19
|
+
- Replaced fixed contract-size gates and added backend-serializer regression fixtures.
|
|
20
|
+
|
|
21
|
+
- Added automatic and explicit idempotency keys with bounded ambiguous-outcome
|
|
22
|
+
retries.
|
|
23
|
+
- Added response metadata variants and explicit ETag/`If-Match` optimistic
|
|
24
|
+
concurrency support.
|
|
25
|
+
|
|
26
|
+
## 1.0.0 - 2026-08-21
|
|
27
|
+
|
|
28
|
+
- Initial stable release covering all 82 public API operations.
|
|
29
|
+
- Added synchronous and asynchronous clients with typed attrs models.
|
|
30
|
+
- Added normalized errors, lazy pagination, invoice downloads, raw requests,
|
|
31
|
+
and signed webhook verification.
|
|
32
|
+
- Added purchase and reseller provisioning guides.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: proxyrequest-sdk
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.0
|
|
4
4
|
Summary: Official sync and async Python SDK for the ProxyRequest public API.
|
|
5
5
|
Project-URL: Homepage, https://proxyrequest.com
|
|
6
6
|
Project-URL: Documentation, https://proxyrequest.com/docs/
|
|
@@ -31,11 +31,11 @@ Description-Content-Type: text/markdown
|
|
|
31
31
|
# ProxyRequest Python SDK
|
|
32
32
|
|
|
33
33
|
[](https://github.com/proxyrequest/python-sdk/actions/workflows/ci.yml)
|
|
34
|
-
[](https://pypi.org/project/proxyrequest-sdk/)
|
|
35
|
-
[](https://pypi.org/project/proxyrequest-sdk/)
|
|
34
|
+
[](https://pypi.org/project/proxyrequest-sdk/)
|
|
35
|
+
[](https://pypi.org/project/proxyrequest-sdk/)
|
|
36
36
|
|
|
37
37
|
Official synchronous and asynchronous Python client for the
|
|
38
|
-
[ProxyRequest](https://proxyrequest.com/) public API. It covers
|
|
38
|
+
[ProxyRequest](https://proxyrequest.com/) public API. It covers 79 supported operations
|
|
39
39
|
in the current contract: users, orders, proxy generation, analytics, invoices,
|
|
40
40
|
packages, locations, webhooks, API keys, Telegram integration, and more.
|
|
41
41
|
|
|
@@ -150,7 +150,12 @@ async def list_users() -> None:
|
|
|
150
150
|
|
|
151
151
|
## Resource API
|
|
152
152
|
|
|
153
|
-
`Client` and `AsyncClient` expose
|
|
153
|
+
`Client` and `AsyncClient` expose 17 API groups. The pinned public schema contains
|
|
154
|
+
81 operations; disabled `sessions_list` and `sessions_destroy` operations are
|
|
155
|
+
intentionally excluded. Sticky session options in proxy generation remain supported.
|
|
156
|
+
|
|
157
|
+
See [backend compatibility and MFA](docs/backend-compatibility.md) for updated
|
|
158
|
+
login examples and response-model migration notes.
|
|
154
159
|
|
|
155
160
|
```python
|
|
156
161
|
client.authorization
|
|
@@ -168,8 +173,6 @@ client.locations
|
|
|
168
173
|
client.api_keys
|
|
169
174
|
client.webhooks
|
|
170
175
|
client.telegram
|
|
171
|
-
client.telegram_service
|
|
172
|
-
client.sessions
|
|
173
176
|
client.settings
|
|
174
177
|
client.news
|
|
175
178
|
```
|
|
@@ -182,6 +185,31 @@ opaque `str`), and all byte amounts are Python integers.
|
|
|
182
185
|
See the generated [API resource reference](https://github.com/proxyrequest/python-sdk/blob/main/docs/reference/api.md)
|
|
183
186
|
and [model reference](https://github.com/proxyrequest/python-sdk/blob/main/docs/reference/models.md).
|
|
184
187
|
|
|
188
|
+
## Automatic retries and optimistic concurrency
|
|
189
|
+
|
|
190
|
+
The SDK automatically protects supported writes during up to three total
|
|
191
|
+
attempts after a network failure, or after `409 Conflict` with a numeric
|
|
192
|
+
`Retry-After` of at most five seconds. Other HTTP errors are returned
|
|
193
|
+
immediately. This protection applies inside one running call. If the process
|
|
194
|
+
stops before saving the result, inspect the affected resource before submitting
|
|
195
|
+
another write:
|
|
196
|
+
|
|
197
|
+
```python
|
|
198
|
+
response = client.users.create_with_response(
|
|
199
|
+
body=UserCreateRequest(username="customer-reference", password="secret"),
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
print(response.data.id, response.etag)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Every generated method has a `_with_response` variant exposing `status_code`,
|
|
206
|
+
`headers`, and `etag`.
|
|
207
|
+
|
|
208
|
+
Operations that declare `If-Match` accept the latest strong ETag. A stale value
|
|
209
|
+
raises `ApiError` with `ErrorKind.PRECONDITION` and exposes the current server
|
|
210
|
+
value as `current_etag`. ETags are explicit response metadata and are not cached
|
|
211
|
+
by the SDK.
|
|
212
|
+
|
|
185
213
|
## Pagination
|
|
186
214
|
|
|
187
215
|
List endpoints return their typed OpenAPI page. Use `paginate()` to follow all
|
|
@@ -218,9 +246,9 @@ except ApiError as error:
|
|
|
218
246
|
print(error.status_code, error.request_id, error.field_errors)
|
|
219
247
|
```
|
|
220
248
|
|
|
221
|
-
|
|
222
|
-
`client.authorization.refresh(...)`
|
|
223
|
-
token pair.
|
|
249
|
+
Supported writes receive bounded automatic retries for transient failures.
|
|
250
|
+
JWTs are never refreshed automatically; call `client.authorization.refresh(...)`
|
|
251
|
+
explicitly when your application owns a token pair.
|
|
224
252
|
|
|
225
253
|
## Configuration and custom deployments
|
|
226
254
|
|
|
@@ -252,21 +280,6 @@ print(path, download.content_type)
|
|
|
252
280
|
|
|
253
281
|
`save()` does not overwrite an existing file unless `overwrite=True` is passed.
|
|
254
282
|
|
|
255
|
-
## Telegram service operations
|
|
256
|
-
|
|
257
|
-
Account-side Telegram operations use the client's API key. Bot service
|
|
258
|
-
operations require the service secret explicitly and never reuse the ordinary
|
|
259
|
-
Authorization header:
|
|
260
|
-
|
|
261
|
-
```python
|
|
262
|
-
from proxyrequest_sdk.models import TelegramSessionRequest
|
|
263
|
-
|
|
264
|
-
session = client.telegram_service.create_session(
|
|
265
|
-
body=TelegramSessionRequest(telegram_user_id=123456789, chat_id=123456789),
|
|
266
|
-
service_secret=os.environ["PROXYREQUEST_TELEGRAM_SECRET"],
|
|
267
|
-
)
|
|
268
|
-
```
|
|
269
|
-
|
|
270
283
|
## Webhook verification
|
|
271
284
|
|
|
272
285
|
Verify the exact raw body before decoding it:
|
|
@@ -276,12 +289,13 @@ from proxyrequest_sdk import WebhookVerifier
|
|
|
276
289
|
|
|
277
290
|
payload = WebhookVerifier.decode_verified_json(
|
|
278
291
|
raw_body,
|
|
279
|
-
request.headers.get("X-
|
|
292
|
+
request.headers.get("X-Signature", ""),
|
|
280
293
|
os.environ["PROXYREQUEST_WEBHOOK_SECRET"],
|
|
281
|
-
timestamp_header=request.headers.get("X-Webhook-Timestamp"),
|
|
282
294
|
)
|
|
283
295
|
```
|
|
284
296
|
|
|
297
|
+
Deliveries use standard padded Base64 HMAC-SHA256 over the raw body, without a signed timestamp. Verification accepts only this current format. It authenticates the body, but does not prevent replay: deduplicate usage events in your application. These helpers require SDK 2.0.0 or newer; version 1.0.0 does not support the current delivery format.
|
|
298
|
+
|
|
285
299
|
## Platform documentation
|
|
286
300
|
|
|
287
301
|
- [Platform documentation](https://proxyrequest.com/docs/): capabilities,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# ProxyRequest Python SDK
|
|
2
2
|
|
|
3
3
|
[](https://github.com/proxyrequest/python-sdk/actions/workflows/ci.yml)
|
|
4
|
-
[](https://pypi.org/project/proxyrequest-sdk/)
|
|
5
|
-
[](https://pypi.org/project/proxyrequest-sdk/)
|
|
4
|
+
[](https://pypi.org/project/proxyrequest-sdk/)
|
|
5
|
+
[](https://pypi.org/project/proxyrequest-sdk/)
|
|
6
6
|
|
|
7
7
|
Official synchronous and asynchronous Python client for the
|
|
8
|
-
[ProxyRequest](https://proxyrequest.com/) public API. It covers
|
|
8
|
+
[ProxyRequest](https://proxyrequest.com/) public API. It covers 79 supported operations
|
|
9
9
|
in the current contract: users, orders, proxy generation, analytics, invoices,
|
|
10
10
|
packages, locations, webhooks, API keys, Telegram integration, and more.
|
|
11
11
|
|
|
@@ -120,7 +120,12 @@ async def list_users() -> None:
|
|
|
120
120
|
|
|
121
121
|
## Resource API
|
|
122
122
|
|
|
123
|
-
`Client` and `AsyncClient` expose
|
|
123
|
+
`Client` and `AsyncClient` expose 17 API groups. The pinned public schema contains
|
|
124
|
+
81 operations; disabled `sessions_list` and `sessions_destroy` operations are
|
|
125
|
+
intentionally excluded. Sticky session options in proxy generation remain supported.
|
|
126
|
+
|
|
127
|
+
See [backend compatibility and MFA](docs/backend-compatibility.md) for updated
|
|
128
|
+
login examples and response-model migration notes.
|
|
124
129
|
|
|
125
130
|
```python
|
|
126
131
|
client.authorization
|
|
@@ -138,8 +143,6 @@ client.locations
|
|
|
138
143
|
client.api_keys
|
|
139
144
|
client.webhooks
|
|
140
145
|
client.telegram
|
|
141
|
-
client.telegram_service
|
|
142
|
-
client.sessions
|
|
143
146
|
client.settings
|
|
144
147
|
client.news
|
|
145
148
|
```
|
|
@@ -152,6 +155,31 @@ opaque `str`), and all byte amounts are Python integers.
|
|
|
152
155
|
See the generated [API resource reference](https://github.com/proxyrequest/python-sdk/blob/main/docs/reference/api.md)
|
|
153
156
|
and [model reference](https://github.com/proxyrequest/python-sdk/blob/main/docs/reference/models.md).
|
|
154
157
|
|
|
158
|
+
## Automatic retries and optimistic concurrency
|
|
159
|
+
|
|
160
|
+
The SDK automatically protects supported writes during up to three total
|
|
161
|
+
attempts after a network failure, or after `409 Conflict` with a numeric
|
|
162
|
+
`Retry-After` of at most five seconds. Other HTTP errors are returned
|
|
163
|
+
immediately. This protection applies inside one running call. If the process
|
|
164
|
+
stops before saving the result, inspect the affected resource before submitting
|
|
165
|
+
another write:
|
|
166
|
+
|
|
167
|
+
```python
|
|
168
|
+
response = client.users.create_with_response(
|
|
169
|
+
body=UserCreateRequest(username="customer-reference", password="secret"),
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
print(response.data.id, response.etag)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Every generated method has a `_with_response` variant exposing `status_code`,
|
|
176
|
+
`headers`, and `etag`.
|
|
177
|
+
|
|
178
|
+
Operations that declare `If-Match` accept the latest strong ETag. A stale value
|
|
179
|
+
raises `ApiError` with `ErrorKind.PRECONDITION` and exposes the current server
|
|
180
|
+
value as `current_etag`. ETags are explicit response metadata and are not cached
|
|
181
|
+
by the SDK.
|
|
182
|
+
|
|
155
183
|
## Pagination
|
|
156
184
|
|
|
157
185
|
List endpoints return their typed OpenAPI page. Use `paginate()` to follow all
|
|
@@ -188,9 +216,9 @@ except ApiError as error:
|
|
|
188
216
|
print(error.status_code, error.request_id, error.field_errors)
|
|
189
217
|
```
|
|
190
218
|
|
|
191
|
-
|
|
192
|
-
`client.authorization.refresh(...)`
|
|
193
|
-
token pair.
|
|
219
|
+
Supported writes receive bounded automatic retries for transient failures.
|
|
220
|
+
JWTs are never refreshed automatically; call `client.authorization.refresh(...)`
|
|
221
|
+
explicitly when your application owns a token pair.
|
|
194
222
|
|
|
195
223
|
## Configuration and custom deployments
|
|
196
224
|
|
|
@@ -222,21 +250,6 @@ print(path, download.content_type)
|
|
|
222
250
|
|
|
223
251
|
`save()` does not overwrite an existing file unless `overwrite=True` is passed.
|
|
224
252
|
|
|
225
|
-
## Telegram service operations
|
|
226
|
-
|
|
227
|
-
Account-side Telegram operations use the client's API key. Bot service
|
|
228
|
-
operations require the service secret explicitly and never reuse the ordinary
|
|
229
|
-
Authorization header:
|
|
230
|
-
|
|
231
|
-
```python
|
|
232
|
-
from proxyrequest_sdk.models import TelegramSessionRequest
|
|
233
|
-
|
|
234
|
-
session = client.telegram_service.create_session(
|
|
235
|
-
body=TelegramSessionRequest(telegram_user_id=123456789, chat_id=123456789),
|
|
236
|
-
service_secret=os.environ["PROXYREQUEST_TELEGRAM_SECRET"],
|
|
237
|
-
)
|
|
238
|
-
```
|
|
239
|
-
|
|
240
253
|
## Webhook verification
|
|
241
254
|
|
|
242
255
|
Verify the exact raw body before decoding it:
|
|
@@ -246,12 +259,13 @@ from proxyrequest_sdk import WebhookVerifier
|
|
|
246
259
|
|
|
247
260
|
payload = WebhookVerifier.decode_verified_json(
|
|
248
261
|
raw_body,
|
|
249
|
-
request.headers.get("X-
|
|
262
|
+
request.headers.get("X-Signature", ""),
|
|
250
263
|
os.environ["PROXYREQUEST_WEBHOOK_SECRET"],
|
|
251
|
-
timestamp_header=request.headers.get("X-Webhook-Timestamp"),
|
|
252
264
|
)
|
|
253
265
|
```
|
|
254
266
|
|
|
267
|
+
Deliveries use standard padded Base64 HMAC-SHA256 over the raw body, without a signed timestamp. Verification accepts only this current format. It authenticates the body, but does not prevent replay: deduplicate usage events in your application. These helpers require SDK 2.0.0 or newer; version 1.0.0 does not support the current delivery format.
|
|
268
|
+
|
|
255
269
|
## Platform documentation
|
|
256
270
|
|
|
257
271
|
- [Platform documentation](https://proxyrequest.com/docs/): capabilities,
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
# Аудит Python SDK
|
|
2
|
+
|
|
3
|
+
## Статус исправлений — 2026-09-07
|
|
4
|
+
|
|
5
|
+
Все перечисленные ниже SDK-находки исправлены. Каноническая публичная схема
|
|
6
|
+
перегенерирована: **81 операция, 129 схем**. Все три SDK используют побайтово
|
|
7
|
+
одинаковую копию; SHA-256 и коммит источника закреплены в `openapi/source.json`.
|
|
8
|
+
Сгенерировано **79 поддерживаемых операций / 17 ресурсов**: две отключённые
|
|
9
|
+
sessions-management операции исключены по согласованному решению, без удаления
|
|
10
|
+
sticky-параметров генерации прокси и без изменения маршрутов бэкенда.
|
|
11
|
+
|
|
12
|
+
| Находка | Исправление |
|
|
13
|
+
| --- | --- |
|
|
14
|
+
| PY-01 | Добавлены verify_otp и union TokenPairResponse и OTPChallenge для sync/async login. |
|
|
15
|
+
| PY-02 | Invoice корректно разбирает null в package/coupon/country для create/get/list. |
|
|
16
|
+
| PY-03 | Поддержаны оба режима User и обе формы Invoice/InvoiceShort. |
|
|
17
|
+
| PY-04 | Добавлены тела MFA setup/disable с первичным фактором. |
|
|
18
|
+
| PY-05 | Платёжные поля актуализированы; расширяемые enum сохранены. |
|
|
19
|
+
| PY-06 | HTTP-ошибки классифицируются до декодирования; ошибки успешного ответа сохраняют status/body/headers/cause/idempotency key. |
|
|
20
|
+
| PY-07 | Удалены фиксированные ограничения размера контракта; покрытие и manifest проверяются динамически. |
|
|
21
|
+
| BE-01 | Исправлены pk-сигнатуры invoice PDF/pay-link и coupon redeems; добавлены router-регрессии. |
|
|
22
|
+
| BE-02 | Удалены публичный sessions-ресурс, его методы и отдельные сгенерированные модели/документы из SDK. |
|
|
23
|
+
|
|
24
|
+
Проверки SDK: `make quality generate-check` (44 теста, Ruff, mypy, воспроизводимая генерация), сборка wheel/sdist и `twine check`.
|
|
25
|
+
Фикстуры форм User/Invoice получены из реальных сериализаторов бэкенда на
|
|
26
|
+
синтетических объектах; серверный тест проверяет их соответствие текущему коду.
|
|
27
|
+
Тесты SDK проверяют MFA, платежи, вариативные ответы и регрессионные сценарии.
|
|
28
|
+
Это локальная проверка, не подтверждение развёртывания в production.
|
|
29
|
+
|
|
30
|
+
Версии пакетов не изменялись; релизы, теги и публикации пакетов не создавались.
|
|
31
|
+
Примеры миграции и MFA: `docs/backend-compatibility.md` внутри репозитория SDK.
|
|
32
|
+
|
|
33
|
+
## Исходный аудит (до исправлений)
|
|
34
|
+
|
|
35
|
+
Ссылки на SDK закреплены на исходном коммите. Пути и номера строк бэкенда
|
|
36
|
+
сохранены как исторические ориентиры: его исходное рабочее состояние содержало
|
|
37
|
+
незакоммиченные изменения.
|
|
38
|
+
|
|
39
|
+
Далее сохранён исторический отчёт. Его выводы, счётчики, матрица и номера строк
|
|
40
|
+
относятся к исходному состоянию и не являются описанием обновлённой SDK.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
SDK: `proxyrequest-sdk` 1.0.0, каталог `python-sdk`, HEAD `3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7`.
|
|
44
|
+
|
|
45
|
+
**Вывод:** синхронные и асинхронные обёртки покрывают старый контракт, но реальные ответы MFA и nullable/вариативные модели вызывают ошибки декодирования. Наиболее опасный сценарий — операция на сервере завершилась, а SDK не смогла разобрать ответ и не сохранила необходимые данные для восстановления.
|
|
46
|
+
|
|
47
|
+
## Границы и методика
|
|
48
|
+
|
|
49
|
+
Аудит выполнен 2026-09-07 по рабочим файлам. Бэкенд: `/home/yuri/Projects/papaproxy/api`, HEAD `f10464717b19f98916b45cc25e7405610865957d`, с существующими незакоммиченными изменениями. Выводы относятся к этому рабочему состоянию, а не только к коммиту и не к проверенному production-развёртыванию.
|
|
50
|
+
|
|
51
|
+
Проверены публичная OpenAPI-схема (`api/openapi.yml`), состав публичного schema URLConf (`api/apps/routing/infrastructure/django/schema.py:35`), router, существенные serializers/viewsets, сгенерированные операции, клиентский транспорт, пагинация, ошибки, подписи webhook и процесс синхронизации схемы. Внутренние/admin API и входящие callback-маршруты платёжных провайдеров не считаются обязательными методами клиентской SDK.
|
|
52
|
+
|
|
53
|
+
Сохранённый публичный контракт содержит **81 операцию и 127 схем**. Независимая генерация публичной схемы в тестовом окружении также дала 81 операцию и 127 схем. Отдельно проверены оба значения `SITE_PACKAGE_BASED_AUTH`: формы ответов действительно зависят от настройки. Различия числовых ограничений при генерации под SQLite не объявлялись дефектами production-контракта.
|
|
54
|
+
|
|
55
|
+
Во всех SDK сохранена одна и та же старая схема: **80 операций и 124 схемы**. Сопоставление HTTP-методов, шаблонов путей и публичных обёрток не выявило пропущенных операций из этой старой схемы. Единственная отсутствующая операция относительно текущего публичного списка — `POST /login/otp`. Это номинальное покрытие методов, а не оценка фактической совместимости.
|
|
56
|
+
|
|
57
|
+
SHA-256 схем:
|
|
58
|
+
|
|
59
|
+
- текущая API: `423fc57ebe9406a9a1a80ee7acfd8e0827f6196b317af90b0c24f64172e16b03`;
|
|
60
|
+
- сохранённая SDK: `0ed69e781aa752ac8e9c9b1974cd82810adbf1fd99a461724bd73432740d8737`.
|
|
61
|
+
|
|
62
|
+
Поиск выполнен через knowledge graph с проверкой покрытия и чтением исходников. Частично разобранные TypeScript re-export строки проверены непосредственно. Проигрывались синтетические ответы и локальные вызовы serializers/router; обращений к рабочему API, создания пользователей/счетов и изменений реализаций SDK/бэкенда не выполнялось.
|
|
63
|
+
|
|
64
|
+
Приоритеты: **P1** — блокирует основной сценарий при указанных условиях; **P2** — ограничивает часть API, искажает данные или ухудшает диагностику/сопровождение. Порядок внутри приоритета отражает рекомендуемую последовательность исправлений.
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## Находки в SDK
|
|
68
|
+
|
|
69
|
+
### PY-01 · P1 · HTTP 202 при входе превращается в ошибку и теряет OTP challenge
|
|
70
|
+
|
|
71
|
+
Парсеры `login_create` и `login_google_create` не имеют ветки 202. При `otp_required` они возвращают `parsed=None`; затем `_response_value()` отклоняет непустой успешный ответ. Обёртка объявляет исключительно `TokenPairResponse`. Метода `POST /login/otp` нет.
|
|
72
|
+
|
|
73
|
+
Воспроизведено для `Client` и `AsyncClient`:
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
ApiError: ProxyRequest returned an unreadable HTTP 202 response.
|
|
77
|
+
status_code=None
|
|
78
|
+
raw_body=b''
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Challenge недоступен даже из ошибки: она создаётся без HTTP-метаданных. Таким образом, штатный вход аккаунта с включённой MFA остановится после проверки пароля/Google credential.
|
|
82
|
+
|
|
83
|
+
Источники: [login parser](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/_generated/api/authorization/login_create.py#L40), [Google parser](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/_generated/api/authorization/login_google_create.py#L41), [обработка parsed=None](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/client.py#L84), [AuthorizationResource](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/resources/authorization.py#L29), серверный OTP endpoint (`api/apps/core/authentication/api.py:57`).
|
|
84
|
+
|
|
85
|
+
Исправление: добавить `OTPChallenge`, `VerifyOTPRequest`, sync/async метод завершения входа и результат `TokenPairResponse | OTPChallenge`. Для неизвестного успешного статуса сохранять исходный ответ, даже если типизированная модель ещё отсутствует.
|
|
86
|
+
|
|
87
|
+
### PY-02 · P1 · Допустимые null в счёте ломают create/get/list invoices
|
|
88
|
+
|
|
89
|
+
`Invoice.from_dict()` без проверки вызывает:
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
package = PackageShort.from_dict(d.pop("package"))
|
|
93
|
+
country = Country.from_dict(d.pop("country"))
|
|
94
|
+
coupon = CouponShort.from_dict(d.pop("coupon"))
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
На сервере все три связи nullable. `InvoiceSerializer` на несохранённом объекте обычного пополнения баланса реально вернул `package=null, country=null, coupon=null`. Отсутствие купона также является нормальным случаем покупки пакета.
|
|
98
|
+
|
|
99
|
+
Локальные проверки с валидной базовой моделью и поочерёдным `null` для каждой связи воспроизвели:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
ApiError: Unable to decode the ProxyRequest API response.
|
|
103
|
+
cause: TypeError("'NoneType' object is not iterable")
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Затронуты создание, получение и весь список счетов, если хотя бы один элемент содержит такой `null`. В async используется тот же generated parser.
|
|
107
|
+
|
|
108
|
+
Особенно существенно для `invoices.create()`: сервер может уже создать счёт, но ошибка парсинга попадает в общий `except Exception`, который не прикрепляет ни тело ответа, ни автоматически созданный idempotency key. Повторный вызов без сохранённого явного ключа затрудняет безопасное восстановление и может повторить создание.
|
|
109
|
+
|
|
110
|
+
Источники: [Invoice.from_dict](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/_generated/models/invoice.py#L222), [обёртки invoice](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/resources/invoices.py#L32), [общая ветка ошибки](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/client.py#L240), InvoiceSerializer (`api/apps/billing/api/serializers.py:28`), серверная схема Invoice (`api/openapi.yml:16871`).
|
|
111
|
+
|
|
112
|
+
Исправление: обозначить nullable-связи в серверной схеме, регенерировать модели как `... | None`, сохранить HTTP-контекст и idempotency key при ошибках декодирования. Нужны тесты без купона, без страны, на balance invoice и на список со смешанными вариантами.
|
|
113
|
+
|
|
114
|
+
### PY-03 · P1 · Ни одна фиксированная пара User/Invoice не покрывает оба режима backend
|
|
115
|
+
|
|
116
|
+
| Настройка | Реальное поведение | Ошибка текущей SDK |
|
|
117
|
+
| --- | --- | --- |
|
|
118
|
+
| `SITE_PACKAGE_BASED_AUTH=True` | User содержит `orders`, не содержит пяти плоских полей данных/пароля | `User.from_dict()` требует `data` и остальные поля; `KeyError('data')` |
|
|
119
|
+
| `SITE_PACKAGE_BASED_AUTH=False` | чтение счетов использует `InvoiceShortSerializer`, без `package`, `user_id`, `type`, `payment_url` | `Invoice.from_dict()` требует полный счёт; `KeyError('package')` |
|
|
120
|
+
|
|
121
|
+
Проверены фактический набор полей `UserSerializer()` и `InvoicesViewSet.get_serializer_class()` под обоими флагами. Затем синтетические ответы этих форм пропущены через публичные методы SDK: обе ошибки воспроизведены. Контрольный User с плоскими полями успешно разобран.
|
|
122
|
+
|
|
123
|
+
При True затронуты `profile.get/update`, `users.get/list/create/update/reset_password` и другие ответы типа User. При False затронуты `invoices.get/list`. Создание invoice отдельно возвращает полный `InvoiceSerializer`, поэтому не следует переносить ошибку короткой формы на все действия без различия; для create действует PY-02.
|
|
124
|
+
|
|
125
|
+
Источники: динамические поля User (`api/apps/core/api/serializers/users.py:269`), выбор serializer счёта (`api/apps/billing/api/viewsets.py:121`), InvoiceShortSerializer (`api/apps/billing/api/serializers.py:101`), [обязательное чтение data](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/_generated/models/user.py#L320), [обязательное чтение package](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/_generated/models/invoice.py#L228).
|
|
126
|
+
|
|
127
|
+
Исправление: определить стабильный общий контракт либо явные варианты моделей для двух режимов; учитывать отсутствие поля отдельно от `null`. Простая синхронизация сохранённой серверной схемы недостаточна: в ней уже есть неотражённая конфигурационная вариативность.
|
|
128
|
+
|
|
129
|
+
### PY-04 · P1 · setup_two_factor не принимает body, disable-модель не описывает первичный фактор
|
|
130
|
+
|
|
131
|
+
`profile.setup_two_factor()` принимает только `accept_language` и посылает пустой POST. Сервер требует пароль либо Google credential, а при замене уже включённой MFA — также текущий код. Модель отключения описывает только `code`, поэтому обычный вызов из старого контракта не может отключить активную MFA.
|
|
132
|
+
|
|
133
|
+
Источники: [setup_two_factor](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/resources/profile.py#L168), [TwoFactorDisableRequest](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/_generated/models/two_factor_disable_request.py#L18), TwoFactorViewSet (`api/apps/core/api/viewsets.py:1522`), проверка первичного фактора (`api/apps/core/authentication/service.py:192`).
|
|
134
|
+
|
|
135
|
+
Для disable есть работающий низкоуровневый обход через `additional_properties`:
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
body = TwoFactorDisableRequest(code="492031")
|
|
139
|
+
body["password"] = "current-password"
|
|
140
|
+
client.profile.disable_two_factor(body=body)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Для setup нужен `client.request("POST", "/profile/2fa/setup", json={...})`, поскольку фасад вовсе не принимает body. Исправление: добавить типизированные поля/модель setup и обновить обе sync/async обёртки. Подтверждение по коду остаётся доступным; после изменений MFA следует учитывать отзыв прежних JWT.
|
|
144
|
+
|
|
145
|
+
### PY-05 · P2 · Платёжные модели устарели, но новые enum-значения уже поддерживаются
|
|
146
|
+
|
|
147
|
+
Не хватает именованных вариантов gateway, поля `payment_currency` в конструкторе invoice request, полей `currency`, `payment_amount`, `payment_currency`, `provider_checkout_id`, `provider_payment_id`, `checkout_status`, `fx_*` в invoice response и `payment_gateways` в settings. Остались устаревшие `coinbase_charge_id` и `coingate_order_token`.
|
|
148
|
+
|
|
149
|
+
Однако `_missing_()` в generated enums специально принимает неизвестные строки. Утверждать, что Python отвергает `whitepay`, было бы неправильно. Воспроизведены успешные разбор нового gateway и сохранение новых response-полей в `additional_properties`, если остальные обязательные поля ответа корректны.
|
|
150
|
+
|
|
151
|
+
Рабочий обход запроса:
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
body = InvoiceCreateRequest(
|
|
155
|
+
gateway=InvoiceCreateRequestGatewayEnum("whitepay"),
|
|
156
|
+
amount=500,
|
|
157
|
+
)
|
|
158
|
+
body["payment_currency"] = "UAH"
|
|
159
|
+
# to_dict(): {"payment_currency":"UAH","gateway":"whitepay","amount":500}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Источники: [InvoiceCreateRequest](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/_generated/models/invoice_create_request.py#L21), [расширяемый enum](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/_generated/models/invoice_create_request_gateway_enum.py#L4), [генератор enum](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/scripts/generate.py#L179), серверный запрос (`api/apps/billing/api/serializers.py:126`), новые платёжные метаданные (`api/openapi.yml:18607`).
|
|
163
|
+
|
|
164
|
+
Исправление: обновить модели/документацию, сохранив forward-compatible enum и additional properties. Не удалять уже полезное поведение ради закрытого набора значений.
|
|
165
|
+
|
|
166
|
+
### PY-06 · P2 · Ошибки декодирования маскируют HTTP-статус, тело и контекст операции
|
|
167
|
+
|
|
168
|
+
Generated endpoints разбирают тело до того, как клиент получает объект `Response`. Например, HTML вместо JSON на **документированном HTTP 400** вызывает `JSONDecodeError`; общий `except Exception` создаёт `ApiError(kind=unexpected)` с `status_code=None`, пустым `raw_body`, без request ID и idempotency key.
|
|
169
|
+
|
|
170
|
+
Это воспроизведено на login с `400 <html>bad request</html>`. Причина доступна как `__cause__`, но HTTP-контекст уже потерян. Аналогичный дефект усложняет восстановление после успешной серверной операции, ответ которой не соответствует старой модели.
|
|
171
|
+
|
|
172
|
+
Источники: [порядок build/parse response](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/_generated/api/authorization/login_create.py#L58), [sync обработка](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/client.py#L224), [async обработка](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/src/proxyrequest_sdk/client.py#L413).
|
|
173
|
+
|
|
174
|
+
Исправление: сначала сохранять транспортный ответ и классифицировать HTTP-ошибку, затем декодировать успешный payload; в decoding exception прикреплять исходные status/headers/body/key. Сам по себе неизвестный HTTP 502 уже корректно становится server ApiError с сохранённым payload — это проверено на ошибке checkout с `invoice_id` и `retryable`.
|
|
175
|
+
|
|
176
|
+
### PY-07 · P2 · Синхронизация схемы жёстко привязана к устаревшему числу методов
|
|
177
|
+
|
|
178
|
+
`scripts/sync_openapi.py` принимает только 80 операций и 124 схемы. Запуск на текущем серверном файле завершается до записи:
|
|
179
|
+
|
|
180
|
+
```text
|
|
181
|
+
Unexpected contract size: 81 operations and 127 schemas.
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Контрактные тесты тоже проверяют собственную сохранённую схему и наличие 80 generated sync/async фасадов. Это полезная проверка целостности генерации, но она не обнаруживает отставание от бэкенда.
|
|
185
|
+
|
|
186
|
+
Источники: [validate](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/scripts/sync_openapi.py#L37), [contract tests](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/tests/test_contract.py#L27), [manifest](https://github.com/proxyrequest/python-sdk/blob/3424a4e62ac7b8d1d5309bd4d3c4109f90da16c7/openapi/source.json#L1).
|
|
187
|
+
|
|
188
|
+
В отличие от TypeScript SDK, hash и счётчики Python manifest соответствуют реально сохранённой старой схеме. Исправление: принимать эволюцию публичного контракта с проверкой его назначения, анализировать семантический diff и обновлять mapping/модели. Добавить проверки against выбранного backend snapshot, а не только собственной копии.
|
|
189
|
+
|
|
190
|
+
## Проблемы бэкенда, влияющие на эту SDK
|
|
191
|
+
|
|
192
|
+
### BE-01 · P1 · Три публичных detail-маршрута падают при передаче `pk`
|
|
193
|
+
|
|
194
|
+
| HTTP-маршрут | Обработчик |
|
|
195
|
+
| --- | --- |
|
|
196
|
+
| `GET /invoices/{id}/download/pdf` | `InvoicesViewSet.download_pdf(self, request)` |
|
|
197
|
+
| `GET /invoices/{id}/pay` | `InvoicesViewSet.pay_link(self, request)` |
|
|
198
|
+
| `GET /coupons/{id}/redeems` | `CouponsViewSet.redeems(self, request)` |
|
|
199
|
+
|
|
200
|
+
DRF router передаёт идентификатор как `pk`, но обработчики не принимают ни `pk`, ни `**kwargs`. Через настоящий `django.urls.resolve()` и вызов соответствующего view воспроизведены:
|
|
201
|
+
|
|
202
|
+
```text
|
|
203
|
+
TypeError: InvoicesViewSet.download_pdf() got an unexpected keyword argument 'pk'
|
|
204
|
+
TypeError: InvoicesViewSet.pay_link() got an unexpected keyword argument 'pk'
|
|
205
|
+
TypeError: CouponsViewSet.redeems() got an unexpected keyword argument 'pk'
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
При проверке были заменены только `initial()` и обработка исключения, чтобы изолировать диспетчеризацию от авторизации и БД. Это подтверждённая ошибка вызова обработчика, а не результат запроса к развёрнутому серверу. SDK формируют правильные HTTP-методы и пути; исправление требуется на стороне API.
|
|
209
|
+
|
|
210
|
+
Источники: InvoicesViewSet (`api/apps/billing/api/viewsets.py:197`), CouponsViewSet.redeems (`api/apps/marketing/api/viewsets.py:444`), регистрация router (`api/apps/routing/infrastructure/django/public.py:95`).
|
|
211
|
+
|
|
212
|
+
Исправление: принимать `pk=None` или `*args, **kwargs`; добавить HTTP-тесты всех трёх detail-action через router. После этого повторить интеграционные проверки SDK для платёжной ссылки, PDF и погашений купона.
|
|
213
|
+
|
|
214
|
+
### BE-02 · P2 · Управление sessions отключено, хотя SDK обещает успешные ответы
|
|
215
|
+
|
|
216
|
+
Авторизованные `GET /sessions` и `DELETE /sessions/{id}` безусловно вызывают `_unavailable()` и возвращают 403 с причиной `errors.proxy.session_ownership_unavailable`. Актуальная схема уже не содержит успешного ответа для этих операций; сохранённая схема SDK всё ещё содержит старые `SessionListResponse` / `SessionDeleteResponse`.
|
|
217
|
+
|
|
218
|
+
Это ограничение текущего API, а не неправильный ключ пользователя. Следует отметить методы как временно недоступные/deprecated и обновить документацию. Возвращать возможность управления сессиями нужно только после реализации проверки владельца на сервере.
|
|
219
|
+
|
|
220
|
+
Источник: SessionViewSet (`api/apps/core/api/viewsets.py:1622`).
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
## Минимальное локальное воспроизведение OTP
|
|
224
|
+
|
|
225
|
+
Из текущего каталога, без сетевого обращения:
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
python-sdk/.venv/bin/python - <<'PY'
|
|
229
|
+
import httpx
|
|
230
|
+
from proxyrequest_sdk import ApiError, Client
|
|
231
|
+
from proxyrequest_sdk.models import LoginRequest
|
|
232
|
+
|
|
233
|
+
transport = httpx.MockTransport(lambda request: httpx.Response(
|
|
234
|
+
202,
|
|
235
|
+
json={"status": "otp_required", "challenge": "audit", "expires_in": 300},
|
|
236
|
+
))
|
|
237
|
+
http = httpx.Client(
|
|
238
|
+
base_url="https://api.proxyrequest.com/api/v1",
|
|
239
|
+
transport=transport,
|
|
240
|
+
)
|
|
241
|
+
with Client.anonymous(http_client=http) as client:
|
|
242
|
+
try:
|
|
243
|
+
client.authorization.login(
|
|
244
|
+
body=LoginRequest(email="audit@example.com", password="synthetic")
|
|
245
|
+
)
|
|
246
|
+
except ApiError as error:
|
|
247
|
+
print(str(error), error.status_code, error.raw_body)
|
|
248
|
+
http.close()
|
|
249
|
+
PY
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Проверки и приоритет исправлений
|
|
253
|
+
|
|
254
|
+
`.venv/bin/python -m pytest -q`: **24 passed**. Дополнительно проверены sync/async OTP 202, пустой 204, JSON 502, HTML 400, каждый nullable invoice field, короткий Invoice, оба User-режима и новый gateway через enum.
|
|
255
|
+
|
|
256
|
+
Подтверждены корректные заголовки Static/Bearer, дополнительные JSON-поля, единый idempotency key на повторные попытки в штатных сценариях, ETag/If-Match, пагинация через offset, файлы и совместимость HMAC webhook с серверным алгоритмом (`api/apps/webhooks/management/commands/send_webhook_events.py:55`). Ошибка `id_path` в `users_orders_list` не обнаружена: это внутреннее переименование, которое корректно подставляется в `/users/{id}/orders`.
|
|
257
|
+
|
|
258
|
+
Порядок: исправить серверные detail-action и контракты моделей; устранить nullable/варианты User/Invoice и потерю HTTP-контекста; внедрить MFA; обновить платежи и schema sync. Проверить реальные успешные ответы создания пользователя/счёта, а не только mocked HTTP-ошибки и наличие методов.
|
|
259
|
+
|
|
260
|
+
## Полная матрица методов
|
|
261
|
+
|
|
262
|
+
Каждый указанный метод существует и у `Client`, и у `AsyncClient`; доступны варианты `*_with_response`. Наличие метода не отменяет перечисленных выше ограничений.
|
|
263
|
+
|
|
264
|
+
| HTTP | Путь | Метод SDK |
|
|
265
|
+
| --- | --- | --- |
|
|
266
|
+
| GET | `/affiliates` | `affiliates.list()` |
|
|
267
|
+
| GET | `/affiliates/rewards` | `affiliates.list_rewards()` |
|
|
268
|
+
| GET | `/affiliates/rewards/overall` | `affiliates.get_rewards_overall()` |
|
|
269
|
+
| GET | `/analytics/{id}/transactions` | `analytics.get_transactions()` |
|
|
270
|
+
| GET | `/analytics/connections` | `analytics.get_connections()` |
|
|
271
|
+
| GET | `/analytics/domains` | `analytics.list_domains()` |
|
|
272
|
+
| GET | `/analytics/feed` | `analytics.list_feed()` |
|
|
273
|
+
| GET | `/analytics/logs` | `analytics.list_logs()` |
|
|
274
|
+
| GET | `/analytics/overall` | `analytics.get_overall()` |
|
|
275
|
+
| GET | `/api-keys` | `api_keys.list()` |
|
|
276
|
+
| POST | `/api-keys` | `api_keys.create()` |
|
|
277
|
+
| DELETE | `/api-keys/{id}` | `api_keys.delete()` |
|
|
278
|
+
| GET | `/coupons` | `coupons.list()` |
|
|
279
|
+
| POST | `/coupons` | `coupons.create()` |
|
|
280
|
+
| GET | `/coupons/{id}` | `coupons.get()` |
|
|
281
|
+
| PUT | `/coupons/{id}` | `coupons.replace()` |
|
|
282
|
+
| PATCH | `/coupons/{id}` | `coupons.update()` |
|
|
283
|
+
| DELETE | `/coupons/{id}` | `coupons.delete()` |
|
|
284
|
+
| GET | `/coupons/{id}/redeems` | `coupons.list_redeems()` |
|
|
285
|
+
| POST | `/coupons/calculate-price` | `coupons.calculate_price()` |
|
|
286
|
+
| GET | `/integrations/telegram/connection` | `telegram.get_connection()` |
|
|
287
|
+
| PATCH | `/integrations/telegram/connection` | `telegram.update_connection()` |
|
|
288
|
+
| DELETE | `/integrations/telegram/connection` | `telegram.delete_connection()` |
|
|
289
|
+
| POST | `/integrations/telegram/link` | `telegram.create_link()` |
|
|
290
|
+
| GET | `/invoices` | `invoices.list()` |
|
|
291
|
+
| POST | `/invoices` | `invoices.create()` |
|
|
292
|
+
| GET | `/invoices/{id}` | `invoices.get()` |
|
|
293
|
+
| DELETE | `/invoices/{id}` | `invoices.delete()` |
|
|
294
|
+
| GET | `/invoices/{id}/download/pdf` | `invoices.download_pdf()` |
|
|
295
|
+
| GET | `/invoices/{id}/pay` | `invoices.get_payment_link()` |
|
|
296
|
+
| GET | `/locations/asn` | `locations.list_asns()` |
|
|
297
|
+
| GET | `/locations/cities` | `locations.list_cities()` |
|
|
298
|
+
| GET | `/locations/cities/{id}` | `locations.get_city()` |
|
|
299
|
+
| GET | `/locations/continents` | `locations.list_continents()` |
|
|
300
|
+
| GET | `/locations/continents/{id}` | `locations.get_continent()` |
|
|
301
|
+
| GET | `/locations/countries` | `locations.list_countries()` |
|
|
302
|
+
| GET | `/locations/countries/{id}` | `locations.get_country()` |
|
|
303
|
+
| GET | `/locations/isps` | `locations.list_isps()` |
|
|
304
|
+
| GET | `/locations/regions` | `locations.list_regions()` |
|
|
305
|
+
| GET | `/locations/regions/{id}` | `locations.get_region()` |
|
|
306
|
+
| POST | `/login` | `authorization.login()` |
|
|
307
|
+
| POST | `/login/google` | `authorization.login_with_google()` |
|
|
308
|
+
| POST | `/login/otp` | **Отсутствует — PY-01** |
|
|
309
|
+
| GET | `/news` | `news.list()` |
|
|
310
|
+
| GET | `/orders` | `orders.list()` |
|
|
311
|
+
| GET | `/orders/{id}` | `orders.get()` |
|
|
312
|
+
| PATCH | `/orders/{id}` | `orders.update_auto_renewal()` |
|
|
313
|
+
| DELETE | `/orders/{id}` | `orders.delete()` |
|
|
314
|
+
| GET | `/packages` | `packages.list()` |
|
|
315
|
+
| GET | `/packages/commissions` | `packages.list_commissions()` |
|
|
316
|
+
| GET | `/profile` | `profile.get()` |
|
|
317
|
+
| PATCH | `/profile` | `profile.update()` |
|
|
318
|
+
| DELETE | `/profile` | `profile.delete()` |
|
|
319
|
+
| POST | `/profile/2fa/confirm` | `profile.confirm_two_factor()` |
|
|
320
|
+
| POST | `/profile/2fa/disable` | `profile.disable_two_factor()` |
|
|
321
|
+
| POST | `/profile/2fa/setup` | `profile.setup_two_factor()` |
|
|
322
|
+
| GET | `/profile/2fa/status` | `profile.get_two_factor_status()` |
|
|
323
|
+
| POST | `/profile/change-password` | `profile.change_password()` |
|
|
324
|
+
| POST | `/proxies/generate` | `proxies.generate()` |
|
|
325
|
+
| POST | `/recover-password` | `authorization.recover_password()` |
|
|
326
|
+
| POST | `/refresh` | `authorization.refresh()` |
|
|
327
|
+
| POST | `/reset-password` | `orders.reset_password()` |
|
|
328
|
+
| GET | `/rewards` | `rewards.list()` |
|
|
329
|
+
| POST | `/rewards/claim` | `rewards.claim()` |
|
|
330
|
+
| GET | `/sessions` | `sessions.list()` |
|
|
331
|
+
| DELETE | `/sessions/{id}` | `sessions.delete()` |
|
|
332
|
+
| GET | `/settings` | `settings.get()` |
|
|
333
|
+
| POST | `/signup` | `authorization.signup()` |
|
|
334
|
+
| GET | `/users` | `users.list()` |
|
|
335
|
+
| POST | `/users` | `users.create()` |
|
|
336
|
+
| GET | `/users/{id}` | `users.get()` |
|
|
337
|
+
| PATCH | `/users/{id}` | `users.update()` |
|
|
338
|
+
| DELETE | `/users/{id}` | `users.delete()` |
|
|
339
|
+
| POST | `/users/{id}/data/add` | `users.add_data()` |
|
|
340
|
+
| POST | `/users/{id}/data/subtract` | `users.subtract_data()` |
|
|
341
|
+
| GET | `/users/{id}/orders` | `users.list_orders()` |
|
|
342
|
+
| POST | `/users/{id}/password` | `users.reset_password()` |
|
|
343
|
+
| GET | `/webhooks` | `webhooks.list()` |
|
|
344
|
+
| POST | `/webhooks` | `webhooks.create()` |
|
|
345
|
+
| GET | `/webhooks/{id}` | `webhooks.get()` |
|
|
346
|
+
| DELETE | `/webhooks/{id}` | `webhooks.delete()` |
|