3333 Realm ,
3434)
3535
36+ MASTER_REALM = "master"
37+
3638
3739class OAuthTokenResponse (BaseModel ):
3840 """Response model for OpenRemote OAuth token."""
@@ -148,7 +150,9 @@ def health_check(self) -> bool:
148150 self .logger .error (f"OpenRemote API is not healthy: { e } " )
149151 return False
150152
151- def retrieve_asset_datapoint_period (self , asset_id : str , attribute_name : str ) -> AssetDatapointPeriod | None :
153+ def get_asset_datapoint_period (
154+ self , asset_id : str , attribute_name : str , realm : str = MASTER_REALM
155+ ) -> AssetDatapointPeriod | None :
152156 """Retrieve the datapoints timestamp period of a given asset attribute.
153157
154158 Args:
@@ -160,7 +164,7 @@ def retrieve_asset_datapoint_period(self, asset_id: str, attribute_name: str) ->
160164 """
161165
162166 query = f"?assetId={ asset_id } &attributeName={ attribute_name } "
163- url = f"{ self .openremote_url } /api/master /asset/datapoint/periods{ query } "
167+ url = f"{ self .openremote_url } /api/{ realm } /asset/datapoint/periods{ query } "
164168
165169 request = self .__build_request ("GET" , url )
166170
@@ -173,12 +177,13 @@ def retrieve_asset_datapoint_period(self, asset_id: str, attribute_name: str) ->
173177 self .logger .error (f"Error retrieving asset datapoint period: { e } " )
174178 return None
175179
176- def retrieve_historical_datapoints (
180+ def get_historical_datapoints (
177181 self ,
178182 asset_id : str ,
179183 attribute_name : str ,
180184 from_timestamp : int ,
181185 to_timestamp : int ,
186+ realm : str = MASTER_REALM ,
182187 ) -> list [AssetDatapoint ] | None :
183188 """Retrieve the historical data points of a given asset attribute.
184189
@@ -187,13 +192,13 @@ def retrieve_historical_datapoints(
187192 attribute_name: The name of the attribute.
188193 from_timestamp: Epoch timestamp in milliseconds.
189194 to_timestamp: Epoch timestamp in milliseconds.
190-
195+ realm: The realm to retrieve assets from defaulting to MASTER_REALM.
191196 Returns:
192197 list[AssetDatapoint] | None: List of historical data points or None
193198 """
194199
195200 params = f"{ asset_id } /{ attribute_name } "
196- url = f"{ self .openremote_url } /api/master /asset/datapoint/{ params } "
201+ url = f"{ self .openremote_url } /api/{ realm } /asset/datapoint/{ params } "
197202
198203 request_body = AssetDatapointQuery (
199204 fromTimestamp = from_timestamp ,
@@ -212,20 +217,22 @@ def retrieve_historical_datapoints(
212217 self .logger .error (f"Error retrieving historical datapoints: { e } " )
213218 return None
214219
215- def write_predicted_datapoints (self , asset_id : str , attribute_name : str , datapoints : list [AssetDatapoint ]) -> bool :
220+ def write_predicted_datapoints (
221+ self , asset_id : str , attribute_name : str , datapoints : list [AssetDatapoint ], realm : str = MASTER_REALM
222+ ) -> bool :
216223 """Write the predicted data points of a given asset attribute.
217224
218225 Args:
219226 asset_id: The ID of the asset.
220227 attribute_name: The name of the attribute.
221228 datapoints: The data points to write.
222-
229+ realm: The realm to write the data points to defaulting to MASTER_REALM.
223230 Returns:
224231 bool: True if successful
225232 """
226233
227234 params = f"{ asset_id } /{ attribute_name } "
228- url = f"{ self .openremote_url } /api/master /asset/predicted/{ params } "
235+ url = f"{ self .openremote_url } /api/{ realm } /asset/predicted/{ params } "
229236
230237 datapoints_json = [datapoint .model_dump () for datapoint in datapoints ]
231238
@@ -240,12 +247,13 @@ def write_predicted_datapoints(self, asset_id: str, attribute_name: str, datapoi
240247 self .logger .error (f"Error writing predicted datapoints: { e } " )
241248 return False
242249
243- def retrieve_predicted_datapoints (
250+ def get_predicted_datapoints (
244251 self ,
245252 asset_id : str ,
246253 attribute_name : str ,
247254 from_timestamp : int ,
248255 to_timestamp : int ,
256+ realm : str = MASTER_REALM ,
249257 ) -> list [AssetDatapoint ] | None :
250258 """Retrieve the predicted data points of a given asset attribute.
251259
@@ -254,13 +262,13 @@ def retrieve_predicted_datapoints(
254262 attribute_name: The name of the attribute.
255263 from_timestamp: Epoch timestamp in milliseconds.
256264 to_timestamp: Epoch timestamp in milliseconds.
257-
265+ realm: The realm to retrieve assets from defaulting to MASTER_REALM.
258266 Returns:
259267 list[AssetDatapoint] | None: List of predicted data points or None
260268 """
261269
262270 params = f"{ asset_id } /{ attribute_name } "
263- url = f"{ self .openremote_url } /api/master /asset/predicted/{ params } "
271+ url = f"{ self .openremote_url } /api/{ realm } /asset/predicted/{ params } "
264272
265273 request_body = AssetDatapointQuery (
266274 fromTimestamp = from_timestamp ,
@@ -279,21 +287,22 @@ def retrieve_predicted_datapoints(
279287 self .logger .error (f"Error retrieving predicted datapoints: { e } " )
280288 return None
281289
282- def retrieve_assets_with_historical_datapoints (self , realm : str ) -> list [Asset ] | None :
290+ def get_assets_with_historical_data (self , query_realm : str , realm : str = MASTER_REALM ) -> list [Asset ] | None :
283291 """Retrieve all assets for a given realm that store historical datapoints.
284292
285293 Args:
286- realm: The realm to retrieve assets from.
294+ query_realm: The realm for the asset query.
295+ realm: The realm to retrieve assets from defaulting to MASTER_REALM.
287296
288297 Returns:
289298 list[Asset] | None: List of assets or None
290299 """
291300
292- url = f"{ self .openremote_url } /api/master /asset/query"
301+ url = f"{ self .openremote_url } /api/{ realm } /asset/query"
293302
294303 # OR Asset Query to retrieve only assets that have attributes with "meta": {"storeDataPoints": true}
295304 asset_query = {
296- "realm" : {"name" : realm },
305+ "realm" : {"name" : query_realm },
297306 "attributes" : {
298307 "operator" : "AND" ,
299308 "items" : [
@@ -342,19 +351,22 @@ def _filter_asset_attributes(asset_obj: Asset) -> Asset:
342351 self .logger .error (f"Error retrieving assets with storeDataPoints: { e } " )
343352 return None
344353
345- def retrieve_assets_by_ids (self , asset_ids : list [str ], realm : str ) -> list [Asset ] | None :
354+ def get_assets_by_ids (
355+ self , asset_ids : list [str ], query_realm : str , realm : str = MASTER_REALM
356+ ) -> list [Asset ] | None :
346357 """Retrieve assets by their IDs.
347358
348359 Args:
349360 asset_ids: The IDs of the assets to retrieve.
350- realm: The realm to retrieve assets from.
361+ query_realm: The realm for the asset query.
362+ realm: The realm to retrieve assets from defaulting to MASTER_REALM.
351363
352364 Returns:
353365 list[Asset] | None: List of assets or None
354366 """
355367
356- url = f"{ self .openremote_url } /api/master /asset/query"
357- asset_query = {"recursive" : False , "realm" : {"name" : realm }, "ids" : asset_ids }
368+ url = f"{ self .openremote_url } /api/{ realm } /asset/query"
369+ asset_query = {"recursive" : False , "realm" : {"name" : query_realm }, "ids" : asset_ids }
358370
359371 request = self .__build_request ("POST" , url , data = asset_query )
360372
@@ -368,13 +380,16 @@ def retrieve_assets_by_ids(self, asset_ids: list[str], realm: str) -> list[Asset
368380 self .logger .error (f"Error retrieving assets: { e } " )
369381 return None
370382
371- def retrieve_manager_config (self ) -> ManagerConfig | None :
383+ def get_manager_config (self , realm : str = MASTER_REALM ) -> ManagerConfig | None :
372384 """Retrieve the manager configuration.
373385
386+ Args:
387+ realm: The realm to retrieve the manager configuration from defaulting to MASTER_REALM.
388+
374389 Returns: ManagerConfig | None: The manager configuration or None
375390 """
376391
377- url = f"{ self .openremote_url } /api/master /configuration/manager"
392+ url = f"{ self .openremote_url } /api/{ realm } /configuration/manager"
378393 request = self .__build_request ("GET" , url )
379394
380395 with httpx .Client (timeout = self .timeout ) as client :
@@ -388,9 +403,12 @@ def retrieve_manager_config(self) -> ManagerConfig | None:
388403 self .logger .error (f"Error retrieving manager config: { e } " )
389404 return None
390405
391- def retrieve_accessible_realms (self , realm : str ) -> list [BasicRealm ] | None :
406+ def get_accessible_realms (self , realm : str = MASTER_REALM ) -> list [BasicRealm ] | None :
392407 """Retrieves accessible realms for the current user.
393408
409+ Args:
410+ realm: The realm to retrieve realms from defaulting to MASTER_REALM.
411+
394412 Returns:
395413 list[BasicRealm] | None: List of accessible realms or None
396414 """
@@ -408,14 +426,17 @@ def retrieve_accessible_realms(self, realm: str) -> list[BasicRealm] | None:
408426 self .logger .error (f"Error retrieving accessible realms: { e } " )
409427 return None
410428
411- def retrieve_all_realms (self ) -> list [Realm ] | None :
429+ def get_all_enabled_realms (self , realm : str = MASTER_REALM ) -> list [Realm ] | None :
412430 """Retrieves all realms and filters out disabled ones.
413431
432+ Args:
433+ realm: The realm to retrieve realms from defaulting to MASTER_REALM.
434+
414435 Returns:
415436 list[Realm] | None: List of enabled realms or None
416437 """
417438
418- url = f"{ self .openremote_url } /api/master /realm"
439+ url = f"{ self .openremote_url } /api/{ realm } /realm"
419440 request = self .__build_request ("GET" , url )
420441
421442 with httpx .Client (timeout = self .timeout ) as client :
0 commit comments