# OpenAPI version identifier - required for OpenAPI 3.0 domains
openapi: 3.0.3
info:
  title: DotAAS Part 2 | API | Schemas
  description: >- 
    The schemas implementing the [Specification of the Asset Administration Shell: Part 2](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: 
  parameters:
    AssetAdministrationShellIdentifier:
      name: aasIdentifier
      in: path
      description: The Asset Administration Shell’s unique id (UTF8-BASE64-URL-encoded)
      required: true
      style: simple
      explode: false
      schema:
        type: string
    AssetKind:
      name: assetKind
      in: query
      required: false
      description: The Asset's kind (Instance or Type)
      schema:
        $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/AssetKind"
    AssetIds:
      name: assetIds
      in: query
      description: A list of specific Asset identifiers. Each Asset identifier is a base64-url-encoded [SpecificAssetId](../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/SpecificAssetId)
      required: false
      style: form
      explode: true
      schema:
        type: array
        items:
          type: string
        example: '?assetIds=eyAibmFtZSI6ICJzb21lLWFzc2V0LWlkIiwgInZhbHVlIjogImh0dHA6Ly9leGFtcGxlLWNvbXBhbnkuY29tL215QXNzZXQiLCAiZXh0ZXJuYWxTdWJqZWN0SWQiOiB7ICJrZXlzIjogWyB7ICJ0eXBlIjogIkdsb2JhbFJlZmVyZW5jZSIsICJ2YWx1ZSI6ICJodHRwOi8vZXhhbXBsZS1jb21wYW55LmNvbS9leGFtcGxlLWNvbXBhbnlzLWFzc2V0LWtleXMiIH0gXSwgInR5cGUiOiAiR2xvYmFsUmVmZXJlbmNlIiB9IH0&assetIds=eyAibmFtZSI6ICJzb21lLW90aGVyLWFzc2V0LWlkIiwgInZhbHVlIjogIjEyMzQ1QUJDIiwgImV4dGVybmFsU3ViamVjdElkIjogeyAia2V5cyI6IFsgeyAidHlwZSI6ICJHbG9iYWxSZWZlcmVuY2UiLCAidmFsdWUiOiAiaHR0cDovL215LW93bi1jb21wYW55LmNvbS9rZXlzIiB9IF0sICJ0eXBlIjogIkdsb2JhbFJlZmVyZW5jZSIgfSB9'
    AssetType:
      name: assetType
      in: query
      description: The Asset's type (UTF8-BASE64-URL-encoded)
      required: false
      schema:
        type: string
        minLength: 1
        maxLength: 2048
        pattern: ^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$
    CreatedFrom:
      name: createdFrom
      in: query
      description: Returns Identifiables created at or after the given date and time in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
      style: form
      required: false
      schema:
        type: string
        format: date-time
    Cursor:    
      name: cursor
      in: query
      description: A server-generated identifier retrieved from pagingMetadata that specifies from which position the result listing should continue
      required: false
      schema:
        type: string
    Date:
      name: date
      in: query
      description: Date and time of the requested version of the Identifiable in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
      required: true
      schema:
        type: string
        format: date-time
    Extent:
      name: extent
      in: query
      description: Determines to which extent the resource is being serialized
      required: false
      schema:
        type: string
        default: withoutBlobValue
        enum:
          - withBlobValue
          - withoutBlobValue
    HandleId:
      name: handleId
      in: path
      description:  The returned handle id of an operation’s asynchronous invocation used to request the current state of the operation’s execution (UTF8-BASE64-URL-encoded)
      required: true
      style: simple
      explode: false
      schema:
        type: string
    IdShort:
      name: idShort
      in: query
      description: The Asset Administration Shell’s IdShort
      required: false
      style: form
      explode: true
      schema:
        type: string
    IdShortPath:
      name: idShortPath
      in: path
      description: IdShort path to the submodel element (dot-separated)
      required: true
      style: simple
      explode: false
      schema:
        type: string
    Level:
      name: level
      in: query
      description: Determines the structural depth of the respective resource content
      required: false
      schema:
        type: string
        default: deep
        enum:
          - deep
          - core
    Limit:      
      name: limit
      in: query
      description: The maximum number of elements in the response array      
      required: false
      schema:
        type: integer
        minimum: 1
    SemanticId:
      name: semanticId
      in: query
      description: The value of the semantic id reference (BASE64-URL-encoded)
      schema:
        type: string
        maxLength: 3072
        minLength: 1
    SubmodelIdentifier:
      name: submodelIdentifier
      in: path
      description: The Submodel’s unique id (UTF8-BASE64-URL-encoded)
      required: true
      style: simple
      explode: false
      schema:
        type: string
    UpdatedFrom:
      name: updatedFrom
      in: query
      description: Returns Identifiables updated at or after the given date and time in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format.
      style: form
      required: false
      schema:
        type: string
        format: date-time
        
  schemas: 
    AnnotatedRelationshipElementMetadata: 
      $ref: "#/components/schemas/SubmodelElementAttributes"
    AnnotatedRelationshipElementValue:
      properties:
        first:
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
        second:
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
        annotations:
          $ref: "#/components/schemas/ValueOnly"
      type: object
    AssetAdministrationShellDescriptor: 
      allOf: 
        - $ref: "#/components/schemas/Descriptor"
        - properties: 
            administration: 
              $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/AdministrativeInformation"
            assetKind:
              $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/AssetKind"
            assetType:
              type: string
              minLength: 1
              maxLength: 2048
              pattern: "^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$"
            endpoints: 
              items: 
                $ref: "#/components/schemas/Endpoint"
              minItems: 1
              type: array
            globalAssetId: 
              type: string
              minLength: 1
              maxLength: 2048
              pattern: "^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$"
            idShort: 
              type: string
              minLength: 1
              maxLength: 128
              pattern: "^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9_]+$"
            id: 
              type: string
              maxLength: 2048
              minLength: 1
              pattern: "^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$"
            specificAssetIds: 
              type: array
              items:
                $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/SpecificAssetId"
            submodelDescriptors: 
              items: 
                $ref: "#/components/schemas/SubmodelDescriptor"
              type: array
      required: 
        - id
      type: object
      example: '{ "id": "https://example.org/aas/motor", "endpoints": [ { "protocolInformation": { "href": "https://localhost:1234/api/v3.0/aas", "endpointProtocol": "HTTP", "endpointProtocolVersion": ["1.1"] }, "interface": "AAS-3.0" }, { "protocolInformation": { "href": "opc.tcp://localhost:4840" }, "interface": "AAS-3.0" }, { "protocolInformation": { "href": "https://localhost:5678", "endpointProtocol": "HTTP", "endpointProtocolVersion": ["1.1"], "subprotocol": "OPC UA Basic SOAP", "subprotocolBody": "ns=2;s=MyAAS", "subprotocolBodyEncoding": "application/soap+xml" }, "interface": "AAS-3.0" } ] }'
    AssetAdministrationShellMetadata: 
      allOf: 
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Identifiable"
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/HasDataSpecification"
        - properties: 
            derivedFrom: 
              $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
    AssetAdministrationShellRecentChange:
      allOf:
        - $ref: '#/components/schemas/RecentChange'
        - type: object
          properties:
            id:
              type: string
              minLength: 1
              maxLength: 2048
              pattern: ^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$
            globalAssetId:
              type: string
              minLength: 1
              maxLength: 2048
              pattern: "^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$"
            specificAssetIds:
              type: array
              items:
                $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/SpecificAssetId"
    AssetLink:
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 64
          pattern: "^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$"
        value:
          type: string
          minLength: 1
          maxLength: 2048
          pattern: "^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$"
      required:
        - name
        - value
    BaseOperationResult:
      allOf:
        - $ref: "#/components/schemas/Result"
        - properties:
            executionState: 
              $ref: "#/components/schemas/ExecutionState"
            success:
              type: boolean
    BasicEventElementMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
        - properties: 
            direction: 
              $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Direction"
            state: 
              $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/StateOfEvent"
            messageTopic: 
              type: string
              maxLength: 255
            messageBroker: 
              $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
            lastUpdate: 
              type: string
            minInterval: 
              type: string
            maxInterval: 
              type: string
    BasicEventElementValue:
      properties:
        observed:
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
      required:
        - observed
      type: object
    BlobMetadata: 
      $ref: "#/components/schemas/SubmodelElementAttributes"
    BlobValue: 
      properties: 
        contentType: 
          type: string
          minLength: 1
          maxLength: 128
        value: 
          type: string
          minLength: 1
      type: object
    BooleanValue: 
      type: boolean
    CapabilityMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
    comparisonItems:
      type: array
      minItems: 2
      maxItems: 2
      items:
        $ref: '#/components/schemas/Value'
    dateTimeLiteralPattern:
      type: string
      format: date-time
    Descriptor: 
      example: '{ "endpoints": [ { "protocolInformation": { "href": "https://localhost:1234/api/v3.0/aas", "endpointProtocolVersion": ["1.1"] }, "interface": "AAS-3.0" }, { "protocolInformation": { "href": "opc.tcp://localhost:4840" }, "interface": "AAS-3.0" }, { "protocolInformation": { "href": "https://localhost:5678", "endpointProtocolVersion": ["1.1"], "subprotocol": "OPC UA Basic SOAP", "subprotocolBody": "ns=2;s=MyAAS", "subprotocolBodyEncoding": "application/soap+xml" }, "interface": "AAS-3.0" } ] }'
      properties: 
        description: 
          type: array
          items:
            $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/LangStringTextType"
        displayName: 
          type: array
          items:
            $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/LangStringNameType"
        extensions:
          type: array
          items:
            "$ref": "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Extension"
          minItems: 1
      type: object
    Endpoint: 
      properties: 
        interface: 
          type: string
          maxLength: 128
        protocolInformation: 
          $ref: "#/components/schemas/ProtocolInformation"
      required: 
        - protocolInformation
        - interface
      type: object
    EntityMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
    EntityValue: 
      properties: 
        entityType: 
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/EntityType"
        globalAssetId: 
          type: string
          minLength: 1
          maxLength: 2048
          pattern: ^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$
        specificAssetIds:
          type: array
          items: 
            $ref: "#/components/schemas/SpecificAssetIdValue"
        statements: 
          $ref: "#/components/schemas/ValueOnly"
      type: object
    ExecutionState:
      enum: 
        - Initiated
        - Running
        - Completed
        - Canceled
        - Failed
        - Timeout
      type: string
    FileValue: 
      properties: 
        contentType: 
          type: string
          minLength: 1
          maxLength: 128
        value: 
          type: string
          minLength: 1
          maxLength: 2048
      type: object
    FileMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
    GetAssetAdministrationShellDescriptorsResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "#/components/schemas/AssetAdministrationShellDescriptor"
    GetAssetAdministrationShellsMetadataResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "#/components/schemas/AssetAdministrationShellMetadata"
    GetAllAssetAdministrationShellsRecentChangesResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items:
                $ref: "#/components/schemas/AssetAdministrationShellRecentChange"
    GetAssetAdministrationShellsResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/AssetAdministrationShell"
    GetConceptDescriptionsResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/ConceptDescription"
    GetPackageDescriptionsResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "#/components/schemas/PackageDescription" 
    GetPathItemsResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "#/components/schemas/PathItem"
    GetReferencesResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
    GetSubmodelDescriptorsResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "#/components/schemas/SubmodelDescriptor"
    GetSubmodelElementsMetadataResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "#/components/schemas/SubmodelElementMetadata" 
    GetSubmodelElementsResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/SubmodelElement"
    GetSubmodelElementsValueResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: object
              description: Since patternProperties and propertyNames are not supported by OpenApi yet, the ValueOnly serialization for this elements works with the key-attribute as the JSON-property name and the value-attribute as the corresponding value.
    GetAllSubmodelRecentChangesResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items:
                $ref: "#/components/schemas/SubmodelRecentChange"
    GetSubmodelsMetadataResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "#/components/schemas/SubmodelMetadata"
    GetSubmodelsResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              type: array
              items: 
                $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Submodel"
    GetSubmodelsValueResult:
      allOf:
        - $ref: '#/components/schemas/PagedResult'
        - type: object
          properties:
            result:
              $ref: "#/components/schemas/SubmodelValue"
    hexLiteralPattern:
      type: string
      pattern: '^16#[0-9A-F]+$'
    logicalExpression:
      type: object
      properties:
        $and:
          type: array
          minItems: 2
          items:
            $ref: '#/components/schemas/logicalExpression'
        $match:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/matchExpression'
        $or:
          type: array
          minItems: 2
          items:
            $ref: '#/components/schemas/logicalExpression'
        $not:
          $ref: '#/components/schemas/logicalExpression'
        $eq:
          $ref: '#/components/schemas/comparisonItems'
        $ne:
          $ref: '#/components/schemas/comparisonItems'
        $gt:
          $ref: '#/components/schemas/comparisonItems'
        $ge:
          $ref: '#/components/schemas/comparisonItems'
        $lt:
          $ref: '#/components/schemas/comparisonItems'
        $le:
          $ref: '#/components/schemas/comparisonItems'
        $contains:
          $ref: '#/components/schemas/stringItems'
        $starts-with:
          $ref: '#/components/schemas/stringItems'
        $ends-with:
          $ref: '#/components/schemas/stringItems'
        $regex:
          $ref: '#/components/schemas/stringItems'
        $boolean:
          type: boolean
      # Note: It is a known problem that SwaggerHub cannot render the following oneOf declaration.
      oneOf:
        - required:
            - $and
        - required:
            - $or
        - required:
            - $not
        - required:
            - $eq
        - required:
            - $ne
        - required:
            - $gt
        - required:
            - $ge
        - required:
            - $lt
        - required:
            - $le
        - required:
            - $contains
        - required:
            - $starts-with
        - required:
            - $ends-with
        - required:
            - $regex
        - required:
            - $boolean
        - required:
            - $match
      additionalProperties: false
    matchExpression:
      type: object
      properties:
        $match:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/matchExpression'
        $eq:
          $ref: '#/components/schemas/comparisonItems'
        $ne:
          $ref: '#/components/schemas/comparisonItems'
        $gt:
          $ref: '#/components/schemas/comparisonItems'
        $ge:
          $ref: '#/components/schemas/comparisonItems'
        $lt:
          $ref: '#/components/schemas/comparisonItems'
        $le:
          $ref: '#/components/schemas/comparisonItems'
        $contains:
          $ref: '#/components/schemas/stringItems'
        $starts-with:
          $ref: '#/components/schemas/stringItems'
        $ends-with:
          $ref: '#/components/schemas/stringItems'
        $regex:
          $ref: '#/components/schemas/stringItems'
        $boolean:
          type: boolean
      oneOf:
        - required:
            - $eq
        - required:
            - $ne
        - required:
            - $gt
        - required:
            - $ge
        - required:
            - $lt
        - required:
            - $le
        - required:
            - $contains
        - required:
            - $starts-with
        - required:
            - $ends-with
        - required:
            - $regex
        - required:
            - $boolean
        - required:
            - $match
      additionalProperties: false
    Message:
      properties: 
        code: 
          type: string
          maxLength: 32
          minLength: 1
        correlationId:
          type: string
          maxLength: 128
          minLength: 1
        messageType: 
          enum: 
            - Undefined
            - Info
            - Warning
            - Error
            - Exception
          type: string
        text: 
          type: string
        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)$"
      type: object
    modelStringPattern:
      type: string
      pattern: >-
        ^(?:\$aas#(?:idShort|id|assetInformation\.assetKind|assetInformation\.assetType|assetInformation\.globalAssetId|assetInformation\.specificAssetIds\[[0-9]*\]\.(?:name|value|externalSubjectId(?:\.(?:type|keys\[[0-9]*\]\.(?:type|value)))?)|submodels\[[0-9]*\]\.(?:type|keys\[[0-9]*\]\.(?:type|value)))|\$sm#(?:semanticId(?:\.(?:type|keys\[[0-9]*\]\.(?:type|value)))?|idShort|id)|\$sme(?:\.[A-Za-z](?:[A-Za-z0-9_-]*[A-Za-z0-9_])?(?:\[[0-9]*\])*(?:\.[A-Za-z](?:[A-Za-z0-9_-]*[A-Za-z0-9_])?(?:\[[0-9]*\])*)*)?#(?:semanticId(?:\.(?:type|keys\[[0-9]*\]\.(?:type|value)))?|idShort|value|valueType|language)|\$cd#(?:idShort|id)|\$aasdesc#(?:idShort|id|assetKind|assetType|globalAssetId|specificAssetIds\[[0-9]*\]\.(?:name|value|externalSubjectId(?:\.(?:type|keys\[[0-9]*\]\.(?:type|value)))?)|endpoints\[[0-9]*\]\.(?:interface|protocolinformation\.href)|submodelDescriptors\[[0-9]*\]\.(?:semanticId(?:\.(?:type|keys\[[0-9]*\]\.(?:type|value)))?|idShort|id|endpoints\[[0-9]*\]\.(?:interface|protocolinformation\.href)))|\$smdesc#(?:semanticId(?:\.(?:type|keys\[[0-9]*\]\.(?:type|value)))?|idShort|id|endpoints\[[0-9]*\]\.(?:interface|protocolinformation\.href)))$
    MultiLanguagePropertyMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
    MultiLanguagePropertyValue: 
      type: object
      description: Since patternProperties and propertyNames are not supported by OpenApi yet, the ValueOnly serialization for this elements works with the key-attribute as the JSON-property name and the value-attribute as the corresponding value.
    NumberValue: 
      type: number
    OperationHandle: 
      properties: 
        handleId: 
          type: string
          maxLength: 128
      type: object
    OperationMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
    OperationRequest: 
      properties: 
        inoutputArguments: 
          items: 
            $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/OperationVariable"
          type: array
        inputArguments: 
          items: 
            $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/OperationVariable"
          type: array
        clientTimeoutDuration: 
          type: string
          pattern: "^(-?)P(?=.)((\\d+)Y)?((\\d+)M)?((\\d+)D)?(T(?=.)((\\d+)H)?((\\d+)M)?(\\d*(\\.\\d+)?S)?)?$"
      type: object
    OperationRequestAsync:
      allOf:
        - $ref: "#/components/schemas/OperationRequest"
        - required: 
          - clientTimeoutDuration
    OperationRequestValueOnly: 
      properties: 
        inoutputArguments: 
          $ref: "#/components/schemas/ValueOnly"
        inputArguments: 
          $ref: "#/components/schemas/ValueOnly"
        clientTimeoutDuration: 
          type: string
          pattern: "^(-?)P(?=.)((\\d+)Y)?((\\d+)M)?((\\d+)D)?(T(?=.)((\\d+)H)?((\\d+)M)?(\\d*(\\.\\d+)?S)?)?$"
      type: object
    OperationRequestAsyncValueOnly:
      allOf:
        - $ref: "#/components/schemas/OperationRequestValueOnly"
        - required: 
          - clientTimeoutDuration
    OperationResult: 
      allOf:
      - $ref: '#/components/schemas/BaseOperationResult'
      - properties: 
          inoutputArguments: 
            items: 
              $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/OperationVariable"
            type: array
          outputArguments: 
            items: 
              $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/OperationVariable"
            type: array
      type: object
    OperationResultValueOnly: 
      allOf:
      - $ref: '#/components/schemas/BaseOperationResult'
      - properties: 
          inoutputArguments: 
            $ref: "#/components/schemas/ValueOnly"
          outputArguments: 
            $ref: "#/components/schemas/ValueOnly"
      type: object
    PagedResult:
      type: object
      properties:
        paging_metadata:
          type: object
          properties:
            cursor:
              type: string
              example: wJlCDLIl6KTWypN7T6vc6nWEmEYe99Hjf1XY1xmqV-M=#
      required:
        - paging_metadata
    PackageDescription: 
      properties: 
        aasIds: 
          items: 
            type: string
            maxLength: 2048
            pattern: ^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$
          type: array
        packageId: 
          type: string
          maxLength: 128
      type: object
    PathItem:
      type: string
      pattern: "^(([A-Za-z][A-Za-z0-9_]+)|(\\[[0-9]+\\]))((\\.[A-Za-z][A-Za-z0-9_]+)|(\\[[0-9]+\\])){0,}$"
    PropertyMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
      properties: 
        valueType: 
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/DataTypeDefXsd"
    PropertyValue: 
      oneOf: 
        - $ref: "#/components/schemas/StringValue"
        - $ref: "#/components/schemas/NumberValue"
        - $ref: "#/components/schemas/BooleanValue"
    ProtocolInformation: 
      properties:
        href: 
          type: string
          maxLength: 2048
        endpointProtocol: 
          type: string
          maxLength: 128
        endpointProtocolVersion: 
          type: array
          items:  
            type: string
            maxLength: 128
        subprotocol: 
          type: string
          maxLength: 128
        subprotocolBody: 
          type: string
          maxLength: 2048
        subprotocolBodyEncoding: 
          type: string
          maxLength: 128
        securityAttributes:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                - "NONE"
                - "RFC_TLSA"
                - "W3C_DID"
              key:
                type: string
              value:
                type: string
            required:
            - type
            - key
            - value
          minItems: 1
      required: 
        - href
      type: object
    Query:
      type: object
      properties:
        $select:
          type: string
          pattern: ^id$
        $condition:
          $ref: '#/components/schemas/logicalExpression'
      required:
        - $condition
      additionalProperties: false
    QueryResultAssetAdministrationShell:
      type: object
      properties:
        paging_metadata:
          type: object
          properties:
            cursor:
              type: string
              example: wJlCDLIl6KTWypN7T6vc6nWEmEYe99Hjf1XY1xmqV-M=#
            resultType: 
              type: string
              enum: 
              - AssetAdministrationShell
              - Identifier 
        result:
          type: array
          items:
            oneOf:
            - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/AssetAdministrationShell"
            - type: string
    QueryResultAssetAdministrationShellDescriptor:
      type: object
      properties:
        paging_metadata:
          type: object
          properties:
            cursor:
              type: string
              example: wJlCDLIl6KTWypN7T6vc6nWEmEYe99Hjf1XY1xmqV-M=#
            resultType: 
              type: string
              enum: 
              - AssetAdministrationShellDescriptor
        result:
          type: array
          items:
            $ref: "#/components/schemas/AssetAdministrationShellDescriptor"
      required:
        - paging_metadata
    QueryResultConceptDescription:
      type: object
      properties:
        paging_metadata:
          type: object
          properties:
            cursor:
              type: string
              example: wJlCDLIl6KTWypN7T6vc6nWEmEYe99Hjf1XY1xmqV-M=#
            resultType: 
              type: string
              enum: 
              - ConceptDescription
              - Identifier 
        result:
          type: array
          items:
            oneOf:
            - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/ConceptDescription"
            - type: string
      required:
        - paging_metadata
    QueryResultSubmodel:
      type: object
      properties:
        paging_metadata:
          type: object
          properties:
            cursor:
              type: string
              example: wJlCDLIl6KTWypN7T6vc6nWEmEYe99Hjf1XY1xmqV-M=#
            resultType: 
              type: string
              enum: 
              - Submodel
              - Identifier 
        result:
          type: array
          items:
            oneOf:
            - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Submodel"
            - type: string
      required:
        - paging_metadata
    QueryResultSubmodelDescriptor:
      type: object
      properties:
        paging_metadata:
          type: object
          properties:
            cursor:
              type: string
              example: wJlCDLIl6KTWypN7T6vc6nWEmEYe99Hjf1XY1xmqV-M=#
            resultType: 
              type: string
              enum: 
              - SubmodelDescriptor
              - Identifier 
        result:
          type: array
          items:
            oneOf:
            - $ref: "#/components/schemas/SubmodelDescriptor"
            - type: string
      required:
        - paging_metadata
    RangeMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
      properties: 
        valueType: 
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/DataTypeDefXsd"
    RangeValue: 
      properties: 
        max: 
          type: number
        min: 
          type: number
      required: 
        - min
        - max
      type: object
    RecentChange:
      properties:
        type:
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/RecentChangeType"
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    ReferenceElementMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
    ReferenceElementValue:
      $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
    RelationshipElementMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
    RelationshipElementValue:
      properties:
        first:
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
        second:
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
      type: object
    Result: 
      properties: 
        messages: 
          items: 
            $ref: "#/components/schemas/Message"
          type: array
      type: object
    ServiceDescription: 
      description: The Description object enables servers to present their capabilities to the clients, in particular which profiles they implement. At least one defined profile is required. Additional, proprietary attributes might be included. Nevertheless, the server must not expect that a regular client understands them.
      example: >-
        {
          "profiles": [
            "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellRegistryServiceSpecification/SSP-002",
            "https://admin-shell.io/aas/API/3/2/SubmodelRegistryServiceSpecification/SSP-002"
          ]
        }
      properties: 
        profiles:
          type: array
          description: The list of profiles implemented by the server. The profiles are identified by their URI. Note that the list of example profiles is not exhaustive, but only includes the profiles defined in the current version of the specification. The server might also include proprietary profiles, which are not defined in the specification. Clients should be designed to ignore unknown profiles, but might use them to implement additional functionality if they are known.
          minItems: 1
          items:
            type: string
            example:
              - "https://admin-shell.io/aas/API/3/0/AssetAdministrationShellServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/AssetAdministrationShellServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/0/AssetAdministrationShellServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/1/AssetAdministrationShellServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/0/SubmodelServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/SubmodelServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/2/SubmodelServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/0/SubmodelServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/1/SubmodelServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/2/SubmodelServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/0/SubmodelServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/1/SubmodelServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/2/SubmodelServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/0/AasxFileServerServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/AasxFileServerServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/2/AasxFileServerServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/AasxFileServerServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/2/AasxFileServerServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRegistryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRegistryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellRegistryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRegistryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRegistryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellRegistryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRegistryServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellRegistryServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRegistryServiceSpecification/SSP-004"
              - "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellRegistryServiceSpecification/SSP-004"
              - "https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRegistryServiceSpecification/SSP-005"
              - "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellRegistryServiceSpecification/SSP-005"
              - "https://admin-shell.io/aas/API/3/0/SubmodelRegistryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/SubmodelRegistryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/2/SubmodelRegistryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/0/SubmodelRegistryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/1/SubmodelRegistryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/2/SubmodelRegistryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/1/SubmodelRegistryServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/2/SubmodelRegistryServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/1/SubmodelRegistryServiceSpecification/SSP-004"
              - "https://admin-shell.io/aas/API/3/2/SubmodelRegistryServiceSpecification/SSP-004"
              - "https://admin-shell.io/aas/API/3/0/DiscoveryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/DiscoveryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/2/DiscoveryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/2/DiscoveryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRepositoryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRepositoryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellRepositoryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRepositoryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRepositoryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellRepositoryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRepositoryServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/2/AssetAdministrationShellRepositoryServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/SubmodelRepositoryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/2/SubmodelRepositoryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/1/SubmodelRepositoryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/2/SubmodelRepositoryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/1/SubmodelRepositoryServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/2/SubmodelRepositoryServiceSpecification/SSP-003"
              - "https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-004"
              - "https://admin-shell.io/aas/API/3/1/SubmodelRepositoryServiceSpecification/SSP-004"
              - "https://admin-shell.io/aas/API/3/2/SubmodelRepositoryServiceSpecification/SSP-004"
              - "https://admin-shell.io/aas/API/3/1/SubmodelRepositoryServiceSpecification/SSP-005"
              - "https://admin-shell.io/aas/API/3/2/SubmodelRepositoryServiceSpecification/SSP-005"
              - "https://admin-shell.io/aas/API/3/0/ConceptDescriptionRepositoryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/ConceptDescriptionRepositoryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/2/ConceptDescriptionRepositoryServiceSpecification/SSP-001"
              - "https://admin-shell.io/aas/API/3/1/ConceptDescriptionRepositoryServiceSpecification/SSP-002"
              - "https://admin-shell.io/aas/API/3/2/ConceptDescriptionRepositoryServiceSpecification/SSP-002"
      type: object
    SpecificAssetIdValue:
      type: object
      description: Since patternProperties and propertyNames are not supported by OpenApi yet, the ValueOnly serialization for this elements works with the key-attribute as the JSON-property name and the value-attribute as the corresponding value.
    standardString:
      type: string
      pattern: ^(?!\$).*
    stringItems:
      type: array
      minItems: 2
      maxItems: 2
      items:
        $ref: '#/components/schemas/stringValue'
    stringValue:
      type: object
      properties:
        $field:
          $ref: '#/components/schemas/modelStringPattern'
        $strVal:
          $ref: '#/components/schemas/standardString'
        $strCast:
          $ref: '#/components/schemas/Value'
      oneOf:
        - required:
            - $field
        - required:
            - $strVal
        - required:
            - $strCast
      additionalProperties: false
    StringValue: 
      type: string
    SubmodelDescriptor: 
      allOf: 
        - $ref: "#/components/schemas/Descriptor"
      properties: 
        administration: 
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/AdministrativeInformation"
        endpoints: 
          items: 
            $ref: "#/components/schemas/Endpoint"
          minItems: 1
          type: array
        idShort: 
          type: string
          minLength: 1
          maxLength: 128
          pattern: "^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9_]+$"
        id: 
          type: string
          minLength: 1
          maxLength: 2048
          pattern: "^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$"
        semanticId: 
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
        supplementalSemanticIds:
          type: array
          items:
            $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
          minItems: 1
      required: 
        - id
        - endpoints
      type: object
      example: '{ "id": "https://admin-shell.io/zvei/nameplate/1/0/Nameplate", "endpoints": [ { "href": { "href": "https://localhost:1234/api/v3.0/submodel", "endpointProtocol": "HTTP", "endpointProtocolVersion": ["1.1"] }, "interface": "AAS-3.0" }, { "protocolInformation": { "href": "opc.tcp://localhost:4840" }, "interface": "AAS-3.0" }, { "protocolInformation": { "href": "https://localhost:5678", "endpointProtocol": "HTTP", "endpointProtocolVersion": ["1.1"], "subprotocol": "OPC UA Basic SOAP", "subprotocolBody": "ns=2;s=MyAAS", "subprotocolBodyEncoding": "application/soap+xml" }, "interface": "AAS-3.0" } ] }'
    SubmodelElementAttributes: 
      allOf: 
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Referable"
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/HasDataSpecification"
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/HasSemantics"
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Qualifiable"
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/HasKind"
    SubmodelElementListMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
      properties: 
        orderRelevant:
          type: boolean
        semanticIdListElement: 
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
        typeValueListElement: 
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/ModelType"
        valueTypeListElement: 
          $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/DataTypeDefXsd"
    SubmodelElementListValue:
      type: array
      items:
        $ref: "#/components/schemas/SubmodelElementValue"
    SubmodelElementCollectionMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
    SubmodelElementCollectionValue: 
      $ref: "#/components/schemas/ValueOnly"
    SubmodelElementMetadata: 
      allOf: 
        - $ref: "#/components/schemas/SubmodelElementAttributes"
      oneOf: 
        - $ref: "#/components/schemas/BlobMetadata"
        - $ref: "#/components/schemas/FileMetadata"
        - $ref: "#/components/schemas/CapabilityMetadata"
        - $ref: "#/components/schemas/EntityMetadata"
        - $ref: "#/components/schemas/BasicEventElementMetadata"
        - $ref: "#/components/schemas/MultiLanguagePropertyMetadata"
        - $ref: "#/components/schemas/OperationMetadata"
        - $ref: "#/components/schemas/PropertyMetadata"
        - $ref: "#/components/schemas/RangeMetadata"
        - $ref: "#/components/schemas/ReferenceElementMetadata"
        - $ref: "#/components/schemas/AnnotatedRelationshipElementMetadata"
        - $ref: "#/components/schemas/RelationshipElementMetadata"
        - $ref: "#/components/schemas/SubmodelElementListMetadata"
        - $ref: "#/components/schemas/SubmodelElementCollectionMetadata"
    SubmodelElementValue: 
      oneOf: 
        - $ref: "#/components/schemas/BasicEventElementValue"
        - $ref: "#/components/schemas/PropertyValue"
        - $ref: "#/components/schemas/MultiLanguagePropertyValue"
        - $ref: "#/components/schemas/BlobValue"
        - $ref: "#/components/schemas/FileValue"
        - $ref: "#/components/schemas/RangeValue"
        - $ref: "#/components/schemas/ReferenceElementValue"
        - $ref: "#/components/schemas/RelationshipElementValue"
        - $ref: "#/components/schemas/AnnotatedRelationshipElementValue"
        - $ref: "#/components/schemas/EntityValue"
        - $ref: "#/components/schemas/SubmodelElementCollectionValue"
        - $ref: "#/components/schemas/SubmodelElementListValue"
    SubmodelMetadata: 
      allOf: 
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Identifiable"
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/HasDataSpecification"
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Qualifiable"
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/HasSemantics"
        - $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/HasKind"
    SubmodelRecentChange:
      allOf:
        - $ref: '#/components/schemas/RecentChange'
        - type: object
          properties:
            id:
              type: string
              minLength: 1
              maxLength: 2048
              pattern: ^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$
            semanticId:
              $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
            supplementalSemanticIds:
              type: array
              items:
                $ref: "../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/Reference"
              minItems: 1
    SubmodelValue:
      $ref: "#/components/schemas/ValueOnly"
    timeLiteralPattern:
      type: string
      pattern: '^[0-9][0-9]:[0-9][0-9](:[0-9][0-9])?$'
    Value:
      type: object
      properties:
        $field:
          $ref: '#/components/schemas/modelStringPattern'
        $strVal:
          $ref: '#/components/schemas/standardString'
        $numVal:
          type: number
        $hexVal:
          $ref: '#/components/schemas/hexLiteralPattern'
        $dateTimeVal:
          $ref: '#/components/schemas/dateTimeLiteralPattern'
        $timeVal:
          $ref: '#/components/schemas/timeLiteralPattern'
        $boolean:
          type: boolean
        $strCast:
          $ref: '#/components/schemas/Value'
        $numCast:
          $ref: '#/components/schemas/Value'
        $hexCast:
          $ref: '#/components/schemas/Value'
        $boolCast:
          $ref: '#/components/schemas/Value'
        $dateTimeCast:
          $ref: '#/components/schemas/Value'
        $timeCast:
          $ref: '#/components/schemas/Value'
        $dayOfWeek:
          $ref: '#/components/schemas/dateTimeLiteralPattern'
        $dayOfMonth:
          $ref: '#/components/schemas/dateTimeLiteralPattern'
        $month:
          $ref: '#/components/schemas/dateTimeLiteralPattern'
        $year:
          $ref: '#/components/schemas/dateTimeLiteralPattern'
      oneOf:
        - required:
            - $field
        - required:
            - $strVal
        - required:
            - $attribute
        - required:
            - $numVal
        - required:
            - $hexVal
        - required:
            - $dateTimeVal
        - required:
            - $timeVal
        - required:
            - $boolean
        - required:
            - $strCast
        - required:
            - $numCast
        - required:
            - $hexCast
        - required:
            - $boolCast
        - required:
            - $dateTimeCast
        - required:
            - $timeCast
        - required:
            - $dayOfWeek
        - required:
            - $dayOfMonth
        - required:
            - $month
        - required:
            - $year
      additionalProperties: false
    ValueOnly: 
      description: "The ValueOnly serialization (patternProperties and propertyNames will probably be supported with OpenApi 3.1). For the full description of the generic JSON validation schema see the ValueOnly-Serialization as defined in the 'Specification of the Asset Administration Shell - Part 2'."
      type: object
    

  responses:
    'accepted':
      description: The server has accepted the request.
      headers:
        Location: 
          description: The URL where the client can find more information about the request.
          schema:
            type: string
    'no-content':
      description: No Content, request was successful but no content is returned
      content:
        application/json:
          schema:
            $ref: '../Part1-MetaModel-Schemas/openapi.yaml#/components/schemas/AssetAdministrationShell'
    'found':
      description: The target resource is available but at a different location.
      headers:
        Location: 
          description: The URL where the client can find the target resource.
          schema:
            type: string
    'bad-request':
      description: Bad Request, e.g. the request parameters of the format of the request body is wrong.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Result'
    'unauthorized':
      description: Unauthorized, e.g. the server refused the authorization attempt.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Result'
    'forbidden':
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Result'
    'not-found':
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Result'
    'method-not-allowed':
      description: Method Not Allowed, the server does not offer this method for the client
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Result'
    'conflict':
      description: Conflict, a resource which shall be created exists already. Might be thrown if an object with the same id (for Identifiables) or idShort (for Referables within the same Container Element or Submodel) is contained in a POST request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Result'
    'internal-server-error':
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Result'
    'not-implemented':
      description: Method Not Implemented by the server
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Result'
    'default':
      description: Default error handling for unmentioned status codes
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Result'
