{
  "swagger": "2.0",
  "info": {
    "title": "Connect & Integrate API (PoC sample)",
    "description": "Fictional subset in Swagger 2.0 format for embedded Swagger UI demos. Prefer OpenAPI 3 for new integrations.",
    "version": "1.0.0-poc",
    "contact": {
      "name": "DIH Platform",
      "email": "DIH_Sales@telekom.de"
    }
  },
  "host": "api.dev.dih-cloud.com",
  "basePath": "/connect/v1",
  "schemes": ["https"],
  "consumes": ["application/json"],
  "produces": ["application/json"],
  "tags": [
    { "name": "Assets", "description": "Digital product passports and asset metadata" },
    { "name": "Transfers", "description": "Data exchange between connectors" }
  ],
  "paths": {
    "/assets": {
      "get": {
        "tags": ["Assets"],
        "summary": "List assets",
        "operationId": "listAssets",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "type": "integer",
            "minimum": 1,
            "default": 1
          },
          {
            "name": "pageSize",
            "in": "query",
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 20
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated asset list",
            "schema": { "$ref": "#/definitions/AssetList" }
          },
          "401": { "description": "Missing or invalid bearer token" }
        }
      },
      "post": {
        "tags": ["Assets"],
        "summary": "Register an asset",
        "operationId": "createAsset",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": { "$ref": "#/definitions/CreateAssetRequest" }
          }
        ],
        "responses": {
          "201": {
            "description": "Asset created",
            "schema": { "$ref": "#/definitions/Asset" }
          },
          "401": { "description": "Missing or invalid bearer token" }
        }
      }
    },
    "/assets/{assetId}": {
      "get": {
        "tags": ["Assets"],
        "summary": "Get asset by ID",
        "operationId": "getAsset",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Asset details",
            "schema": { "$ref": "#/definitions/Asset" }
          },
          "404": { "description": "Asset not found" }
        }
      }
    },
    "/transfers": {
      "post": {
        "tags": ["Transfers"],
        "summary": "Initiate a data transfer",
        "operationId": "createTransfer",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": { "$ref": "#/definitions/CreateTransferRequest" }
          }
        ],
        "responses": {
          "202": {
            "description": "Transfer accepted",
            "schema": { "$ref": "#/definitions/Transfer" }
          },
          "401": { "description": "Missing or invalid bearer token" }
        }
      }
    }
  },
  "definitions": {
    "Asset": {
      "type": "object",
      "required": ["id", "name", "createdAt"],
      "properties": {
        "id": { "type": "string", "format": "uuid" },
        "name": { "type": "string" },
        "createdAt": { "type": "string", "format": "date-time" }
      }
    },
    "AssetList": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": { "$ref": "#/definitions/Asset" }
        },
        "total": { "type": "integer" }
      }
    },
    "CreateAssetRequest": {
      "type": "object",
      "required": ["name"],
      "properties": {
        "name": { "type": "string" }
      }
    },
    "CreateTransferRequest": {
      "type": "object",
      "required": ["sourceConnectorId", "targetConnectorId", "payloadRef"],
      "properties": {
        "sourceConnectorId": { "type": "string" },
        "targetConnectorId": { "type": "string" },
        "payloadRef": { "type": "string" }
      }
    },
    "Transfer": {
      "type": "object",
      "properties": {
        "id": { "type": "string", "format": "uuid" },
        "status": {
          "type": "string",
          "enum": ["pending", "running", "completed", "failed"]
        }
      }
    }
  },
  "securityDefinitions": {
    "bearerAuth": {
      "type": "apiKey",
      "name": "Authorization",
      "in": "header",
      "description": "Bearer JWT from Keycloak"
    }
  },
  "security": [{ "bearerAuth": [] }]
}
