asteroid-odyssey 1.6.51__py3-none-any.whl → 1.6.89__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -123,7 +123,10 @@ __all__ = [
123
123
  "AgentsProfileCreateAgentProfileRequest",
124
124
  "AgentsProfileCredential",
125
125
  "AgentsProfileCredentialUpdate",
126
+ "AgentsProfileCustomProxyConfigInput",
127
+ "AgentsProfileCustomProxyConfigOutput",
126
128
  "AgentsProfileOperatingSystem",
129
+ "AgentsProfileProxyMode",
127
130
  "AgentsProfileProxyType",
128
131
  "AgentsProfileSameSite",
129
132
  "AgentsProfileSortField",
@@ -250,7 +253,10 @@ from asteroid_odyssey.models.agents_profile_country_code import AgentsProfileCou
250
253
  from asteroid_odyssey.models.agents_profile_create_agent_profile_request import AgentsProfileCreateAgentProfileRequest as AgentsProfileCreateAgentProfileRequest
251
254
  from asteroid_odyssey.models.agents_profile_credential import AgentsProfileCredential as AgentsProfileCredential
252
255
  from asteroid_odyssey.models.agents_profile_credential_update import AgentsProfileCredentialUpdate as AgentsProfileCredentialUpdate
256
+ from asteroid_odyssey.models.agents_profile_custom_proxy_config_input import AgentsProfileCustomProxyConfigInput as AgentsProfileCustomProxyConfigInput
257
+ from asteroid_odyssey.models.agents_profile_custom_proxy_config_output import AgentsProfileCustomProxyConfigOutput as AgentsProfileCustomProxyConfigOutput
253
258
  from asteroid_odyssey.models.agents_profile_operating_system import AgentsProfileOperatingSystem as AgentsProfileOperatingSystem
259
+ from asteroid_odyssey.models.agents_profile_proxy_mode import AgentsProfileProxyMode as AgentsProfileProxyMode
254
260
  from asteroid_odyssey.models.agents_profile_proxy_type import AgentsProfileProxyType as AgentsProfileProxyType
255
261
  from asteroid_odyssey.models.agents_profile_same_site import AgentsProfileSameSite as AgentsProfileSameSite
256
262
  from asteroid_odyssey.models.agents_profile_sort_field import AgentsProfileSortField as AgentsProfileSortField
@@ -106,7 +106,10 @@ from asteroid_odyssey.models.agents_profile_country_code import AgentsProfileCou
106
106
  from asteroid_odyssey.models.agents_profile_create_agent_profile_request import AgentsProfileCreateAgentProfileRequest
107
107
  from asteroid_odyssey.models.agents_profile_credential import AgentsProfileCredential
108
108
  from asteroid_odyssey.models.agents_profile_credential_update import AgentsProfileCredentialUpdate
109
+ from asteroid_odyssey.models.agents_profile_custom_proxy_config_input import AgentsProfileCustomProxyConfigInput
110
+ from asteroid_odyssey.models.agents_profile_custom_proxy_config_output import AgentsProfileCustomProxyConfigOutput
109
111
  from asteroid_odyssey.models.agents_profile_operating_system import AgentsProfileOperatingSystem
112
+ from asteroid_odyssey.models.agents_profile_proxy_mode import AgentsProfileProxyMode
110
113
  from asteroid_odyssey.models.agents_profile_proxy_type import AgentsProfileProxyType
111
114
  from asteroid_odyssey.models.agents_profile_same_site import AgentsProfileSameSite
112
115
  from asteroid_odyssey.models.agents_profile_sort_field import AgentsProfileSortField
@@ -23,7 +23,9 @@ from typing import Any, ClassVar, Dict, List, Optional
23
23
  from asteroid_odyssey.models.agents_profile_cookie import AgentsProfileCookie
24
24
  from asteroid_odyssey.models.agents_profile_country_code import AgentsProfileCountryCode
25
25
  from asteroid_odyssey.models.agents_profile_credential import AgentsProfileCredential
26
+ from asteroid_odyssey.models.agents_profile_custom_proxy_config_output import AgentsProfileCustomProxyConfigOutput
26
27
  from asteroid_odyssey.models.agents_profile_operating_system import AgentsProfileOperatingSystem
28
+ from asteroid_odyssey.models.agents_profile_proxy_mode import AgentsProfileProxyMode
27
29
  from asteroid_odyssey.models.agents_profile_proxy_type import AgentsProfileProxyType
28
30
  from typing import Optional, Set
29
31
  from typing_extensions import Self
@@ -36,10 +38,12 @@ class AgentsProfileAgentProfile(BaseModel):
36
38
  name: StrictStr = Field(description="Name of the agent profile (unique within organization)")
37
39
  description: StrictStr = Field(description="Description of the agent profile")
38
40
  organization_id: StrictStr = Field(description="The ID of the organization that owns this profile", alias="organizationId")
39
- proxy_cc: Optional[AgentsProfileCountryCode] = Field(default=None, description="Country code for proxy location", alias="proxyCC")
40
- proxy_type: Optional[AgentsProfileProxyType] = Field(default=None, description="Type of proxy to use", alias="proxyType")
41
- captcha_solver_active: StrictBool = Field(description="Whether the captcha solver is active for this profile", alias="captchaSolverActive")
42
- sticky_ip: StrictBool = Field(description="Whether to use the same IP address for all executions", alias="stickyIP")
41
+ proxy_mode: AgentsProfileProxyMode = Field(description="Proxy configuration mode", alias="proxyMode")
42
+ proxy_cc: Optional[AgentsProfileCountryCode] = Field(default=None, description="Country code for proxy location (for managed proxy mode)", alias="proxyCC")
43
+ proxy_type: Optional[AgentsProfileProxyType] = Field(default=None, description="Type of managed proxy to use (for managed proxy mode)", alias="proxyType")
44
+ custom_proxy: Optional[AgentsProfileCustomProxyConfigOutput] = Field(default=None, description="Custom proxy configuration (for custom proxy mode, password excluded)", alias="customProxy")
45
+ captcha_solver_active: StrictBool = Field(description="Whether the captcha solver is active for this profile (managed proxy only)", alias="captchaSolverActive")
46
+ sticky_ip: StrictBool = Field(description="Whether to use the same IP address for all executions (managed proxy only)", alias="stickyIP")
43
47
  operating_system: Optional[AgentsProfileOperatingSystem] = Field(default=None, description="Operating system to emulate", alias="operatingSystem")
44
48
  extra_stealth: StrictBool = Field(description="Whether extra stealth mode is enabled", alias="extraStealth")
45
49
  cache_persistence: StrictBool = Field(description="Whether to persist browser cache between sessions", alias="cachePersistence")
@@ -51,7 +55,7 @@ class AgentsProfileAgentProfile(BaseModel):
51
55
  cookies: List[AgentsProfileCookie] = Field(description="List of cookies associated with this profile")
52
56
  created_at: datetime = Field(description="When the profile was created", alias="createdAt")
53
57
  updated_at: datetime = Field(description="When the profile was last updated", alias="updatedAt")
54
- __properties: ClassVar[List[str]] = ["id", "name", "description", "organizationId", "proxyCC", "proxyType", "captchaSolverActive", "stickyIP", "operatingSystem", "extraStealth", "cachePersistence", "adblockActive", "popupBlockerActive", "forcePopupsAsTabsActive", "mediaBlockerActive", "credentials", "cookies", "createdAt", "updatedAt"]
58
+ __properties: ClassVar[List[str]] = ["id", "name", "description", "organizationId", "proxyMode", "proxyCC", "proxyType", "customProxy", "captchaSolverActive", "stickyIP", "operatingSystem", "extraStealth", "cachePersistence", "adblockActive", "popupBlockerActive", "forcePopupsAsTabsActive", "mediaBlockerActive", "credentials", "cookies", "createdAt", "updatedAt"]
55
59
 
56
60
  model_config = ConfigDict(
57
61
  populate_by_name=True,
@@ -92,6 +96,9 @@ class AgentsProfileAgentProfile(BaseModel):
92
96
  exclude=excluded_fields,
93
97
  exclude_none=True,
94
98
  )
99
+ # override the default output from pydantic by calling `to_dict()` of custom_proxy
100
+ if self.custom_proxy:
101
+ _dict['customProxy'] = self.custom_proxy.to_dict()
95
102
  # override the default output from pydantic by calling `to_dict()` of each item in credentials (list)
96
103
  _items = []
97
104
  if self.credentials:
@@ -122,8 +129,10 @@ class AgentsProfileAgentProfile(BaseModel):
122
129
  "name": obj.get("name"),
123
130
  "description": obj.get("description"),
124
131
  "organizationId": obj.get("organizationId"),
132
+ "proxyMode": obj.get("proxyMode"),
125
133
  "proxyCC": obj.get("proxyCC"),
126
134
  "proxyType": obj.get("proxyType"),
135
+ "customProxy": AgentsProfileCustomProxyConfigOutput.from_dict(obj["customProxy"]) if obj.get("customProxy") is not None else None,
127
136
  "captchaSolverActive": obj.get("captchaSolverActive"),
128
137
  "stickyIP": obj.get("stickyIP"),
129
138
  "operatingSystem": obj.get("operatingSystem"),
@@ -23,7 +23,9 @@ from typing_extensions import Annotated
23
23
  from asteroid_odyssey.models.agents_profile_cookie import AgentsProfileCookie
24
24
  from asteroid_odyssey.models.agents_profile_country_code import AgentsProfileCountryCode
25
25
  from asteroid_odyssey.models.agents_profile_credential import AgentsProfileCredential
26
+ from asteroid_odyssey.models.agents_profile_custom_proxy_config_input import AgentsProfileCustomProxyConfigInput
26
27
  from asteroid_odyssey.models.agents_profile_operating_system import AgentsProfileOperatingSystem
28
+ from asteroid_odyssey.models.agents_profile_proxy_mode import AgentsProfileProxyMode
27
29
  from asteroid_odyssey.models.agents_profile_proxy_type import AgentsProfileProxyType
28
30
  from typing import Optional, Set
29
31
  from typing_extensions import Self
@@ -35,10 +37,12 @@ class AgentsProfileCreateAgentProfileRequest(BaseModel):
35
37
  name: Annotated[str, Field(min_length=1, strict=True, max_length=255)] = Field(description="Name of the agent profile (must be unique within organization)")
36
38
  description: Annotated[str, Field(strict=True, max_length=1000)] = Field(description="Description of the agent profile")
37
39
  organization_id: StrictStr = Field(description="The ID of the organization that the profile belongs to", alias="organizationId")
38
- proxy_cc: Optional[AgentsProfileCountryCode] = Field(default=None, description="Country code for proxy location", alias="proxyCC")
39
- proxy_type: Optional[AgentsProfileProxyType] = Field(default=None, description="Type of proxy to use", alias="proxyType")
40
- captcha_solver_active: Optional[StrictBool] = Field(default=False, description="Whether the captcha solver should be active", alias="captchaSolverActive")
41
- sticky_ip: Optional[StrictBool] = Field(default=False, description="Whether to use the same IP address for all executions", alias="stickyIP")
40
+ proxy_mode: Optional[AgentsProfileProxyMode] = Field(default=None, description="Proxy configuration mode", alias="proxyMode")
41
+ proxy_cc: Optional[AgentsProfileCountryCode] = Field(default=None, description="Country code for proxy location (for managed proxy mode)", alias="proxyCC")
42
+ proxy_type: Optional[AgentsProfileProxyType] = Field(default=None, description="Type of managed proxy to use (required for managed proxy mode)", alias="proxyType")
43
+ custom_proxy: Optional[AgentsProfileCustomProxyConfigInput] = Field(default=None, description="Custom proxy configuration (required for custom proxy mode)", alias="customProxy")
44
+ captcha_solver_active: Optional[StrictBool] = Field(default=False, description="Whether the captcha solver should be active (managed proxy only)", alias="captchaSolverActive")
45
+ sticky_ip: Optional[StrictBool] = Field(default=False, description="Whether to use the same IP address for all executions (managed proxy only)", alias="stickyIP")
42
46
  operating_system: Optional[AgentsProfileOperatingSystem] = Field(default=None, description="Operating system to emulate", alias="operatingSystem")
43
47
  extra_stealth: Optional[StrictBool] = Field(default=False, description="Whether to enable extra stealth mode", alias="extraStealth")
44
48
  cache_persistence: Optional[StrictBool] = Field(default=False, description="Whether to persist browser cache between sessions", alias="cachePersistence")
@@ -48,7 +52,7 @@ class AgentsProfileCreateAgentProfileRequest(BaseModel):
48
52
  media_blocker_active: Optional[StrictBool] = Field(default=False, description="Whether to enable media blocking (images, videos, etc.)", alias="mediaBlockerActive")
49
53
  credentials: Optional[List[AgentsProfileCredential]] = Field(default=None, description="Initial credentials to create with the profile")
50
54
  cookies: Optional[List[AgentsProfileCookie]] = Field(default=None, description="Initial cookies to create with the profile")
51
- __properties: ClassVar[List[str]] = ["name", "description", "organizationId", "proxyCC", "proxyType", "captchaSolverActive", "stickyIP", "operatingSystem", "extraStealth", "cachePersistence", "adblockActive", "popupBlockerActive", "forcePopupsAsTabsActive", "mediaBlockerActive", "credentials", "cookies"]
55
+ __properties: ClassVar[List[str]] = ["name", "description", "organizationId", "proxyMode", "proxyCC", "proxyType", "customProxy", "captchaSolverActive", "stickyIP", "operatingSystem", "extraStealth", "cachePersistence", "adblockActive", "popupBlockerActive", "forcePopupsAsTabsActive", "mediaBlockerActive", "credentials", "cookies"]
52
56
 
53
57
  model_config = ConfigDict(
54
58
  populate_by_name=True,
@@ -89,6 +93,9 @@ class AgentsProfileCreateAgentProfileRequest(BaseModel):
89
93
  exclude=excluded_fields,
90
94
  exclude_none=True,
91
95
  )
96
+ # override the default output from pydantic by calling `to_dict()` of custom_proxy
97
+ if self.custom_proxy:
98
+ _dict['customProxy'] = self.custom_proxy.to_dict()
92
99
  # override the default output from pydantic by calling `to_dict()` of each item in credentials (list)
93
100
  _items = []
94
101
  if self.credentials:
@@ -118,8 +125,10 @@ class AgentsProfileCreateAgentProfileRequest(BaseModel):
118
125
  "name": obj.get("name"),
119
126
  "description": obj.get("description"),
120
127
  "organizationId": obj.get("organizationId"),
128
+ "proxyMode": obj.get("proxyMode"),
121
129
  "proxyCC": obj.get("proxyCC"),
122
130
  "proxyType": obj.get("proxyType"),
131
+ "customProxy": AgentsProfileCustomProxyConfigInput.from_dict(obj["customProxy"]) if obj.get("customProxy") is not None else None,
123
132
  "captchaSolverActive": obj.get("captchaSolverActive") if obj.get("captchaSolverActive") is not None else False,
124
133
  "stickyIP": obj.get("stickyIP") if obj.get("stickyIP") is not None else False,
125
134
  "operatingSystem": obj.get("operatingSystem"),
@@ -0,0 +1,92 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Agent Service
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
7
+
8
+ The version of the OpenAPI document: v1
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field
21
+ from typing import Any, ClassVar, Dict, List
22
+ from typing_extensions import Annotated
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class AgentsProfileCustomProxyConfigInput(BaseModel):
27
+ """
28
+ Custom proxy server configuration for input (includes password)
29
+ """ # noqa: E501
30
+ server: Annotated[str, Field(min_length=1, strict=True)] = Field(description="Proxy server address including protocol and port (e.g., 'socks5://proxy.example.com:1080' or 'http://proxy.example.com:8080')")
31
+ username: Annotated[str, Field(min_length=1, strict=True)] = Field(description="Proxy authentication username")
32
+ password: Annotated[str, Field(min_length=1, strict=True)] = Field(description="Proxy authentication password")
33
+ __properties: ClassVar[List[str]] = ["server", "username", "password"]
34
+
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.model_dump(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
49
+ return json.dumps(self.to_dict())
50
+
51
+ @classmethod
52
+ def from_json(cls, json_str: str) -> Optional[Self]:
53
+ """Create an instance of AgentsProfileCustomProxyConfigInput from a JSON string"""
54
+ return cls.from_dict(json.loads(json_str))
55
+
56
+ def to_dict(self) -> Dict[str, Any]:
57
+ """Return the dictionary representation of the model using alias.
58
+
59
+ This has the following differences from calling pydantic's
60
+ `self.model_dump(by_alias=True)`:
61
+
62
+ * `None` is only added to the output dict for nullable fields that
63
+ were set at model initialization. Other fields with value `None`
64
+ are ignored.
65
+ """
66
+ excluded_fields: Set[str] = set([
67
+ ])
68
+
69
+ _dict = self.model_dump(
70
+ by_alias=True,
71
+ exclude=excluded_fields,
72
+ exclude_none=True,
73
+ )
74
+ return _dict
75
+
76
+ @classmethod
77
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
78
+ """Create an instance of AgentsProfileCustomProxyConfigInput from a dict"""
79
+ if obj is None:
80
+ return None
81
+
82
+ if not isinstance(obj, dict):
83
+ return cls.model_validate(obj)
84
+
85
+ _obj = cls.model_validate({
86
+ "server": obj.get("server"),
87
+ "username": obj.get("username"),
88
+ "password": obj.get("password")
89
+ })
90
+ return _obj
91
+
92
+
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Agent Service
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
7
+
8
+ The version of the OpenAPI document: v1
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
21
+ from typing import Any, ClassVar, Dict, List
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class AgentsProfileCustomProxyConfigOutput(BaseModel):
26
+ """
27
+ Custom proxy server configuration for output (excludes password)
28
+ """ # noqa: E501
29
+ server: StrictStr = Field(description="Proxy server address")
30
+ username: StrictStr = Field(description="Proxy authentication username")
31
+ __properties: ClassVar[List[str]] = ["server", "username"]
32
+
33
+ model_config = ConfigDict(
34
+ populate_by_name=True,
35
+ validate_assignment=True,
36
+ protected_namespaces=(),
37
+ )
38
+
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.model_dump(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
47
+ return json.dumps(self.to_dict())
48
+
49
+ @classmethod
50
+ def from_json(cls, json_str: str) -> Optional[Self]:
51
+ """Create an instance of AgentsProfileCustomProxyConfigOutput from a JSON string"""
52
+ return cls.from_dict(json.loads(json_str))
53
+
54
+ def to_dict(self) -> Dict[str, Any]:
55
+ """Return the dictionary representation of the model using alias.
56
+
57
+ This has the following differences from calling pydantic's
58
+ `self.model_dump(by_alias=True)`:
59
+
60
+ * `None` is only added to the output dict for nullable fields that
61
+ were set at model initialization. Other fields with value `None`
62
+ are ignored.
63
+ """
64
+ excluded_fields: Set[str] = set([
65
+ ])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ return _dict
73
+
74
+ @classmethod
75
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
76
+ """Create an instance of AgentsProfileCustomProxyConfigOutput from a dict"""
77
+ if obj is None:
78
+ return None
79
+
80
+ if not isinstance(obj, dict):
81
+ return cls.model_validate(obj)
82
+
83
+ _obj = cls.model_validate({
84
+ "server": obj.get("server"),
85
+ "username": obj.get("username")
86
+ })
87
+ return _obj
88
+
89
+
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Agent Service
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
7
+
8
+ The version of the OpenAPI document: v1
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import json
17
+ from enum import Enum
18
+ from typing_extensions import Self
19
+
20
+
21
+ class AgentsProfileProxyMode(str, Enum):
22
+ """
23
+ Proxy configuration mode
24
+ """
25
+
26
+ """
27
+ allowed enum values
28
+ """
29
+ NONE = 'none'
30
+ MANAGED = 'managed'
31
+ CUSTOM = 'custom'
32
+
33
+ @classmethod
34
+ def from_json(cls, json_str: str) -> Self:
35
+ """Create an instance of AgentsProfileProxyMode from a JSON string"""
36
+ return cls(json.loads(json_str))
37
+
38
+
@@ -20,7 +20,7 @@ from typing_extensions import Self
20
20
 
21
21
  class AgentsProfileProxyType(str, Enum):
22
22
  """
23
- Type of proxy to use for browser sessions
23
+ Type of managed proxy to use for browser sessions
24
24
  """
25
25
 
26
26
  """
@@ -24,7 +24,9 @@ from asteroid_odyssey.models.agents_profile_cookie import AgentsProfileCookie
24
24
  from asteroid_odyssey.models.agents_profile_country_code import AgentsProfileCountryCode
25
25
  from asteroid_odyssey.models.agents_profile_credential import AgentsProfileCredential
26
26
  from asteroid_odyssey.models.agents_profile_credential_update import AgentsProfileCredentialUpdate
27
+ from asteroid_odyssey.models.agents_profile_custom_proxy_config_input import AgentsProfileCustomProxyConfigInput
27
28
  from asteroid_odyssey.models.agents_profile_operating_system import AgentsProfileOperatingSystem
29
+ from asteroid_odyssey.models.agents_profile_proxy_mode import AgentsProfileProxyMode
28
30
  from asteroid_odyssey.models.agents_profile_proxy_type import AgentsProfileProxyType
29
31
  from typing import Optional, Set
30
32
  from typing_extensions import Self
@@ -35,9 +37,11 @@ class AgentsProfileUpdateAgentProfileRequest(BaseModel):
35
37
  """ # noqa: E501
36
38
  name: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=255)]] = Field(default=None, description="New name for the profile")
37
39
  description: Optional[Annotated[str, Field(strict=True, max_length=1000)]] = Field(default=None, description="New description for the profile")
38
- proxy_cc: Optional[AgentsProfileCountryCode] = Field(default=None, description="Country code for proxy location", alias="proxyCC")
39
- proxy_type: Optional[AgentsProfileProxyType] = Field(default=None, description="Type of proxy to use (set to empty string to disable proxy)", alias="proxyType")
40
- captcha_solver_active: Optional[StrictBool] = Field(default=None, description="Whether the captcha solver should be active", alias="captchaSolverActive")
40
+ proxy_mode: Optional[AgentsProfileProxyMode] = Field(default=None, description="Proxy configuration mode", alias="proxyMode")
41
+ proxy_cc: Optional[AgentsProfileCountryCode] = Field(default=None, description="Country code for proxy location (for managed proxy mode)", alias="proxyCC")
42
+ proxy_type: Optional[AgentsProfileProxyType] = Field(default=None, description="Type of managed proxy to use (for managed proxy mode)", alias="proxyType")
43
+ custom_proxy: Optional[AgentsProfileCustomProxyConfigInput] = Field(default=None, description="Custom proxy configuration (for custom proxy mode)", alias="customProxy")
44
+ captcha_solver_active: Optional[StrictBool] = Field(default=None, description="Whether the captcha solver should be active (managed proxy only)", alias="captchaSolverActive")
41
45
  operating_system: Optional[AgentsProfileOperatingSystem] = Field(default=None, description="Operating system to emulate", alias="operatingSystem")
42
46
  extra_stealth: Optional[StrictBool] = Field(default=None, description="Whether to enable extra stealth mode", alias="extraStealth")
43
47
  cache_persistence: Optional[StrictBool] = Field(default=None, description="Whether to persist browser cache between sessions", alias="cachePersistence")
@@ -50,7 +54,7 @@ class AgentsProfileUpdateAgentProfileRequest(BaseModel):
50
54
  credentials_to_delete: Optional[List[StrictStr]] = Field(default=None, description="IDs of credentials to remove from the profile", alias="credentialsToDelete")
51
55
  cookies_to_add: Optional[List[AgentsProfileCookie]] = Field(default=None, description="Cookies to add to the profile", alias="cookiesToAdd")
52
56
  cookies_to_delete: Optional[List[StrictStr]] = Field(default=None, description="IDs of cookies to remove from the profile", alias="cookiesToDelete")
53
- __properties: ClassVar[List[str]] = ["name", "description", "proxyCC", "proxyType", "captchaSolverActive", "operatingSystem", "extraStealth", "cachePersistence", "adblockActive", "popupBlockerActive", "forcePopupsAsTabsActive", "mediaBlockerActive", "credentialsToAdd", "credentialsToUpdate", "credentialsToDelete", "cookiesToAdd", "cookiesToDelete"]
57
+ __properties: ClassVar[List[str]] = ["name", "description", "proxyMode", "proxyCC", "proxyType", "customProxy", "captchaSolverActive", "operatingSystem", "extraStealth", "cachePersistence", "adblockActive", "popupBlockerActive", "forcePopupsAsTabsActive", "mediaBlockerActive", "credentialsToAdd", "credentialsToUpdate", "credentialsToDelete", "cookiesToAdd", "cookiesToDelete"]
54
58
 
55
59
  model_config = ConfigDict(
56
60
  populate_by_name=True,
@@ -91,6 +95,9 @@ class AgentsProfileUpdateAgentProfileRequest(BaseModel):
91
95
  exclude=excluded_fields,
92
96
  exclude_none=True,
93
97
  )
98
+ # override the default output from pydantic by calling `to_dict()` of custom_proxy
99
+ if self.custom_proxy:
100
+ _dict['customProxy'] = self.custom_proxy.to_dict()
94
101
  # override the default output from pydantic by calling `to_dict()` of each item in credentials_to_add (list)
95
102
  _items = []
96
103
  if self.credentials_to_add:
@@ -126,8 +133,10 @@ class AgentsProfileUpdateAgentProfileRequest(BaseModel):
126
133
  _obj = cls.model_validate({
127
134
  "name": obj.get("name"),
128
135
  "description": obj.get("description"),
136
+ "proxyMode": obj.get("proxyMode"),
129
137
  "proxyCC": obj.get("proxyCC"),
130
138
  "proxyType": obj.get("proxyType"),
139
+ "customProxy": AgentsProfileCustomProxyConfigInput.from_dict(obj["customProxy"]) if obj.get("customProxy") is not None else None,
131
140
  "captchaSolverActive": obj.get("captchaSolverActive"),
132
141
  "operatingSystem": obj.get("operatingSystem"),
133
142
  "extraStealth": obj.get("extraStealth"),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: asteroid-odyssey
3
- Version: 1.6.51
3
+ Version: 1.6.89
4
4
  Summary: Python SDK for the Asteroid Agents API
5
5
  Author-email: Asteroid <founders@asteroid.com>
6
6
  License-Expression: MIT
@@ -1,4 +1,4 @@
1
- asteroid_odyssey/__init__.py,sha256=au_ZYQxXtGIj_11XExsvf6sS7JGuLHMx7tEmuTM5jSE,22370
1
+ asteroid_odyssey/__init__.py,sha256=SLcMg7jH6_u6VpkD6ee2rkLSgoJB4mhzHvhM8bU3wAg,22905
2
2
  asteroid_odyssey/api_client.py,sha256=vk7bgx6L2b1SvKdTD9RRCY2d1rRvHaI6QoQy0KiFZ8A,27723
3
3
  asteroid_odyssey/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
4
4
  asteroid_odyssey/configuration.py,sha256=ICQFu0VrF-OoEScevweF58q4R7IMpP_-r9x60nuyba4,18903
@@ -10,7 +10,7 @@ asteroid_odyssey/api/agent_profiles_api.py,sha256=EzvS-86oCwa_9xF5XBAy5Z0VaUvJmz
10
10
  asteroid_odyssey/api/agents_api.py,sha256=EWiMV7wcVBMdas96xbWBNw2mqIs3b04G6S1URXW12-4,26482
11
11
  asteroid_odyssey/api/execution_api.py,sha256=vqo84-Aw5BvJ0ZTDfc21SPdpeuSYRWzzBIgPj1u4-as,77059
12
12
  asteroid_odyssey/api/files_api.py,sha256=3eelhlLfOhN53THJ90LfdLo3kdCnnw5Qml83dtWqPC4,35447
13
- asteroid_odyssey/models/__init__.py,sha256=Wr6OcKryAGz-xQtojTiFoU0fR2uGF7uXEafkZ7UqqSs,12331
13
+ asteroid_odyssey/models/__init__.py,sha256=eZKVygfXqqLysfAxoJLaa0VxnlN7gmGrei9heewJvk4,12644
14
14
  asteroid_odyssey/models/agent_list200_response.py,sha256=fZNz18hRSrvKPHPAe16A5p1K1RopKj0Unn6Npglhu7w,3235
15
15
  asteroid_odyssey/models/agent_profile_clear_browser_cache200_response.py,sha256=R7svpgREt63we4utbMFsBPxw2-oycWLwi5xfINc6wL4,2591
16
16
  asteroid_odyssey/models/agent_profiles_list200_response.py,sha256=OHvPOC6Kzo0jLWgkbx8TnkRs9w4VlAMsghH6gpyitdc,3308
@@ -97,17 +97,20 @@ asteroid_odyssey/models/agents_files_temp_files_response.py,sha256=QBUpg40FdZ_Sa
97
97
  asteroid_odyssey/models/agents_graph_models_nodes_properties_playwright_script_llm_var.py,sha256=hRX54qN8R-Ib_A3LVVJKZiVc0encVVXc-4mje80wFy8,3005
98
98
  asteroid_odyssey/models/agents_graph_models_nodes_properties_playwright_script_llm_var_type.py,sha256=lu_J1UrE9WKhzNJV34kVDxKxsjV3fvFBJjnnB0LsgIE,914
99
99
  asteroid_odyssey/models/agents_graph_models_transitions_transition_type.py,sha256=QnUO0ARjDeBRhPdRiR2emGrSkD8lIJnNgpzG7OHzeTg,882
100
- asteroid_odyssey/models/agents_profile_agent_profile.py,sha256=xyfmixGou0XDZiOlPWHWscDfZoGr7lQIxHepsJgOZ00,7448
100
+ asteroid_odyssey/models/agents_profile_agent_profile.py,sha256=cpnAQVqEoXYtI_zNso8SiAOwmWUQnLNhXhUB0_PyE1M,8449
101
101
  asteroid_odyssey/models/agents_profile_cookie.py,sha256=972PRRMXbzZC5ed2Ql2W-1s_ZvrZwRR15BEQXtRziog,4250
102
102
  asteroid_odyssey/models/agents_profile_country_code.py,sha256=fJpWW77odDYMc5xssM8LP-v9KkdHHwTGNncvhsyGHr4,888
103
- asteroid_odyssey/models/agents_profile_create_agent_profile_request.py,sha256=g-N4l7_UpSWD0vWnJs1IS4KA1yzjdPHKdsuyq-irxhA,7804
103
+ asteroid_odyssey/models/agents_profile_create_agent_profile_request.py,sha256=L1cg-wEFHU_39nrAl0fy_2sbpngEWi3Mg1IPegIAH9M,8824
104
104
  asteroid_odyssey/models/agents_profile_credential.py,sha256=4RtP_-koDtuKADkR0JIXPUIGVjAuFrkrqiVlWs6UbmI,3246
105
105
  asteroid_odyssey/models/agents_profile_credential_update.py,sha256=nsdvzfhZ0uZPp5Vytx5l8Wi5I3UTJfHVsCxPAsV3-IY,2926
106
+ asteroid_odyssey/models/agents_profile_custom_proxy_config_input.py,sha256=yviuxgw3zPTmwNOMz7NSDmjaCeoQg1RPZPm9Yvf-7YU,3165
107
+ asteroid_odyssey/models/agents_profile_custom_proxy_config_output.py,sha256=g-JaZdUiPUQTiwBiHRuCJSXd7qLhISykk4_XNj-9Wfg,2784
106
108
  asteroid_odyssey/models/agents_profile_operating_system.py,sha256=xQCfTpEEMtzXtTnNcWerahiL7J4_J1f-VUm-c74Rxig,814
107
- asteroid_odyssey/models/agents_profile_proxy_type.py,sha256=NyLZ_oUcfOz47MFZhnXfx_9oe25gdZFGYykC83ZoP_Q,831
109
+ asteroid_odyssey/models/agents_profile_proxy_mode.py,sha256=efPd1SUqyUyPcv_3R9qRUEN-9wYkXiHko2v9aw-D3rk,804
110
+ asteroid_odyssey/models/agents_profile_proxy_type.py,sha256=-jB4630yA8T9nuhfsnfoKI9LfD6mxDgnk7Nc7hFAdjw,839
108
111
  asteroid_odyssey/models/agents_profile_same_site.py,sha256=NBMQWIzxbGPZwghb4r7wl9lHqisvgXNzpMMNf8RYb9Q,800
109
112
  asteroid_odyssey/models/agents_profile_sort_field.py,sha256=mLH_ycO9YNwwSMExi193Ty7MqyiEUvjNxd5FBOUUdHA,837
110
- asteroid_odyssey/models/agents_profile_update_agent_profile_request.py,sha256=BFFpF69B5EnvVQiRwX-yoOTFbFELnODAsQdUFqHZSso,8593
113
+ asteroid_odyssey/models/agents_profile_update_agent_profile_request.py,sha256=9b60K7mbjS8VwmhTB4NqWRtDeQMVc3HuxTYqCte7Nf0,9535
111
114
  asteroid_odyssey/models/common_bad_request_error_body.py,sha256=cZQcZH6c2RmQleZe57-mfUsCKW74lGGtVMWbJFGc1ho,2889
112
115
  asteroid_odyssey/models/common_error.py,sha256=to8zl1yPqcf8hRXEZeOrhuA_jWhmpaMmly5Y_Xl129k,2551
113
116
  asteroid_odyssey/models/common_forbidden_error_body.py,sha256=9yADAujD_9eTW4BtZ7oYifmFCDTpAw-j1jEEJhwdAVs,2885
@@ -118,7 +121,7 @@ asteroid_odyssey/models/common_sort_direction.py,sha256=UBW99PM3QRGRRE7dB5OSBhmh
118
121
  asteroid_odyssey/models/common_unauthorized_error_body.py,sha256=Ng62vZVuPWEkTvdnYimbItSKhUGT9G52ZOapMQ2O7Xg,2897
119
122
  asteroid_odyssey/models/executions_list200_response.py,sha256=hbMbbsh7F8Cjl3S2hhRkcH4cvHCL24TVz8fwhGE9LfI,3288
120
123
  asteroid_odyssey/models/version.py,sha256=Vjiri_a5CcDJ1lSziRqif5HuFpaxneVDLIB1r8SFIkE,707
121
- asteroid_odyssey-1.6.51.dist-info/METADATA,sha256=S8Cb6fjBfXR2T7CNIbcmk30-KrDH4ouaju5YOZOxEac,1890
122
- asteroid_odyssey-1.6.51.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
123
- asteroid_odyssey-1.6.51.dist-info/top_level.txt,sha256=h4T6NKscnThJ4Nhzors2NKlJeZzepnM7XvDgsnfi5HA,17
124
- asteroid_odyssey-1.6.51.dist-info/RECORD,,
124
+ asteroid_odyssey-1.6.89.dist-info/METADATA,sha256=5RgT_0HjSODZqubzpNSOrTGeGuXEDd7xMeSFz_WMmNU,1890
125
+ asteroid_odyssey-1.6.89.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
126
+ asteroid_odyssey-1.6.89.dist-info/top_level.txt,sha256=h4T6NKscnThJ4Nhzors2NKlJeZzepnM7XvDgsnfi5HA,17
127
+ asteroid_odyssey-1.6.89.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5