{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "BaSyx Asset Administration Shell HTTP REST-API",
    "description" : "The full description of the generic BaSyx Asset Administration Shell HTTP REST-API",
    "contact" : {
      "name" : "Constantin Ziesche",
      "url" : "https://www.bosch.com/de/",
      "email" : "constantin.ziesche@bosch.com"
    },
    "license" : {
      "name" : "EPL-2.0",
      "url" : "https://www.eclipse.org/legal/epl-2.0/"
    },
    "version" : "v1"
  },
  "paths" : {
    "/aas" : {
      "get" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Retrieves the Asset Administration Shell Descriptor",
        "operationId" : "GetAssetAdministrationShell",
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AssetAdministrationShellDescriptor"
                }
              }
            }
          }
        }
      }
    },
    "/aas/submodels" : {
      "get" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Retrieves all Submodels from the  Asset Administration Shell",
        "operationId" : "GetSubmodelsFromShell",
        "responses" : {
          "200" : {
            "description" : "Returns a list of found Submodels",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Submodel"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "No Submodel Service Providers found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      }
    },
    "/aas/submodels/{submodelIdShort}" : {
      "put" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Creates or updates a Submodel to an existing Asset Administration Shell",
        "operationId" : "PutSubmodelToShell",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        } ],
        "requestBody" : {
          "description" : "The serialized Submodel object",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Submodel"
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Submodel created successfully",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Submodel"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      },
      "get" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Retrieves the Submodel from the Asset Administration Shell",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Submodel retrieved successfully",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Submodel"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          },
          "404" : {
            "description" : "No Submodel Service Provider found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Deletes a specific Submodel from the Asset Administration Shell",
        "operationId" : "DeleteSubmodelFromShellByIdShort",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "Submodel deleted successfully"
          },
          "400" : {
            "description" : "Bad Request",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      }
    },
    "/aas/submodels/{submodelIdShort}/submodel" : {
      "get" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Retrieves the Submodel from the Asset Administration Shell",
        "operationId" : "GetSubmodelFromShellByIdShort",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Submodel retrieved successfully",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Submodel"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          },
          "404" : {
            "description" : "No Submodel Service Provider found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      }
    },
    "/aas/submodels/{submodelIdShort}/submodel/values" : {
      "get" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Retrieves the minimized version of a Submodel, i.e. only the values of SubmodelElements are serialized and returned",
        "operationId" : "Shell_GetSubmodelValues",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success"
          },
          "404" : {
            "description" : "Submodel not found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      }
    },
    "/aas/submodels/{submodelIdShort}/submodel/submodelElements" : {
      "get" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Retrieves all Submodel-Elements from the Submodel",
        "operationId" : "Shell_GetSubmodelElements",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of found Submodel-Elements",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/SubmodelElement"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Submodel not found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      }
    },
    "/aas/submodels/{submodelIdShort}/submodel/submodelElements/{seIdShortPath}" : {
      "put" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Creates or updates a Submodel-Element at the Submodel",
        "operationId" : "Shell_PutSubmodelElement",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        }, {
          "name" : "seIdShortPath",
          "in" : "path",
          "description" : "The Submodel-Element's IdShort-Path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel-Element's IdShort-Path",
            "nullable" : true
          }
        } ],
        "requestBody" : {
          "description" : "The Submodel-Element object",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ISubmodelElement"
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Submodel-Element created successfully",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubmodelElement"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          },
          "404" : {
            "description" : "Submodel not found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      },
      "get" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Retrieves a specific Submodel-Element from the Submodel",
        "operationId" : "Shell_GetSubmodelElementByIdShort",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        }, {
          "name" : "seIdShortPath",
          "in" : "path",
          "description" : "The Submodel-Element's IdShort-Path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel-Element's IdShort-Path",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the requested Submodel-Element",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubmodelElement"
                }
              }
            }
          },
          "404" : {
            "description" : "Submodel / Submodel-Element not found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Deletes a specific Submodel-Element from the Submodel",
        "operationId" : "Shell_DeleteSubmodelElementByIdShort",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        }, {
          "name" : "seIdShortPath",
          "in" : "path",
          "description" : "The Submodel-Element's IdShort-Path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel-Element's IdShort-Path",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Success",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          },
          "204" : {
            "description" : "Submodel-Element deleted successfully"
          },
          "404" : {
            "description" : "Submodel / Submodel-Element not found"
          }
        }
      }
    },
    "/aas/submodels/{submodelIdShort}/submodel/submodelElements/{seIdShortPath}/value" : {
      "get" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Retrieves the value of a specific Submodel-Element from the Submodel",
        "operationId" : "Shell_GetSubmodelElementValueByIdShort",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        }, {
          "name" : "seIdShortPath",
          "in" : "path",
          "description" : "The Submodel-Element's IdShort-Path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel-Element's IdShort-Path",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the value of a specific Submodel-Element",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "object"
                }
              }
            }
          },
          "404" : {
            "description" : "Submodel / Submodel-Element not found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          },
          "405" : {
            "description" : "Method not allowed",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Updates the Submodel-Element's value",
        "operationId" : "Shell_PutSubmodelElementValueByIdShort",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "The Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel's short id",
            "nullable" : true
          }
        }, {
          "name" : "seIdShortPath",
          "in" : "path",
          "description" : "The Submodel-Element's IdShort-Path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The Submodel-Element's IdShort-Path",
            "nullable" : true
          }
        } ],
        "requestBody" : {
          "description" : "The new value",
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "description" : "The new value",
                "nullable" : true
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Submodel-Element's value changed successfully",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ElementValue"
                }
              }
            }
          },
          "404" : {
            "description" : "Submodel / Submodel-Element not found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          },
          "405" : {
            "description" : "Method not allowed"
          }
        }
      }
    },
    "/aas/submodels/{submodelIdShort}/submodel/submodelElements/{idShortPathToOperation}/invoke" : {
      "post" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Invokes a specific operation from the Submodel synchronously or asynchronously",
        "operationId" : "Shell_InvokeOperationByIdShort",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "Submodel's short id",
            "nullable" : true
          }
        }, {
          "name" : "idShortPathToOperation",
          "in" : "path",
          "description" : "The IdShort path to the Operation",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The IdShort path to the Operation",
            "nullable" : true
          }
        }, {
          "name" : "async",
          "in" : "query",
          "description" : "Determines whether the execution of the operation is asynchronous (true) or not (false)",
          "schema" : {
            "type" : "boolean",
            "description" : "Determines whether the execution of the operation is asynchronous (true) or not (false)"
          }
        } ],
        "requestBody" : {
          "description" : "The parameterized request object for the invocation",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/InvocationRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Operation invoked successfully"
          },
          "400" : {
            "description" : "Bad Request",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          },
          "404" : {
            "description" : "Submodel / Method handler not found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      }
    },
    "/aas/submodels/{submodelIdShort}/submodel/submodelElements/{idShortPathToOperation}/invocationList/{requestId}" : {
      "get" : {
        "tags" : [ "AssetAdministrationShell" ],
        "summary" : "Retrieves the result of an asynchronously started operation",
        "operationId" : "Shell_GetInvocationResultByIdShort",
        "parameters" : [ {
          "name" : "submodelIdShort",
          "in" : "path",
          "description" : "Submodel's short id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "Submodel's short id",
            "nullable" : true
          }
        }, {
          "name" : "idShortPathToOperation",
          "in" : "path",
          "description" : "The IdShort path to the Operation",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The IdShort path to the Operation",
            "nullable" : true
          }
        }, {
          "name" : "requestId",
          "in" : "path",
          "description" : "The request id",
          "required" : true,
          "schema" : {
            "type" : "string",
            "description" : "The request id",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Result found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/InvocationResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          },
          "404" : {
            "description" : "Submodel / Operation / Request not found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Result"
                }
              }
            }
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "KeyType" : {
        "enum" : [ "Undefined", "Custom", "IRI", "URI", "IRDI", "IdShort", "FragmentId" ],
        "type" : "string"
      },
      "Identifier" : {
        "required" : [ "id", "idType" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "idType" : {
            "$ref" : "#/components/schemas/KeyType"
          }
        }
      },
      "AdministrativeInformation" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "string",
            "nullable" : true
          },
          "revision" : {
            "type" : "string",
            "nullable" : true
          }
        }
      },
      "LangString" : {
        "type" : "object",
        "properties" : {
          "language" : {
            "type" : "string",
            "nullable" : true
          },
          "text" : {
            "type" : "string",
            "nullable" : true
          }
        }
      },
      "IEndpointSecurity" : {
        "type" : "object"
      },
      "IEndpoint" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string",
            "nullable" : true,
            "readOnly" : true
          },
          "type" : {
            "type" : "string",
            "nullable" : true,
            "readOnly" : true
          },
          "security" : {
            "$ref" : "#/components/schemas/IEndpointSecurity"
          }
        }
      },
      "ModelType" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "nullable" : true,
            "readOnly" : true
          }
        }
      },
      "AssetKind" : {
        "enum" : [ "Type", "Instance" ],
        "type" : "string"
      },
      "KeyElements" : {
        "enum" : [ "Undefined", "GlobalReference", "FragmentReference", "AccessPermissionRule", "AnnotatedRelationshipElement", "BasicEvent", "Blob", "Capability", "ConceptDictionary", "DataElement", "File", "Entity", "Event", "MultiLanguageProperty", "Operation", "Property", "Range", "ReferenceElement", "RelationshipElement", "SubmodelElement", "SubmodelElementCollection", "View", "Asset", "AssetAdministrationShell", "ConceptDescription", "Submodel" ],
        "type" : "string"
      },
      "Key" : {
        "required" : [ "idType", "local", "type", "value" ],
        "type" : "object",
        "properties" : {
          "type" : {
            "$ref" : "#/components/schemas/KeyElements"
          },
          "idType" : {
            "$ref" : "#/components/schemas/KeyType"
          },
          "value" : {
            "type" : "string"
          },
          "local" : {
            "type" : "boolean"
          }
        }
      },
      "SubmodelReference" : {
        "type" : "object",
        "properties" : {
          "keys" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Key"
            },
            "nullable" : true
          }
        }
      },
      "Reference" : {
        "type" : "object",
        "properties" : {
          "keys" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Key"
            },
            "nullable" : true
          }
        }
      },
      "IDataSpecificationContent" : {
        "type" : "object"
      },
      "IEmbeddedDataSpecification" : {
        "type" : "object",
        "properties" : {
          "hasDataSpecification" : {
            "$ref" : "#/components/schemas/Reference"
          },
          "dataSpecificationContent" : {
            "$ref" : "#/components/schemas/IDataSpecificationContent"
          }
        }
      },
      "Asset" : {
        "type" : "object",
        "properties" : {
          "idShort" : {
            "type" : "string",
            "nullable" : true
          },
          "kind" : {
            "$ref" : "#/components/schemas/AssetKind"
          },
          "assetIdentificationModel" : {
            "$ref" : "#/components/schemas/SubmodelReference"
          },
          "billOfMaterial" : {
            "$ref" : "#/components/schemas/SubmodelReference"
          },
          "embeddedDataSpecifications" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IEmbeddedDataSpecification"
            },
            "nullable" : true,
            "readOnly" : true
          },
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          },
          "identification" : {
            "$ref" : "#/components/schemas/Identifier"
          },
          "administration" : {
            "$ref" : "#/components/schemas/AdministrativeInformation"
          },
          "category" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LangString"
            },
            "nullable" : true
          }
        }
      },
      "SubmodelDescriptor" : {
        "type" : "object",
        "properties" : {
          "idShort" : {
            "type" : "string",
            "nullable" : true
          },
          "identification" : {
            "$ref" : "#/components/schemas/Identifier"
          },
          "administration" : {
            "$ref" : "#/components/schemas/AdministrativeInformation"
          },
          "description" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LangString"
            },
            "nullable" : true
          },
          "semanticId" : {
            "$ref" : "#/components/schemas/Reference"
          },
          "endpoints" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IEndpoint"
            },
            "nullable" : true
          },
          "category" : {
            "type" : "string",
            "nullable" : true,
            "readOnly" : true
          },
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          }
        }
      },
      "AssetAdministrationShellDescriptor" : {
        "type" : "object",
        "properties" : {
          "idShort" : {
            "type" : "string",
            "nullable" : true
          },
          "identification" : {
            "$ref" : "#/components/schemas/Identifier"
          },
          "administration" : {
            "$ref" : "#/components/schemas/AdministrativeInformation"
          },
          "description" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LangString"
            },
            "nullable" : true
          },
          "endpoints" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IEndpoint"
            },
            "nullable" : true
          },
          "category" : {
            "type" : "string",
            "nullable" : true,
            "readOnly" : true
          },
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          },
          "asset" : {
            "$ref" : "#/components/schemas/Asset"
          },
          "submodels" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SubmodelDescriptor"
            },
            "nullable" : true
          }
        }
      },
      "ModelingKind" : {
        "enum" : [ "Instance", "Template" ],
        "type" : "string"
      },
      "IConstraint" : {
        "type" : "object",
        "properties" : {
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          }
        }
      },
      "ISubmodelElement" : {
        "type" : "object",
        "properties" : {
          "idShort" : {
            "type" : "string",
            "nullable" : true,
            "readOnly" : true
          },
          "semanticId" : {
            "$ref" : "#/components/schemas/Reference"
          },
          "constraints" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IConstraint"
            },
            "nullable" : true,
            "readOnly" : true
          },
          "description" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LangString"
            },
            "nullable" : true,
            "readOnly" : true
          },
          "category" : {
            "type" : "string",
            "nullable" : true,
            "readOnly" : true
          },
          "kind" : {
            "$ref" : "#/components/schemas/ModelingKind"
          },
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          },
          "embeddedDataSpecifications" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IEmbeddedDataSpecification"
            },
            "nullable" : true,
            "readOnly" : true
          }
        }
      },
      "Submodel" : {
        "type" : "object",
        "properties" : {
          "idShort" : {
            "type" : "string",
            "nullable" : true
          },
          "kind" : {
            "$ref" : "#/components/schemas/ModelingKind"
          },
          "semanticId" : {
            "$ref" : "#/components/schemas/Reference"
          },
          "submodelElements" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ISubmodelElement"
            },
            "nullable" : true
          },
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          },
          "embeddedDataSpecifications" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IEmbeddedDataSpecification"
            },
            "nullable" : true
          },
          "qualifiers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IConstraint"
            },
            "nullable" : true
          },
          "identification" : {
            "$ref" : "#/components/schemas/Identifier"
          },
          "administration" : {
            "$ref" : "#/components/schemas/AdministrativeInformation"
          },
          "category" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LangString"
            },
            "nullable" : true
          }
        }
      },
      "MessageType" : {
        "enum" : [ "Unspecified", "Debug", "Information", "Warning", "Error", "Fatal", "Exception" ],
        "type" : "string"
      },
      "Message" : {
        "type" : "object",
        "properties" : {
          "messageType" : {
            "$ref" : "#/components/schemas/MessageType"
          },
          "text" : {
            "type" : "string",
            "nullable" : true
          },
          "code" : {
            "type" : "string",
            "nullable" : true
          }
        }
      },
      "Result" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "isException" : {
            "type" : "boolean",
            "nullable" : true,
            "readOnly" : true
          },
          "entity" : {
            "type" : "object",
            "nullable" : true
          },
          "entityType" : {
            "type" : "string",
            "nullable" : true
          },
          "messages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Message"
            },
            "nullable" : true
          }
        }
      },
      "SubmodelElement" : {
        "type" : "object",
        "properties" : {
          "idShort" : {
            "type" : "string",
            "nullable" : true
          },
          "semanticId" : {
            "$ref" : "#/components/schemas/Reference"
          },
          "qualifiers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IConstraint"
            },
            "nullable" : true
          },
          "kind" : {
            "$ref" : "#/components/schemas/ModelingKind"
          },
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          },
          "embeddedDataSpecifications" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IEmbeddedDataSpecification"
            },
            "nullable" : true
          },
          "category" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LangString"
            },
            "nullable" : true
          }
        }
      },
      "ElementValue" : {
        "type" : "object",
        "properties" : {
          "value" : {
            "type" : "object",
            "nullable" : true
          }
        }
      },
      "OperationVariable" : {
        "type" : "object",
        "properties" : {
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          },
          "value" : {
            "$ref" : "#/components/schemas/ISubmodelElement"
          }
        }
      },
      "InvocationRequest" : {
        "type" : "object",
        "properties" : {
          "requestId" : {
            "type" : "string",
            "nullable" : true
          },
          "inputArguments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OperationVariable"
            },
            "nullable" : true
          },
          "inoutputArguments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OperationVariable"
            },
            "nullable" : true
          },
          "timeout" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true
          }
        }
      },
      "OperationResult" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "isException" : {
            "type" : "boolean",
            "nullable" : true,
            "readOnly" : true
          },
          "entity" : {
            "type" : "object",
            "nullable" : true
          },
          "entityType" : {
            "type" : "string",
            "nullable" : true
          },
          "messages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Message"
            },
            "nullable" : true
          }
        }
      },
      "ExecutionState" : {
        "enum" : [ "Initiated", "Running", "Completed", "Canceled", "Failed", "Timeout" ],
        "type" : "string"
      },
      "InvocationResponse" : {
        "type" : "object",
        "properties" : {
          "requestId" : {
            "type" : "string",
            "nullable" : true
          },
          "inoutputArguments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OperationVariable"
            },
            "nullable" : true
          },
          "outputArguments" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OperationVariable"
            },
            "nullable" : true
          },
          "operationResult" : {
            "$ref" : "#/components/schemas/OperationResult"
          },
          "executionState" : {
            "$ref" : "#/components/schemas/ExecutionState"
          }
        }
      },
      "AssetAdministrationShellReference" : {
        "type" : "object",
        "properties" : {
          "keys" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Key"
            },
            "nullable" : true
          }
        }
      },
      "View" : {
        "type" : "object",
        "properties" : {
          "idShort" : {
            "type" : "string",
            "nullable" : true
          },
          "containedElements" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Reference"
            },
            "nullable" : true
          },
          "semanticId" : {
            "$ref" : "#/components/schemas/Reference"
          },
          "category" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LangString"
            },
            "nullable" : true
          },
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          }
        }
      },
      "ConceptDescriptionReference" : {
        "type" : "object",
        "properties" : {
          "keys" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Key"
            },
            "nullable" : true
          }
        }
      },
      "ConceptDictionary" : {
        "type" : "object",
        "properties" : {
          "idShort" : {
            "type" : "string",
            "nullable" : true
          },
          "category" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LangString"
            },
            "nullable" : true
          },
          "metaData" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "nullable" : true
          },
          "conceptDescriptions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ConceptDescriptionReference"
            },
            "nullable" : true
          },
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          }
        }
      },
      "AssetAdministrationShell" : {
        "type" : "object",
        "properties" : {
          "idShort" : {
            "type" : "string",
            "nullable" : true
          },
          "asset" : {
            "$ref" : "#/components/schemas/Asset"
          },
          "submodels" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Submodel"
            },
            "nullable" : true
          },
          "derivedFrom" : {
            "$ref" : "#/components/schemas/AssetAdministrationShellReference"
          },
          "views" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/View"
            },
            "nullable" : true
          },
          "modelType" : {
            "$ref" : "#/components/schemas/ModelType"
          },
          "embeddedDataSpecifications" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IEmbeddedDataSpecification"
            },
            "nullable" : true,
            "readOnly" : true
          },
          "conceptDictionaries" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ConceptDictionary"
            },
            "nullable" : true
          },
          "identification" : {
            "$ref" : "#/components/schemas/Identifier"
          },
          "administration" : {
            "$ref" : "#/components/schemas/AdministrativeInformation"
          },
          "category" : {
            "type" : "string",
            "nullable" : true
          },
          "description" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LangString"
            },
            "nullable" : true
          }
        }
      }
    }
  }
}