text: # coding=utf-8
  # --------------------------------------------------------------------------
  # Copyright (c) Microsoft Corporation. All rights reserved.
  # Licensed under the MIT License. See License.txt in the project root for license information.
  # Code generated by Microsoft (R) AutoRest Code Generator.
  # Changes may cause incorrect behavior and will be lost if the code is regenerated.
  # --------------------------------------------------------------------------
  
  import datetime
  from typing import Dict, List, Optional
  
  from azure.core.exceptions import HttpResponseError
  import msrest.serialization
  
  
  class DigitalTwinModelsAddOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinModelsAddOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinModelsDeleteOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinModelsDeleteOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinModelsGetByIdOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinModelsGetByIdOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinModelsListOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      :param max_items_per_page: The maximum number of items to retrieve per request. The server may
       choose to return less than the requested number.
      :type max_items_per_page: int
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
          'max_items_per_page': {'key': 'MaxItemsPerPage', 'type': 'int'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          max_items_per_page: Optional[int] = None,
          **kwargs
      ):
          super(DigitalTwinModelsListOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
          self.max_items_per_page = max_items_per_page
  
  
  class DigitalTwinModelsUpdateOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinModelsUpdateOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinsAddOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsAddOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinsAddRelationshipOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsAddRelationshipOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinsDeleteOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      :param if_match: Only perform the operation if the entity's etag matches one of the etags
       provided or * is provided.
      :type if_match: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
          'if_match': {'key': 'If-Match', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          if_match: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsDeleteOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
          self.if_match = if_match
  
  
  class DigitalTwinsDeleteRelationshipOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      :param if_match: Only perform the operation if the entity's etag matches one of the etags
       provided or * is provided.
      :type if_match: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
          'if_match': {'key': 'If-Match', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          if_match: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsDeleteRelationshipOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
          self.if_match = if_match
  
  
  class DigitalTwinsGetByIdOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsGetByIdOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinsGetComponentOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsGetComponentOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinsGetRelationshipByIdOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsGetRelationshipByIdOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinsListIncomingRelationshipsOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsListIncomingRelationshipsOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinsListRelationshipsOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsListRelationshipsOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinsModelData(msrest.serialization.Model):
      """A model definition and metadata for that model.
  
      All required parameters must be populated in order to send to Azure.
  
      :param display_name: A language map that contains the localized display names as specified in
       the model definition.
      :type display_name: dict[str, str]
      :param description: A language map that contains the localized descriptions as specified in the
       model definition.
      :type description: dict[str, str]
      :param id: Required. The id of the model as specified in the model definition.
      :type id: str
      :param upload_time: The time the model was uploaded to the service.
      :type upload_time: ~datetime.datetime
      :param decommissioned: Indicates if the model is decommissioned. Decommissioned models cannot
       be referenced by newly created digital twins.
      :type decommissioned: bool
      :param model: The model definition.
      :type model: object
      """
  
      _validation = {
          'id': {'required': True},
      }
  
      _attribute_map = {
          'display_name': {'key': 'displayName', 'type': '{str}'},
          'description': {'key': 'description', 'type': '{str}'},
          'id': {'key': 'id', 'type': 'str'},
          'upload_time': {'key': 'uploadTime', 'type': 'iso-8601'},
          'decommissioned': {'key': 'decommissioned', 'type': 'bool'},
          'model': {'key': 'model', 'type': 'object'},
      }
  
      def __init__(
          self,
          *,
          id: str,
          display_name: Optional[Dict[str, str]] = None,
          description: Optional[Dict[str, str]] = None,
          upload_time: Optional[datetime.datetime] = None,
          decommissioned: Optional[bool] = False,
          model: Optional[object] = None,
          **kwargs
      ):
          super(DigitalTwinsModelData, self).__init__(**kwargs)
          self.display_name = display_name
          self.description = description
          self.id = id
          self.upload_time = upload_time
          self.decommissioned = decommissioned
          self.model = model
  
  
  class DigitalTwinsSendComponentTelemetryOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsSendComponentTelemetryOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinsSendTelemetryOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsSendTelemetryOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class DigitalTwinsUpdateComponentOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      :param if_match: Only perform the operation if the entity's etag matches one of the etags
       provided or * is provided.
      :type if_match: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
          'if_match': {'key': 'If-Match', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          if_match: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsUpdateComponentOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
          self.if_match = if_match
  
  
  class DigitalTwinsUpdateOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      :param if_match: Only perform the operation if the entity's etag matches one of the etags
       provided or * is provided.
      :type if_match: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
          'if_match': {'key': 'If-Match', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          if_match: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsUpdateOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
          self.if_match = if_match
  
  
  class DigitalTwinsUpdateRelationshipOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      :param if_match: Only perform the operation if the entity's etag matches one of the etags
       provided or * is provided.
      :type if_match: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
          'if_match': {'key': 'If-Match', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          if_match: Optional[str] = None,
          **kwargs
      ):
          super(DigitalTwinsUpdateRelationshipOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
          self.if_match = if_match
  
  
  class Error(msrest.serialization.Model):
      """Error definition.
  
      Variables are only populated by the server, and will be ignored when sending a request.
  
      :ivar code: Service specific error code which serves as the substatus for the HTTP error code.
      :vartype code: str
      :ivar message: A human-readable representation of the error.
      :vartype message: str
      :ivar details: Internal error details.
      :vartype details: list[~azure.digitaltwins.core.models.Error]
      :param innererror: An object containing more specific information than the current object about
       the error.
      :type innererror: ~azure.digitaltwins.core.models.InnerError
      """
  
      _validation = {
          'code': {'readonly': True},
          'message': {'readonly': True},
          'details': {'readonly': True},
      }
  
      _attribute_map = {
          'code': {'key': 'code', 'type': 'str'},
          'message': {'key': 'message', 'type': 'str'},
          'details': {'key': 'details', 'type': '[Error]'},
          'innererror': {'key': 'innererror', 'type': 'InnerError'},
      }
  
      def __init__(
          self,
          *,
          innererror: Optional["InnerError"] = None,
          **kwargs
      ):
          super(Error, self).__init__(**kwargs)
          self.code = None
          self.message = None
          self.details = None
          self.innererror = innererror
  
  
  class ErrorResponse(msrest.serialization.Model):
      """Error response.
  
      :param error: The error details.
      :type error: ~azure.digitaltwins.core.models.Error
      """
  
      _attribute_map = {
          'error': {'key': 'error', 'type': 'Error'},
      }
  
      def __init__(
          self,
          *,
          error: Optional["Error"] = None,
          **kwargs
      ):
          super(ErrorResponse, self).__init__(**kwargs)
          self.error = error
  
  
  class EventRoute(msrest.serialization.Model):
      """A route which directs notification and telemetry events to an endpoint. Endpoints are a destination outside of Azure Digital Twins such as an EventHub.
  
      Variables are only populated by the server, and will be ignored when sending a request.
  
      All required parameters must be populated in order to send to Azure.
  
      :ivar id: The id of the event route.
      :vartype id: str
      :param endpoint_name: Required. The name of the endpoint this event route is bound to.
      :type endpoint_name: str
      :param filter: Required. An expression which describes the events which are routed to the
       endpoint.
      :type filter: str
      """
  
      _validation = {
          'id': {'readonly': True},
          'endpoint_name': {'required': True},
          'filter': {'required': True},
      }
  
      _attribute_map = {
          'id': {'key': 'id', 'type': 'str'},
          'endpoint_name': {'key': 'endpointName', 'type': 'str'},
          'filter': {'key': 'filter', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          endpoint_name: str,
          filter: str,
          **kwargs
      ):
          super(EventRoute, self).__init__(**kwargs)
          self.id = None
          self.endpoint_name = endpoint_name
          self.filter = filter
  
  
  class EventRouteCollection(msrest.serialization.Model):
      """A collection of EventRoute objects.
  
      :param value: The EventRoute objects.
      :type value: list[~azure.digitaltwins.core.models.EventRoute]
      :param next_link: A URI to retrieve the next page of results.
      :type next_link: str
      """
  
      _attribute_map = {
          'value': {'key': 'value', 'type': '[EventRoute]'},
          'next_link': {'key': 'nextLink', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          value: Optional[List["EventRoute"]] = None,
          next_link: Optional[str] = None,
          **kwargs
      ):
          super(EventRouteCollection, self).__init__(**kwargs)
          self.value = value
          self.next_link = next_link
  
  
  class EventRoutesAddOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(EventRoutesAddOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class EventRoutesDeleteOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(EventRoutesDeleteOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class EventRoutesGetByIdOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          **kwargs
      ):
          super(EventRoutesGetByIdOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
  
  
  class EventRoutesListOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      :param max_items_per_page: The maximum number of items to retrieve per request. The server may
       choose to return less than the requested number.
      :type max_items_per_page: int
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
          'max_items_per_page': {'key': 'MaxItemsPerPage', 'type': 'int'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          max_items_per_page: Optional[int] = None,
          **kwargs
      ):
          super(EventRoutesListOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
          self.max_items_per_page = max_items_per_page
  
  
  class IncomingRelationship(msrest.serialization.Model):
      """An incoming relationship.
  
      :param relationship_id: A user-provided string representing the id of this relationship, unique
       in the context of the source digital twin, i.e. sourceId + relationshipId is unique in the
       context of the service.
      :type relationship_id: str
      :param source_id: The id of the source digital twin.
      :type source_id: str
      :param relationship_name: The name of the relationship.
      :type relationship_name: str
      :param relationship_link: Link to the relationship, to be used for deletion.
      :type relationship_link: str
      """
  
      _attribute_map = {
          'relationship_id': {'key': '$relationshipId', 'type': 'str'},
          'source_id': {'key': '$sourceId', 'type': 'str'},
          'relationship_name': {'key': '$relationshipName', 'type': 'str'},
          'relationship_link': {'key': '$relationshipLink', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          relationship_id: Optional[str] = None,
          source_id: Optional[str] = None,
          relationship_name: Optional[str] = None,
          relationship_link: Optional[str] = None,
          **kwargs
      ):
          super(IncomingRelationship, self).__init__(**kwargs)
          self.relationship_id = relationship_id
          self.source_id = source_id
          self.relationship_name = relationship_name
          self.relationship_link = relationship_link
  
  
  class IncomingRelationshipCollection(msrest.serialization.Model):
      """A collection of incoming relationships which relate digital twins together.
  
      :param value:
      :type value: list[~azure.digitaltwins.core.models.IncomingRelationship]
      :param next_link: A URI to retrieve the next page of objects.
      :type next_link: str
      """
  
      _attribute_map = {
          'value': {'key': 'value', 'type': '[IncomingRelationship]'},
          'next_link': {'key': 'nextLink', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          value: Optional[List["IncomingRelationship"]] = None,
          next_link: Optional[str] = None,
          **kwargs
      ):
          super(IncomingRelationshipCollection, self).__init__(**kwargs)
          self.value = value
          self.next_link = next_link
  
  
  class InnerError(msrest.serialization.Model):
      """A more specific error description than was provided by the containing error.
  
      :param code: A more specific error code than was provided by the containing error.
      :type code: str
      :param innererror: An object containing more specific information than the current object about
       the error.
      :type innererror: ~azure.digitaltwins.core.models.InnerError
      """
  
      _attribute_map = {
          'code': {'key': 'code', 'type': 'str'},
          'innererror': {'key': 'innererror', 'type': 'InnerError'},
      }
  
      def __init__(
          self,
          *,
          code: Optional[str] = None,
          innererror: Optional["InnerError"] = None,
          **kwargs
      ):
          super(InnerError, self).__init__(**kwargs)
          self.code = code
          self.innererror = innererror
  
  
  class PagedDigitalTwinsModelDataCollection(msrest.serialization.Model):
      """A collection of DigitalTwinsModelData objects.
  
      :param value: The DigitalTwinsModelData objects.
      :type value: list[~azure.digitaltwins.core.models.DigitalTwinsModelData]
      :param next_link: A URI to retrieve the next page of objects.
      :type next_link: str
      """
  
      _attribute_map = {
          'value': {'key': 'value', 'type': '[DigitalTwinsModelData]'},
          'next_link': {'key': 'nextLink', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          value: Optional[List["DigitalTwinsModelData"]] = None,
          next_link: Optional[str] = None,
          **kwargs
      ):
          super(PagedDigitalTwinsModelDataCollection, self).__init__(**kwargs)
          self.value = value
          self.next_link = next_link
  
  
  class QueryResult(msrest.serialization.Model):
      """The results of a query operation and an optional continuation token.
  
      :param value: The query results.
      :type value: list[object]
      :param continuation_token: A token which can be used to construct a new QuerySpecification to
       retrieve the next set of results.
      :type continuation_token: str
      """
  
      _attribute_map = {
          'value': {'key': 'value', 'type': '[object]'},
          'continuation_token': {'key': 'continuationToken', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          value: Optional[List[object]] = None,
          continuation_token: Optional[str] = None,
          **kwargs
      ):
          super(QueryResult, self).__init__(**kwargs)
          self.value = value
          self.continuation_token = continuation_token
  
  
  class QuerySpecification(msrest.serialization.Model):
      """A query specification containing either a query statement or a continuation token from a previous query result.
  
      :param query: The query to execute. This value is ignored if a continuation token is provided.
      :type query: str
      :param continuation_token: A token which is used to retrieve the next set of results from a
       previous query.
      :type continuation_token: str
      """
  
      _attribute_map = {
          'query': {'key': 'query', 'type': 'str'},
          'continuation_token': {'key': 'continuationToken', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          query: Optional[str] = None,
          continuation_token: Optional[str] = None,
          **kwargs
      ):
          super(QuerySpecification, self).__init__(**kwargs)
          self.query = query
          self.continuation_token = continuation_token
  
  
  class QueryTwinsOptions(msrest.serialization.Model):
      """Parameter group.
  
      :param traceparent: Identifies the request in a distributed tracing system.
      :type traceparent: str
      :param tracestate: Provides vendor-specific trace identification information and is a companion
       to traceparent.
      :type tracestate: str
      :param max_items_per_page: The maximum number of items to retrieve per request. The server may
       choose to return less than the requested number.
      :type max_items_per_page: int
      """
  
      _attribute_map = {
          'traceparent': {'key': 'traceparent', 'type': 'str'},
          'tracestate': {'key': 'tracestate', 'type': 'str'},
          'max_items_per_page': {'key': 'MaxItemsPerPage', 'type': 'int'},
      }
  
      def __init__(
          self,
          *,
          traceparent: Optional[str] = None,
          tracestate: Optional[str] = None,
          max_items_per_page: Optional[int] = None,
          **kwargs
      ):
          super(QueryTwinsOptions, self).__init__(**kwargs)
          self.traceparent = traceparent
          self.tracestate = tracestate
          self.max_items_per_page = max_items_per_page
  
  
  class RelationshipCollection(msrest.serialization.Model):
      """A collection of relationships which relate digital twins together.
  
      :param value: The relationship objects.
      :type value: list[object]
      :param next_link: A URI to retrieve the next page of objects.
      :type next_link: str
      """
  
      _attribute_map = {
          'value': {'key': 'value', 'type': '[object]'},
          'next_link': {'key': 'nextLink', 'type': 'str'},
      }
  
      def __init__(
          self,
          *,
          value: Optional[List[object]] = None,
          next_link: Optional[str] = None,
          **kwargs
      ):
          super(RelationshipCollection, self).__init__(**kwargs)
          self.value = value
          self.next_link = next_link
  