277 lines
7.3 KiB
JSON
277 lines
7.3 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"title": "ITWorx MCP Hub Project",
|
|
"description": "Desired-state project catalog document.",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"$id": "https://hub.example.com/schemas/project.schema.json",
|
|
"required": [
|
|
"apiVersion",
|
|
"kind",
|
|
"metadata",
|
|
"spec"
|
|
],
|
|
"properties": {
|
|
"apiVersion": {
|
|
"const": "hub.example.com/v1alpha1"
|
|
},
|
|
"kind": {
|
|
"const": "Project"
|
|
},
|
|
"metadata": {
|
|
"$ref": "common.schema.json#/$defs/metadata"
|
|
},
|
|
"spec": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"description",
|
|
"workspace",
|
|
"visibility",
|
|
"documentation",
|
|
"environments",
|
|
"capabilityPacks",
|
|
"connectorBindings",
|
|
"virtualServers",
|
|
"privacy"
|
|
],
|
|
"properties": {
|
|
"description": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 1000
|
|
},
|
|
"workspace": {
|
|
"$ref": "common.schema.json#/$defs/slug"
|
|
},
|
|
"visibility": {
|
|
"enum": [
|
|
"private",
|
|
"internal"
|
|
]
|
|
},
|
|
"repository": {
|
|
"type": [
|
|
"object",
|
|
"null"
|
|
],
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"provider",
|
|
"owner",
|
|
"name",
|
|
"verification",
|
|
"exposeMetadata"
|
|
],
|
|
"properties": {
|
|
"provider": {
|
|
"enum": [
|
|
"gitea"
|
|
]
|
|
},
|
|
"owner": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 120
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 120
|
|
},
|
|
"verification": {
|
|
"$ref": "common.schema.json#/$defs/verification"
|
|
},
|
|
"exposeMetadata": {
|
|
"enum": [
|
|
"authorized-only",
|
|
"never-public"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"documentation": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"roots",
|
|
"indexSecrets",
|
|
"maxDocumentBytes"
|
|
],
|
|
"properties": {
|
|
"roots": {
|
|
"type": "array",
|
|
"maxItems": 32,
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"uri",
|
|
"include",
|
|
"verification"
|
|
],
|
|
"properties": {
|
|
"uri": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
},
|
|
"include": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"maxLength": 300
|
|
},
|
|
"maxItems": 64
|
|
},
|
|
"verification": {
|
|
"$ref": "common.schema.json#/$defs/verification"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"indexSecrets": {
|
|
"const": false
|
|
},
|
|
"maxDocumentBytes": {
|
|
"type": "integer",
|
|
"minimum": 1024,
|
|
"maximum": 10485760
|
|
}
|
|
}
|
|
},
|
|
"environments": {
|
|
"type": "object",
|
|
"minProperties": 1,
|
|
"maxProperties": 4,
|
|
"propertyNames": {
|
|
"$ref": "common.schema.json#/$defs/environmentName"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"classification",
|
|
"applicationUrl"
|
|
],
|
|
"properties": {
|
|
"classification": {
|
|
"enum": [
|
|
"development",
|
|
"test",
|
|
"staging",
|
|
"production"
|
|
]
|
|
},
|
|
"applicationUrl": {
|
|
"$ref": "common.schema.json#/$defs/uri"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"capabilityPacks": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "common.schema.json#/$defs/slug"
|
|
}
|
|
},
|
|
"connectorBindings": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"ref",
|
|
"environments",
|
|
"verification"
|
|
],
|
|
"properties": {
|
|
"ref": {
|
|
"$ref": "common.schema.json#/$defs/slug"
|
|
},
|
|
"environments": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "common.schema.json#/$defs/environmentName"
|
|
}
|
|
},
|
|
"verification": {
|
|
"$ref": "common.schema.json#/$defs/verification"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"virtualServers": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"slug",
|
|
"environment",
|
|
"endpointAlias",
|
|
"protocolRevisions",
|
|
"toolAllowPatterns",
|
|
"resourceAllowPatterns",
|
|
"defaultDecision"
|
|
],
|
|
"properties": {
|
|
"slug": {
|
|
"$ref": "common.schema.json#/$defs/slug"
|
|
},
|
|
"environment": {
|
|
"$ref": "common.schema.json#/$defs/environmentName"
|
|
},
|
|
"endpointAlias": {
|
|
"type": "string",
|
|
"pattern": "^/mcp/[a-z0-9-]+/(dev|test|staging|prod)$",
|
|
"maxLength": 200
|
|
},
|
|
"protocolRevisions": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"enum": [
|
|
"2026-07-28",
|
|
"2025-11-25"
|
|
]
|
|
}
|
|
},
|
|
"toolAllowPatterns": {
|
|
"$ref": "common.schema.json#/$defs/patternList"
|
|
},
|
|
"promptAllowPatterns": {
|
|
"$ref": "common.schema.json#/$defs/patternList"
|
|
},
|
|
"resourceAllowPatterns": {
|
|
"$ref": "common.schema.json#/$defs/patternList"
|
|
},
|
|
"defaultDecision": {
|
|
"const": "deny"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"privacy": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"exposeRepositoryMetadata"
|
|
],
|
|
"properties": {
|
|
"exposeRepositoryMetadata": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|