1"""Implementation of Submodel related API calls."""
5from typing
import TYPE_CHECKING
8from pydantic
import BaseModel
11 from aas_http_client.classes.client.aas_client
import AasHttpClient
23_logger = logging.getLogger(__name__)
27 """Implementation of Submodel related API calls."""
29 def __init__(self, client:
"AasHttpClient"):
30 """Initializes the SmImplementation with the given parameters."""
33 session = client.get_session()
36 "HTTP session is not initialized in the client. Call 'initialize()' method of the client before creating SubmodelRegistryImplementation instance."
39 self._session: requests.Session = session
42 def get_submodel_by_id(self, submodel_identifier: str, level: str =
"", extent: str =
"") -> dict |
None:
43 """Returns a specific Submodel.
45 :param submodel_identifier: The Submodels unique id
46 :param level: Determines the structural depth of the respective resource content. Available values : deep, core
47 :param extent: Determines to which extent the resource is being serialized. Available values : withBlobValue, withoutBlobValue
48 :return: Submodel data or None if an error occurred
50 if not self.
_client.encoded_ids:
51 submodel_identifier = encode_base_64(submodel_identifier)
53 url = f
"{self._client.base_url}/submodels/{submodel_identifier}"
55 params: dict[str, str] = {}
57 params[
"level"] = level
59 params[
"extent"] = extent
64 response = self._session.get(url, params=params, timeout=self.
_client.time_out)
65 _logger.debug(f
"Call REST API url '{response.url}'")
67 if response.status_code == STATUS_CODE_404:
68 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
69 _logger.warning(f
"Submodel with id '{submodel_identifier}' not found.")
70 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
71 _logger.debug(f
"Submodel with id '{submodel_identifier}' not found.")
73 _logger.debug(response.text)
76 if response.status_code != STATUS_CODE_200:
77 log_response(response)
80 except requests.exceptions.RequestException
as e:
81 _logger.error(f
"Error call REST API: {e}")
84 content = response.content.decode(
"utf-8")
85 return json.loads(content)
89 """Updates a existing Submodel.
91 :param submodel_identifier: The Submodels unique id
92 :param request_body: Json data of the Submodel to update
93 :return: True if the update was successful, False otherwise
95 if not self.
_client.encoded_ids:
96 submodel_identifier = encode_base_64(submodel_identifier)
98 url = f
"{self._client.base_url}/submodels/{submodel_identifier}"
103 response = self._session.put(url, json=request_body, timeout=self.
_client.time_out)
104 _logger.debug(f
"Call REST API url '{response.url}'")
106 if response.status_code == STATUS_CODE_404:
107 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
108 _logger.warning(f
"Submodel with id '{submodel_identifier}' not found.")
109 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
110 _logger.debug(f
"Submodel with id '{submodel_identifier}' not found.")
112 _logger.debug(response.text)
115 if response.status_code != STATUS_CODE_204:
116 log_response(response)
119 except requests.exceptions.RequestException
as e:
120 _logger.error(f
"Error call REST API: {e}")
127 """Deletes a Submodel.
129 :param submodel_identifier: The Submodels unique id
130 :return: True if the deletion was successful, False otherwise
132 if not self.
_client.encoded_ids:
133 submodel_identifier = encode_base_64(submodel_identifier)
135 url = f
"{self._client.base_url}/submodels/{submodel_identifier}"
140 response = self._session.delete(url, timeout=self.
_client.time_out)
141 _logger.debug(f
"Call REST API url '{response.url}'")
143 if response.status_code == STATUS_CODE_404:
144 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
145 _logger.warning(f
"Submodel with id '{submodel_identifier}' not found.")
146 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
147 _logger.debug(f
"Submodel with id '{submodel_identifier}' not found.")
149 _logger.debug(response.text)
152 if response.status_code != STATUS_CODE_204:
153 log_response(response)
156 except requests.exceptions.RequestException
as e:
157 _logger.error(f
"Error call REST API: {e}")
164 self, submodel_identifier: str, id_short_path: str, level: str =
"", extent: str =
""
166 """Returns a specific submodel element from the Submodel at a specified path.
168 :param submodel_identifier: The Submodels unique id
169 :param id_short_path: IdShort path to the submodel element (dot-separated)
170 :param level: Determines the structural depth of the respective resource content. Available values : deep, core
171 :param extent: Determines to which extent the resource is being serialized. Available values : withBlobValue, withoutBlobValue
172 :return: Submodel element data or None if an error occurred
175 submodel_identifier = encode_base_64(submodel_identifier)
177 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/submodel-elements/{id_short_path}"
179 params: dict[str, str] = {}
181 params[
"level"] = level
183 params[
"extent"] = extent
188 response = self._session.get(url, params=params, timeout=self.
_client.time_out)
189 _logger.debug(f
"Call REST API url '{response.url}'")
191 if response.status_code == STATUS_CODE_404:
192 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
193 _logger.warning(f
"Submodel with id '{submodel_identifier}' or Submodel element with IDShort path '{id_short_path}' not found.")
194 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
195 _logger.debug(f
"Submodel with id '{submodel_identifier}' or Submodel element with IDShort path '{id_short_path}' not found.")
197 _logger.debug(response.text)
200 if response.status_code != STATUS_CODE_200:
201 log_response(response)
204 except requests.exceptions.RequestException
as e:
205 _logger.error(f
"Error call REST API: {e}")
208 content = response.content.decode(
"utf-8")
209 return json.loads(content)
213 """Creates or updates an existing submodel element at a specified path within submodel elements hierarchy.
215 :param submodel_identifier: The Submodels unique id
216 :param id_short_path: IdShort path to the submodel element (dot-separated)
217 :param request_body: Data for the submodel element
218 :param level: Determines the structural depth of the respective resource content. Available values : deep, core
219 :return: True if the operation was successful, False otherwise
221 if not self.
_client.encoded_ids:
222 submodel_identifier = encode_base_64(submodel_identifier)
224 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/submodel-elements/{id_short_path}"
226 params: dict[str, str] = {}
228 params[
"level"] = level
233 response = self._session.put(url, json=request_body, params=params, timeout=self.
_client.time_out)
234 _logger.debug(f
"Call REST API url '{response.url}'")
236 if response.status_code == STATUS_CODE_404:
237 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
238 _logger.warning(f
"Submodel with id '{submodel_identifier}' or Submodel element with IDShort path '{id_short_path}' not found.")
239 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
240 _logger.debug(f
"Submodel with id '{submodel_identifier}' or Submodel element with IDShort path '{id_short_path}' not found.")
242 _logger.debug(response.text)
245 if response.status_code != STATUS_CODE_204:
246 log_response(response)
249 except requests.exceptions.RequestException
as e:
250 _logger.error(f
"Error call REST API: {e}")
257 self, submodel_identifier: str, id_short_path: str, request_body: dict, level: str =
"", extent: str =
""
259 """Creates a new submodel element at a specified path within submodel elements hierarchy.
261 :param submodel_identifier: The Submodels unique id
262 :param id_short_path: IdShort path to the submodel element (dot-separated)
263 :param request_body: Data for the new Submodel element
264 :param level: Determines the structural depth of the respective resource content. Available values : deep, core
265 :param extent: Determines to which extent the resource is being serialized. Available values : withBlobValue, withoutBlobValue
266 :return: Submodel element data or None if an error occurred
269 submodel_identifier = encode_base_64(submodel_identifier)
271 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/submodel-elements/{id_short_path}"
273 params: dict[str, str] = {}
275 params[
"level"] = level
277 params[
"extent"] = extent
282 response = self._session.post(url, json=request_body, params=params, timeout=self.
_client.time_out)
283 _logger.debug(f
"Call REST API url '{response.url}'")
285 if response.status_code == STATUS_CODE_404:
286 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
287 _logger.warning(f
"Submodel with id '{submodel_identifier}' or Submodel element with IDShort path '{id_short_path}' not found.")
288 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
289 _logger.debug(f
"Submodel with id '{submodel_identifier}' or Submodel element with IDShort path '{id_short_path}' not found.")
291 _logger.debug(response.text)
294 if response.status_code != STATUS_CODE_201:
295 log_response(response)
298 except requests.exceptions.RequestException
as e:
299 _logger.error(f
"Error call REST API: {e}")
302 content = response.content.decode(
"utf-8")
303 return json.loads(content)
307 """Deletes a submodel element at a specified path within the submodel elements hierarchy.
309 :param submodel_identifier: The Submodels unique id
310 :param id_short_path: IdShort path to the submodel element (dot-separated)
311 :return: True if the deletion was successful, False otherwise
313 if not self.
_client.encoded_ids:
314 submodel_identifier = encode_base_64(submodel_identifier)
316 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/submodel-elements/{id_short_path}"
320 response = self._session.delete(url, timeout=self.
_client.time_out)
321 _logger.debug(f
"Call REST API url '{response.url}'")
323 if response.status_code == STATUS_CODE_404:
324 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
325 _logger.warning(f
"Submodel with id '{submodel_identifier}' or Submodel element with IDShort path '{id_short_path}' not found.")
326 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
327 _logger.debug(f
"Submodel with id '{submodel_identifier}' or Submodel element with IDShort path '{id_short_path}' not found.")
329 _logger.debug(response.text)
332 if response.status_code != STATUS_CODE_204:
333 log_response(response)
336 except requests.exceptions.RequestException
as e:
337 _logger.error(f
"Error call REST API: {e}")
344 self, semantic_id: str =
"", id_short: str =
"", limit: int = 0, cursor: str =
"", level: str =
"", extent: str =
""
346 """Returns all Submodels.
348 :param semantic_id: The value of the semantic id reference (UTF8-BASE64-URL-encoded)
349 :param id_short: The Submodels IdShort
350 :param limit: The maximum number of elements in the response array
351 :param cursor: A server-generated identifier retrieved from pagingMetadata that specifies from which position the result listing should continue
352 :param level: Determines the structural depth of the respective resource content. Available values : deep, core
353 :param extent: Determines to which extent the resource is being serialized. Available values : withBlobValue, withoutBlobValue
354 :return: List of Submodel data or None if an error occurred
356 url = f
"{self._client.base_url}/submodels"
358 params: dict[str, str] = {}
360 params[
"semanticId"] = semantic_id
362 params[
"idShort"] = id_short
364 params[
"limit"] = str(limit)
366 params[
"cursor"] = cursor
368 params[
"level"] = level
370 params[
"extent"] = extent
375 response = self._session.get(url, params=params, timeout=self.
_client.time_out)
376 _logger.debug(f
"Call REST API url '{response.url}'")
378 if response.status_code != STATUS_CODE_200:
379 log_response(response)
382 except requests.exceptions.RequestException
as e:
383 _logger.error(f
"Error call REST API: {e}")
386 content = response.content.decode(
"utf-8")
387 return json.loads(content)
391 """Creates a new Submodel.
393 :param request_body: Json data of the Submodel to post
394 :return: Submodel data or None if an error occurred
396 url = f
"{self._client.base_url}/submodels"
401 response = self._session.post(url, json=request_body, timeout=self.
_client.time_out)
402 _logger.debug(f
"Call REST API url '{response.url}'")
404 if response.status_code != STATUS_CODE_201:
405 log_response(response)
408 except requests.exceptions.RequestException
as e:
409 _logger.error(f
"Error call REST API: {e}")
412 content = response.content.decode(
"utf-8")
413 return json.loads(content)
417 self, submodel_identifier: str, limit: int = 100, cursor: str =
"", level: str =
"", extent: str =
""
419 """Returns all submodel elements including their hierarchy.
421 :param submodel_identifier: The Submodels unique id
422 :param limit: The maximum number of elements in the response array
423 :param cursor: A server-generated identifier retrieved from pagingMetadata that specifies from which position the result listing should continue
424 :param level: Determines the structural depth of the respective resource content. Available values : deep, core
425 :param extent: Determines to which extent the resource is being serialized. Available values : withBlobValue, withoutBlobValue
426 :return: List of Submodel element data or None if an error occurred
429 submodel_identifier = encode_base_64(submodel_identifier)
431 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/submodel-elements"
433 params: dict[str, str] = {}
435 params[
"limit"] = str(limit)
437 params[
"cursor"] = cursor
439 params[
"level"] = level
441 params[
"extent"] = extent
446 response = self._session.get(url, params=params, timeout=self.
_client.time_out)
447 _logger.debug(f
"Call REST API url '{response.url}'")
449 if response.status_code != STATUS_CODE_200:
450 log_response(response)
453 except requests.exceptions.RequestException
as e:
454 _logger.error(f
"Error call REST API: {e}")
457 content = response.content.decode(
"utf-8")
458 return json.loads(content)
462 """Creates a new submodel element.
464 :param submodel_identifier: The Submodels unique id
465 :param request_body: Data for the new Submodel element
466 :return: Submodel element data or None if an error occurred
468 if not self.
_client.encoded_ids:
469 submodel_identifier = encode_base_64(submodel_identifier)
471 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/submodel-elements"
476 response = self._session.post(url, json=request_body, timeout=self.
_client.time_out)
477 _logger.debug(f
"Call REST API url '{response.url}'")
479 if response.status_code != STATUS_CODE_201:
480 log_response(response)
483 except requests.exceptions.RequestException
as e:
484 _logger.error(f
"Error call REST API: {e}")
487 content = response.content.decode(
"utf-8")
488 return json.loads(content)
492 """Synchronously invokes an Operation at a specified path.
494 :param submodel_identifier: The Submodels unique id
495 :param id_short_path: IdShort path to the operation element (dot-separated)
496 :param request_body: Input parameters for the operation
497 :param async_: Determines whether an operation invocation is performed asynchronously or synchronously
498 :return: Operation result or None if an error occurred
500 if not self.
_client.encoded_ids:
501 submodel_identifier = encode_base_64(submodel_identifier)
503 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/submodel-elements/{id_short_path}/invoke"
508 response = self._session.post(url, json=request_body, timeout=self.
_client.time_out)
509 _logger.debug(f
"Call REST API url '{response.url}'")
511 if response.status_code != STATUS_CODE_200:
512 log_response(response)
515 except requests.exceptions.RequestException
as e:
516 _logger.error(f
"Error call REST API: {e}")
519 content = response.content.decode(
"utf-8")
520 return json.loads(content)
524 """Retrieves the value of a specific SubmodelElement.
526 :param submodel_identifier: The Submodels unique id
527 :param id_short_path: IdShort path to the submodel element (dot-separated)
528 :return: Submodel element value or None if an error occurred
530 if not self.
_client.encoded_ids:
531 submodel_identifier = encode_base_64(submodel_identifier)
533 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/submodel-elements/{id_short_path}/$value"
538 response = self._session.get(url, timeout=self.
_client.time_out)
539 _logger.debug(f
"Call REST API url '{response.url}'")
541 if response.status_code != STATUS_CODE_200:
542 log_response(response)
545 except requests.exceptions.RequestException
as e:
546 _logger.error(f
"Error call REST API: {e}")
549 content = response.content.decode(
"utf-8")
550 return json.loads(content)
554 self, submodel_identifier: str, id_short_path: str, value: str, level: str =
""
556 """Updates the value of an existing SubmodelElement.
558 :param submodel_identifier: The Submodels unique id
559 :param id_short_path: IdShort path to the submodel element (dot-separated)
560 :param value: Submodel element value to update as string
561 :param level: Determines the structural depth of the respective resource content. Available values : deep, core
562 :return: True if the patch was successful, False otherwise
565 submodel_identifier = encode_base_64(submodel_identifier)
567 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/submodel-elements/{id_short_path}/$value"
569 params: dict[str, str] = {}
571 params[
"level"] = level
576 response = self._session.patch(url, json=value, params=params, timeout=self.
_client.time_out)
577 _logger.debug(f
"Call REST API url '{response.url}'")
579 if response.status_code == STATUS_CODE_404:
580 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
581 _logger.warning(f
"Submodel with id '{submodel_identifier}' or Submodel element with IDShort path '{id_short_path}' not found.")
582 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
583 _logger.debug(f
"Submodel with id '{submodel_identifier}' or Submodel element with IDShort path '{id_short_path}' not found.")
585 _logger.debug(response.text)
588 if response.status_code != STATUS_CODE_204:
589 log_response(response)
592 except requests.exceptions.RequestException
as e:
593 _logger.error(f
"Error call REST API: {e}")
600 """Returns a specific Submodel in the ValueOnly representation.
602 :param submodel_identifier: The Submodels unique id
603 :param level: Determines the structural depth of the respective resource content. Available values : deep, core
604 :param extent: Determines to which extent the resource is being serialized. Available values : withBlobValue, withoutBlobValue
605 :return: Submodel value as dict or None if an error occurred
607 params: dict[str, str] = {}
609 params[
"level"] = level
611 params[
"extent"] = extent
613 if not self.
_client.encoded_ids:
614 submodel_identifier = encode_base_64(submodel_identifier)
616 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/$value"
621 response = self._session.get(url, params=params, timeout=self.
_client.time_out)
622 _logger.debug(f
"Call REST API url '{response.url}'")
624 if response.status_code == STATUS_CODE_404:
625 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
626 _logger.warning(f
"Submodel with id '{submodel_identifier}' not found.")
627 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
628 _logger.debug(f
"Submodel with id '{submodel_identifier}' not found.")
630 _logger.debug(response.text)
633 if response.status_code != STATUS_CODE_200:
634 log_response(response)
637 except requests.exceptions.RequestException
as e:
638 _logger.error(f
"Error call REST API: {e}")
641 content = response.content.decode(
"utf-8")
642 return json.loads(content)
646 """Updates the values of an existing Submodel.
648 :param submodel_identifier: The Submodels unique id
649 :param request_body: Submodel values to update as dict
650 :param level: Determines the structural depth of the respective resource content. Available values : deep, core
651 :return: True if the patch was successful, False otherwise
653 params: dict[str, str] = {}
655 params[
"level"] = level
657 if not self.
_client.encoded_ids:
658 submodel_identifier = encode_base_64(submodel_identifier)
660 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/$value"
665 response = self._session.patch(url, json=request_body, params=params, timeout=self.
_client.time_out)
666 _logger.debug(f
"Call REST API url '{response.url}'")
668 if response.status_code == STATUS_CODE_404:
669 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
670 _logger.warning(f
"Submodel with id '{submodel_identifier}' not found.")
671 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
672 _logger.debug(f
"Submodel with id '{submodel_identifier}' not found.")
674 _logger.debug(response.text)
677 if response.status_code != STATUS_CODE_204:
678 log_response(response)
681 except requests.exceptions.RequestException
as e:
682 _logger.error(f
"Error call REST API: {e}")
689 """Returns the metadata attributes of a specific Submodel.
691 :param submodel_identifier: The Submodels unique id
692 :param level: Determines the structural depth of the respective resource content. Available values : deep, core
693 :return: Metadata attributes of the Submodel as dict or None if an error occurred
695 params: dict[str, str] = {}
697 params[
"level"] = level
699 if not self.
_client.encoded_ids:
700 submodel_identifier = encode_base_64(submodel_identifier)
702 url = f
"{self._client.base_url}/submodels/{submodel_identifier}/$metadata"
707 response = self._session.get(url, params=params, timeout=self.
_client.time_out)
708 _logger.debug(f
"Call REST API url '{response.url}'")
710 if response.status_code == STATUS_CODE_404:
711 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
712 _logger.warning(f
"Submodel with id '{submodel_identifier}' not found.")
713 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
714 _logger.debug(f
"Submodel with id '{submodel_identifier}' not found.")
716 _logger.debug(response.text)
719 if response.status_code != STATUS_CODE_200:
720 log_response(response)
723 except requests.exceptions.RequestException
as e:
724 _logger.error(f
"Error call REST API: {e}")
727 content = response.content.decode(
"utf-8")
728 return json.loads(content)
734 """Updates an existing Submodel.
736 :param submodel_identifier: The Submodels unique id
737 :return: True if the patch was successful, False otherwise
739 if not self.
_client.encoded_ids:
740 submodel_identifier = encode_base_64(submodel_identifier)
742 url = f
"{self._client.base_url}/submodels/{submodel_identifier}"
747 response = self._session.patch(url, json=submodel_data, timeout=self.
_client.time_out)
748 _logger.debug(f
"Call REST API url '{response.url}'")
750 if response.status_code == STATUS_CODE_404:
751 if self.
_client.get_log_intensity() == LogIntensity.HIGH:
752 _logger.warning(f
"Submodel with id '{submodel_identifier}' not found.")
753 elif self.
_client.get_log_intensity() == LogIntensity.STANDARD:
754 _logger.debug(f
"Submodel with id '{submodel_identifier}' not found.")
756 _logger.debug(response.text)
759 if response.status_code != STATUS_CODE_204:
760 log_response(response)
763 except requests.exceptions.RequestException
as e:
764 _logger.error(f
"Error call REST API: {e}")
Implementation of Submodel related API calls.
dict|None get_submodel_by_id(self, str submodel_identifier, str level="", str extent="")
Returns a specific Submodel.
dict|None get_submodel_element_by_path_submodel_repo(self, str submodel_identifier, str id_short_path, str level="", str extent="")
Returns a specific submodel element from the Submodel at a specified path.
__init__(self, "AasHttpClient" client)
Initializes the SmImplementation with the given parameters.
str|None get_submodel_element_by_path_value_only_submodel_repo(self, str submodel_identifier, str id_short_path)
Retrieves the value of a specific SubmodelElement.
dict|None get_all_submodels(self, str semantic_id="", str id_short="", int limit=0, str cursor="", str level="", str extent="")
Returns all Submodels.
dict|None get_submodel_by_id_metadata(self, str submodel_identifier, str level="")
Returns the metadata attributes of a specific Submodel.
dict|None post_submodel(self, dict request_body)
Creates a new Submodel.
dict|None post_submodel_element_by_path_submodel_repo(self, str submodel_identifier, str id_short_path, dict request_body, str level="", str extent="")
Creates a new submodel element at a specified path within submodel elements hierarchy.
bool patch_submodel_element_by_path_value_only_submodel_repo(self, str submodel_identifier, str id_short_path, str value, str level="")
Updates the value of an existing SubmodelElement.
dict|None post_submodel_element_submodel_repo(self, str submodel_identifier, dict request_body)
Creates a new submodel element.
dict|None get_submodel_by_id_value_only(self, str submodel_identifier, str level="", str extent="")
Returns a specific Submodel in the ValueOnly representation.
bool put_submodel_element_by_path_submodel_repo(self, str submodel_identifier, str id_short_path, dict request_body, str level="")
Creates or updates an existing submodel element at a specified path within submodel elements hierarch...
bool patch_submodel_by_id(self, str submodel_identifier, dict submodel_data)
Updates an existing Submodel.
bool delete_submodel_by_id(self, str submodel_identifier)
Deletes a Submodel.
dict|None invoke_operation_submodel_repo(self, str submodel_identifier, str id_short_path, dict request_body, str async_="async")
Synchronously invokes an Operation at a specified path.
bool delete_submodel_element_by_path_submodel_repo(self, str submodel_identifier, str id_short_path)
Deletes a submodel element at a specified path within the submodel elements hierarchy.
bool put_submodels_by_id(self, str submodel_identifier, dict request_body)
Updates a existing Submodel.
bool patch_submodel_by_id_value_only(self, str submodel_identifier, dict request_body, str level="")
Updates the values of an existing Submodel.
dict|None get_all_submodel_elements_submodel_repository(self, str submodel_identifier, int limit=100, str cursor="", str level="", str extent="")
Returns all submodel elements including their hierarchy.