diff --git a/packages/spec/PROTOCOL_MAP.md b/packages/spec/PROTOCOL_MAP.md index 09d9123249..39b8e928a5 100644 --- a/packages/spec/PROTOCOL_MAP.md +++ b/packages/spec/PROTOCOL_MAP.md @@ -155,6 +155,8 @@ This document serves as the **Grand Map** of the ObjectStack specification. It l | File | Status | Description | | :--- | :--- | :--- | | [`protocol.zod.ts`](src/api/protocol.zod.ts) | ⭐ | **Stack Protocol**. valid requests and responses for the platform. | +| [`dispatcher.zod.ts`](src/api/dispatcher.zod.ts) | ⭐ | **HttpDispatcher**. Route-to-service mapping for API routing. | +| [`discovery.zod.ts`](src/api/discovery.zod.ts) | ⭐ | **Service Discovery**. Service registration and API routes discovery. | | [`endpoint.zod.ts`](src/api/endpoint.zod.ts) | | **API Endpoints**. REST API route definitions. | | [`graphql.zod.ts`](src/api/graphql.zod.ts) | | **GraphQL**. Schema and resolver configuration. | | [`rest-server.zod.ts`](src/api/rest-server.zod.ts) | | **REST Server**. REST-specific server settings. | @@ -166,7 +168,6 @@ This document serves as the **Grand Map** of the ObjectStack specification. It l | [`router.zod.ts`](src/api/router.zod.ts) | | **Routing**. API Gateway routing rules. | | [`http-cache.zod.ts`](src/api/http-cache.zod.ts) | | **HTTP Cache**. Cache-Control headers and CDNs. | | [`errors.zod.ts`](src/api/errors.zod.ts) | | **Error Handling**. Standard error response formats. | -| [`discovery.zod.ts`](src/api/discovery.zod.ts) | | **Service Discovery**. Service registration for microservices. | | [`metadata.zod.ts`](src/api/metadata.zod.ts) | | **Metadata API**. Endpoints for schema retrieval. | | [`odata.zod.ts`](src/api/odata.zod.ts) | | **OData**. OData protocol support. | | [`batch.zod.ts`](src/api/batch.zod.ts) | | **Batch API**. Bulk request processing. | diff --git a/packages/spec/json-schema/api/ApiCapabilities.json b/packages/spec/json-schema/api/ApiCapabilities.json index 1065161724..359a684cec 100644 --- a/packages/spec/json-schema/api/ApiCapabilities.json +++ b/packages/spec/json-schema/api/ApiCapabilities.json @@ -29,6 +29,26 @@ "type": "boolean", "default": false, "description": "Is Hub management enabled?" + }, + "ai": { + "type": "boolean", + "default": false, + "description": "Is the AI engine enabled?" + }, + "workflow": { + "type": "boolean", + "default": false, + "description": "Is the Workflow engine enabled?" + }, + "notifications": { + "type": "boolean", + "default": false, + "description": "Is the Notification service enabled?" + }, + "i18n": { + "type": "boolean", + "default": false, + "description": "Is the i18n service enabled?" } }, "additionalProperties": false diff --git a/packages/spec/json-schema/api/ApiRoutes.json b/packages/spec/json-schema/api/ApiRoutes.json index b0f62b890e..081cf3c87e 100644 --- a/packages/spec/json-schema/api/ApiRoutes.json +++ b/packages/spec/json-schema/api/ApiRoutes.json @@ -6,39 +6,63 @@ "properties": { "data": { "type": "string", - "description": "e.g. /api/data" + "description": "e.g. /api/v1/data" }, "metadata": { "type": "string", - "description": "e.g. /api/meta" + "description": "e.g. /api/v1/meta" }, "ui": { "type": "string", - "description": "e.g. /api/ui" + "description": "e.g. /api/v1/ui" }, "auth": { "type": "string", - "description": "e.g. /api/auth" + "description": "e.g. /api/v1/auth" }, "automation": { "type": "string", - "description": "e.g. /api/automation" + "description": "e.g. /api/v1/automation" }, "storage": { "type": "string", - "description": "e.g. /api/storage" + "description": "e.g. /api/v1/storage" }, "analytics": { "type": "string", - "description": "e.g. /api/analytics" + "description": "e.g. /api/v1/analytics" }, "hub": { "type": "string", - "description": "e.g. /api/hub" + "description": "e.g. /api/v1/hub" }, "graphql": { "type": "string", "description": "e.g. /graphql" + }, + "packages": { + "type": "string", + "description": "e.g. /api/v1/packages" + }, + "workflow": { + "type": "string", + "description": "e.g. /api/v1/workflow" + }, + "realtime": { + "type": "string", + "description": "e.g. /api/v1/realtime" + }, + "notifications": { + "type": "string", + "description": "e.g. /api/v1/notifications" + }, + "ai": { + "type": "string", + "description": "e.g. /api/v1/ai" + }, + "i18n": { + "type": "string", + "description": "e.g. /api/v1/i18n" } }, "required": [ diff --git a/packages/spec/json-schema/api/CompileManifestResponse.json b/packages/spec/json-schema/api/CompileManifestResponse.json index 491da6630f..0c48c423dc 100644 --- a/packages/spec/json-schema/api/CompileManifestResponse.json +++ b/packages/spec/json-schema/api/CompileManifestResponse.json @@ -412,6 +412,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/api/DisablePackageResponse.json b/packages/spec/json-schema/api/DisablePackageResponse.json index e1210367b0..619d469a72 100644 --- a/packages/spec/json-schema/api/DisablePackageResponse.json +++ b/packages/spec/json-schema/api/DisablePackageResponse.json @@ -353,6 +353,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/api/Discovery.json b/packages/spec/json-schema/api/Discovery.json index b7a62fa468..90d5f255a7 100644 --- a/packages/spec/json-schema/api/Discovery.json +++ b/packages/spec/json-schema/api/Discovery.json @@ -23,39 +23,63 @@ "properties": { "data": { "type": "string", - "description": "e.g. /api/data" + "description": "e.g. /api/v1/data" }, "metadata": { "type": "string", - "description": "e.g. /api/meta" + "description": "e.g. /api/v1/meta" }, "ui": { "type": "string", - "description": "e.g. /api/ui" + "description": "e.g. /api/v1/ui" }, "auth": { "type": "string", - "description": "e.g. /api/auth" + "description": "e.g. /api/v1/auth" }, "automation": { "type": "string", - "description": "e.g. /api/automation" + "description": "e.g. /api/v1/automation" }, "storage": { "type": "string", - "description": "e.g. /api/storage" + "description": "e.g. /api/v1/storage" }, "analytics": { "type": "string", - "description": "e.g. /api/analytics" + "description": "e.g. /api/v1/analytics" }, "hub": { "type": "string", - "description": "e.g. /api/hub" + "description": "e.g. /api/v1/hub" }, "graphql": { "type": "string", "description": "e.g. /graphql" + }, + "packages": { + "type": "string", + "description": "e.g. /api/v1/packages" + }, + "workflow": { + "type": "string", + "description": "e.g. /api/v1/workflow" + }, + "realtime": { + "type": "string", + "description": "e.g. /api/v1/realtime" + }, + "notifications": { + "type": "string", + "description": "e.g. /api/v1/notifications" + }, + "ai": { + "type": "string", + "description": "e.g. /api/v1/ai" + }, + "i18n": { + "type": "string", + "description": "e.g. /api/v1/i18n" } }, "required": [ @@ -93,6 +117,26 @@ "type": "boolean", "default": false, "description": "Is Hub management enabled?" + }, + "ai": { + "type": "boolean", + "default": false, + "description": "Is the AI engine enabled?" + }, + "workflow": { + "type": "boolean", + "default": false, + "description": "Is the Workflow engine enabled?" + }, + "notifications": { + "type": "boolean", + "default": false, + "description": "Is the Notification service enabled?" + }, + "i18n": { + "type": "boolean", + "default": false, + "description": "Is the i18n service enabled?" } }, "additionalProperties": false diff --git a/packages/spec/json-schema/api/DispatcherConfig.json b/packages/spec/json-schema/api/DispatcherConfig.json new file mode 100644 index 0000000000..58b821b731 --- /dev/null +++ b/packages/spec/json-schema/api/DispatcherConfig.json @@ -0,0 +1,95 @@ +{ + "$ref": "#/definitions/DispatcherConfig", + "definitions": { + "DispatcherConfig": { + "type": "object", + "properties": { + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "URL path prefix for routing (e.g. /api/v1/data)" + }, + "service": { + "type": "string", + "enum": [ + "metadata", + "data", + "auth", + "file-storage", + "search", + "cache", + "queue", + "automation", + "graphql", + "analytics", + "hub", + "realtime", + "job", + "notification", + "ai", + "i18n", + "ui", + "workflow" + ], + "description": "Target core service name" + }, + "authRequired": { + "type": "boolean", + "default": true, + "description": "Whether authentication is required" + }, + "criticality": { + "type": "string", + "enum": [ + "required", + "core", + "optional" + ], + "default": "optional", + "description": "Service criticality level for unavailability handling" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required permissions for this route namespace" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "Route-to-service mappings" + }, + "fallback": { + "type": "string", + "enum": [ + "404", + "proxy", + "custom" + ], + "default": "404", + "description": "Behavior when no route matches" + }, + "proxyTarget": { + "type": "string", + "format": "uri", + "description": "Proxy target URL when fallback is \"proxy\"" + } + }, + "required": [ + "routes" + ], + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/packages/spec/json-schema/api/DispatcherRoute.json b/packages/spec/json-schema/api/DispatcherRoute.json new file mode 100644 index 0000000000..2bbd85ff3f --- /dev/null +++ b/packages/spec/json-schema/api/DispatcherRoute.json @@ -0,0 +1,67 @@ +{ + "$ref": "#/definitions/DispatcherRoute", + "definitions": { + "DispatcherRoute": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "URL path prefix for routing (e.g. /api/v1/data)" + }, + "service": { + "type": "string", + "enum": [ + "metadata", + "data", + "auth", + "file-storage", + "search", + "cache", + "queue", + "automation", + "graphql", + "analytics", + "hub", + "realtime", + "job", + "notification", + "ai", + "i18n", + "ui", + "workflow" + ], + "description": "Target core service name" + }, + "authRequired": { + "type": "boolean", + "default": true, + "description": "Whether authentication is required" + }, + "criticality": { + "type": "string", + "enum": [ + "required", + "core", + "optional" + ], + "default": "optional", + "description": "Service criticality level for unavailability handling" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Required permissions for this route namespace" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" +} \ No newline at end of file diff --git a/packages/spec/json-schema/api/EnablePackageResponse.json b/packages/spec/json-schema/api/EnablePackageResponse.json index 2c0f747574..10c295192e 100644 --- a/packages/spec/json-schema/api/EnablePackageResponse.json +++ b/packages/spec/json-schema/api/EnablePackageResponse.json @@ -353,6 +353,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/api/GetDiscoveryResponse.json b/packages/spec/json-schema/api/GetDiscoveryResponse.json index 2ec6284f2a..b573f32fa7 100644 --- a/packages/spec/json-schema/api/GetDiscoveryResponse.json +++ b/packages/spec/json-schema/api/GetDiscoveryResponse.json @@ -40,6 +40,26 @@ "type": "boolean", "default": false, "description": "Is Hub management enabled?" + }, + "ai": { + "type": "boolean", + "default": false, + "description": "Is the AI engine enabled?" + }, + "workflow": { + "type": "boolean", + "default": false, + "description": "Is the Workflow engine enabled?" + }, + "notifications": { + "type": "boolean", + "default": false, + "description": "Is the Notification service enabled?" + }, + "i18n": { + "type": "boolean", + "default": false, + "description": "Is the i18n service enabled?" } }, "additionalProperties": false, @@ -50,39 +70,63 @@ "properties": { "data": { "type": "string", - "description": "e.g. /api/data" + "description": "e.g. /api/v1/data" }, "metadata": { "type": "string", - "description": "e.g. /api/meta" + "description": "e.g. /api/v1/meta" }, "ui": { "type": "string", - "description": "e.g. /api/ui" + "description": "e.g. /api/v1/ui" }, "auth": { "type": "string", - "description": "e.g. /api/auth" + "description": "e.g. /api/v1/auth" }, "automation": { "type": "string", - "description": "e.g. /api/automation" + "description": "e.g. /api/v1/automation" }, "storage": { "type": "string", - "description": "e.g. /api/storage" + "description": "e.g. /api/v1/storage" }, "analytics": { "type": "string", - "description": "e.g. /api/analytics" + "description": "e.g. /api/v1/analytics" }, "hub": { "type": "string", - "description": "e.g. /api/hub" + "description": "e.g. /api/v1/hub" }, "graphql": { "type": "string", "description": "e.g. /graphql" + }, + "packages": { + "type": "string", + "description": "e.g. /api/v1/packages" + }, + "workflow": { + "type": "string", + "description": "e.g. /api/v1/workflow" + }, + "realtime": { + "type": "string", + "description": "e.g. /api/v1/realtime" + }, + "notifications": { + "type": "string", + "description": "e.g. /api/v1/notifications" + }, + "ai": { + "type": "string", + "description": "e.g. /api/v1/ai" + }, + "i18n": { + "type": "string", + "description": "e.g. /api/v1/i18n" } }, "required": [ diff --git a/packages/spec/json-schema/api/GetPackageResponse.json b/packages/spec/json-schema/api/GetPackageResponse.json index e01ec941ce..ed2321f391 100644 --- a/packages/spec/json-schema/api/GetPackageResponse.json +++ b/packages/spec/json-schema/api/GetPackageResponse.json @@ -353,6 +353,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/api/InstallPackageRequest.json b/packages/spec/json-schema/api/InstallPackageRequest.json index f59a63903c..dd57037245 100644 --- a/packages/spec/json-schema/api/InstallPackageRequest.json +++ b/packages/spec/json-schema/api/InstallPackageRequest.json @@ -350,6 +350,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/api/InstallPackageResponse.json b/packages/spec/json-schema/api/InstallPackageResponse.json index 5ecbbce5dc..543ffd95aa 100644 --- a/packages/spec/json-schema/api/InstallPackageResponse.json +++ b/packages/spec/json-schema/api/InstallPackageResponse.json @@ -353,6 +353,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/api/ListPackagesResponse.json b/packages/spec/json-schema/api/ListPackagesResponse.json index ef65e9e5b5..bd7e8c8e66 100644 --- a/packages/spec/json-schema/api/ListPackagesResponse.json +++ b/packages/spec/json-schema/api/ListPackagesResponse.json @@ -355,6 +355,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/hub/ComposerResponse.json b/packages/spec/json-schema/hub/ComposerResponse.json index 8312bc5c6f..148eba5062 100644 --- a/packages/spec/json-schema/hub/ComposerResponse.json +++ b/packages/spec/json-schema/hub/ComposerResponse.json @@ -353,6 +353,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/kernel/DisablePackageResponse.json b/packages/spec/json-schema/kernel/DisablePackageResponse.json index e1210367b0..619d469a72 100644 --- a/packages/spec/json-schema/kernel/DisablePackageResponse.json +++ b/packages/spec/json-schema/kernel/DisablePackageResponse.json @@ -353,6 +353,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/kernel/EnablePackageResponse.json b/packages/spec/json-schema/kernel/EnablePackageResponse.json index 2c0f747574..10c295192e 100644 --- a/packages/spec/json-schema/kernel/EnablePackageResponse.json +++ b/packages/spec/json-schema/kernel/EnablePackageResponse.json @@ -353,6 +353,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/kernel/GetPackageResponse.json b/packages/spec/json-schema/kernel/GetPackageResponse.json index e01ec941ce..ed2321f391 100644 --- a/packages/spec/json-schema/kernel/GetPackageResponse.json +++ b/packages/spec/json-schema/kernel/GetPackageResponse.json @@ -353,6 +353,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/kernel/InstallPackageRequest.json b/packages/spec/json-schema/kernel/InstallPackageRequest.json index f59a63903c..dd57037245 100644 --- a/packages/spec/json-schema/kernel/InstallPackageRequest.json +++ b/packages/spec/json-schema/kernel/InstallPackageRequest.json @@ -350,6 +350,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/kernel/InstallPackageResponse.json b/packages/spec/json-schema/kernel/InstallPackageResponse.json index 5ecbbce5dc..543ffd95aa 100644 --- a/packages/spec/json-schema/kernel/InstallPackageResponse.json +++ b/packages/spec/json-schema/kernel/InstallPackageResponse.json @@ -353,6 +353,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/kernel/InstalledPackage.json b/packages/spec/json-schema/kernel/InstalledPackage.json index f12e13a710..aeba69477b 100644 --- a/packages/spec/json-schema/kernel/InstalledPackage.json +++ b/packages/spec/json-schema/kernel/InstalledPackage.json @@ -350,6 +350,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/kernel/ListPackagesResponse.json b/packages/spec/json-schema/kernel/ListPackagesResponse.json index ef65e9e5b5..bd7e8c8e66 100644 --- a/packages/spec/json-schema/kernel/ListPackagesResponse.json +++ b/packages/spec/json-schema/kernel/ListPackagesResponse.json @@ -355,6 +355,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/kernel/Manifest.json b/packages/spec/json-schema/kernel/Manifest.json index c9a922ebc6..d1b64439ad 100644 --- a/packages/spec/json-schema/kernel/Manifest.json +++ b/packages/spec/json-schema/kernel/Manifest.json @@ -347,6 +347,36 @@ "additionalProperties": false }, "description": "Query Function contributions" + }, + "routes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "prefix": { + "type": "string", + "pattern": "^\\/", + "description": "API path prefix" + }, + "service": { + "type": "string", + "description": "Service name this plugin provides" + }, + "methods": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Protocol method names implemented (e.g. [\"aiNlq\", \"aiChat\"])" + } + }, + "required": [ + "prefix", + "service" + ], + "additionalProperties": false + }, + "description": "API route contributions to HttpDispatcher" } }, "additionalProperties": false, diff --git a/packages/spec/json-schema/system/CoreServiceName.json b/packages/spec/json-schema/system/CoreServiceName.json index e612941704..8b46866f4e 100644 --- a/packages/spec/json-schema/system/CoreServiceName.json +++ b/packages/spec/json-schema/system/CoreServiceName.json @@ -17,7 +17,11 @@ "hub", "realtime", "job", - "notification" + "notification", + "ai", + "i18n", + "ui", + "workflow" ] } }, diff --git a/packages/spec/json-schema/system/KernelServiceMap.json b/packages/spec/json-schema/system/KernelServiceMap.json index 2a8a6717a0..27b8795154 100644 --- a/packages/spec/json-schema/system/KernelServiceMap.json +++ b/packages/spec/json-schema/system/KernelServiceMap.json @@ -21,7 +21,11 @@ "hub", "realtime", "job", - "notification" + "notification", + "ai", + "i18n", + "ui", + "workflow" ] } } diff --git a/packages/spec/json-schema/system/ServiceConfig.json b/packages/spec/json-schema/system/ServiceConfig.json index f425cb9f29..c2e81bafbb 100644 --- a/packages/spec/json-schema/system/ServiceConfig.json +++ b/packages/spec/json-schema/system/ServiceConfig.json @@ -23,7 +23,11 @@ "hub", "realtime", "job", - "notification" + "notification", + "ai", + "i18n", + "ui", + "workflow" ] }, "options": { diff --git a/packages/spec/json-schema/system/ServiceStatus.json b/packages/spec/json-schema/system/ServiceStatus.json index 2e30cfc761..ed6dc39884 100644 --- a/packages/spec/json-schema/system/ServiceStatus.json +++ b/packages/spec/json-schema/system/ServiceStatus.json @@ -20,7 +20,11 @@ "hub", "realtime", "job", - "notification" + "notification", + "ai", + "i18n", + "ui", + "workflow" ] }, "enabled": {