{
  "openapi": "3.0.0",
  "info": {
    "version": "1.0.0.beta",
    "title": "Assetfox API",
    "description": "Documentation of all generally available Assetfox endpoints.",
    "contact": null
  },
  "servers": [
    {
      "url": "https://{domain}/api",
      "variables": {
        "domain": {
          "default": "REQUIRED"
        }
      }
    }
  ],
  "tags": [
    {
      "name": "ProductNode",
      "description": "This API contains operations related to product node entities. A product node is a logical entity that contains product family information. A product node that has no parent is a root product node, otherwise the parent of a product node is always another product node. A product node can be the parent of a product. The property 'productNodeId' is a unique identifier in the scope of the same tenant.",
      "x-displayName": "ProductNode"
    },
    {
      "name": "Product",
      "description": "This API contains operations related to product entities. A product is an asset. The parent of a product is always a product node. A product can be the parent of product variants or equipment. The property 'articleNumber' is a unique identifier in the scope of the same tenant.",
      "x-displayName": "Product"
    },
    {
      "name": "ProductVariant",
      "description": "This API contains operations related to product variant entities. A product variant is an asset. The parent of a product variant is always a product. A product variant can be the parent of an equipment. The property 'articleNumber' is a unique identifier in the scope of the same tenant.",
      "x-displayName": "ProductVariant"
    },
    {
      "name": "Equipment",
      "description": "This API contains operations related to equipment entities. An equipment is an asset. An equipment is a physical device, i.e. the produced instance of a product. The property 'serialNumber' is a unique identifier in the scope of the same tenant. The property 'identificationLink' (IL, ID-Link) is a globally unique identifier (IEC 61406). The parent of an equipment is always a product or a product variant.",
      "x-displayName": "Equipment"
    },
    {
      "name": "BmecatUpload",
      "description": "This API contains operations related to the upload of BMEcat files. A BMEcat file is uploaded to exactly one asset. However, the same BMEcat file can also be uploaded using multiple operations to other assets, while each upload creates an independent BMEcat file entity in Assetfox. If a BMEcat file was uploaded to an asset, it has to be deleted first, before another (e.g. updated) BMEcat file can be uploaded to the same asset again.",
      "x-displayName": "BmecatUpload"
    },
    {
      "name": "DocumentUpload",
      "description": "This API contains operations related to the upload of documents. A document can be uploaded and assigned to multiple assets in one upload operation, while creating only a single document entity in Assetfox. Uploading the same document twice is not supported, unless it is explicitly enabled by the 'acceptDuplicateFile' property. In this case, another independent document entity will be created for the uploaded duplicate. After the upload, the assignments of a document can be updated using the File Management API. Supported document formats are PDF, XML or ZIP containers in compliance with VDI2770.",
      "x-displayName": "DocumentUpload"
    },
    {
      "name": "Bmecat",
      "description": "This API contains operations related to BMEcat files. A BMEcat file is always assigned to one asset (product node, product, product variant or equipment), however the same BMEcat file can be uploaded multiple times to different assets while each time creating a new BMEcat file instance in Assetfox that's managed independently from the others. A BMEcat file could be binary or an external link where that file is allocated. Every asset can only have one BMEcat file.",
      "x-displayName": "Bmecat"
    },
    {
      "name": "Document",
      "description": "This API contains operations related to documents. A document can be assigned to one or many assets (product node, product, product variant or equipment). A document can be a binary file or an external link where that document is located. The supported binary file types are PDF, XML, VDI2770 zip container. General information about the document can be provided using the document metadata object.",
      "x-displayName": "Document"
    },
    {
      "name": "BmecatDownload",
      "description": "This API contains operations related to the download of BMEcat files.",
      "x-displayName": "BmecatDownload"
    },
    {
      "name": "DocumentDownload",
      "description": "This API contains operations related to the download of documents. Supported document formats are PDF, XML or ZIP containers in compliance with VDI2770.",
      "x-displayName": "DocumentDownload"
    },
    {
      "name": "AasValidation",
      "x-displayName": "AasValidation"
    },
    {
      "name": "AasxCustomUpload",
      "x-displayName": "AasxCustomUpload"
    },
    {
      "name": "AasxCustomDownload",
      "description": "This API contains custom operations related to Asset Administration Shell.",
      "x-displayName": "AasxCustomDownload"
    },
    {
      "name": "AasxCustomManagement",
      "x-displayName": "AasxCustomManagement"
    },
    {
      "name": "ConnectorSapEquipment",
      "description": "This API contains operations related to a SAP system related to equipment entities. Operations such as exporting equipment to SAP, updating equipment attributes in SAP, and transferring equipment from one tenant to another in SAP are supported.",
      "x-displayName": "ConnectorSapEquipment"
    },
    {
      "name": "ConnectorSapProduct",
      "description": "This API contains operations related to a SAP system related to product entities. Operations such as exporting products to SAP, updating product attributes in SAP, and transferring products from one tenant to another in SAP are supported.",
      "x-displayName": "ConnectorSapProduct"
    },
    {
      "name": "AsacSqs",
      "description": "This API contains operations related to the asynchronous southbound interface of Assetfox.",
      "x-displayName": "AsacSqs"
    },
    {
      "name": "AasExchange",
      "description": "Operations for triggering and monitoring AAS data exchange jobs.",
      "x-displayName": "AasExchange"
    }
  ],
  "paths": {
    "/v1/product-nodes": {
      "post": {
        "summary": "Creates a product node.",
        "operationId": "createProductNode",
        "description": "Creates a product node.",
        "tags": [
          "ProductNode"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductNodeCreateRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Creation of product node succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductNodeResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-nodes:write"
            ]
          }
        ]
      },
      "get": {
        "summary": "List of product nodes matching query.",
        "operationId": "queryProductNodes",
        "description": "List of product nodes matching query.",
        "tags": [
          "ProductNode"
        ],
        "parameters": [
          {
            "name": "productNodeId",
            "in": "query",
            "description": "User defined unique identifier to map an external system to the ObjectId in Assetfox.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of results to skip.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of elements in the response array.",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Product nodes matching query.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductNodeCollectionResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-nodes:read"
            ]
          }
        ]
      }
    },
    "/v1/product-nodes/{objectId}": {
      "delete": {
        "summary": "Deletes a product node.",
        "operationId": "deleteProductNode",
        "description": "Deletes a product node.",
        "tags": [
          "ProductNode"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of product node succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-nodes:write"
            ]
          }
        ]
      },
      "get": {
        "summary": "Gets a product node.",
        "operationId": "getProductNode",
        "description": "Gets a product node.",
        "tags": [
          "ProductNode"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get product node succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductNodeResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-nodes:read"
            ]
          }
        ]
      },
      "patch": {
        "summary": "Patches a product node.",
        "operationId": "patchProductNode",
        "description": "Partially updates properties of the product node. Only properties defined in the request will be updated, other properties will not change.",
        "tags": [
          "ProductNode"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductNodePatchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Patch of product node succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductNodeResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-nodes:write"
            ]
          }
        ]
      }
    },
    "/v1/product-nodes/{objectId}/products": {
      "get": {
        "summary": "Gets children products.",
        "operationId": "getChildrenProducts",
        "description": "Gets children products.",
        "tags": [
          "ProductNode"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get product node children succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCollectionResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-nodes:read"
            ]
          }
        ]
      }
    },
    "/v1/product-nodes/{objectId}/product-nodes": {
      "get": {
        "summary": "Gets children product nodes.",
        "operationId": "getChildrenProductNodes",
        "description": "Gets children product nodes.",
        "tags": [
          "ProductNode"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get product node children succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductNodeCollectionResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-nodes:read"
            ]
          }
        ]
      }
    },
    "/v1/product-nodes/root": {
      "get": {
        "summary": "Gets all root product nodes.",
        "operationId": "getRootProductNodes",
        "description": "Gets all root product nodes.",
        "tags": [
          "ProductNode"
        ],
        "responses": {
          "200": {
            "description": "Get all root product nodes succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductNodeCollectionResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-nodes:read"
            ]
          }
        ]
      }
    },
    "/v1/product-nodes/{objectId}/parentObjectId": {
      "put": {
        "summary": "Updates the parentObjectId of the product node. The parent must be another product node.",
        "operationId": "updateProductNodeParentObjectId",
        "description": "Updates the parentObjectId of the product node. The parent must be another product node.",
        "tags": [
          "ProductNode"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier of the product node.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductNodeUpdateParentObjectIdRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Update of parentObjectId succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductNodeResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-nodes:write"
            ]
          }
        ]
      }
    },
    "/v1/products": {
      "post": {
        "summary": "Creates a product.",
        "operationId": "createProduct",
        "description": "Creates a product.",
        "tags": [
          "Product"
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "image",
                  "productCreateRequest"
                ],
                "properties": {
                  "image": {
                    "type": "string",
                    "description": "Image of the product. Max 5Mb are allowed. Allowed media types are image/svg+xml, image/jpeg and image/png.",
                    "format": "binary"
                  },
                  "productCreateRequest": {
                    "$ref": "#/components/schemas/ProductCreateRequest"
                  }
                }
              },
              "encoding": {
                "image": {
                  "contentType": "multipart/form-data"
                },
                "productCreateRequest": {
                  "contentType": "application/json"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Creation of product succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:write"
            ]
          }
        ]
      },
      "get": {
        "summary": "List of products matching query.",
        "operationId": "queryProducts",
        "description": "List of products matching query.",
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "articleNumber",
            "in": "query",
            "description": "User defined unique identifier to map an external system to the ObjectId in Assetfox.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of results to skip.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of elements in the response array.",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of products matching query.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCollectionResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:read"
            ]
          }
        ]
      }
    },
    "/v1/products/{objectId}": {
      "get": {
        "summary": "Gets a product.",
        "operationId": "getProduct",
        "description": "Gets a product.",
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get product succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:read"
            ]
          }
        ]
      },
      "delete": {
        "summary": "Deletes a product.",
        "operationId": "deleteProduct",
        "description": "Deletes a product.",
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "forceDelete",
            "in": "query",
            "description": "Forces the deletion of the product, including all associated equipment and product variants. If there are files assigned to the product, product variant or equipment, these files will also be deleted, provided they are not assigned to any other asset.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of product succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:write"
            ]
          }
        ]
      },
      "patch": {
        "summary": "Patches a product.",
        "operationId": "patchProduct",
        "description": "Partially updates properties of the product. Only properties defined in the request will be updated, other properties will not change.",
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "productPatchRequest"
                ],
                "type": "object",
                "properties": {
                  "image": {
                    "type": "string",
                    "description": "Image of the product. Max 5Mb are allowed. Allowed media types are image/svg+xml, image/jpeg and image/png.",
                    "format": "binary"
                  },
                  "productPatchRequest": {
                    "$ref": "#/components/schemas/ProductPatchRequest"
                  }
                }
              },
              "encoding": {
                "image": {
                  "contentType": "multipart/form-data"
                },
                "productPatchRequest": {
                  "contentType": "application/json"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Patch of product succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:write"
            ]
          }
        ]
      }
    },
    "/v1/products/{objectId}/aasx/{packageId}": {
      "delete": {
        "summary": "Deletes a specific AASX version of a product.",
        "operationId": "deleteAasxOfProduct",
        "description": "Deletes the AASX package identified by packageId for the given product.",
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "packageId",
            "in": "path",
            "description": "AASX package id (UTF8-BASE64-URL-encoded) which should be deleted.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of AASX package succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:write"
            ]
          }
        ]
      }
    },
    "/v1/products/{objectId}/released": {
      "put": {
        "summary": "Updates the state of the product creation to released.",
        "operationId": "updateProductStateToReleased",
        "description": "Updates the state of the product creation to released.",
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductGenerateAasxRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Succeeded to update the state of the product creation to released."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:write"
            ]
          }
        ]
      }
    },
    "/v1/products/{objectId}/image": {
      "get": {
        "summary": "Gets image of the product.",
        "operationId": "getProductImage",
        "description": "Gets image of the product.",
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get image of the product succeeded.",
            "content": {
              "image/*": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:read"
            ]
          }
        ]
      }
    },
    "/v1/products/{objectId}/product-variants": {
      "get": {
        "summary": "Gets product variants.",
        "operationId": "getProductVariants",
        "description": "Gets product variants.",
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "required": true,
            "description": "Assetfox unique identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of results to skip.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of elements in the response array.",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get product variants succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariantCollectionResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:read"
            ]
          }
        ]
      }
    },
    "/v1/products/{objectId}/parentObjectId": {
      "put": {
        "summary": "Updates the parentObjectId of the product. The parent must be a product node.",
        "operationId": "updateProductParentObjectId",
        "description": "Updates the parentObjectId of the product. The parent must be a product node.",
        "tags": [
          "Product"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductUpdateParentObjectIdRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update of parentObjectId succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:write"
            ]
          }
        ]
      }
    },
    "/v1/products/demand": {
      "post": {
        "summary": "Send sqs message to demand product",
        "operationId": "productDemandRequest",
        "description": "Send sqs message to demand product",
        "tags": [
          "Product"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductDemandRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Succeeded to send message to sqs queue.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductDemandResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "products:read"
            ]
          }
        ]
      }
    },
    "/v1/product-variants": {
      "post": {
        "summary": "Creates a product variant.",
        "operationId": "createProductVariant",
        "description": "Creates a product variant.",
        "tags": [
          "ProductVariant"
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "productVariantCreateRequest"
                ],
                "type": "object",
                "properties": {
                  "image": {
                    "type": "string",
                    "description": "Image of the product variant. Max 5Mb are allowed. Allowed media types are image/svg+xml, image/jpeg and image/png.",
                    "format": "binary"
                  },
                  "productVariantCreateRequest": {
                    "$ref": "#/components/schemas/ProductVariantCreateRequest"
                  }
                }
              },
              "encoding": {
                "image": {
                  "contentType": "multipart/form-data"
                },
                "productVariantCreateRequest": {
                  "contentType": "application/json"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Creation of product variant succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariantResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-variants:write"
            ]
          }
        ]
      },
      "get": {
        "summary": "List of product variants matching query.",
        "operationId": "queryProductVariants",
        "description": "List of product variants matching query.",
        "tags": [
          "ProductVariant"
        ],
        "parameters": [
          {
            "name": "articleNumber",
            "in": "query",
            "description": "Unique product identifier of the manufacturer.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of results to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of elements in the response array.",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of products variants matching query.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariantCollectionResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-variants:read"
            ]
          }
        ]
      }
    },
    "/v1/product-variants/{objectId}": {
      "get": {
        "summary": "Gets product variant.",
        "operationId": "getProductVariant",
        "description": "Gets product variant.",
        "tags": [
          "ProductVariant"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get product variant succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariantResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-variants:read"
            ]
          }
        ]
      },
      "patch": {
        "summary": "Patches a product variant.",
        "operationId": "patchProductVariant",
        "description": "Partially updates properties of the product variant. Only properties defined in the request will be updated, other properties will not change.",
        "tags": [
          "ProductVariant"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "productVariantPatchRequest"
                ],
                "properties": {
                  "image": {
                    "type": "string",
                    "description": "Image of the product variant. Max 5Mb are allowed. Allowed media types are image/svg+xml, image/jpeg and image/png.",
                    "format": "binary"
                  },
                  "productVariantPatchRequest": {
                    "$ref": "#/components/schemas/ProductVariantPatchRequest"
                  }
                }
              },
              "encoding": {
                "image": {
                  "contentType": "multipart/form-data"
                },
                "productVariantPatchRequest": {
                  "contentType": "application/json"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update of product variant succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariantResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-variants:write"
            ]
          }
        ]
      },
      "delete": {
        "summary": "Deletes a product variant.",
        "operationId": "deleteProductVariant",
        "description": "Deletes product variant.",
        "tags": [
          "ProductVariant"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "forceDelete",
            "in": "query",
            "description": "Forces the deletion of the product variant, including all associated equipment. If there are files assigned to the product variant or equipment, these files will also be deleted, provided they are not assigned to any other asset.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of product variant succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-variants:write"
            ]
          }
        ]
      }
    },
    "/v1/product-variants/{objectId}/parentObjectId": {
      "put": {
        "summary": "Updates the parentObjectId of the product variant. The parent must be a product.",
        "operationId": "updateProductVariantParentObjectId",
        "description": "Updates the parentObjectId of the product variant. The parent must be a product.",
        "tags": [
          "ProductVariant"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductVariantUpdateParentObjectIdRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update of parentObjectId succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductVariantResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-variants:write"
            ]
          }
        ]
      }
    },
    "/v1/product-variants/{objectId}/image": {
      "get": {
        "summary": "Gets image of the product variant.",
        "operationId": "getProductVariantImage",
        "description": "Gets image of the product variant.",
        "tags": [
          "ProductVariant"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get image of the product variant succeeded.",
            "content": {
              "image/*": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "product-variants:read"
            ]
          }
        ]
      }
    },
    "/v1/equipment": {
      "post": {
        "summary": "Creates an equipment.",
        "operationId": "createEquipment",
        "description": "Creates an equipment.",
        "tags": [
          "Equipment"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EquipmentCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EquipmentResponse"
                }
              }
            },
            "description": "Creation of equipment succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "equipment:write"
            ]
          }
        ]
      },
      "get": {
        "summary": "List of equipment matching query",
        "operationId": "queryEquipment",
        "description": "List of equipment matching query",
        "tags": [
          "Equipment"
        ],
        "parameters": [
          {
            "name": "idLink",
            "in": "query",
            "description": "Unique identifier encoded in Base64 with URL safe alphabet (https://www.rfc-editor.org/rfc/rfc4648#section-5).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "serialNumber",
            "in": "query",
            "description": "Unique identifier used to identify the device once it has been manufactured.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of results to skip.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of elements in the response array.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of equipment matching query.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EquipmentCollectionResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "equipment:read"
            ]
          }
        ]
      }
    },
    "/v1/equipment/{objectId}": {
      "delete": {
        "summary": "Deletes an equipment.",
        "description": "Deletes an equipment.",
        "operationId": "deleteEquipment",
        "tags": [
          "Equipment"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "forceDelete",
            "in": "query",
            "description": "Forces the deletion of the equipment even if it has assigned files. If the files are not anymore assigned to any other asset, these files will be deleted.",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of equipment succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "equipment:write"
            ]
          }
        ]
      },
      "get": {
        "summary": "Gets an equipment.",
        "operationId": "getEquipment",
        "description": "Get an equipment.",
        "tags": [
          "Equipment"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get equipment succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EquipmentResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "equipment:read"
            ]
          }
        ]
      },
      "patch": {
        "summary": "Patches equipment data.",
        "operationId": "patchEquipment",
        "description": "Partially updates properties of the equipment. Only properties defined in the request will be updated, other properties will not change.",
        "tags": [
          "Equipment"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EquipmentPatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Patch of equipment succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EquipmentResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "equipment:write"
            ]
          }
        ]
      }
    },
    "/v1/equipment/{objectId}/aasx/{packageId}": {
      "delete": {
        "summary": "Deletes an AASX package of the equipment.",
        "description": "Deletes the AASX package of the equipment from the AASX File Server and its content from the AAS Repository, Registry and Discovery Service.",
        "operationId": "deleteAasxOfEquipment",
        "tags": [
          "Equipment"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "packageId",
            "in": "path",
            "description": "AASX package id (UTF8-BASE64-URL-encoded) which should be deleted.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of AASX package succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "equipment:write"
            ]
          }
        ]
      }
    },
    "/v1/equipment/{objectId}/released": {
      "put": {
        "summary": "Updates the state of the equipment to released.",
        "operationId": "updateEquipmentStateToReleased",
        "description": "Updates the state of the equipment to released.",
        "tags": [
          "Equipment"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EquipmentGenerateAasxRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Succeeded to update the state of the equipment creation to released."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "equipment:write"
            ]
          }
        ]
      }
    },
    "/v1/equipment/{objectId}/parentObjectId": {
      "put": {
        "summary": "Updates the parentObjectId of the equipment. The parent must be a product or a product variant.",
        "operationId": "equipmentUpdateParentObjectId",
        "description": "Updates the parentObjectId of the equipment. The parent must be a product or a product variant.",
        "tags": [
          "Equipment"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EquipmentUpdateParentObjectIdRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update of parentObjectId succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EquipmentResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "equipment:write"
            ]
          }
        ]
      }
    },
    "/v1/files/upload/bmecat": {
      "post": {
        "summary": "Uploads the BMEcat and assigns it to an asset.",
        "operationId": "uploadBmecat",
        "description": "Uploads the BMEcat and assigns it to an asset.",
        "tags": [
          "BmecatUpload"
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "bmecat",
                  "assignmentRequest"
                ],
                "properties": {
                  "bmecat": {
                    "type": "string",
                    "description": "BMEcat to be uploaded.",
                    "format": "binary"
                  },
                  "assignmentRequest": {
                    "$ref": "#/components/schemas/AssignmentRequest"
                  }
                }
              },
              "encoding": {
                "bmecat": {
                  "contentType": "multipart/form-data"
                },
                "assignmentRequest": {
                  "contentType": "application/json"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BmecatUploadInfoResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:write"
            ]
          }
        ]
      }
    },
    "/v1/files/upload/document": {
      "post": {
        "summary": "Uploads the document and assigns it to one or more assets.",
        "operationId": "uploadDocument",
        "description": "Uploads the document and assigns it to one or more assets.",
        "tags": [
          "DocumentUpload"
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "documentUploadRequest"
                ],
                "properties": {
                  "document": {
                    "type": "string",
                    "description": "Document to be uploaded.",
                    "format": "binary"
                  },
                  "documentUploadRequest": {
                    "$ref": "#/components/schemas/DocumentUploadRequest"
                  },
                  "externalFileLinkRequest": {
                    "type": "string",
                    "description": "A URL representing the file in an external system."
                  }
                }
              },
              "encoding": {
                "document": {
                  "contentType": "multipart/form-data"
                },
                "documentUploadRequest": {
                  "contentType": "application/json"
                },
                "externalFileLinkRequest": {
                  "contentType": "text/plain"
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentUploadInfoResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:write"
            ]
          }
        ]
      }
    },
    "/v1/files/external-file-link/document/{objectId}": {
      "get": {
        "summary": "Gets the external file link of the document.",
        "operationId": "getExternalFileLink",
        "description": "Gets the external file link of the document.",
        "tags": [
          "Document"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier of document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "External file link of the document.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalFileLinkResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:read"
            ]
          }
        ]
      },
      "put": {
        "summary": "Updates the external file link of the document.",
        "operationId": "updateExternalFileLink",
        "description": "Updates the external file link of the document.",
        "tags": [
          "Document"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier of document.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExternalFileLink"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Update of external file link succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:write"
            ]
          }
        ]
      }
    },
    "/v1/files/delete/bmecat/{objectId}": {
      "delete": {
        "summary": "Deletes the BMEcat.",
        "description": "Deletes the BMEcat.",
        "tags": [
          "Bmecat"
        ],
        "operationId": "deleteBmecat",
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of the BMEcat succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:write"
            ]
          }
        ]
      }
    },
    "/v1/files/delete/document/{objectId}": {
      "delete": {
        "summary": "Deletes the document.",
        "description": "Deletes the document.",
        "tags": [
          "Document"
        ],
        "operationId": "deleteDocument",
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Deletion of the document succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:write"
            ]
          }
        ]
      }
    },
    "/v1/files/assign/document/{objectId}": {
      "put": {
        "summary": "Assigns the document to the assets.",
        "operationId": "assignDocument",
        "description": "Assigns the document to the assets.",
        "tags": [
          "Document"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileAssignRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Assignment of the file succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:write"
            ]
          }
        ]
      }
    },
    "/v1/files/unassign/document/{objectId}": {
      "put": {
        "summary": "Unassigns the document from the assets.",
        "tags": [
          "Document"
        ],
        "operationId": "unassignDocument",
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileUnassignRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Unassignment of the document succeeded."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:write"
            ]
          }
        ]
      }
    },
    "/v1/files/query/document": {
      "get": {
        "summary": "Find documents matching the query.",
        "operationId": "queryDocuments",
        "description": "Find documents matching the query.",
        "tags": [
          "Document"
        ],
        "parameters": [
          {
            "name": "documentId",
            "in": "query",
            "description": "User defined identifier to map an external system to the ObjectId in Assetfox.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fileMd5Hashcode",
            "in": "query",
            "description": "MD5 hash value of the file.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filename",
            "in": "query",
            "description": "The name of the document to be queried in Assetfox.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of results to skip.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of elements in the response array.",
            "schema": {
              "minimum": 1,
              "maximum": 1000,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of documents matching the query.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentMetadataInfoCollectionResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/files/query/document/{objectId}": {
      "get": {
        "summary": "Find document matching the query.",
        "operationId": "queryDocumentsByObjectId",
        "description": "Find document matching the query.",
        "tags": [
          "Document"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Document matching the query.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentMetadataInfoResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/files/metadata/document/{objectId}": {
      "patch": {
        "summary": "Patches document metadata properties.",
        "operationId": "patchDocumentMetadata",
        "description": "Partially updates properties of the document metadata. Only properties defined in the request will be updated, other properties will not change.",
        "tags": [
          "Document"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DocumentMetadataPatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentMetadataResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:write"
            ]
          }
        ]
      }
    },
    "/v1/files/download/document/{objectId}": {
      "get": {
        "summary": "Downloads the document.",
        "operationId": "downloadDocument",
        "description": "Downloads the document.",
        "tags": [
          "DocumentDownload"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download of the document succeeded.",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "resource"
                }
              },
              "text/xml": {
                "schema": {
                  "type": "string",
                  "format": "resource"
                }
              }
            },
            "headers": {
              "Content-Disposition": {
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"name.pdf\""
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/files/download/bmecat/{objectId}": {
      "get": {
        "summary": "Downloads the BMEcat file.",
        "operationId": "downloadBmecatFile",
        "description": "Downloads the BMEcat file.",
        "tags": [
          "BmecatDownload"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download of the BMEcat file succeeded.",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string",
                  "format": "resource"
                }
              },
              "text/xml": {
                "schema": {
                  "type": "string",
                  "format": "resource"
                }
              }
            },
            "headers": {
              "Content-Disposition": {
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"name.xml\""
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/files/download/bmecat/asset/{objectId}": {
      "get": {
        "summary": "Downloads the BMEcat file associated to the given asset.",
        "operationId": "downloadBmecatFileByAsset",
        "description": "Downloads the BMEcat file associated to the given asset.",
        "tags": [
          "BmecatDownload"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download of the BMEcat file associated to the given asset succeeded.",
            "content": {
              "application/xml": {
                "schema": {
                  "type": "string",
                  "format": "resource"
                }
              },
              "text/xml": {
                "schema": {
                  "type": "string",
                  "format": "resource"
                }
              }
            },
            "headers": {
              "Content-Disposition": {
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"name.xml\""
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "files:read"
            ]
          }
        ]
      }
    },
    "/v1/aas/validation/environment": {
      "post": {
        "summary": "Validates an AAS environment file.",
        "operationId": "validateAas",
        "description": "Validates an AAS environment based on an AASX, JSON or XML file.",
        "tags": [
          "AasValidation"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "AASX file or AAS environment file in JSON or XML format to be validated."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Succeeded to validate file. The response contains the validation result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AasValidationResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/aas/validation/schema": {
      "get": {
        "summary": "Returns the AAS schema definition for the given type.",
        "operationId": "getAasSchema",
        "description": "Returns the AAS schema definition for the given type.",
        "tags": [
          "AasValidation"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/AasSchemaType"
            },
            "description": "Type for which the AAS schema should be returned."
          }
        ],
        "responses": {
          "200": {
            "description": "Succeeded to get schema.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary",
                  "description": "The schema for the AAS metamodel in JSON."
                }
              },
              "application/xml": {
                "schema": {
                  "type": "string",
                  "format": "binary",
                  "description": "The schema for the AAS metamodel in XML."
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/aas/packages/ingest": {
      "post": {
        "tags": [
          "AasxCustomUpload"
        ],
        "summary": "Deserializes AASX package and stores the metamodel in the AAS Repository, while also creating corresponding entries in the AAS Discovery and AAS Registry.",
        "operationId": "PostAASXPackage",
        "requestBody": {
          "description": "AASX package",
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/packages_body"
              },
              "encoding": {
                "file": {
                  "contentType": "application/asset-administration-shell-package",
                  "style": "form"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "AASX package stored successfully",
            "headers": {
              "Location": {
                "description": "URL of the newly created resource",
                "style": "simple",
                "explode": false,
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PackageDescription"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/bad-request"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized_aas"
          },
          "403": {
            "$ref": "#/components/responses/forbidden_aas"
          },
          "409": {
            "$ref": "#/components/responses/conflict"
          },
          "500": {
            "$ref": "#/components/responses/internal-server-error"
          },
          "default": {
            "$ref": "#/components/responses/default"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "aas:write"
            ]
          }
        ],
        "x-semanticIds": [
          "https://admin-shell.io/aas/API/PostAASXPackage/3/0"
        ]
      }
    },
    "/v1/aas/packages/download-link/type/{articleNumber}": {
      "get": {
        "description": "Get the download link of the AASX package of a product with given article number.",
        "summary": "Get the download link of the AASX package of a product with given article number.",
        "operationId": "getDownloadLinkOfProductAasx",
        "tags": [
          "AasxCustomDownload"
        ],
        "parameters": [
          {
            "name": "articleNumber",
            "in": "path",
            "description": "Article number of product, encoded in Base64 with URL safe alphabet (https://www.rfc-editor.org/rfc/rfc4648#section-5).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download link of the AASX package of the product.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AasxDownloadLinkResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "aas:custom:read"
            ]
          }
        ]
      },
      "delete": {
        "description": "Delete the generated AASX package of the product with the given article number. The next attempt to get the download link of the AASX package will generate a new one.",
        "summary": "Delete the generated AASX package of the product with the given article number. The next attempt to get the download link of the AASX package will generate a new one.",
        "operationId": "deleteAasxOfProductByArticleNumber",
        "tags": [
          "AasxCustomManagement"
        ],
        "parameters": [
          {
            "name": "articleNumber",
            "in": "path",
            "description": "Article number of product, encoded in Base64 with URL safe alphabet (https://www.rfc-editor.org/rfc/rfc4648#section-5).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "AASX package of the product has been deleted."
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "aas:custom:write"
            ]
          }
        ]
      }
    },
    "/v1/aas/packages/download-link/instance/{idLink}": {
      "get": {
        "description": "Get the download link of the AASX package of an equipment with given ID-Link.",
        "summary": "Get the download link of the AASX package of an equipment with given ID-Link.",
        "operationId": "getDownloadLinkOfEquipmentAasx",
        "tags": [
          "AasxCustomDownload"
        ],
        "parameters": [
          {
            "name": "idLink",
            "in": "path",
            "description": "Unique identifier for equipment, encoded in Base64 with URL safe alphabet (https://www.rfc-editor.org/rfc/rfc4648#section-5).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Download link of the AASX package of the equipment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AasxDownloadLinkResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "aas:custom:read"
            ]
          }
        ]
      }
    },
    "/v1/aas/packages/{articleNumber}": {
      "get": {
        "description": "Download the AASX package of a product with given article number",
        "summary": "Download the AASX package of a product with given article number.",
        "operationId": "downloadAasxOfProduct",
        "tags": [
          "AasxCustomDownload"
        ],
        "parameters": [
          {
            "name": "articleNumber",
            "in": "path",
            "description": "Article number of product, encoded in Base64 with URL safe alphabet (https://www.rfc-editor.org/rfc/rfc4648#section-5).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "AASX package of the product",
            "content": {
              "application/asset-administration-shell-package": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "aas:custom:read"
            ]
          }
        ]
      }
    },
    "/v1/aas/packages/instance/{idLink}": {
      "get": {
        "description": "Download the AASX package of an equipment with given ID-Link.",
        "summary": "Download the AASX package of an equipment with given ID-Link.",
        "operationId": "downloadAasxOfEquipment",
        "tags": [
          "AasxCustomDownload"
        ],
        "parameters": [
          {
            "name": "idLink",
            "in": "path",
            "description": "Unique identifier for equipment, encoded in Base64 with URL safe alphabet (https://www.rfc-editor.org/rfc/rfc4648#section-5).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "AASX package of the equipment.",
            "content": {
              "application/asset-administration-shell-package": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "aas:custom:read"
            ]
          }
        ]
      }
    },
    "/v1/connectors/sap/equipment/export": {
      "post": {
        "summary": "Exports to a third party system a list of equipment.",
        "operationId": "exportEquipmentList",
        "description": "Exports to a third party system a list of equipment.",
        "tags": [
          "ConnectorSapEquipment"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EquipmentExportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Export of equipment succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EquipmentExportResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "connectors:sap:export"
            ]
          }
        ]
      }
    },
    "/v1/connectors/sap/equipment/{objectId}": {
      "put": {
        "summary": "Updates equipment attributes in SAP.",
        "operationId": "updateEquipmentAttributes",
        "description": "Updates equipment attributes in SAP.",
        "tags": [
          "ConnectorSapEquipment"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "document": {
                    "type": "string",
                    "description": "BMECat document with product attributes identified by supplier PIDs. Matching supplier PID in the updateRequest with its attributes is the product which will be updated in SAP.",
                    "format": "binary"
                  },
                  "attributeUpdateRequest": {
                    "$ref": "#/components/schemas/AttributeUpdateRequest"
                  }
                }
              },
              "encoding": {
                "document": {
                  "contentType": "multipart/form-data"
                },
                "attributeUpdateRequest": {
                  "contentType": "application/json"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update of equipment attributes in SAP succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EquipmentExportResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "connectors:sap:export"
            ]
          }
        ]
      }
    },
    "/v1/connectors/sap/equipment/transfer": {
      "put": {
        "summary": "Transfers a list of equipment from a source tenant in SAP to a target tenant in SAP. Transfers means giving read/write rights to the target tenant.",
        "operationId": "transferEquipment",
        "description": "Transfers a list of equipment from a source tenant in SAP to a target tenant in SAP. Transfers means giving read/write rights to the target tenant.",
        "tags": [
          "ConnectorSapEquipment"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportedAssetTransferRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transfer of equipment succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EquipmentExportResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "connectors:sap:export"
            ]
          }
        ]
      }
    },
    "/v1/connectors/sap/products/export": {
      "post": {
        "summary": "Exports to a third party system a list of products.",
        "operationId": "exportProducts",
        "description": "Exports to a third party system a list of products.",
        "tags": [
          "ConnectorSapProduct"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductExportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Export of products succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductExportResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "connectors:sap:export"
            ]
          }
        ]
      }
    },
    "/v1/connectors/sap/product/{objectId}": {
      "put": {
        "summary": "Updates product attributes in SAP.",
        "operationId": "updateProductAttributes",
        "description": "Updates product attributes in SAP.",
        "tags": [
          "ConnectorSapProduct"
        ],
        "parameters": [
          {
            "name": "objectId",
            "in": "path",
            "description": "Assetfox unique identifier.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "document": {
                    "type": "string",
                    "description": "BMECat document with product attributes identified by supplier PIDs. Matching supplier PID in the updateRequest with its attributes is the product which will be updated in SAP.",
                    "format": "binary"
                  },
                  "attributeUpdateRequest": {
                    "$ref": "#/components/schemas/AttributeUpdateRequest"
                  }
                }
              },
              "encoding": {
                "document": {
                  "contentType": "multipart/form-data"
                },
                "attributeUpdateRequest": {
                  "contentType": "application/json"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update of product attributes in SAP succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductExportResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "connectors:sap:export"
            ]
          }
        ]
      }
    },
    "/v1/connectors/sap/products/transfer": {
      "put": {
        "summary": "Transfers a list of products from a source tenant in SAP to a target tenant in SAP. Transfers means giving read/write rights to the target tenant.",
        "operationId": "transferProducts",
        "description": "Transfers a list of products from a source tenant in SAP to a target tenant in SAP. Transfers means giving read/write rights to the target tenant.",
        "tags": [
          "ConnectorSapProduct"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportedAssetTransferRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transfer of products succeeded.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductExportResponse"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "connectors:sap:export"
            ]
          }
        ]
      }
    },
    "/v1/async/sqs/credentials": {
      "get": {
        "summary": "Provides the credentials to access the SQS queues for async communication.",
        "description": "Provides the credentials to access the SQS queues for async communication.",
        "tags": [
          "AsacSqs"
        ],
        "operationId": "getSqsCredentials",
        "responses": {
          "200": {
            "description": "SQS credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SqsCredentialsResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "asac:sqs"
            ]
          }
        ]
      }
    },
    "/v1/async/sqs/request-status": {
      "post": {
        "summary": "Updates the status of a message in the SQS queue after it has been processed by a third-party service.",
        "description": "Updates the status of a message in the SQS queue after it has been processed by a third-party service.",
        "tags": [
          "AsacSqs"
        ],
        "operationId": "updateRequestStatus",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventBrokerStatusUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Succeeded to update status of request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestStatusUpdateResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "asac:sqs"
            ]
          }
        ]
      }
    },
    "/v1/aas/exchange/jobs": {
      "post": {
        "summary": "Start a new AAS data exchange job.",
        "operationId": "startExchange",
        "description": "Triggers an AAS data exchange from a source connector to a target connector. The exchange runs asynchronously. Poll the returned job ID for status updates.\n",
        "tags": [
          "AasExchange"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExchangeRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Exchange job accepted and processing started.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExchangeJobResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "aas-exchange:write"
            ]
          }
        ]
      }
    },
    "/v1/aas/exchange/jobs/{jobId}": {
      "get": {
        "summary": "Get the status of an AAS exchange job.",
        "operationId": "getJobStatus",
        "description": "Returns the current status and details of a previously submitted exchange job.",
        "tags": [
          "AasExchange"
        ],
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the exchange job.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Job status retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExchangeJobResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "500": {
            "$ref": "#/components/responses/internalServerError"
          }
        },
        "security": [
          {
            "bearerAuth": [
              "aas-exchange:read"
            ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ProductNodeCreateRequest": {
        "required": [
          "name",
          "parentObjectId",
          "productNodeId"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "User defined designation.",
            "minLength": 1,
            "maxLength": 255
          },
          "parentObjectId": {
            "type": "string",
            "description": "Assetfox unique identifier of the parent product node. If this is null, a root product node will be created.",
            "nullable": true
          },
          "productNodeId": {
            "type": "string",
            "description": "User defined unique identifier to map an external system to the ObjectId in Assetfox.",
            "minLength": 1,
            "maxLength": 255
          }
        }
      },
      "ProductNodeCollectionResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ProductNode"
            },
            "type": "array"
          }
        }
      },
      "ProductNodeResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProductNode"
          }
        }
      },
      "ProductNode": {
        "required": [
          "meta",
          "assignedBmecatObjectId",
          "assignedDocumentObjectIds",
          "objectId",
          "parentObjectId",
          "productNodeId",
          "name"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "assignedBmecatObjectId": {
            "description": "ObjectId of BMEcat file assigned to this product node.",
            "type": "string"
          },
          "assignedDocumentObjectIds": {
            "description": "ObjectIds of document files assigned to this product node.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "objectId": {
            "description": "Assetfox unique identifier.",
            "type": "string"
          },
          "parentObjectId": {
            "description": "Assetfox unique identifier of the parent product node.",
            "type": "string"
          },
          "productNodeId": {
            "description": "User defined unique identifier to map an external system to the ObjectId in Assetfox.",
            "type": "string"
          },
          "name": {
            "description": "User defined designation.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          }
        }
      },
      "ProductNodePatchRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the updated product node.",
            "minLength": 1,
            "maxLength": 255
          },
          "productNodeId": {
            "description": "User defined unique identifier to map an external system to the ObjectId in Assetfox.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          }
        }
      },
      "ProductNodeUpdateParentObjectIdRequest": {
        "required": [
          "parentObjectId"
        ],
        "properties": {
          "parentObjectId": {
            "type": "string",
            "description": "Assetfox unique identifier for the parent product node. If this is null, a root product node will be created."
          }
        }
      },
      "Meta": {
        "required": [
          "createdBy",
          "createdAt",
          "modifiedBy",
          "modifiedAt"
        ],
        "type": "object",
        "description": "Meta information about the response document. Not part of the domain object itself.",
        "properties": {
          "createdBy": {
            "type": "string",
            "description": "Identity that created the resource."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Creation date and time."
          },
          "modifiedBy": {
            "type": "string",
            "description": "Identity that did the last change of the resource."
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of last modification."
          }
        }
      },
      "Error": {
        "required": [
          "code",
          "correlationId",
          "details",
          "title"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "correlationId": {
            "type": "string"
          },
          "details": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "title": {
            "type": "string"
          }
        }
      },
      "Errors": {
        "properties": {
          "errors": {
            "items": {
              "$ref": "#/components/schemas/Error"
            },
            "type": "array"
          }
        }
      },
      "EclassClassificationClass": {
        "required": [
          "classificationClass",
          "version"
        ],
        "properties": {
          "classificationClass": {
            "type": "string",
            "description": "ECLASS classification class of the product.",
            "minLength": 8,
            "maxLength": 8,
            "example": 32031304
          },
          "version": {
            "type": "string",
            "description": "ECLASS release version. Major and minor version separated by a dot and without a leading zero.",
            "example": 11.2
          }
        }
      },
      "ProductState": {
        "type": "string",
        "enum": [
          "CREATION_IN_PROGRESS",
          "PRODUCT_RELEASED"
        ]
      },
      "AasxPackageState": {
        "type": "string",
        "enum": [
          "NOT_AVAILABLE",
          "REQUESTED",
          "AVAILABLE"
        ]
      },
      "ProductReleaseInformation": {
        "required": [
          "aasVersion",
          "aasxPackageState",
          "aasxPackageId",
          "releasedAt",
          "shortDescription",
          "lifecycleState"
        ],
        "properties": {
          "aasxPackageId": {
            "description": "AASX Package ID for this release version. Only available if aasxPackageState is AVAILABLE.",
            "type": "string"
          },
          "aasVersion": {
            "description": "AAS version number of the release.",
            "type": "integer",
            "format": "int32"
          },
          "releasedAt": {
            "description": "Timestamp when this version was released.",
            "type": "string",
            "format": "date-time"
          },
          "shortDescription": {
            "description": "Short description provided at the time of release.",
            "type": "string"
          },
          "lifecycleState": {
            "description": "Lifecycle state provided at the time of release.",
            "type": "string"
          },
          "aasxPackageState": {
            "$ref": "#/components/schemas/AasxPackageState"
          }
        }
      },
      "Product": {
        "required": [
          "meta",
          "articleNumber",
          "assignedBmecatObjectId",
          "assignedDocumentObjectIds",
          "eclassClassificationClasses",
          "name",
          "parentObjectId",
          "objectId",
          "description",
          "state",
          "productReleaseInformation"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "articleNumber": {
            "type": "string",
            "description": "Article number of the product.",
            "minLength": 1,
            "maxLength": 255
          },
          "assignedBmecatObjectId": {
            "description": "ObjectId of BMEcat file assigned to this product.",
            "type": "string"
          },
          "assignedDocumentObjectIds": {
            "description": "ObjectIds of document files assigned to this product.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "eclassClassificationClasses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EclassClassificationClass"
            }
          },
          "name": {
            "type": "string",
            "description": "Product designation under which the device is marketed.",
            "minLength": 1,
            "maxLength": 255
          },
          "parentObjectId": {
            "type": "string",
            "description": "Assetfox unique identifier of the parent product."
          },
          "objectId": {
            "type": "string",
            "description": "Assetfox unique identifier."
          },
          "description": {
            "type": "string",
            "description": "Product description providing an overview of the product's features, usage, and other relevant information.",
            "maxLength": 1000
          },
          "state": {
            "$ref": "#/components/schemas/ProductState"
          },
          "productReleaseInformation": {
            "nullable": true,
            "description": "List of release information entries for this product.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductReleaseInformation"
            }
          }
        }
      },
      "ProductCollectionResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Product"
            },
            "type": "array"
          }
        }
      },
      "IdType": {
        "type": "string",
        "enum": [
          "ARTICLE_NUMBER",
          "ID_LINK"
        ]
      },
      "ProductDemandRequest": {
        "required": [
          "idType",
          "id"
        ],
        "properties": {
          "idType": {
            "$ref": "#/components/schemas/IdType"
          },
          "id": {
            "description": "Id type value.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          }
        }
      },
      "ProductCreateRequest": {
        "required": [
          "articleNumber",
          "eclassClassificationClasses",
          "name",
          "parentObjectId"
        ],
        "properties": {
          "articleNumber": {
            "type": "string",
            "description": "Article number of the product.",
            "minLength": 1,
            "maxLength": 255
          },
          "name": {
            "type": "string",
            "description": "Product designation under which the device is marketed.",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "nullable": true,
            "type": "string",
            "description": "Product description providing an overview of the product's features, usage, and other relevant information.",
            "maxLength": 1000
          },
          "parentObjectId": {
            "type": "string",
            "description": "Assetfox unique identifier of the parent ObjectId of the product. Must either match to ObjectId of a product node or to the articleNumber of a non-variant product."
          },
          "eclassClassificationClasses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EclassClassificationClass"
            },
            "nullable": true
          }
        }
      },
      "ProductUpdateParentObjectIdRequest": {
        "required": [
          "parentObjectId"
        ],
        "properties": {
          "parentObjectId": {
            "type": "string",
            "description": "Assetfox unique identifier of the parent product node."
          }
        }
      },
      "ProductDemandResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProductDemand"
          }
        }
      },
      "ProductDemand": {
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "type": "string",
            "description": "Status of the demand operation."
          }
        }
      },
      "ProductResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Product"
          }
        }
      },
      "ProductGenerateAasxRequest": {
        "type": "object",
        "properties": {
          "shortDescription": {
            "description": "Short description provided at the time of releasing the product.",
            "type": "string",
            "nullable": true
          },
          "lifecycleState": {
            "description": "Lifecycle state provided at the time of releasing the product.",
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProductPatchRequest": {
        "properties": {
          "name": {
            "type": "string",
            "description": "Product designation under which the device is marketed.",
            "minLength": 1,
            "maxLength": 255
          },
          "eclassClassificationClasses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EclassClassificationClass"
            }
          },
          "description": {
            "type": "string",
            "description": "Product description providing an overview of the product's features, usage, and other relevant information.",
            "maxLength": 1000
          }
        }
      },
      "ProductVariant": {
        "required": [
          "meta",
          "articleNumber",
          "assignedBmecatObjectId",
          "assignedDocumentObjectIds",
          "eclassClassificationClasses",
          "name",
          "objectId",
          "parentObjectId",
          "description"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "objectId": {
            "type": "string",
            "description": "Assetfox unique identifier."
          },
          "assignedBmecatObjectId": {
            "description": "ObjectId of BMEcat file assigned to this product variant.",
            "type": "string"
          },
          "assignedDocumentObjectIds": {
            "description": "ObjectIds of document files assigned to this product variant.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "parentObjectId": {
            "type": "string",
            "description": "Assetfox unique identifier of the parent product."
          },
          "articleNumber": {
            "type": "string",
            "description": "Unique product identifier of the manufacturer.",
            "minLength": 1,
            "maxLength": 255
          },
          "eclassClassificationClasses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EclassClassificationClass"
            }
          },
          "name": {
            "type": "string",
            "description": "Product designation under which the device is marketed.",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "Product description providing an overview of the product's variant features, usage, and other relevant information.",
            "maxLength": 1000
          }
        }
      },
      "ProductVariantCollectionResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ProductVariant"
            },
            "type": "array"
          }
        }
      },
      "ProductVariantCreateRequest": {
        "required": [
          "parentObjectId",
          "articleNumber",
          "eclassClassificationClasses",
          "name"
        ],
        "properties": {
          "parentObjectId": {
            "type": "string",
            "description": "Assetfox unique identifier of the parent product."
          },
          "articleNumber": {
            "type": "string",
            "description": "Unique product identifier of the manufacturer.",
            "minLength": 1,
            "maxLength": 255
          },
          "eclassClassificationClasses": {
            "nullable": true,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EclassClassificationClass"
            }
          },
          "name": {
            "type": "string",
            "description": "Product designation under which the device is marketed.",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "nullable": true,
            "type": "string",
            "description": "Product description providing an overview of the product's variant features, usage, and other relevant information.",
            "maxLength": 1000
          }
        }
      },
      "ProductVariantResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ProductVariant"
          }
        }
      },
      "ProductVariantUpdateParentObjectIdRequest": {
        "required": [
          "parentObjectId"
        ],
        "properties": {
          "parentObjectId": {
            "type": "string",
            "description": "Assetfox unique identifier for the parent product."
          }
        }
      },
      "ProductVariantPatchRequest": {
        "properties": {
          "eclassClassificationClasses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EclassClassificationClass"
            }
          },
          "name": {
            "type": "string",
            "description": "Product designation under which the device is marketed.",
            "minLength": 1,
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "Product description providing an overview of the product's variant features, usage, and other relevant information.",
            "maxLength": 1000
          }
        }
      },
      "EquipmentPatchRequest": {
        "properties": {
          "productionDate": {
            "description": "Date in the format yyyy-MM-dd on which the production and/or development process is completed or on which a service is provided completely.",
            "type": "string",
            "format": "date",
            "example": "2019-05-17"
          },
          "hardwareVersion": {
            "description": "Hardware version associated with the equipment.",
            "type": "string",
            "nullable": true
          },
          "softwareVersion": {
            "description": "Software version associated with the equipment.",
            "type": "string",
            "nullable": true
          },
          "firmwareVersion": {
            "description": "Firmware version associated with the equipment.",
            "type": "string",
            "nullable": true
          },
          "tagId": {
            "description": "Additional identifier associated with the equipment.\nAlphanumeric characters and special characters - _ . / # ( ) @ $ & + are allowed.\nSpaces are not allowed.\nIt must start with an alphanumeric character.\n",
            "type": "string",
            "nullable": true
          },
          "equipmentContactInformation": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/EquipmentContactInformationPatch"
              }
            ]
          },
          "manufacturerName": {
            "description": "Name of the manufacturer.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          }
        }
      },
      "EquipmentCollectionResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Equipment"
            },
            "type": "array"
          }
        }
      },
      "EquipmentResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Equipment"
          }
        }
      },
      "Equipment": {
        "required": [
          "meta",
          "assignedBmecatObjectId",
          "assignedDocumentObjectIds",
          "identificationLink",
          "objectId",
          "parentAssetType",
          "parentObjectId",
          "productionDate",
          "serialNumber",
          "hardwareVersion",
          "softwareVersion",
          "firmwareVersion",
          "tagId",
          "equipmentContactInformation",
          "manufacturerName",
          "state",
          "equipmentReleaseInformation"
        ],
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "objectId": {
            "description": "Assetfox unique identifier.",
            "type": "string"
          },
          "assignedBmecatObjectId": {
            "description": "ObjectId of BMEcat file assigned to this equipment.",
            "type": "string"
          },
          "assignedDocumentObjectIds": {
            "description": "ObjectIds of document files assigned to this equipment.",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "parentAssetType": {
            "description": "Type of the parent asset to which the equipment is assigned. The parent can be a product or a product variant.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetType"
              },
              {
                "type": "string",
                "enum": [
                  "PRODUCT",
                  "PRODUCT_VARIANT"
                ]
              }
            ]
          },
          "parentObjectId": {
            "description": "Assetfox unique identifier of the product or product variant to which the equipment is assigned.",
            "type": "string"
          },
          "serialNumber": {
            "description": "Unique identifier used to identify the device once it has been manufactured.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "identificationLink": {
            "description": "Global unique identifier following the standard IEC 61406.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "productionDate": {
            "description": "Date in the format yyyy-MM-dd on which the production and/or development process is completed or on which a service is provided completely.",
            "type": "string",
            "format": "date",
            "example": "2019-05-17"
          },
          "hardwareVersion": {
            "description": "Hardware version associated with the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "softwareVersion": {
            "description": "Software version associated with the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "firmwareVersion": {
            "description": "Firmware version associated with the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "tagId": {
            "description": "Additional identifier associated with the equipment.\nAlphanumeric characters and special characters - _ . / # ( ) @ $ & + are allowed.\nSpaces are not allowed.\nIt must start with an alphanumeric character.\n",
            "type": "string",
            "minLength": 1,
            "maxLength": 50
          },
          "equipmentContactInformation": {
            "$ref": "#/components/schemas/EquipmentContactInformation"
          },
          "manufacturerName": {
            "description": "Name of the manufacturer.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "state": {
            "$ref": "#/components/schemas/EquipmentState"
          },
          "equipmentReleaseInformation": {
            "nullable": true,
            "description": "List of release information entries for this equipment.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EquipmentReleaseInformation"
            }
          }
        }
      },
      "EquipmentCreateRequest": {
        "required": [
          "serialNumber",
          "identificationLink",
          "parentObjectId",
          "productionDate",
          "hardwareVersion",
          "softwareVersion",
          "firmwareVersion",
          "tagId",
          "equipmentContactInformation",
          "manufacturerName"
        ],
        "properties": {
          "parentObjectId": {
            "description": "Assetfox unique identifier of the parent product or product variant.",
            "type": "string"
          },
          "serialNumber": {
            "description": "Unique identifier used to identify the device once it has been manufactured.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "identificationLink": {
            "description": "Global unique identifier following the standard IEC 61406.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "productionDate": {
            "description": "Date in the format yyyy-MM-dd on which the production and/or development process is completed or on which a service is provided completely.",
            "type": "string",
            "format": "date",
            "nullable": true,
            "example": "2019-05-17"
          },
          "hardwareVersion": {
            "description": "Hardware version associated with the equipment.",
            "type": "string",
            "nullable": true
          },
          "softwareVersion": {
            "description": "Software version associated with the equipment.",
            "type": "string",
            "nullable": true
          },
          "firmwareVersion": {
            "description": "Firmware version associated with the equipment.",
            "type": "string",
            "nullable": true
          },
          "tagId": {
            "description": "Additional identifier associated with the equipment.\nAlphanumeric characters and special characters - _ . / # ( ) @ $ & + are allowed.\nSpaces are not allowed.\nIt must start with an alphanumeric character.\n",
            "type": "string",
            "nullable": true
          },
          "manufacturerName": {
            "description": "Name of the manufacturer.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "equipmentContactInformation": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/EquipmentContactInformation"
              }
            ]
          }
        }
      },
      "EquipmentContactInformation": {
        "required": [
          "nationalCode",
          "cityTown",
          "street",
          "zipCode"
        ],
        "properties": {
          "nationalCode": {
            "description": "National code contact information of the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "cityTown": {
            "description": "City/Town contact information of the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "street": {
            "description": "Street contact information of the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "zipCode": {
            "description": "Zip code contact information of the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          }
        }
      },
      "EquipmentContactInformationPatch": {
        "type": "object",
        "description": "Contact Information that is responsible for this equipment.",
        "properties": {
          "nationalCode": {
            "description": "National code contact information of the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "cityTown": {
            "description": "City/Town contact information of the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "street": {
            "description": "Street contact information of the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "zipCode": {
            "description": "Zip code contact information of the equipment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          }
        }
      },
      "EquipmentUpdateParentObjectIdRequest": {
        "required": [
          "parentObjectId"
        ],
        "properties": {
          "parentObjectId": {
            "type": "string",
            "description": "Assetfox unique identifier of the parent product or product variant."
          }
        }
      },
      "EquipmentGenerateAasxRequest": {
        "type": "object",
        "properties": {
          "shortDescription": {
            "description": "Short description provided at the time of releasing the equipment.",
            "type": "string",
            "nullable": true
          },
          "lifecycleState": {
            "description": "Lifecycle state provided at the time of releasing the equipment.",
            "type": "string",
            "nullable": true
          }
        }
      },
      "EquipmentReleaseInformation": {
        "required": [
          "aasId",
          "aasVersion",
          "aasxPackageState",
          "aasxPackageId",
          "releasedAt",
          "shortDescription",
          "lifecycleState"
        ],
        "properties": {
          "aasId": {
            "description": "AAS ID for this release version.",
            "type": "string"
          },
          "aasxPackageId": {
            "description": "AASX Package ID for this release version.",
            "type": "string"
          },
          "aasVersion": {
            "description": "AAS version number of the release.",
            "type": "integer",
            "format": "int32"
          },
          "releasedAt": {
            "description": "Timestamp when this version was released.",
            "type": "string",
            "format": "date-time"
          },
          "shortDescription": {
            "description": "Short description provided at the time of release.",
            "type": "string"
          },
          "lifecycleState": {
            "description": "Lifecycle state provided at the time of release.",
            "type": "string"
          },
          "aasxPackageState": {
            "$ref": "#/components/schemas/AasxPackageState"
          }
        }
      },
      "EquipmentState": {
        "type": "string",
        "enum": [
          "CREATION_IN_PROGRESS",
          "RELEASED"
        ]
      },
      "AssetType": {
        "type": "string",
        "enum": [
          "EQUIPMENT",
          "PRODUCT",
          "PRODUCT_NODE",
          "PRODUCT_VARIANT"
        ]
      },
      "AssignmentRequest": {
        "required": [
          "assetObjectId",
          "assetType"
        ],
        "properties": {
          "assetObjectId": {
            "type": "string",
            "description": "Assetfox unique identifier."
          },
          "assetType": {
            "$ref": "#/components/schemas/AssetType"
          }
        }
      },
      "Assignments": {
        "required": [
          "assetObjectIds",
          "assetType"
        ],
        "properties": {
          "assetObjectIds": {
            "type": "array",
            "description": "Array of asset ObjectIds (Assetfox unique identifiers) to which the document will be assigned.",
            "items": {
              "type": "string"
            }
          },
          "assetType": {
            "$ref": "#/components/schemas/AssetType"
          }
        }
      },
      "BmecatUploadInfoResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BmecatUploadInfo"
          }
        }
      },
      "BmecatUploadInfo": {
        "required": [
          "objectId",
          "fileMd5Hashcode"
        ],
        "properties": {
          "objectId": {
            "type": "string",
            "description": "Assetfox unique identifier."
          },
          "fileMd5Hashcode": {
            "type": "string",
            "description": "MD5 hash value of the file.",
            "minLength": 32,
            "maxLength": 32
          }
        }
      },
      "DocumentProperties": {
        "required": [
          "documentId",
          "keywords",
          "languages",
          "releaseDate",
          "responsibleParty",
          "summary",
          "title",
          "version",
          "vdi2770Categories"
        ],
        "properties": {
          "documentId": {
            "description": "User defined identifier to map an external system to the ObjectId in Assetfox.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "keywords": {
            "type": "array",
            "description": "List of keywords of the document.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "nullable": true
          },
          "languages": {
            "type": "array",
            "description": "List of languages of the document according to ISO 639-1 Code.",
            "items": {
              "$ref": "#/components/schemas/Language"
            },
            "nullable": true
          },
          "releaseDate": {
            "type": "string",
            "format": "date",
            "description": "Date at which the document was released in the format yyyy-MM-dd.",
            "example": "2019-05-17",
            "nullable": true
          },
          "responsibleParty": {
            "$ref": "#/components/schemas/ResponsibleParty"
          },
          "summary": {
            "type": "string",
            "description": "Summary of the document content.",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "Title of the document.",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "version": {
            "type": "string",
            "description": "Identified state of a document in its lifecycle.",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "vdi2770Categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vdi2770Category"
            },
            "nullable": true
          }
        }
      },
      "DocumentUploadRequest": {
        "required": [
          "acceptDuplicateFile",
          "assignments",
          "documentProperties",
          "publish"
        ],
        "properties": {
          "acceptDuplicateFile": {
            "type": "boolean",
            "description": "If true, the document will be uploaded even if a document with the same hashcode already exists."
          },
          "assignments": {
            "$ref": "#/components/schemas/Assignments"
          },
          "documentProperties": {
            "$ref": "#/components/schemas/DocumentProperties"
          },
          "publish": {
            "type": "boolean",
            "description": "If set to true, the document will be accessible by document readers in the same tenant."
          }
        }
      },
      "DocumentUploadInfoResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DocumentUploadInfo"
          }
        }
      },
      "DocumentUploadInfo": {
        "required": [
          "objectId",
          "fileMd5Hashcode"
        ],
        "properties": {
          "objectId": {
            "type": "string",
            "description": "Assetfox unique identifier."
          },
          "fileMd5Hashcode": {
            "type": "string",
            "description": "MD5 hash value of the file.",
            "minLength": 32,
            "maxLength": 32
          }
        }
      },
      "Language": {
        "type": "string",
        "description": "Language according to ISO 639-1.",
        "enum": [
          "zh",
          "en",
          "de",
          "it",
          "es",
          "aa",
          "ab",
          "af",
          "ak",
          "sq",
          "am",
          "ar",
          "an",
          "as",
          "av",
          "ae",
          "ay",
          "az",
          "ba",
          "bm",
          "be",
          "bn",
          "bh",
          "bi",
          "bo",
          "bs",
          "br",
          "bg",
          "ca",
          "cs",
          "ch",
          "ce",
          "cu",
          "cv",
          "kw",
          "co",
          "cr",
          "cy",
          "da",
          "dv",
          "nl",
          "dz",
          "el",
          "eo",
          "et",
          "ee",
          "eu",
          "fo",
          "fa",
          "fj",
          "fi",
          "fr",
          "fy",
          "ff",
          "gd",
          "ga",
          "gl",
          "gv",
          "gn",
          "gu",
          "ht",
          "ha",
          "he",
          "hz",
          "hi",
          "ho",
          "hr",
          "hu",
          "hy",
          "ig",
          "io",
          "ii",
          "iu",
          "ie",
          "ia",
          "id",
          "ik",
          "is",
          "jv",
          "ja",
          "kl",
          "kn",
          "ks",
          "ka",
          "kr",
          "kk",
          "km",
          "ki",
          "rw",
          "ky",
          "kv",
          "kg",
          "ko",
          "kj",
          "ku",
          "lo",
          "la",
          "lv",
          "li",
          "ln",
          "lt",
          "lb",
          "lu",
          "lg",
          "mh",
          "mi",
          "mr",
          "ms",
          "mk",
          "mg",
          "ml",
          "mt",
          "mn",
          "my",
          "na",
          "nv",
          "nr",
          "nd",
          "ng",
          "ne",
          "nn",
          "nb",
          "no",
          "ny",
          "oc",
          "oj",
          "or",
          "om",
          "os",
          "pa",
          "pi",
          "pl",
          "pt",
          "ps",
          "qu",
          "rm",
          "ro",
          "rn",
          "ru",
          "sg",
          "sa",
          "si",
          "sk",
          "sl",
          "se",
          "sm",
          "sn",
          "sd",
          "so",
          "st",
          "sc",
          "sr",
          "ss",
          "su",
          "sw",
          "sv",
          "ty",
          "ta",
          "tt",
          "te",
          "tg",
          "tl",
          "th",
          "ti",
          "to",
          "tn",
          "ts",
          "tk",
          "tr",
          "tw",
          "ug",
          "uk",
          "ur",
          "uz",
          "ve",
          "vi",
          "vo",
          "wa",
          "wo",
          "xh",
          "yi",
          "yo",
          "za",
          "zu"
        ]
      },
      "ResponsibleParty": {
        "required": [
          "domain",
          "name",
          "officialName"
        ],
        "type": "object",
        "description": "Party that is responsible for this document.",
        "nullable": true,
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain id of the party that is responsible for this document.",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Name of the party that is responsible for this document.",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "officialName": {
            "type": "string",
            "description": "Official name of the party that is responsible for this document.",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          }
        }
      },
      "Vdi2770Category": {
        "type": "string",
        "description": "Classification of the document according to VDI2770:2018.",
        "enum": [
          "01-01",
          "02-01",
          "02-02",
          "02-03",
          "02-04",
          "03-01",
          "03-02",
          "03-03",
          "03-04",
          "03-05",
          "03-06",
          "04-01"
        ]
      },
      "BinaryFileProperties": {
        "required": [
          "fileMd5Hashcode",
          "filename"
        ],
        "properties": {
          "fileMd5Hashcode": {
            "type": "string",
            "description": "MD5 hash value of the file.",
            "minLength": 32,
            "maxLength": 32
          },
          "filename": {
            "type": "string",
            "description": "Name of the file."
          }
        }
      },
      "DocumentMetadataResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DocumentMetadata"
          }
        }
      },
      "DocumentMetadata": {
        "required": [
          "binaryFileProperties",
          "documentId",
          "hasBinaryFile",
          "hasExternalFileLink",
          "keywords",
          "languages",
          "objectId",
          "pdfaCompliant",
          "published",
          "releaseDate",
          "responsibleParty",
          "summary",
          "title",
          "version",
          "vdi2770Categories"
        ],
        "properties": {
          "binaryFileProperties": {
            "$ref": "#/components/schemas/BinaryFileProperties"
          },
          "documentId": {
            "description": "User defined identifier to map an external system to the ObjectId in Assetfox.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "hasBinaryFile": {
            "type": "boolean",
            "description": "Indicates if there is a binary file associated with the document."
          },
          "hasExternalFileLink": {
            "type": "boolean",
            "description": "Indicates if there is an external file link associated with the document."
          },
          "keywords": {
            "type": "array",
            "description": "List of keywords of the document.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "nullable": true
          },
          "languages": {
            "type": "array",
            "description": "List of languages of the document according to ISO 639-1 Code.",
            "items": {
              "$ref": "#/components/schemas/Language"
            },
            "nullable": true
          },
          "objectId": {
            "description": "Assetfox unique identifier.",
            "type": "string"
          },
          "pdfaCompliant": {
            "type": "boolean",
            "description": "If true, the document is PDF/A compliant."
          },
          "published": {
            "type": "boolean",
            "description": "If published is false, the file is only accessible inside your organization document management area."
          },
          "releaseDate": {
            "type": "string",
            "format": "date",
            "description": "Date at which the document was released in the format yyyy-MM-dd.",
            "example": "2019-05-17",
            "nullable": true
          },
          "responsibleParty": {
            "$ref": "#/components/schemas/ResponsibleParty"
          },
          "summary": {
            "type": "string",
            "description": "Summary of the document content.",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "Title of the document.",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "version": {
            "type": "string",
            "description": "Identified state of a document in its lifecycle.",
            "minLength": 1,
            "maxLength": 255,
            "nullable": true
          },
          "vdi2770Categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vdi2770Category"
            },
            "nullable": true
          }
        }
      },
      "DocumentMetadataInfoCollectionResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/DocumentMetadataInfo"
            },
            "type": "array"
          }
        }
      },
      "DocumentMetadataInfoResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DocumentMetadataInfo"
          }
        }
      },
      "DocumentMetadataInfo": {
        "required": [
          "assignments",
          "documentMetadata"
        ],
        "properties": {
          "assignments": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "documentMetadata": {
            "$ref": "#/components/schemas/DocumentMetadata"
          }
        }
      },
      "DocumentMetadataPatchRequest": {
        "properties": {
          "documentId": {
            "description": "User defined unique identifier to map an external system to the ObjectId in Assetfox.",
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "vdi2770Categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Vdi2770Category"
            }
          },
          "keywords": {
            "type": "array",
            "description": "List of keywords of the document.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            }
          },
          "languages": {
            "type": "array",
            "description": "List of languages of the document according to ISO 639-1 Code.",
            "items": {
              "$ref": "#/components/schemas/Language"
            }
          },
          "releaseDate": {
            "type": "string",
            "format": "date",
            "description": "Date at which the document was released in the format yyyy-MM-dd.",
            "example": "2019-05-17"
          },
          "responsibleParty": {
            "$ref": "#/components/schemas/ResponsiblePartyPatch"
          },
          "summary": {
            "type": "string",
            "description": "Summary of the document content.",
            "minLength": 1,
            "maxLength": 255
          },
          "title": {
            "type": "string",
            "description": "Title of the document.",
            "minLength": 1,
            "maxLength": 255
          },
          "version": {
            "type": "string",
            "description": "Identified state of a document in its lifecycle.",
            "minLength": 1,
            "maxLength": 255
          }
        }
      },
      "ExternalFileLinkResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ExternalFileLink"
          }
        }
      },
      "ExternalFileLink": {
        "required": [
          "externalFileLink"
        ],
        "properties": {
          "externalFileLink": {
            "description": "External file link of the document.",
            "type": "string"
          }
        }
      },
      "FileAssignRequest": {
        "required": [
          "objectIdsToAssign",
          "assetType"
        ],
        "properties": {
          "objectIdsToAssign": {
            "type": "array",
            "description": "Array of asset ObjectIds (Assetfox unique identifiers) to which the file will be assigned.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 10
          },
          "assetType": {
            "$ref": "#/components/schemas/AssetType"
          }
        }
      },
      "FileUnassignRequest": {
        "required": [
          "objectIdsToUnassign",
          "assetType"
        ],
        "properties": {
          "objectIdsToUnassign": {
            "type": "array",
            "description": "Array of asset ObjectIds (Assetfox unique identifiers) from which the file assignment will be removed.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 10
          },
          "assetType": {
            "$ref": "#/components/schemas/AssetType"
          }
        }
      },
      "ResponsiblePartyPatch": {
        "type": "object",
        "description": "Party that is responsible for this document.",
        "properties": {
          "domain": {
            "type": "string",
            "description": "Domain id of the party that is responsible for this document.",
            "minLength": 1,
            "maxLength": 255
          },
          "name": {
            "type": "string",
            "description": "Name of the party that is responsible for this document.",
            "minLength": 1,
            "maxLength": 255
          },
          "officialName": {
            "type": "string",
            "description": "Official name of the party that is responsible for this document.",
            "minLength": 1,
            "maxLength": 255
          }
        }
      },
      "AasSchemaType": {
        "type": "string",
        "enum": [
          "JSON",
          "XML"
        ]
      },
      "AasValidationResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AasValidation"
          }
        }
      },
      "AasValidation": {
        "required": [
          "validationErrors"
        ],
        "properties": {
          "validationErrors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AasValidationError"
            }
          }
        }
      },
      "AasValidationError": {
        "type": "object",
        "additionalProperties": {
          "type": "string"
        }
      },
      "GetPackageDescriptionsResult": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PagedResult"
          },
          {
            "type": "object",
            "properties": {
              "result": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PackageDescription"
                }
              }
            }
          }
        ]
      },
      "PagedResult": {
        "type": "object",
        "properties": {
          "paging_metadata": {
            "$ref": "#/components/schemas/PagedResult_paging_metadata"
          }
        }
      },
      "PackageDescription": {
        "type": "object",
        "properties": {
          "aasIds": {
            "type": "array",
            "items": {
              "maxLength": 2000,
              "pattern": "^([\\x09\\x0a\\x0d\\x20-\\ud7ff\\ue000-\\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$",
              "type": "string"
            }
          },
          "packageId": {
            "maxLength": 128,
            "type": "string"
          }
        }
      },
      "Result": {
        "type": "object",
        "properties": {
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Message"
            }
          }
        }
      },
      "Message": {
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 32,
            "minLength": 1,
            "type": "string"
          },
          "correlationId": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          },
          "messageType": {
            "type": "string",
            "enum": [
              "Undefined",
              "Info",
              "Warning",
              "Error",
              "Exception"
            ]
          },
          "text": {
            "type": "string"
          },
          "timestamp": {
            "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": "string"
          }
        }
      },
      "ServiceDescription": {
        "type": "object",
        "required": [
          "profiles"
        ],
        "properties": {
          "profiles": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "example": "[\"https://admin-shell.io/aas/API/3/0/AssetAdministrationShellServiceSpecification/SSP-001\",\"https://admin-shell.io/aas/API/3/0/AssetAdministrationShellServiceSpecification/SSP-002\",\"https://admin-shell.io/aas/API/3/0/SubmodelServiceSpecification/SSP-001\",\"https://admin-shell.io/aas/API/3/0/SubmodelServiceSpecification/SSP-002\",\"https://admin-shell.io/aas/API/3/0/SubmodelServiceSpecification/SSP-003\",\"https://admin-shell.io/aas/API/3/0/AasxFileServerServiceSpecification/SSP-001\",\"https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRegistryServiceSpecification/SSP-001\",\"https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRegistryServiceSpecification/SSP-002\",\"https://admin-shell.io/aas/API/3/0/SubmodelRegistryServiceSpecification/SSP-001\",\"https://admin-shell.io/aas/API/3/0/SubmodelRegistryServiceSpecification/SSP-002\",\"https://admin-shell.io/aas/API/3/0/DiscoveryServiceSpecification/SSP-001\",\"https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRepositoryServiceSpecification/SSP-001\",\"https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRepositoryServiceSpecification/SSP-002\",\"https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-001\",\"https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-002\",\"https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-003\",\"https://admin-shell.io/aas/API/3/0/SubmodelRepositoryServiceSpecification/SSP-004\",\"https://admin-shell.io/aas/API/3/0/ConceptDescriptionServiceSpecification/SSP-001\"]"
            }
          }
        },
        "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": "{\n  \"profiles\": [\n    \"https://admin-shell.io/aas/API/3/0/AssetAdministrationShellRegistryServiceSpecification/SSP-002\",\n    \"https://admin-shell.io/aas/API/3/0/SubmodelRegistryServiceSpecification/SSP-002\"\n  ]\n}"
      },
      "packages_body": {
        "type": "object",
        "properties": {
          "file": {
            "type": "string",
            "format": "binary"
          },
          "fileName": {
            "type": "string"
          }
        }
      },
      "packages_packageId_body": {
        "type": "object",
        "properties": {
          "aasIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "file": {
            "type": "string",
            "format": "binary"
          },
          "fileName": {
            "type": "string"
          }
        }
      },
      "PagedResult_paging_metadata": {
        "type": "object",
        "required": [
          "cursor"
        ],
        "properties": {
          "cursor": {
            "type": "string",
            "example": "wJlCDLIl6KTWypN7T6vc6nWEmEYe99Hjf1XY1xmqV-M=#"
          }
        }
      },
      "AasxDownloadLinkResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AasxDownloadLink"
          }
        }
      },
      "AasxDownloadLink": {
        "type": "object",
        "properties": {
          "aasxDownloadLink": {
            "type": "string"
          }
        },
        "required": [
          "aasxDownloadLink"
        ]
      },
      "AttributeUpdateRequest": {
        "type": "object",
        "required": [
          "connectorId"
        ],
        "properties": {
          "connectorId": {
            "type": "string",
            "description": "Identifier of Assetfox configured connection to an external system."
          },
          "supplierPID": {
            "type": "string",
            "description": "Unique identifier for each product in the BMECat document.",
            "nullable": true
          }
        }
      },
      "EquipmentExportResponse": {
        "type": "object",
        "required": [
          "objectId",
          "sapAssetExternalId",
          "transactionType",
          "status"
        ],
        "properties": {
          "objectId": {
            "type": "string",
            "description": "Assetfox unique identifier."
          },
          "sapAssetExternalId": {
            "type": "string",
            "description": "SAP asset external ID of the equipment export transaction."
          },
          "transactionType": {
            "$ref": "#/components/schemas/TransactionType"
          },
          "successMessage": {
            "type": "string",
            "description": "Success message of the export transaction."
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatus"
          },
          "documentExportResponses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentExportResponse"
            },
            "description": "List of document export transaction results."
          },
          "error": {
            "$ref": "#/components/schemas/ExportTransactionError"
          }
        }
      },
      "ExportedAssetTransferRequest": {
        "type": "object",
        "required": [
          "connectorId",
          "source",
          "target",
          "objectIds"
        ],
        "properties": {
          "connectorId": {
            "type": "string",
            "description": "Identifier of Assetfox configured connection to an external system."
          },
          "source": {
            "type": "string",
            "description": "Source third party organization group name."
          },
          "target": {
            "type": "string",
            "description": "Target third party organization group name."
          },
          "objectIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of Assetfox unique identifiers of the assets to be transferred."
          }
        }
      },
      "ExportTransactionError": {
        "type": "object",
        "description": "Error information of the product export transaction.",
        "required": [
          "message",
          "code",
          "detail"
        ],
        "properties": {
          "message": {
            "type": "string",
            "description": "Error message."
          },
          "code": {
            "type": "string",
            "description": "Error code."
          },
          "detail": {
            "type": "string",
            "description": "Error detail."
          }
        }
      },
      "DocumentExportResponse": {
        "type": "object",
        "required": [
          "objectId",
          "sapAssetExternalId"
        ],
        "properties": {
          "documentId": {
            "type": "string",
            "description": "User defined identifier to map an external system to the ObjectId in Assetfox."
          },
          "objectId": {
            "type": "string",
            "description": "Assetfox unique identifier."
          },
          "sapAssetExternalId": {
            "type": "string",
            "description": "SAP asset external ID of the document export transaction."
          },
          "transactionType": {
            "$ref": "#/components/schemas/TransactionType"
          },
          "documentname": {
            "type": "string",
            "description": "Name of the document."
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatus"
          },
          "error": {
            "$ref": "#/components/schemas/ExportTransactionError"
          }
        }
      },
      "ProductExportResponse": {
        "type": "object",
        "required": [
          "objectId",
          "sapAssetExternalId",
          "transactionType",
          "status"
        ],
        "properties": {
          "objectId": {
            "type": "string",
            "description": "Assetfox unique identifier."
          },
          "sapAssetExternalId": {
            "type": "string",
            "description": "SAP asset external ID of the product export transaction."
          },
          "transactionType": {
            "$ref": "#/components/schemas/TransactionType"
          },
          "successMessage": {
            "type": "string",
            "description": "Success message of the export transaction."
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatus"
          },
          "documentExportResponses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentExportResponse"
            },
            "description": "List of document export transaction results."
          },
          "error": {
            "$ref": "#/components/schemas/ExportTransactionError"
          }
        }
      },
      "TransactionStatus": {
        "type": "string",
        "description": "Status of the export transaction.",
        "enum": [
          "SUCCESS",
          "FAILURE"
        ]
      },
      "TransactionType": {
        "type": "string",
        "description": "Type of the export transaction.",
        "enum": [
          "MODEL_EXPORT",
          "MODEL_TRANSFER",
          "DOCUMENT_EXPORT",
          "DOCUMENT_TRANSFER",
          "TEMPLATE_EXPORT",
          "EQUIPMENT_EXPORT",
          "EQUIPMENT_TRANSFER",
          "EQUIPMENT_UPDATE",
          "PRODUCT_UPDATE"
        ]
      },
      "EquipmentExportRequest": {
        "type": "object",
        "required": [
          "connectorId",
          "objectIds",
          "includeHierarchyInformation"
        ],
        "properties": {
          "connectorId": {
            "type": "string",
            "description": "Identifier of Assetfox configured connection to an external system."
          },
          "includeHierarchyInformation": {
            "type": "boolean",
            "description": "A flag indicating whether product assignments, such as documents, should be included in the equipment export."
          },
          "objectIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of Assetfox unique identifiers of the equipment to be exported."
          }
        }
      },
      "ProductExportRequest": {
        "type": "object",
        "required": [
          "connectorId",
          "objectIds"
        ],
        "properties": {
          "connectorId": {
            "type": "string",
            "description": "Identifier of Assetfox configured connection to an external system."
          },
          "objectIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of Assetfox unique identifiers of the products to be exported."
          }
        }
      },
      "RequestStatusUpdateResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RequestStatusUpdate"
          }
        }
      },
      "RequestStatusUpdate": {
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "type": "string",
            "description": "Status of the update operation."
          }
        }
      },
      "SqsCredentialsResponse": {
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SqsCredentials"
          }
        }
      },
      "SqsCredentials": {
        "required": [
          "accessKeyId",
          "expiration",
          "secretAccessKey",
          "sessionToken",
          "queueUrl"
        ],
        "properties": {
          "accessKeyId": {
            "type": "string",
            "description": "The access key ID that identifies the temporary security credentials."
          },
          "expiration": {
            "type": "string",
            "description": "The date time on which the current credentials expire."
          },
          "secretAccessKey": {
            "type": "string",
            "description": "The secret access key that can be used to sign requests."
          },
          "sessionToken": {
            "type": "string",
            "description": "The token that users must pass to the SQS API to use the temporary credentials."
          },
          "queueUrl": {
            "type": "string",
            "description": "The URL of the SQS queue."
          }
        }
      },
      "EventBrokerStatusUpdateRequest": {
        "required": [
          "requestId",
          "status",
          "statusMessage"
        ],
        "properties": {
          "requestId": {
            "type": "string",
            "description": "Unique identifier for the request."
          },
          "status": {
            "type": "string",
            "description": "Status of the request.",
            "enum": [
              "IN_PROGRESS",
              "SUCCESS",
              "FAILURE"
            ]
          },
          "statusMessage": {
            "type": "string",
            "description": "Detailed message for the status of the request in case of failure."
          }
        }
      },
      "ExchangeRequest": {
        "type": "object",
        "required": [
          "sourceConnectorId",
          "targetConnectorId",
          "assetId",
          "assetKind",
          "idType"
        ],
        "properties": {
          "sourceConnectorId": {
            "type": "string",
            "description": "Identifier of the source connector to ingest AAS data from.",
            "example": "Test_Lanxess"
          },
          "targetConnectorId": {
            "type": "string",
            "description": "Identifier of the target connector to distribute AAS data to.",
            "example": "Local"
          },
          "assetId": {
            "type": "string",
            "description": "The asset identifier to exchange.",
            "example": "6ES7515-2AN03-0AB0"
          },
          "assetKind": {
            "type": "string",
            "description": "The kind of asset.",
            "enum": [
              "TYPE",
              "INSTANCE"
            ]
          },
          "idType": {
            "type": "string",
            "description": "The type of asset identifier.",
            "enum": [
              "ARTICLE_NUMBER",
              "SERIAL_NUMBER",
              "ID_LINK"
            ]
          },
          "distributionMode": {
            "type": "string",
            "description": "Controls how AAS data is pushed to the target connector. AASX_PACKAGE pushes the raw .aasx file. AASX_PACKAGE_AND_AAS additionally pushes shells, submodels and concept descriptions individually via API.\n",
            "enum": [
              "AASX_PACKAGE",
              "AASX_PACKAGE_AND_AAS"
            ],
            "default": "AASX_PACKAGE"
          }
        }
      },
      "ExchangeJobResponse": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "description": "Unique identifier of the exchange job."
          },
          "status": {
            "$ref": "#/components/schemas/ExchangeJobStatus"
          },
          "sourceConnectorId": {
            "type": "string",
            "description": "Source connector identifier."
          },
          "targetConnectorId": {
            "type": "string",
            "description": "Target connector identifier."
          },
          "assetId": {
            "type": "string",
            "description": "The asset identifier being exchanged."
          },
          "triggerType": {
            "type": "string",
            "description": "The type of trigger that initiated the exchange.",
            "enum": [
              "API_INITIATED",
              "EVENT_DRIVEN",
              "BATCH_IMPORT"
            ]
          },
          "errorMessage": {
            "type": "string",
            "description": "Error message if the job failed. Null if successful."
          },
          "statusHistory": {
            "type": "array",
            "description": "Ordered history of status changes. Most recent entry is last.",
            "items": {
              "$ref": "#/components/schemas/StatusHistoryEntry"
            }
          }
        }
      },
      "StatusHistoryEntry": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/ExchangeJobStatus"
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the status change occurred."
          },
          "errorMessage": {
            "type": "string",
            "description": "Error message associated with this status change, if any."
          }
        }
      },
      "ExchangeJobStatus": {
        "type": "string",
        "description": "Status of an exchange job.",
        "enum": [
          "RECEIVED",
          "INGESTING",
          "INGESTION_FAILED",
          "INGESTION_COMPLETE",
          "VALIDATING",
          "VALIDATION_FAILED",
          "VALIDATION_COMPLETED",
          "DISTRIBUTING",
          "DISTRIBUTION_FAILED",
          "DISTRIBUTION_COMPLETE",
          "COMPLETED",
          "ERROR"
        ]
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://{{domain}}/auth/realms/assetfox/protocol/openid-connect/token",
            "scopes": {
              "aas:custom:read": "Read access to Assetfox's custom Asset Administration Shell API.",
              "aas:custom:write": "Write access to Assetfox's custom Asset Administration Shell API.",
              "aas-exchange:read": "Read access to the AAS Exchange API.",
              "aas-exchange:write": "Write access to the AAS Exchange API.",
              "aas:read": "Read access to the Asset Administration Shell API.",
              "aas:write": "Write access to the Asset Administration Shell API.",
              "asac:sqs": "Access to the Asynchronous Southbound Communication SQS API.",
              "connectors:sap:export": "Access to the SAP Export API.",
              "equipment:read": "Read access to the Equipment API.",
              "equipment:write": "Write access to the Equipment API.",
              "files:read": "Read access to the Files API.",
              "files:write": "Write access to the Files API.",
              "product-nodes:read": "Read access to the Product Node API.",
              "product-nodes:write": "Write access to the Product Node API.",
              "products:read": "Read access to the Product API.",
              "products:write": "Write access to the Product API.",
              "product-variants:read": "Read access to the Product Variant API.",
              "product-variants:write": "Write access to the Product Variant API.",
              "tenants:read": "Read access to the Tenant API."
            }
          }
        }
      }
    },
    "responses": {
      "badRequest": {
        "description": "Validation of request parameters failed.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Errors"
            }
          }
        }
      },
      "unauthorized": {
        "description": "Authorization token is missing.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Errors"
            }
          }
        }
      },
      "forbidden": {
        "description": "Provided authorization token has insufficient permissions.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Errors"
            }
          }
        }
      },
      "internalServerError": {
        "description": "Internal Server Error.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Errors"
            }
          }
        }
      },
      "notFound": {
        "description": "Resource does not exist in your organization.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Errors"
            }
          }
        }
      },
      "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_aas": {
        "description": "Unauthorized, e.g. the server refused the authorization attempt.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Result"
            }
          }
        }
      },
      "forbidden_aas": {
        "description": "Forbidden",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Result"
            }
          }
        }
      },
      "internal-server-error": {
        "description": "Internal Server Error",
        "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"
            }
          }
        }
      },
      "conflict": {
        "description": "Conflict, a resource which shall be created exists already. Might be thrown if a Submodel or SubmodelElement with the same ShortId is contained in a POST request.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Result"
            }
          }
        }
      },
      "not-found": {
        "description": "Not Found",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Result"
            }
          }
        }
      }
    },
    "parameters": {
      "Limit": {
        "name": "limit",
        "in": "query",
        "description": "The maximum number of elements in the response array",
        "required": false,
        "schema": {
          "minimum": 1,
          "type": "integer"
        }
      },
      "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"
        }
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Product Node API",
      "tags": [
        "ProductNode"
      ]
    },
    {
      "name": "Product API",
      "tags": [
        "Product"
      ]
    },
    {
      "name": "Product Variant API",
      "tags": [
        "ProductVariant"
      ]
    },
    {
      "name": "Equipment API",
      "tags": [
        "Equipment"
      ]
    },
    {
      "name": "File Upload API",
      "tags": [
        "BmecatUpload",
        "DocumentUpload"
      ]
    },
    {
      "name": "File Management API",
      "tags": [
        "Bmecat",
        "Document"
      ]
    },
    {
      "name": "File Download API",
      "tags": [
        "BmecatDownload",
        "DocumentDownload"
      ]
    },
    {
      "name": "AAS Custom Assetfox API",
      "tags": [
        "AasValidation",
        "AasxCustomUpload",
        "AasxCustomDownload",
        "AasxCustomManagement"
      ]
    },
    {
      "name": "Equipment in SAP related API",
      "tags": [
        "ConnectorSapEquipment"
      ]
    },
    {
      "name": "Product in SAP related API",
      "tags": [
        "ConnectorSapProduct"
      ]
    },
    {
      "name": "Asynchronous Southbound Communication API",
      "tags": [
        "AsacSqs"
      ]
    },
    {
      "name": "AAS Data Exchange API",
      "tags": [
        "AasExchange"
      ]
    }
  ]
}
