# OpenAPI version identifier - required for OpenAPI 3.0 domains
openapi: 3.0.3
info:
  title: DotAAS Part 1 | Metamodel | Schemas
  description: >-
    The schemas implementing the [Specification of the Asset Administration Shell: Part 1](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).  

    Copyright: Industrial Digital Twin Association (IDTA) 2026
  contact:
    name: Industrial Digital Twin Association (IDTA)
    email: info@idtwin.org
  license:
    name: CC BY 4.0
    url: https://creativecommons.org/licenses/by/4.0/
  version: V3.2.0
components:
  schemas:
    AasSubmodelElements:
      type: string
      enum:
        - AnnotatedRelationshipElement
        - BasicEventElement
        - Blob
        - Capability
        - DataElement
        - Entity
        - EventElement
        - File
        - MultiLanguageProperty
        - Operation
        - Property
        - Range
        - ReferenceElement
        - RelationshipElement
        - SubmodelElement
        - SubmodelElementCollection
        - SubmodelElementList
    AbstractLangString:
      type: object
      required:
        - language
        - text
      properties:
        language:
          type: string
          pattern: ^(([a-zA-Z]{2,3}(-[a-zA-Z]{3}(-[a-zA-Z]{3}){0,2})?|[a-zA-Z]{4}|[a-zA-Z]{5,8})(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-(([a-zA-Z0-9]){5,8}|[0-9]([a-zA-Z0-9]){3}))*(-[0-9A-WY-Za-wy-z](-([a-zA-Z0-9]){2,8})+)*(-[xX](-([a-zA-Z0-9]){1,8})+)?|[xX](-([a-zA-Z0-9]){1,8})+|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$
        text:
          type: string
          pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
          minLength: 1
    AdministrativeInformation:
      allOf:
        - $ref: "#/components/schemas/HasDataSpecification"
        - properties:
            version:
              type: string
              allOf:
                - minLength: 1
                  maxLength: 4
                - pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
                - pattern: ^(0|[1-9][0-9]*)$
            revision:
              type: string
              allOf:
                - minLength: 1
                  maxLength: 4
                - pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
                - pattern: ^(0|[1-9][0-9]*)$
            creator:
              $ref: "#/components/schemas/Reference"
            createdAt:
              type: string
              pattern: ^-?(([1-9][0-9][0-9][0-9]+)|(0[0-9][0-9][0-9]))-((0[1-9])|(1[0-2]))-((0[1-9])|([12][0-9])|(3[01]))T(((([01][0-9])|(2[0-3])):[0-5][0-9]:([0-5][0-9])(\.[0-9]+)?)|24:00:00(\.0+)?)(Z|\+00:00|-00:00)$
            updatedAt:
              type: string
              pattern: ^-?(([1-9][0-9][0-9][0-9]+)|(0[0-9][0-9][0-9]))-((0[1-9])|(1[0-2]))-((0[1-9])|([12][0-9])|(3[01]))T(((([01][0-9])|(2[0-3])):[0-5][0-9]:([0-5][0-9])(\.[0-9]+)?)|24:00:00(\.0+)?)(Z|\+00:00|-00:00)$
            templateId:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 2048
    AnnotatedRelationshipElement:
      allOf:
        - $ref: "#/components/schemas/RelationshipElement_abstract"
        - properties:
            annotations:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/DataElement_choice"
            modelType:
              pattern: ^AnnotatedRelationshipElement$
    AssetAdministrationShell:
      allOf:
        - $ref: "#/components/schemas/Identifiable"
        - $ref: "#/components/schemas/HasDataSpecification"
        - required:
            - assetInformation
          properties:
            derivedFrom:
              $ref: "#/components/schemas/Reference"
            assetInformation:
              $ref: "#/components/schemas/AssetInformation"
            submodels:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/Reference"
            modelType:
              pattern: ^AssetAdministrationShell$
    AssetInformation:
      type: object
      required:
        - assetKind
      properties:
        assetKind:
          $ref: "#/components/schemas/AssetKind"
        globalAssetId:
          type: string
          pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
          minLength: 1
          maxLength: 2048
        specificAssetIds:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/SpecificAssetId"
        assetType:
          type: string
          pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
          minLength: 1
          maxLength: 2048
        defaultThumbnail:
          $ref: "#/components/schemas/Resource"
    AssetKind:
      type: string
      enum:
        - Batch
        - Instance
        - NotApplicable
        - Role
        - Type
    BasicEventElement:
      allOf:
        - $ref: "#/components/schemas/EventElement"
        - required:
            - observed
            - direction
            - state
          properties:
            observed:
              $ref: "#/components/schemas/Reference"
            direction:
              $ref: "#/components/schemas/Direction"
            state:
              $ref: "#/components/schemas/StateOfEvent"
            messageTopic:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 255
            messageBroker:
              $ref: "#/components/schemas/Reference"
            lastUpdate:
              type: string
              pattern: ^-?(([1-9][0-9][0-9][0-9]+)|(0[0-9][0-9][0-9]))-((0[1-9])|(1[0-2]))-((0[1-9])|([12][0-9])|(3[01]))T(((([01][0-9])|(2[0-3])):[0-5][0-9]:([0-5][0-9])(\.[0-9]+)?)|24:00:00(\.0+)?)(Z|\+00:00|-00:00)$
            minInterval:
              type: string
              pattern: ^-?P((([0-9]+Y([0-9]+M)?([0-9]+D)?|([0-9]+M)([0-9]+D)?|([0-9]+D))(T(([0-9]+H)([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\.[0-9]+)?S)?|([0-9]+(\.[0-9]+)?S)))?)|(T(([0-9]+H)([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\.[0-9]+)?S)?|([0-9]+(\.[0-9]+)?S))))$
            maxInterval:
              type: string
              pattern: ^-?P((([0-9]+Y([0-9]+M)?([0-9]+D)?|([0-9]+M)([0-9]+D)?|([0-9]+D))(T(([0-9]+H)([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\.[0-9]+)?S)?|([0-9]+(\.[0-9]+)?S)))?)|(T(([0-9]+H)([0-9]+M)?([0-9]+(\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\.[0-9]+)?S)?|([0-9]+(\.[0-9]+)?S))))$
            modelType:
              pattern: ^BasicEventElement$
    Blob:
      allOf:
        - $ref: "#/components/schemas/DataElement"
        - properties:
            value:
              type: string
            contentType:
              type: string
              allOf:
                - minLength: 1
                  maxLength: 128
                - pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
                - pattern: ^([!#$%&'*+\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\-.^_`|~0-9a-zA-Z])+([ \t]*;[ \t]*([!#$%&'*+\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\-.^_`|~0-9a-zA-Z])+|"(([\t !#-\[\]-~]|[\x80-\xff])|\\([\t !-~]|[\x80-\xff]))*"))*$
            modelType:
              pattern: ^Blob$
    Capability:
      allOf:
        - $ref: "#/components/schemas/SubmodelElement"
        - properties:
            modelType:
              pattern: ^Capability$
    ConceptDescription:
      allOf:
        - $ref: "#/components/schemas/Identifiable"
        - $ref: "#/components/schemas/HasDataSpecification"
        - properties:
            isCaseOf:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/Reference"
            modelType:
              pattern: ^ConceptDescription$
    DataElement:
      $ref: "#/components/schemas/SubmodelElement"
    DataElement_choice:
      oneOf:
        - $ref: "#/components/schemas/Blob"
        - $ref: "#/components/schemas/File"
        - $ref: "#/components/schemas/MultiLanguageProperty"
        - $ref: "#/components/schemas/Property"
        - $ref: "#/components/schemas/Range"
        - $ref: "#/components/schemas/ReferenceElement"
    DataSpecificationContent:
      type: object
      required:
        - modelType
      properties:
        modelType:
          $ref: "#/components/schemas/ModelType"
    DataSpecificationContent_choice:
      oneOf:
        - $ref: "#/components/schemas/DataSpecificationIec61360"
        - $ref: "#/components/schemas/DataSpecificationUom"
    DataSpecificationIec61360:
      allOf:
        - $ref: "#/components/schemas/DataSpecificationContent"
        - required:
            - preferredName
          properties:
            preferredName:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/LangStringPreferredNameTypeIec61360"
            shortName:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/LangStringShortNameTypeIec61360"
            unit:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
            unitId:
              $ref: "#/components/schemas/Reference"
            sourceOfDefinition:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
            symbol:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
            dataType:
              $ref: "#/components/schemas/DataTypeIec61360"
            definition:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/LangStringDefinitionTypeIec61360"
            valueFormat:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
            valueList:
              $ref: "#/components/schemas/ValueList"
            value:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 2048
            levelType:
              $ref: "#/components/schemas/LevelType"
            modelType:
              pattern: ^DataSpecificationIec61360$
    DataSpecificationUom:
      allOf:
        - $ref: "#/components/schemas/DataSpecificationContent"
        - required:
            - preferredName
            - symbol
          properties:
            preferredName:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/LangStringUom"
            symbol:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 256
            specificUnitId:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 256
            definition:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/LangStringDefinitionTypeUom"
            preferredNameQuantity:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/LangStringUom"
            quantityId:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 2048
            classificationSystem:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 256
            classificationSystemVersion:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 256
            modelType:
              pattern: ^DataSpecificationUom$
    DataTypeDefXsd:
      type: string
      enum:
        - xs:anyURI
        - xs:base64Binary
        - xs:boolean
        - xs:byte
        - xs:date
        - xs:dateTime
        - xs:decimal
        - xs:double
        - xs:duration
        - xs:float
        - xs:gDay
        - xs:gMonth
        - xs:gMonthDay
        - xs:gYear
        - xs:gYearMonth
        - xs:hexBinary
        - xs:int
        - xs:integer
        - xs:long
        - xs:negativeInteger
        - xs:nonNegativeInteger
        - xs:nonPositiveInteger
        - xs:positiveInteger
        - xs:short
        - xs:string
        - xs:time
        - xs:unsignedByte
        - xs:unsignedInt
        - xs:unsignedLong
        - xs:unsignedShort
    DataTypeIec61360:
      type: string
      enum:
        - BLOB
        - BOOLEAN
        - DATE
        - FILE
        - HTML
        - INTEGER_COUNT
        - INTEGER_CURRENCY
        - INTEGER_MEASURE
        - IRDI
        - IRI
        - RATIONAL
        - RATIONAL_MEASURE
        - REAL_COUNT
        - REAL_CURRENCY
        - REAL_MEASURE
        - STRING
        - STRING_TRANSLATABLE
        - TIME
        - TIMESTAMP
    Direction:
      type: string
      enum:
        - input
        - output
    EmbeddedDataSpecification:
      type: object
      required:
        - dataSpecification
        - dataSpecificationContent
      properties:
        dataSpecification:
          $ref: "#/components/schemas/Reference"
        dataSpecificationContent:
          $ref: "#/components/schemas/DataSpecificationContent_choice"
    Entity:
      allOf:
        - $ref: "#/components/schemas/SubmodelElement"
        - properties:
            statements:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/SubmodelElement_choice"
            entityType:
              $ref: "#/components/schemas/EntityType"
            globalAssetId:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 2048
            specificAssetIds:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/SpecificAssetId"
            modelType:
              pattern: ^Entity$
    EntityType:
      type: string
      enum:
        - CoManagedEntity
        - SelfManagedEntity
    Environment:
      type: object
      properties:
        assetAdministrationShells:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/AssetAdministrationShell"
        submodels:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/Submodel"
        conceptDescriptions:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/ConceptDescription"
    EventElement:
      $ref: "#/components/schemas/SubmodelElement"
    EventPayload:
      type: object
      required:
        - source
        - observableReference
        - timeStamp
      properties:
        source:
          $ref: "#/components/schemas/Reference"
        sourceSemanticId:
          $ref: "#/components/schemas/Reference"
        observableReference:
          $ref: "#/components/schemas/Reference"
        observableSemanticId:
          $ref: "#/components/schemas/Reference"
        topic:
          type: string
          pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
          minLength: 1
          maxLength: 255
        subjectId:
          $ref: "#/components/schemas/Reference"
        timeStamp:
          type: string
          pattern: ^-?(([1-9][0-9][0-9][0-9]+)|(0[0-9][0-9][0-9]))-((0[1-9])|(1[0-2]))-((0[1-9])|([12][0-9])|(3[01]))T(((([01][0-9])|(2[0-3])):[0-5][0-9]:([0-5][0-9])(\.[0-9]+)?)|24:00:00(\.0+)?)(Z|\+00:00|-00:00)$
        payload:
          type: string
    Extension:
      allOf:
        - $ref: "#/components/schemas/HasSemantics"
        - required:
            - name
          properties:
            name:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 128
            valueType:
              $ref: "#/components/schemas/DataTypeDefXsd"
            value:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
            refersTo:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/Reference"
    File:
      allOf:
        - $ref: "#/components/schemas/DataElement"
        - properties:
            value:
              type: string
              allOf:
                - minLength: 1
                  maxLength: 2048
                - pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
                - pattern: ^([a-zA-Z][a-zA-Z0-9+\-.]*:((//((((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[;:&=+$,])*@)?((([a-zA-Z0-9]|[a-zA-Z0-9]([a-zA-Z0-9]|-)*[a-zA-Z0-9])\.)*([a-zA-Z]|[a-zA-Z]([a-zA-Z0-9]|-)*[a-zA-Z0-9])(\.)?|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)(:[0-9]*)?)?|(([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[$,;:@&=+])+)(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*)*)?|/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*)*)(\?(([;/?:@&=+$,]|([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])))*)?|(([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[;?:@&=+$,])(([;/?:@&=+$,]|([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])))*)|(//((((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[;:&=+$,])*@)?((([a-zA-Z0-9]|[a-zA-Z0-9]([a-zA-Z0-9]|-)*[a-zA-Z0-9])\.)*([a-zA-Z]|[a-zA-Z]([a-zA-Z0-9]|-)*[a-zA-Z0-9])(\.)?|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)(:[0-9]*)?)?|(([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[$,;:@&=+])+)(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*)*)?|/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*)*|(([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[;@&=+$,])+(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*)*)?)(\?(([;/?:@&=+$,]|([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])))*)?)?(#(([;/?:@&=+$,]|([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])))*)?$
            contentType:
              type: string
              allOf:
                - minLength: 1
                  maxLength: 128
                - pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
                - pattern: ^([!#$%&'*+\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\-.^_`|~0-9a-zA-Z])+([ \t]*;[ \t]*([!#$%&'*+\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\-.^_`|~0-9a-zA-Z])+|"(([\t !#-\[\]-~]|[\x80-\xff])|\\([\t !-~]|[\x80-\xff]))*"))*$
            modelType:
              pattern: ^File$
    HasDataSpecification:
      type: object
      properties:
        embeddedDataSpecifications:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/EmbeddedDataSpecification"
    HasExtensions:
      type: object
      properties:
        extensions:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/Extension"
    HasKind:
      type: object
      properties:
        kind:
          $ref: "#/components/schemas/ModellingKind"
    HasSemantics:
      type: object
      properties:
        semanticId:
          $ref: "#/components/schemas/Reference"
        supplementalSemanticIds:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/Reference"
    Identifiable:
      allOf:
        - $ref: "#/components/schemas/Referable"
        - required:
            - id
          properties:
            administration:
              $ref: "#/components/schemas/AdministrativeInformation"
            id:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 2048
    Key:
      type: object
      required:
        - type
        - value
      properties:
        type:
          $ref: "#/components/schemas/KeyTypes"
        value:
          type: string
          pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
          minLength: 1
          maxLength: 2048
    KeyTypes:
      type: string
      enum:
        - AnnotatedRelationshipElement
        - AssetAdministrationShell
        - BasicEventElement
        - Blob
        - Capability
        - ConceptDescription
        - DataElement
        - Entity
        - EventElement
        - File
        - FragmentReference
        - GlobalReference
        - Identifiable
        - MultiLanguageProperty
        - Operation
        - Property
        - Range
        - Referable
        - ReferenceElement
        - RelationshipElement
        - Submodel
        - SubmodelElement
        - SubmodelElementCollection
        - SubmodelElementList
    LangStringDefinitionTypeIec61360:
      allOf:
        - $ref: "#/components/schemas/AbstractLangString"
        - properties:
            text:
              maxLength: 1023
    LangStringDefinitionTypeUom:
      allOf:
        - $ref: "#/components/schemas/AbstractLangString"
        - properties:
            text:
              maxLength: 2048
    LangStringNameType:
      allOf:
        - $ref: "#/components/schemas/AbstractLangString"
        - properties:
            text:
              maxLength: 128
    LangStringPreferredNameTypeIec61360:
      allOf:
        - $ref: "#/components/schemas/AbstractLangString"
        - properties:
            text:
              maxLength: 255
    LangStringShortNameTypeIec61360:
      allOf:
        - $ref: "#/components/schemas/AbstractLangString"
        - properties:
            text:
              maxLength: 18
    LangStringTextType:
      allOf:
        - $ref: "#/components/schemas/AbstractLangString"
        - properties:
            text:
              maxLength: 1023
    LangStringUom:
      allOf:
        - $ref: "#/components/schemas/AbstractLangString"
        - properties:
            text:
              maxLength: 256
    LevelType:
      type: object
      required:
        - min
        - nom
        - typ
        - max
      properties:
        min:
          type: boolean
        nom:
          type: boolean
        typ:
          type: boolean
        max:
          type: boolean
    ModelType:
      type: string
      enum:
        - AnnotatedRelationshipElement
        - AssetAdministrationShell
        - BasicEventElement
        - Blob
        - Capability
        - ConceptDescription
        - DataSpecificationIec61360
        - DataSpecificationUom
        - Entity
        - File
        - MultiLanguageProperty
        - Operation
        - Property
        - Range
        - ReferenceElement
        - RelationshipElement
        - Submodel
        - SubmodelElementCollection
        - SubmodelElementList
    ModellingKind:
      type: string
      enum:
        - Instance
        - Template
    MultiLanguageProperty:
      allOf:
        - $ref: "#/components/schemas/DataElement"
        - properties:
            value:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/LangStringTextType"
            valueId:
              $ref: "#/components/schemas/Reference"
            modelType:
              pattern: ^MultiLanguageProperty$
    Operation:
      allOf:
        - $ref: "#/components/schemas/SubmodelElement"
        - properties:
            inputVariables:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/OperationVariable"
            outputVariables:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/OperationVariable"
            inoutputVariables:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/OperationVariable"
            modelType:
              pattern: ^Operation$
    OperationVariable:
      type: object
      required:
        - value
      properties:
        value:
          $ref: "#/components/schemas/SubmodelElement_choice"
    Property:
      allOf:
        - $ref: "#/components/schemas/DataElement"
        - required:
            - valueType
          properties:
            valueType:
              $ref: "#/components/schemas/DataTypeDefXsd"
            value:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
            valueId:
              $ref: "#/components/schemas/Reference"
            modelType:
              pattern: ^Property$
    Qualifiable:
      type: object
      required:
        - modelType
      properties:
        qualifiers:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/Qualifier"
        modelType:
          $ref: "#/components/schemas/ModelType"
    Qualifier:
      allOf:
        - $ref: "#/components/schemas/HasSemantics"
        - required:
            - type
            - valueType
          properties:
            kind:
              $ref: "#/components/schemas/QualifierKind"
            type:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 128
            valueType:
              $ref: "#/components/schemas/DataTypeDefXsd"
            value:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
            valueId:
              $ref: "#/components/schemas/Reference"
    QualifierKind:
      type: string
      enum:
        - ConceptQualifier
        - TemplateQualifier
        - ValueQualifier
    Range:
      allOf:
        - $ref: "#/components/schemas/DataElement"
        - required:
            - valueType
          properties:
            valueType:
              $ref: "#/components/schemas/DataTypeDefXsd"
            min:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
            max:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
            modelType:
              pattern: ^Range$
    Referable:
      allOf:
        - $ref: "#/components/schemas/HasExtensions"
        - required:
            - modelType
          properties:
            category:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 128
            idShort:
              type: string
              allOf:
                - minLength: 1
                  maxLength: 128
                - pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
                - pattern: ^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9_]+$
            displayName:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/LangStringNameType"
            description:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/LangStringTextType"
            modelType:
              $ref: "#/components/schemas/ModelType"
    Reference:
      type: object
      required:
        - type
        - keys
      properties:
        type:
          $ref: "#/components/schemas/ReferenceTypes"
        referredSemanticId:
          $ref: "#/components/schemas/Reference"
        keys:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/Key"
    ReferenceElement:
      allOf:
        - $ref: "#/components/schemas/DataElement"
        - properties:
            value:
              $ref: "#/components/schemas/Reference"
            modelType:
              pattern: ^ReferenceElement$
    ReferenceTypes:
      type: string
      enum:
        - ExternalReference
        - ModelReference
    RelationshipElement:
      allOf:
        - $ref: "#/components/schemas/RelationshipElement_abstract"
        - properties:
            modelType:
              pattern: ^RelationshipElement$
    RelationshipElement_abstract:
      allOf:
        - $ref: "#/components/schemas/SubmodelElement"
        - properties:
            first:
              $ref: "#/components/schemas/Reference"
            second:
              $ref: "#/components/schemas/Reference"
    RelationshipElement_choice:
      oneOf:
        - $ref: "#/components/schemas/RelationshipElement"
        - $ref: "#/components/schemas/AnnotatedRelationshipElement"
    Resource:
      type: object
      required:
        - path
      properties:
        path:
          type: string
          allOf:
            - minLength: 1
              maxLength: 2048
            - pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
            - pattern: ^([a-zA-Z][a-zA-Z0-9+\-.]*:((//((((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[;:&=+$,])*@)?((([a-zA-Z0-9]|[a-zA-Z0-9]([a-zA-Z0-9]|-)*[a-zA-Z0-9])\.)*([a-zA-Z]|[a-zA-Z]([a-zA-Z0-9]|-)*[a-zA-Z0-9])(\.)?|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)(:[0-9]*)?)?|(([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[$,;:@&=+])+)(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*)*)?|/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*)*)(\?(([;/?:@&=+$,]|([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])))*)?|(([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[;?:@&=+$,])(([;/?:@&=+$,]|([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])))*)|(//((((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[;:&=+$,])*@)?((([a-zA-Z0-9]|[a-zA-Z0-9]([a-zA-Z0-9]|-)*[a-zA-Z0-9])\.)*([a-zA-Z]|[a-zA-Z]([a-zA-Z0-9]|-)*[a-zA-Z0-9])(\.)?|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)(:[0-9]*)?)?|(([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[$,;:@&=+])+)(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*)*)?|/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*)*|(([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[;@&=+$,])+(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*(/((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*(;((([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])|[:@&=+$,]))*)*)*)?)(\?(([;/?:@&=+$,]|([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])))*)?)?(#(([;/?:@&=+$,]|([a-zA-Z0-9]|[-_.!~*'()])|%([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])([0-9]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF]|[aA]|[bB]|[cC]|[dD]|[eE]|[fF])))*)?$
        contentType:
          type: string
          allOf:
            - minLength: 1
              maxLength: 128
            - pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
            - pattern: ^([!#$%&'*+\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\-.^_`|~0-9a-zA-Z])+([ \t]*;[ \t]*([!#$%&'*+\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\-.^_`|~0-9a-zA-Z])+|"(([\t !#-\[\]-~]|[\x80-\xff])|\\([\t !-~]|[\x80-\xff]))*"))*$
    SpecificAssetId:
      allOf:
        - $ref: "#/components/schemas/HasSemantics"
        - required:
            - name
            - value
          properties:
            name:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 64
            value:
              type: string
              pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
              minLength: 1
              maxLength: 2048
            externalSubjectId:
              $ref: "#/components/schemas/Reference"
    StateOfEvent:
      type: string
      enum:
        - off
        - on
    Submodel:
      allOf:
        - $ref: "#/components/schemas/Identifiable"
        - $ref: "#/components/schemas/HasKind"
        - $ref: "#/components/schemas/HasSemantics"
        - $ref: "#/components/schemas/Qualifiable"
        - $ref: "#/components/schemas/HasDataSpecification"
        - properties:
            submodelElements:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/SubmodelElement_choice"
            modelType:
              pattern: ^Submodel$
    SubmodelElement:
      allOf:
        - $ref: "#/components/schemas/Referable"
        - $ref: "#/components/schemas/HasSemantics"
        - $ref: "#/components/schemas/Qualifiable"
        - $ref: "#/components/schemas/HasDataSpecification"
    SubmodelElementCollection:
      allOf:
        - $ref: "#/components/schemas/SubmodelElement"
        - properties:
            value:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/SubmodelElement_choice"
            modelType:
              pattern: ^SubmodelElementCollection$
    SubmodelElementList:
      allOf:
        - $ref: "#/components/schemas/SubmodelElement"
        - required:
            - typeValueListElement
          properties:
            orderRelevant:
              type: boolean
            semanticIdListElement:
              $ref: "#/components/schemas/Reference"
            typeValueListElement:
              $ref: "#/components/schemas/AasSubmodelElements"
            valueTypeListElement:
              $ref: "#/components/schemas/DataTypeDefXsd"
            value:
              type: array
              minItems: 1
              items:
                $ref: "#/components/schemas/SubmodelElement_choice"
            modelType:
              pattern: ^SubmodelElementList$
    SubmodelElement_choice:
      oneOf:
        - $ref: "#/components/schemas/RelationshipElement"
        - $ref: "#/components/schemas/AnnotatedRelationshipElement"
        - $ref: "#/components/schemas/BasicEventElement"
        - $ref: "#/components/schemas/Blob"
        - $ref: "#/components/schemas/Capability"
        - $ref: "#/components/schemas/Entity"
        - $ref: "#/components/schemas/File"
        - $ref: "#/components/schemas/MultiLanguageProperty"
        - $ref: "#/components/schemas/Operation"
        - $ref: "#/components/schemas/Property"
        - $ref: "#/components/schemas/Range"
        - $ref: "#/components/schemas/ReferenceElement"
        - $ref: "#/components/schemas/SubmodelElementCollection"
        - $ref: "#/components/schemas/SubmodelElementList"
    ValueList:
      type: object
      required:
        - valueReferencePairs
      properties:
        valueReferencePairs:
          type: array
          minItems: 1
          items:
            $ref: "#/components/schemas/ValueReferencePair"
    ValueReferencePair:
      type: object
      required:
        - value
      properties:
        value:
          type: string
          pattern: ^([\x09\x0a\x0d\x20-\ud7ff\ue000-\ufffd]|\ud800[\udc00-\udfff]|[\ud801-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udfff])*$
          minLength: 1
          maxLength: 2048
        valueId:
          $ref: "#/components/schemas/Reference"
