Files
ITWorx_MCP_Hub-Public/contracts/schemas/project.schema.json
T

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"
}
}
}
}
}
}
}