packages feed

hydra-ext-0.17.0: src/main/haskell/Hydra/Azure/Dtld.hs

-- Note: this is an automatically generated file. Do not edit.
-- | An Azure Digital Twin Definition Language (DTLD) model. Based on:
-- |   https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/v2/dtdlv2.md#digital-twins-definition-language
-- | DTLD features which are not currently included in this model:
-- |   * geospatial schemas (https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/v2/dtdlv2.md#geospatial-schemas)
-- |   * semantic types and units (https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/v2/dtdlv2.md#semantic-types)
-- |   * model versioning (https://github.com/Azure/opendigitaltwins-dtdl/blob/master/DTDL/v2/dtdlv2.md#model-versioning)

module Hydra.Azure.Dtld where
import qualified Hydra.Core as Core
import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci
import qualified Data.Set as S
-- | A Command describes a function or operation that can be performed on any digital twin.
data Command =
  Command {
    -- | This must be 'Command'
    commandType :: Iri,
    -- | The 'programming' name of the command. The name may only contain the characters a-z, A-Z, 0-9, and underscore, and must match this regular expression ^[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$.
    commandName :: String,
    -- | The ID of the command. If no @id is provided, the digital twin interface processor will assign one.
    commandId :: (Maybe Dtmi),
    -- | A comment for model authors
    commandComment :: (Maybe String),
    -- | A localizable description for display
    commandDescription :: (Maybe String),
    -- | A localizable name for display
    commandDisplayName :: (Maybe String),
    -- | This property is deprecated. Either value, synchronous or asynchronous, has the same meaning: a command that starts execution within a configurable time and that completes execution within a configurable time.
    commandCommandType :: (Maybe CommandType),
    -- | A description of the input to the Command
    commandRequest :: (Maybe CommandPayload),
    -- | A description of the output of the Command
    commandResponse :: (Maybe CommandPayload)}
  deriving (Eq, Ord, Read, Show)
_Command = Core.Name "hydra.azure.dtld.Command"
_Command_type = Core.Name "type"
_Command_name = Core.Name "name"
_Command_id = Core.Name "id"
_Command_comment = Core.Name "comment"
_Command_description = Core.Name "description"
_Command_displayName = Core.Name "displayName"
_Command_commandType = Core.Name "commandType"
_Command_request = Core.Name "request"
_Command_response = Core.Name "response"
-- | A CommandPayload describes the inputs to or the outputs from a Command.
data CommandPayload =
  CommandPayload {
    -- | The 'programming' name of the payload. The name may only contain the characters a-z, A-Z, 0-9, and underscore, and must match this regular expression ^[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$.
    commandPayloadName :: String,
    -- | The data type of the payload
    commandPayloadSchema :: Schema,
    -- | The ID of the payload. If no @id is provided, the digital twin interface processor will assign one.
    commandPayloadId :: (Maybe Dtmi),
    -- | A comment for model authors
    commandPayloadComment :: (Maybe String),
    -- | A localizable description for display
    commandPayloadDescription :: (Maybe String),
    -- | A localizable name for display
    commandPayloadDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_CommandPayload = Core.Name "hydra.azure.dtld.CommandPayload"
_CommandPayload_name = Core.Name "name"
_CommandPayload_schema = Core.Name "schema"
_CommandPayload_id = Core.Name "id"
_CommandPayload_comment = Core.Name "comment"
_CommandPayload_description = Core.Name "description"
_CommandPayload_displayName = Core.Name "displayName"
-- | CommandType is deprecated. Either value, synchronous or asynchronous, has the same meaning: a command that starts execution within a configurable time and that completes execution within a configurable time.
data CommandType =
  CommandTypeSynchronous |
  CommandTypeAsynchronous
  deriving (Eq, Ord, Read, Show)
_CommandType = Core.Name "hydra.azure.dtld.CommandType"
_CommandType_synchronous = Core.Name "synchronous"
_CommandType_asynchronous = Core.Name "asynchronous"
-- | Components enable interfaces to be composed of other interfaces. Components are different from relationships because they describe contents that are directly part of the interface. (A relationship describes a link between two interfaces.)
data Component =
  Component {
    -- | This must be 'Component'
    componentType :: Iri,
    -- | The 'programming' name of the component. The name may only contain the characters a-z, A-Z, 0-9, and underscore, and must match this regular expression ^[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$.
    componentName :: String,
    -- | The data type of the component
    componentSchema :: Interface,
    -- | The ID of the component. If no @id is provided, the digital twin interface processor will assign one.
    componentId :: (Maybe Dtmi),
    -- | A comment for model authors
    componentComment :: (Maybe String),
    -- | A localizable description for display
    componentDescription :: (Maybe String),
    -- | A localizable name for display
    componentDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_Component = Core.Name "hydra.azure.dtld.Component"
_Component_type = Core.Name "type"
_Component_name = Core.Name "name"
_Component_schema = Core.Name "schema"
_Component_id = Core.Name "id"
_Component_comment = Core.Name "comment"
_Component_description = Core.Name "description"
_Component_displayName = Core.Name "displayName"
-- | A digital twin model identifier
newtype Dtmi =
  Dtmi {
    unDtmi :: String}
  deriving (Eq, Ord, Read, Show)
_Dtmi = Core.Name "hydra.azure.dtld.Dtmi"
-- | An EnumValue describes an element of an Enum.
data EnumValue =
  EnumValue {
    -- | The 'programming' name of the enum value. The name may only contain the characters a-z, A-Z, 0-9, and underscore, and must match this regular expression ^[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$.
    enumValueName :: String,
    -- | The on-the-wire value that maps to the EnumValue. EnumValue may be either an integer or a string and must be unique for all enum values in this enum.
    enumValueEnumValue :: IntegerOrString,
    -- | The ID of the enum value. If no @id is provided, the digital twin interface processor will assign one.
    enumValueId :: (Maybe Dtmi),
    -- | A comment for model authors
    enumValueComment :: (Maybe String),
    -- | A localizable description for display
    enumValueDescription :: (Maybe String),
    -- | A localizable name for display
    enumValueDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_EnumValue = Core.Name "hydra.azure.dtld.EnumValue"
_EnumValue_name = Core.Name "name"
_EnumValue_enumValue = Core.Name "enumValue"
_EnumValue_id = Core.Name "id"
_EnumValue_comment = Core.Name "comment"
_EnumValue_description = Core.Name "description"
_EnumValue_displayName = Core.Name "displayName"
-- | A Field describes a field in an Object.
data Field =
  Field {
    -- | The 'programming' name of the field. The name may only contain the characters a-z, A-Z, 0-9, and underscore, and must match this regular expression ^[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$.
    fieldName :: String,
    -- | The data type of the field
    fieldSchema :: Schema,
    -- | The ID of the field. If no @id is provided, the digital twin interface processor will assign one.
    fieldId :: (Maybe Dtmi),
    -- | A comment for model authors
    fieldComment :: (Maybe String),
    -- | A localizable description for display
    fieldDescription :: (Maybe String),
    -- | A localizable name for display
    fieldDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_Field = Core.Name "hydra.azure.dtld.Field"
_Field_name = Core.Name "name"
_Field_schema = Core.Name "schema"
_Field_id = Core.Name "id"
_Field_comment = Core.Name "comment"
_Field_description = Core.Name "description"
_Field_displayName = Core.Name "displayName"
data IntegerOrString =
  IntegerOrStringInteger Int |
  IntegerOrStringString String
  deriving (Eq, Ord, Read, Show)
_IntegerOrString = Core.Name "hydra.azure.dtld.IntegerOrString"
_IntegerOrString_integer = Core.Name "integer"
_IntegerOrString_string = Core.Name "string"
data Interface =
  Interface {
    -- | A digital twin model identifier for the interface
    interfaceId :: Dtmi,
    -- | This must be 'Interface'
    interfaceType :: Iri,
    -- | The context to use when processing this interface. For this version, it must be set to 'dtmi:dtdl:context;2'
    interfaceContext :: Iri,
    -- | A comment for model authors
    interfaceComment :: (Maybe String),
    -- | A set of objects that define the contents (Telemetry, Properties, Commands, Relationships, and/or Components) of this interface
    interfaceContents :: (Maybe (S.Set Interface_Contents)),
    -- | A localizable description for display
    interfaceDescription :: (Maybe String),
    -- | A localizable name for display
    interfaceDisplayName :: (Maybe String),
    -- | A set of DTMIs that refer to interfaces this interface inherits from. Interfaces can inherit from multiple interfaces.
    interfaceExtends :: (Maybe (S.Set Interface)),
    -- | A set of IRIs or objects that refer to the reusable schemas within this interface.
    interfaceSchemas :: (Maybe (S.Set Schema_Interface))}
  deriving (Eq, Ord, Read, Show)
_Interface = Core.Name "hydra.azure.dtld.Interface"
_Interface_id = Core.Name "id"
_Interface_type = Core.Name "type"
_Interface_context = Core.Name "context"
_Interface_comment = Core.Name "comment"
_Interface_contents = Core.Name "contents"
_Interface_description = Core.Name "description"
_Interface_displayName = Core.Name "displayName"
_Interface_extends = Core.Name "extends"
_Interface_schemas = Core.Name "schemas"
data Interface_Contents =
  Interface_ContentsCommand Command |
  Interface_ContentsComponent Component |
  Interface_ContentsProperty Property |
  Interface_ContentsRelationship Relationship |
  Interface_ContentsTelemetry Telemetry
  deriving (Eq, Ord, Read, Show)
_Interface_Contents = Core.Name "hydra.azure.dtld.Interface_Contents"
_Interface_Contents_command = Core.Name "command"
_Interface_Contents_component = Core.Name "component"
_Interface_Contents_property = Core.Name "property"
_Interface_Contents_relationship = Core.Name "relationship"
_Interface_Contents_telemetry = Core.Name "telemetry"
newtype Iri =
  Iri {
    unIri :: String}
  deriving (Eq, Ord, Read, Show)
_Iri = Core.Name "hydra.azure.dtld.Iri"
-- | A MapKey describes the key in a Map. The schema of a MapKey must be string.
data MapKey =
  MapKey {
    -- | The 'programming' name of the map's key. The name may only contain the characters a-z, A-Z, 0-9, and underscore, and must match this regular expression ^[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$.
    mapKeyName :: String,
    -- | The data type of the map's key
    mapKeySchema :: Schema,
    -- | The ID of the map key. If no @id is provided, the digital twin interface processor will assign one.
    mapKeyId :: (Maybe Dtmi),
    -- | A comment for model authors
    mapKeyComment :: (Maybe String),
    -- | A localizable description for display
    mapKeyDescription :: (Maybe String),
    -- | A localizable name for display
    mapKeyDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_MapKey = Core.Name "hydra.azure.dtld.MapKey"
_MapKey_name = Core.Name "name"
_MapKey_schema = Core.Name "schema"
_MapKey_id = Core.Name "id"
_MapKey_comment = Core.Name "comment"
_MapKey_description = Core.Name "description"
_MapKey_displayName = Core.Name "displayName"
-- | A MapValue describes the values in a Map.
data MapValue =
  MapValue {
    -- | The 'programming' name of the map's value. The name may only contain the characters a-z, A-Z, 0-9, and underscore, and must match this regular expression ^[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$.
    mapValueName :: String,
    -- | The data type of the map's values
    mapValueSchema :: Schema,
    -- | The ID of the map value. If no @id is provided, the digital twin interface processor will assign one.
    mapValueId :: (Maybe Dtmi),
    -- | A comment for model authors
    mapValueComment :: (Maybe String),
    -- | A localizable description for display
    mapValueDescription :: (Maybe String),
    -- | A localizable name for display
    mapValueDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_MapValue = Core.Name "hydra.azure.dtld.MapValue"
_MapValue_name = Core.Name "name"
_MapValue_schema = Core.Name "schema"
_MapValue_id = Core.Name "id"
_MapValue_comment = Core.Name "comment"
_MapValue_description = Core.Name "description"
_MapValue_displayName = Core.Name "displayName"
-- | A Property describes the read-only and read/write state of any digital twin. For example, a device serial number may be a read-only property, the desired temperature on a thermostat may be a read-write property; and the name of a room may be a read-write property.
data Property =
  Property {
    -- | This must at least be 'Property'. It can also include a semantic type.
    propertyType :: Iri,
    -- | The 'programming' name of the property. The name may only contain the characters a-z, A-Z, 0-9, and underscore, and must match this regular expression ^[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$..
    propertyName :: String,
    -- | The data type of the Property
    propertySchema :: Schema,
    -- | The ID of the property. If no @id is provided, the digital twin interface processor will assign one.
    propertyId :: (Maybe Dtmi),
    -- | A comment for model authors
    propertyComment :: (Maybe String),
    -- | A localizable description for display
    propertyDescription :: (Maybe String),
    -- | A localizable name for display
    propertyDisplayName :: (Maybe String),
    -- | The unit type of the property. A semantic type is required for the unit property to be available.
    propertyUnit :: (Maybe Unit),
    -- | A boolean value that indicates whether the property is writable by an external source, such as an application, or not. The default value is false (read-only).
    propertyWritable :: (Maybe Bool)}
  deriving (Eq, Ord, Read, Show)
_Property = Core.Name "hydra.azure.dtld.Property"
_Property_type = Core.Name "type"
_Property_name = Core.Name "name"
_Property_schema = Core.Name "schema"
_Property_id = Core.Name "id"
_Property_comment = Core.Name "comment"
_Property_description = Core.Name "description"
_Property_displayName = Core.Name "displayName"
_Property_unit = Core.Name "unit"
_Property_writable = Core.Name "writable"
-- | A Relationship describes a link to another digital twin and enables graphs of digital twins to be created. Relationships are different from Components because they describe a link to a separate digital twin.
data Relationship =
  Relationship {
    -- | This must be 'Relationship'
    relationshipType :: Iri,
    -- | The 'programming' name of the relationship. The name may only contain the characters a-z, A-Z, 0-9, and underscore, and must match this regular expression ^[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$.
    relationshipName :: String,
    -- | The ID of the relationship description. If no @id is provided, the digital twin interface processor will assign one.
    relationshipId :: (Maybe Dtmi),
    -- | A comment for model authors
    relationshipComment :: (Maybe String),
    -- | A localizable description for display
    relationshipDescription :: (Maybe String),
    -- | A localizable name for display
    relationshipDisplayName :: (Maybe String),
    -- | The maximum multiplicity for the target of the relationship. The default value is infinite (there may be an unlimited number of relationship instances for this relationship).
    relationshipMaxMultiplicity :: (Maybe Int),
    -- | The minimum multiplicity for the target of the relationship. The default value is 0 (this relationship is permitted to have no instances). In DTDL v2, minMultiplicity must always be 0.
    relationshipMinMultiplicity :: (Maybe Int),
    -- | A set of Properties that define relationship-specific state
    relationshipProperties :: (Maybe (S.Set Property)),
    -- | An interface ID. The default value (when target is not specified) is that the target may be any interface.
    relationshipTarget :: (Maybe Interface),
    -- | A boolean value that indicates whether the relationship is writable by an external source, such as an application, or not. The default value is false (read-only).
    relationshipWritable :: (Maybe Bool)}
  deriving (Eq, Ord, Read, Show)
_Relationship = Core.Name "hydra.azure.dtld.Relationship"
_Relationship_type = Core.Name "type"
_Relationship_name = Core.Name "name"
_Relationship_id = Core.Name "id"
_Relationship_comment = Core.Name "comment"
_Relationship_description = Core.Name "description"
_Relationship_displayName = Core.Name "displayName"
_Relationship_maxMultiplicity = Core.Name "maxMultiplicity"
_Relationship_minMultiplicity = Core.Name "minMultiplicity"
_Relationship_properties = Core.Name "properties"
_Relationship_target = Core.Name "target"
_Relationship_writable = Core.Name "writable"
-- | Schemas are used to describe the on-the-wire or serialized format of the data in a digital twin interface. A full set of primitive data types are provided, along with support for a variety of complex schemas in the forms of Arrays, Enums, Maps, and Objects. Schemas described through digital twin's schema definition language are compatible with popular serialization formats, including JSON, Avro, and Protobuf.
data Schema =
  SchemaPrimitive Schema_Primitive |
  SchemaComplex Schema_Complex
  deriving (Eq, Ord, Read, Show)
_Schema = Core.Name "hydra.azure.dtld.Schema"
_Schema_primitive = Core.Name "primitive"
_Schema_complex = Core.Name "complex"
-- | An Array describes an indexable data type where each element is of the same schema. An Array elements' schema can itself be a primitive or complex schema.
data Schema_Array =
  Schema_Array {
    -- | This must be 'Array'
    schema_ArrayType :: Iri,
    -- | The data type of the array elements
    schema_ArrayElementSchema :: Schema,
    -- | The ID of the array. If no @id is provided, the digital twin interface processor will assign one.
    schema_ArrayId :: (Maybe Dtmi),
    -- | A comment for model authors
    schema_ArrayComment :: (Maybe String),
    -- | A localizable description for display
    schema_ArrayDescription :: (Maybe String),
    -- | A localizable name for display
    schema_ArrayDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_Schema_Array = Core.Name "hydra.azure.dtld.Schema_Array"
_Schema_Array_type = Core.Name "type"
_Schema_Array_elementSchema = Core.Name "elementSchema"
_Schema_Array_id = Core.Name "id"
_Schema_Array_comment = Core.Name "comment"
_Schema_Array_description = Core.Name "description"
_Schema_Array_displayName = Core.Name "displayName"
-- | Complex schemas are designed for supporting complex data types made up of primitive data types. Currently the following complex schemas are provided: Array, Enum, Map, and Object. A complex schema can be specified directly as the value in a schema statement or described in the interface schemas set and referenced in the schema statement.
data Schema_Complex =
  Schema_ComplexArray Schema_Array |
  Schema_ComplexEnum Schema_Enum |
  Schema_ComplexMap Schema_Map |
  Schema_ComplexObject Schema_Object
  deriving (Eq, Ord, Read, Show)
_Schema_Complex = Core.Name "hydra.azure.dtld.Schema_Complex"
_Schema_Complex_array = Core.Name "array"
_Schema_Complex_enum = Core.Name "enum"
_Schema_Complex_map = Core.Name "map"
_Schema_Complex_object = Core.Name "object"
-- | An Enum describes a data type with a set of named labels that map to values. The values in an Enum can be either integers or strings, but the labels are always strings.
data Schema_Enum =
  Schema_Enum {
    -- | Enum
    schema_EnumType :: Iri,
    -- | A set of enum value and label mappings
    schema_EnumEnumValues :: [EnumValue],
    -- | The data type for the enum values. All enum values must be of the same type.
    schema_EnumValueSchema :: IntegerOrString,
    -- | The ID of the enum. If no @id is provided, the digital twin interface processor will assign one.
    schema_EnumId :: (Maybe Dtmi),
    -- | A comment for model authors
    schema_EnumComment :: (Maybe String),
    -- | A localizable description for display
    schema_EnumDescription :: (Maybe String),
    -- | A localizable name for display
    schema_EnumDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_Schema_Enum = Core.Name "hydra.azure.dtld.Schema_Enum"
_Schema_Enum_type = Core.Name "type"
_Schema_Enum_enumValues = Core.Name "enumValues"
_Schema_Enum_valueSchema = Core.Name "valueSchema"
_Schema_Enum_id = Core.Name "id"
_Schema_Enum_comment = Core.Name "comment"
_Schema_Enum_description = Core.Name "description"
_Schema_Enum_displayName = Core.Name "displayName"
-- | Within an interface definition, complex schemas may be defined for reusability across Telemetry, Properties, and Commands. This is designed to promote readability and improved maintenance because schemas that are reused can be defined once (per interface). Interface schemas are defined in the schemas property of an interface.
data Schema_Interface =
  Schema_Interface {
    -- | The globally unique identifier for the schema
    schema_InterfaceId :: Dtmi,
    -- | The type of complex schema. This must refer to one of the complex schema classes (Array, Enum, Map, or Object).
    schema_InterfaceType :: Schema_Interface_Type,
    -- | A comment for model authors
    schema_InterfaceComment :: (Maybe String),
    -- | A localizable description for display
    schema_InterfaceDescription :: (Maybe String),
    -- | A localizable name for display
    schema_InterfaceDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_Schema_Interface = Core.Name "hydra.azure.dtld.Schema_Interface"
_Schema_Interface_id = Core.Name "id"
_Schema_Interface_type = Core.Name "type"
_Schema_Interface_comment = Core.Name "comment"
_Schema_Interface_description = Core.Name "description"
_Schema_Interface_displayName = Core.Name "displayName"
data Schema_Interface_Type =
  Schema_Interface_TypeArray Schema_Array |
  Schema_Interface_TypeEnum Schema_Enum |
  Schema_Interface_TypeMap Schema_Map |
  Schema_Interface_TypeObject Schema_Object
  deriving (Eq, Ord, Read, Show)
_Schema_Interface_Type = Core.Name "hydra.azure.dtld.Schema_Interface_Type"
_Schema_Interface_Type_array = Core.Name "array"
_Schema_Interface_Type_enum = Core.Name "enum"
_Schema_Interface_Type_map = Core.Name "map"
_Schema_Interface_Type_object = Core.Name "object"
-- | A Map describes a data type of key-value pairs where the values share the same schema. The key in a Map must be a string. The values in a Map can be any schema.
data Schema_Map =
  Schema_Map {
    -- | Map
    schema_MapType :: Iri,
    -- | A description of the keys in the map
    schema_MapMapKey :: MapKey,
    -- | A description of the values in the map
    schema_MapMapValue :: MapValue,
    -- | The ID of the map. If no @id is provided, the digital twin interface processor will assign one.
    schema_MapId :: (Maybe Dtmi),
    -- | A comment for model authors
    schema_MapComment :: (Maybe String),
    -- | A localizable description for display
    schema_MapDescription :: (Maybe String),
    -- | A localizable name for display
    schema_MapDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_Schema_Map = Core.Name "hydra.azure.dtld.Schema_Map"
_Schema_Map_type = Core.Name "type"
_Schema_Map_mapKey = Core.Name "mapKey"
_Schema_Map_mapValue = Core.Name "mapValue"
_Schema_Map_id = Core.Name "id"
_Schema_Map_comment = Core.Name "comment"
_Schema_Map_description = Core.Name "description"
_Schema_Map_displayName = Core.Name "displayName"
-- | An Object describes a data type made up of named fields (like a struct in C). The fields in an Object map can be primitive or complex schemas.
data Schema_Object =
  Schema_Object {
    -- | Object
    schema_ObjectType :: Iri,
    -- | A set of field descriptions, one for each field in the Object
    schema_ObjectFields :: (S.Set Field),
    -- | The ID of the object. If no @id is provided, the digital twin interface processor will assign one.
    schema_ObjectId :: (Maybe Dtmi),
    -- | A comment for model authors
    schema_ObjectComment :: (Maybe String),
    -- | A localizable description for display
    schema_ObjectDescription :: (Maybe String),
    -- | A localizable name for display
    schema_ObjectDisplayName :: (Maybe String)}
  deriving (Eq, Ord, Read, Show)
_Schema_Object = Core.Name "hydra.azure.dtld.Schema_Object"
_Schema_Object_type = Core.Name "type"
_Schema_Object_fields = Core.Name "fields"
_Schema_Object_id = Core.Name "id"
_Schema_Object_comment = Core.Name "comment"
_Schema_Object_description = Core.Name "description"
_Schema_Object_displayName = Core.Name "displayName"
-- | A full set of primitive data types are provided and can be specified directly as the value in a schema statement in a digital twin interface.
data Schema_Primitive =
  -- | A boolean value
  Schema_PrimitiveBoolean |
  -- | A full-date as defined in section 5.6 of RFC 3339
  Schema_PrimitiveDate |
  -- | A date-time as defined in RFC 3339
  Schema_PrimitiveDateTime |
  -- | An IEEE 8-byte floating point
  Schema_PrimitiveDouble |
  -- | A duration in ISO 8601 format
  Schema_PrimitiveDuration |
  -- | An IEEE 4-byte floating point
  Schema_PrimitiveFloat |
  -- | A signed 4-byte integer
  Schema_PrimitiveInteger |
  -- | A signed 8-byte integer
  Schema_PrimitiveLong |
  -- | A UTF8 string
  Schema_PrimitiveString |
  -- | A full-time as defined in section 5.6 of RFC 3339
  Schema_PrimitiveTime
  deriving (Eq, Ord, Read, Show)
_Schema_Primitive = Core.Name "hydra.azure.dtld.Schema_Primitive"
_Schema_Primitive_boolean = Core.Name "boolean"
_Schema_Primitive_date = Core.Name "date"
_Schema_Primitive_dateTime = Core.Name "dateTime"
_Schema_Primitive_double = Core.Name "double"
_Schema_Primitive_duration = Core.Name "duration"
_Schema_Primitive_float = Core.Name "float"
_Schema_Primitive_integer = Core.Name "integer"
_Schema_Primitive_long = Core.Name "long"
_Schema_Primitive_string = Core.Name "string"
_Schema_Primitive_time = Core.Name "time"
-- | Telemetry describes the data emitted by any digital twin, whether the data is a regular stream of sensor readings or a computed stream of data, such as occupancy, or an occasional error or information message.
data Telemetry =
  Telemetry {
    -- | This must be at least 'Telemetry'. It can also include a semantic type
    telemetryType :: Iri,
    -- | The 'programming' name of the telemetry. The name may only contain the characters a-z, A-Z, 0-9, and underscore, and must match this regular expression ^[a-zA-Z](?:[a-zA-Z0-9_]*[a-zA-Z0-9])?$..
    telemetryName :: String,
    -- | The data type of the Telemetry
    telemetrySchema :: Schema,
    -- | The ID of the telemetry. If no @id is provided, the digital twin interface processor will assign one.
    telemetryId :: (Maybe Dtmi),
    -- | A comment for model authors
    telemetryComment :: (Maybe String),
    -- | A localizable description for display
    telemetryDescription :: (Maybe String),
    -- | A localizable name for display
    telemetryDisplayName :: (Maybe String),
    -- | The unit type of the Telemetry. A semantic type is required for the unit property to be available.
    telemetryUnit :: (Maybe Unit)}
  deriving (Eq, Ord, Read, Show)
_Telemetry = Core.Name "hydra.azure.dtld.Telemetry"
_Telemetry_type = Core.Name "type"
_Telemetry_name = Core.Name "name"
_Telemetry_schema = Core.Name "schema"
_Telemetry_id = Core.Name "id"
_Telemetry_comment = Core.Name "comment"
_Telemetry_description = Core.Name "description"
_Telemetry_displayName = Core.Name "displayName"
_Telemetry_unit = Core.Name "unit"
newtype Unit =
  Unit {
    unUnit :: ()}
  deriving (Eq, Ord, Read, Show)
_Unit = Core.Name "hydra.azure.dtld.Unit"