{
  "openapi": "3.1.0",
  "info": {
    "title": "Baijimu Bundle Capability API",
    "version": "1.0.0",
    "description": "Hosted Service 对自有 Bundle 已安装资源、工作流和定时任务的受控内省与执行合同。"
  },
  "servers": [{ "url": "https://api.baijimu.com" }],
  "security": [{ "bundleCapabilityToken": [] }],
  "paths": {
    "/capability/bundle-runtime/bundle/resources/query": {
      "post": {
        "operationId": "queryBundleResources",
        "summary": "查询当前 Bundle 的已验证资源",
        "x-baijimu-scope": "bundle.resources.read",
        "requestBody": {
          "required": true,
          "content": { "application/json": { "schema": { "$ref": "#/components/schemas/QueryBundleResourcesRequest" } } }
        },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    },
    "/capability/bundle-workflow/workflows/query": {
      "post": {
        "operationId": "queryBundleWorkflows",
        "summary": "查询当前 Bundle 的工作流",
        "x-baijimu-scope": "workflow.definition.read",
        "requestBody": { "$ref": "#/components/requestBodies/ApplicationRuntimeRequest" },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    },
    "/capability/bundle-workflow/workflows/definition": {
      "post": {
        "operationId": "getBundleWorkflowDefinition",
        "summary": "读取工作流定义",
        "x-baijimu-scope": "workflow.definition.read",
        "requestBody": { "$ref": "#/components/requestBodies/ResourceRequest" },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    },
    "/capability/bundle-workflow/workflows/instances/start": {
      "post": {
        "operationId": "startBundleWorkflowInstance",
        "summary": "启动工作流实例",
        "x-baijimu-scope": "workflow.execution.create",
        "requestBody": {
          "required": true,
          "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StartWorkflowRequest" } } }
        },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    },
    "/capability/bundle-workflow/workflows/instances/query": {
      "post": {
        "operationId": "queryBundleWorkflowInstances",
        "summary": "查询工作流实例",
        "x-baijimu-scope": "workflow.execution.read",
        "requestBody": {
          "required": true,
          "content": { "application/json": { "schema": { "$ref": "#/components/schemas/QueryWorkflowInstancesRequest" } } }
        },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    },
    "/capability/bundle-workflow/workflows/instances/detail": {
      "post": {
        "operationId": "getBundleWorkflowInstance",
        "summary": "读取工作流实例详情",
        "x-baijimu-scope": "workflow.execution.read",
        "requestBody": { "$ref": "#/components/requestBodies/WorkflowInstanceRequest" },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    },
    "/capability/bundle-workflow/workflows/instances/executions/query": {
      "post": {
        "operationId": "queryBundleWorkflowExecutions",
        "summary": "读取工作流实例执行详情",
        "x-baijimu-scope": "workflow.execution.read",
        "requestBody": { "$ref": "#/components/requestBodies/WorkflowInstanceRequest" },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    },
    "/capability/bundle-timer/timers/query": {
      "post": {
        "operationId": "queryBundleTimers",
        "summary": "查询当前 Bundle 的定时任务",
        "x-baijimu-scope": "timer.definition.read",
        "requestBody": { "$ref": "#/components/requestBodies/ApplicationRuntimeRequest" },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    },
    "/capability/bundle-timer/timers/definition": {
      "post": {
        "operationId": "getBundleTimerDefinition",
        "summary": "读取定时任务定义",
        "x-baijimu-scope": "timer.definition.read",
        "requestBody": { "$ref": "#/components/requestBodies/ResourceRequest" },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    },
    "/capability/bundle-timer/timers/executions/query": {
      "post": {
        "operationId": "queryBundleTimerExecutions",
        "summary": "查询定时任务执行记录",
        "x-baijimu-scope": "timer.execution.read",
        "requestBody": {
          "required": true,
          "content": { "application/json": { "schema": { "$ref": "#/components/schemas/QueryTimerExecutionsRequest" } } }
        },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    },
    "/capability/bundle-timer/timers/executions/trigger": {
      "post": {
        "operationId": "triggerBundleTimerExecution",
        "summary": "触发一次定时任务执行",
        "x-baijimu-scope": "timer.execution.create",
        "requestBody": { "$ref": "#/components/requestBodies/ResourceRequest" },
        "responses": {
          "200": { "$ref": "#/components/responses/CModelResponse" },
          "default": { "$ref": "#/components/responses/CModelResponse" }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bundleCapabilityToken": {
        "type": "http",
        "scheme": "bearer",
        "description": "通过自有 Bundle 的 Capability Client 签发；明文只返回一次。"
      }
    },
    "requestBodies": {
      "ApplicationRuntimeRequest": {
        "required": true,
        "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationRuntimeRequest" } } }
      },
      "ResourceRequest": {
        "required": true,
        "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourceRequest" } } }
      },
      "WorkflowInstanceRequest": {
        "required": true,
        "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowInstanceRequest" } } }
      }
    },
    "responses": {
      "CModelResponse": {
        "description": "统一 CModel 响应；errorCode 为 0 时 data 才是成功结果。",
        "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CModel" } } }
      }
    },
    "schemas": {
      "ApplicationRuntimeId": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128,
        "description": "目标 Application Runtime 的稳定 ID。"
      },
      "ResourceLocator": {
        "type": "string",
        "minLength": 1,
        "description": "由资源查询返回的稳定 Locator；调用方不得自行构造。"
      },
      "ApplicationRuntimeRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": ["applicationRuntimeId"],
        "properties": {
          "applicationRuntimeId": { "$ref": "#/components/schemas/ApplicationRuntimeId" }
        }
      },
      "ResourceRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": ["applicationRuntimeId", "resourceLocator"],
        "properties": {
          "applicationRuntimeId": { "$ref": "#/components/schemas/ApplicationRuntimeId" },
          "resourceLocator": { "$ref": "#/components/schemas/ResourceLocator" }
        }
      },
      "WorkflowInstanceRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": ["applicationRuntimeId", "resourceLocator", "instanceId"],
        "properties": {
          "applicationRuntimeId": { "$ref": "#/components/schemas/ApplicationRuntimeId" },
          "resourceLocator": { "$ref": "#/components/schemas/ResourceLocator" },
          "instanceId": { "type": "string", "minLength": 1 }
        }
      },
      "QueryBundleResourcesRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": ["applicationRuntimeId"],
        "properties": {
          "applicationRuntimeId": { "$ref": "#/components/schemas/ApplicationRuntimeId" },
          "resourceType": {
            "type": "string",
            "enum": [
              "MODULE",
              "SKILL",
              "AGENT",
              "PLATFORM_APPLICATION",
              "WORKFLOW",
              "ISSUE_DEFINITION",
              "EVENT_TRIGGER",
              "TIMER",
              "PERMISSION_DEFINITION_SET",
              "ROLE_TEMPLATE_SET"
            ]
          }
        }
      },
      "StartWorkflowRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": ["applicationRuntimeId", "resourceLocator"],
        "properties": {
          "applicationRuntimeId": { "$ref": "#/components/schemas/ApplicationRuntimeId" },
          "resourceLocator": { "$ref": "#/components/schemas/ResourceLocator" },
          "input": { "type": "object", "additionalProperties": true },
          "metadata": { "type": "object", "additionalProperties": true }
        }
      },
      "QueryWorkflowInstancesRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": ["applicationRuntimeId", "resourceLocator"],
        "properties": {
          "applicationRuntimeId": { "$ref": "#/components/schemas/ApplicationRuntimeId" },
          "resourceLocator": { "$ref": "#/components/schemas/ResourceLocator" },
          "status": { "type": "string", "minLength": 1 },
          "pageNum": { "type": "integer", "minimum": 1, "default": 1 },
          "pageSize": { "type": "integer", "minimum": 1, "maximum": 100, "default": 20 }
        }
      },
      "QueryTimerExecutionsRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": ["applicationRuntimeId", "resourceLocator"],
        "properties": {
          "applicationRuntimeId": { "$ref": "#/components/schemas/ApplicationRuntimeId" },
          "resourceLocator": { "$ref": "#/components/schemas/ResourceLocator" },
          "status": { "type": "string", "minLength": 1 },
          "limit": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 50 },
          "offset": { "type": "integer", "minimum": 0, "default": 0 }
        }
      },
      "CModel": {
        "type": "object",
        "required": ["errorCode"],
        "properties": {
          "errorCode": { "oneOf": [{ "type": "integer" }, { "type": "string" }] },
          "message": { "type": ["string", "null"] },
          "data": {}
        },
        "additionalProperties": true
      }
    }
  }
}
