@@ -171,6 +171,7 @@ def __init__(
171171 org_id : Optional [str ] = None ,
172172 url : Optional [str ] = None ,
173173 edge_url : Optional [str ] = None ,
174+ edge : Optional [str ] = None ,
174175 ):
175176 """
176177 Initialize the Axiom client.
@@ -187,6 +188,12 @@ def __init__(
187188 requests use `/v1/ingest/{dataset}` and query requests use
188189 `/v1/query/_apl`.
189190 Must be passed explicitly (not read from environment).
191+ Takes precedence over `edge`.
192+ edge: Edge domain for ingest/query operations (e.g.,
193+ "eu-central-1.aws.edge.axiom.co"). When set, ingest
194+ requests use `https://{edge}/v1/ingest/{dataset}` and query
195+ requests use `https://{edge}/v1/query/_apl`.
196+ Must be passed explicitly (not read from environment).
190197 """
191198 # fallback to env variables if not provided
192199 if token is None :
@@ -195,19 +202,21 @@ def __init__(
195202 org_id = os .getenv ("AXIOM_ORG_ID" )
196203 if url is None :
197204 url = os .getenv ("AXIOM_URL" )
198- # Note: edge_url is NOT auto-read from environment.
205+ # Note: edge_url and edge are NOT auto-read from environment.
199206 # Edge configuration must be explicit to avoid accidentally routing
200- # all requests through edge when AXIOM_EDGE_URL is set for
207+ # all requests through edge when AXIOM_EDGE_URL or AXIOM_EDGE is set for
201208 # edge-specific tests. Create a separate Client with edge_url
202209 # for edge operations.
203210
204211 # Normalize empty strings to None for edge config
205212 edge_url = edge_url or None
213+ edge = edge or None
206214
207215 # Store for building ingest/query endpoints
208216 self ._token = token
209217 self ._url = url
210218 self ._edge_url = edge_url
219+ self ._edge = edge
211220
212221 # Determine API base URL (for non-ingest/query operations)
213222 # This always uses AXIOM_URL (api.axiom.co) unless a custom url is set
@@ -258,45 +267,51 @@ def __init__(
258267
259268 def is_edge_configured (self ) -> bool :
260269 """Check if edge is configured."""
261- return self ._edge_url is not None
270+ return self ._edge_url is not None or self . _edge is not None
262271
263272 def _get_edge_ingest_url (self , dataset : str ) -> Optional [str ]:
264273 """
265274 Get the full edge ingest URL for a dataset.
266275 Returns None if edge is not configured.
267276 """
268- if self ._edge_url is None :
269- return None
277+ if self ._edge_url is not None :
278+ url = self ._edge_url .rstrip ("/" )
279+ parsed = urlparse (url )
280+ path = parsed .path
281+
282+ # If path is empty or just "/", append edge ingest format
283+ if path == "" or path == "/" :
284+ return f"{ parsed .scheme } ://{ parsed .netloc } /v1/ingest/{ dataset } "
270285
271- url = self ._edge_url .rstrip ("/" )
272- parsed = urlparse (url )
273- path = parsed .path
286+ # edge_url has a custom path, use as-is
287+ return url
274288
275- # If path is empty or just "/", append edge ingest format
276- if path == "" or path == "/" :
277- return f"{ parsed .scheme } ://{ parsed .netloc } /v1/ingest/{ dataset } "
289+ if self ._edge is not None :
290+ return f"https://{ self ._edge .rstrip ('/' )} /v1/ingest/{ dataset } "
278291
279- # edge_url has a custom path, use as-is
280- return url
292+ return None
281293
282294 def _get_edge_query_url (self ) -> Optional [str ]:
283295 """
284296 Get the full edge query URL.
285297 Returns None if edge is not configured.
286298 """
287- if self ._edge_url is None :
288- return None
299+ if self ._edge_url is not None :
300+ url = self ._edge_url .rstrip ("/" )
301+ parsed = urlparse (url )
302+ path = parsed .path
303+
304+ # If path is empty or just "/", append edge query format
305+ if path == "" or path == "/" :
306+ return f"{ parsed .scheme } ://{ parsed .netloc } /v1/query/_apl"
289307
290- url = self ._edge_url .rstrip ("/" )
291- parsed = urlparse (url )
292- path = parsed .path
308+ # edge_url has a custom path, use as-is
309+ return url
293310
294- # If path is empty or just "/", append edge query format
295- if path == "" or path == "/" :
296- return f"{ parsed .scheme } ://{ parsed .netloc } /v1/query/_apl"
311+ if self ._edge is not None :
312+ return f"https://{ self ._edge .rstrip ('/' )} /v1/query/_apl"
297313
298- # edge_url has a custom path, use as-is
299- return url
314+ return None
300315
301316 def before_shutdown (self , func : Callable ):
302317 self .before_shutdown_funcs .append (func )
0 commit comments