2323
2424from .._utils .endpoints import get_control_plane_endpoint , get_data_plane_endpoint
2525from .config import BrowserExtension , ProfileConfiguration , ProxyConfiguration , ViewportConfiguration
26+ from .config import Certificate , EnterprisePolicy , EnterprisePolicyS3Location , ResourceLocation
2627
2728
2829def _to_dict (value ):
@@ -116,6 +117,8 @@ def create_browser(
116117 description : Optional [str ] = None ,
117118 recording : Optional [Dict ] = None ,
118119 browser_signing : Optional [Dict ] = None ,
120+ enterprise_policies : Optional [List [Union [EnterprisePolicy , Dict [str , Any ]]]] = None ,
121+ certificates : Optional [List [Union [Certificate , Dict [str , Any ]]]] = None ,
119122 tags : Optional [Dict [str , str ]] = None ,
120123 client_token : Optional [str ] = None ,
121124 ) -> Dict :
@@ -148,6 +151,11 @@ def create_browser(
148151 {
149152 "enabled": True
150153 }
154+ enterprise_policies (Optional[List[Union[EnterprisePolicy, Dict]]]): Chromium
155+ enterprise policies at managed enforcement level. Up to 10 policy files,
156+ each .json and max 5MB, from a same-region S3 bucket.
157+ certificates (Optional[List[Union[Certificate, Dict]]]): Root CA certificates
158+ from Secrets Manager for the browser to trust.
151159 tags (Optional[Dict[str, str]]): Tags for the browser
152160 client_token (Optional[str]): Idempotency token
153161
@@ -194,6 +202,12 @@ def create_browser(
194202 request_params ["browserSigning" ] = browser_signing
195203 self .logger .info ("🔐 Web Bot Auth (browserSigning) enabled" )
196204
205+ if enterprise_policies :
206+ request_params ["enterprisePolicies" ] = [_to_dict (p ) for p in enterprise_policies ]
207+
208+ if certificates :
209+ request_params ["certificates" ] = [_to_dict (c ) for c in certificates ]
210+
197211 if tags :
198212 request_params ["tags" ] = tags
199213
@@ -299,6 +313,8 @@ def start(
299313 proxy_configuration : Optional [Union [ProxyConfiguration , Dict [str , Any ]]] = None ,
300314 extensions : Optional [List [Union [BrowserExtension , Dict [str , Any ]]]] = None ,
301315 profile_configuration : Optional [Union [ProfileConfiguration , Dict [str , Any ]]] = None ,
316+ enterprise_policies : Optional [List [Union [EnterprisePolicy , Dict [str , Any ]]]] = None ,
317+ certificates : Optional [List [Union [Certificate , Dict [str , Any ]]]] = None ,
302318 ) -> str :
303319 """Start a browser sandbox session.
304320
@@ -324,6 +340,11 @@ def start(
324340 configuration for persisting browser state across sessions. Can be a
325341 ProfileConfiguration dataclass or a plain dict:
326342 {"profileIdentifier": "my-profile-id"}
343+ enterprise_policies (Optional[List[Union[EnterprisePolicy, Dict]]]): Chromium
344+ enterprise policies at recommended enforcement level. Up to 10 policy files,
345+ each .json and max 5MB, from a same-region S3 bucket.
346+ certificates (Optional[List[Union[Certificate, Dict]]]): Root CA certificates
347+ from Secrets Manager for the browser session to trust.
327348
328349 Returns:
329350 str: The session ID of the newly created session.
@@ -373,6 +394,12 @@ def start(
373394 if profile_configuration is not None :
374395 request_params ["profileConfiguration" ] = _to_dict (profile_configuration )
375396
397+ if enterprise_policies is not None :
398+ request_params ["enterprisePolicies" ] = [_to_dict (p ) for p in enterprise_policies ]
399+
400+ if certificates is not None :
401+ request_params ["certificates" ] = [_to_dict (c ) for c in certificates ]
402+
376403 response = self .data_plane_client .start_browser_session (** request_params )
377404
378405 self .identifier = response ["browserIdentifier" ]
@@ -633,6 +660,8 @@ def browser_session(
633660 proxy_configuration : Optional [Union [ProxyConfiguration , Dict [str , Any ]]] = None ,
634661 extensions : Optional [List [Union [BrowserExtension , Dict [str , Any ]]]] = None ,
635662 profile_configuration : Optional [Union [ProfileConfiguration , Dict [str , Any ]]] = None ,
663+ enterprise_policies : Optional [List [Union [EnterprisePolicy , Dict [str , Any ]]]] = None ,
664+ certificates : Optional [List [Union [Certificate , Dict [str , Any ]]]] = None ,
636665) -> Generator [BrowserClient , None , None ]:
637666 """Context manager for creating and managing a browser sandbox session.
638667
@@ -687,6 +716,10 @@ def browser_session(
687716 start_kwargs ["extensions" ] = extensions
688717 if profile_configuration is not None :
689718 start_kwargs ["profile_configuration" ] = profile_configuration
719+ if enterprise_policies is not None :
720+ start_kwargs ["enterprise_policies" ] = enterprise_policies
721+ if certificates is not None :
722+ start_kwargs ["certificates" ] = certificates
690723
691724 client .start (** start_kwargs )
692725
0 commit comments