Thing/schemas/gamecult.eve.provider_advertisement.v1.schema.json
2026-07-10 04:03:05 +01:00

329 lines
7.8 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "gamecult.eve.provider_advertisement.v1",
"title": "Eve Provider Advertisement",
"type": "object",
"required": [
"schema",
"providerId",
"serviceId",
"verseId",
"title",
"kind",
"freshness",
"schemas",
"witnesses",
"surfaces",
"commands"
],
"properties": {
"schema": {
"const": "gamecult.eve.provider_advertisement.v1"
},
"providerId": {
"type": "string",
"minLength": 1
},
"serviceId": {
"type": "string",
"minLength": 1
},
"verseId": {
"type": "string",
"minLength": 1
},
"rootVerse": {
"type": "string",
"minLength": 1
},
"canonicalService": {
"type": "string"
},
"locatedService": {
"type": "string"
},
"cultMeshAddress": {
"type": "string"
},
"title": {
"type": "string",
"minLength": 1
},
"kind": {
"type": "string",
"minLength": 1
},
"updatedAt": {
"type": "string"
},
"updatedAtUtc": {
"type": "string"
},
"freshness": {
"type": "object",
"required": ["state"],
"properties": {
"state": {
"type": "string",
"minLength": 1
},
"lastSeenAt": {
"type": "string"
},
"lastSeenAtUtc": {
"type": "string"
},
"maxAgeMs": {
"type": "number"
}
},
"additionalProperties": true
},
"schemas": {
"type": "array",
"items": {
"type": ["string", "object"]
}
},
"witnesses": {
"type": "array",
"items": {
"type": "object",
"required": ["kind"],
"properties": {
"kind": {
"type": "string",
"minLength": 1
},
"ref": {
"type": "string"
},
"path": {
"type": "string"
},
"summary": {
"type": "string"
}
},
"additionalProperties": true
}
},
"surfaces": {
"type": "array",
"items": {
"type": "object",
"required": ["surfaceId", "schema", "transport"],
"properties": {
"surfaceId": {
"type": "string",
"minLength": 1
},
"schema": {
"type": "string",
"minLength": 1
},
"key": {
"type": "string"
},
"recordRef": {
"type": "string"
},
"url": {
"type": "string"
},
"transport": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
},
"surfaceKind": {
"type": "string",
"minLength": 1
},
"interactionModel": {
"type": "string",
"minLength": 1
},
"worldInteraction": {
"type": "object",
"required": [
"projectionKind",
"stateSchemas",
"commandBoundary",
"receiptSchema",
"loweringTargets",
"ownership"
],
"properties": {
"projectionKind": {
"type": "string",
"minLength": 1
},
"stateSchemas": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"commandBoundary": {
"type": "string",
"minLength": 1
},
"commandRecordRef": {
"type": "string"
},
"receiptSchema": {
"type": "string",
"minLength": 1
},
"receiptRecordRef": {
"type": "string"
},
"assetManifestRecordRef": {
"type": "string"
},
"loweringTargets": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"ownership": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": true
},
"requiresPlugins": {
"type": "array",
"items": {
"type": "object",
"required": ["pluginId", "requiredCapabilities"],
"properties": {
"pluginId": {
"type": "string",
"minLength": 1
},
"versionRange": {
"type": "string"
},
"availability": {
"type": "string",
"enum": ["required", "optional", "optional-nested"]
},
"requiredCapabilities": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"optionalCapabilities": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
},
"allOf": [
{
"if": {
"properties": {
"availability": {
"const": "required"
}
}
},
"then": {
"properties": {
"requiredCapabilities": {
"minItems": 1
}
}
}
},
{
"if": {
"required": ["availability"],
"properties": {
"availability": {
"const": "optional-nested"
}
}
},
"then": {
"required": ["optionalCapabilities"],
"properties": {
"requiredCapabilities": {
"maxItems": 0
},
"optionalCapabilities": {
"minItems": 1
}
}
}
}
],
"additionalProperties": true
}
}
},
"additionalProperties": true
}
},
"commands": {
"type": "array",
"items": {
"type": "object",
"required": ["command", "transport"],
"properties": {
"command": {
"type": "string",
"minLength": 1
},
"transport": {
"type": "string",
"minLength": 1
},
"summary": {
"type": "string"
}
},
"additionalProperties": true
}
},
"conformanceScenarios": {
"type": "array",
"items": {
"type": "object",
"required": ["scenarioId", "schema", "path"],
"properties": {
"scenarioId": {
"type": "string",
"minLength": 1
},
"schema": {
"type": "string",
"minLength": 1
},
"path": {
"type": "string",
"minLength": 1
},
"summary": {
"type": "string"
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}