{"$schema": "http://json-schema.org/draft-07/schema#","type": "object","properties": {"version": {"$ref": "#/$defs/XtpVersion"}},"required": ["version"],"allOf": [{"if": {"properties": {"version": {"const": "v0"}}},"then": {"properties": {"exports": {"type": "array","items": {"type": "string","pattern": "^[a-zA-Z_$][a-zA-Z0-9_$]*$"}},"version": {"const": "v0"}},"required": ["exports"],"additionalProperties": false}},{"if": {"properties": {"version": {"const": "v1-draft"}}},"then": {"properties": {"version": {"$ref": "#/$defs/XtpVersion"},"exports": {"type": "object","patternProperties": {"^[a-zA-Z_$][a-zA-Z0-9_$]*$": {"$ref": "#/$defs/Export"}},"additionalProperties": false},"imports": {"type": "object","patternProperties": {"^[a-zA-Z_$][a-zA-Z0-9_$]*$": {"$ref": "#/$defs/Import"}},"additionalProperties": false},"components": {"type": "object","properties": {"schemas": {"type": "object","patternProperties": {"^[a-zA-Z_$][a-zA-Z0-9_$]*$": {"$ref": "#/$defs/Schema"}},"additionalProperties": false}},"required": ["schemas"],"additionalProperties": false}},"required": ["exports"],"additionalProperties": false}}],"$defs": {"XtpVersion": {"type": "string","enum": ["v0","v1-draft"]},"Export": {"type": "object","properties": {"description": {"type": "string"},"codeSamples": {"type": "array","items": {"$ref": "#/$defs/CodeSample"}},"input": {"$ref": "#/$defs/Parameter"},"output": {"$ref": "#/$defs/Parameter"}},"additionalProperties": false},"CodeSample": {"type": "object","properties": {"lang": {"anyOf": [{"type": "string","enum": ["typescript","csharp","zig","rust","go","python","c++"]},{"type": "string"}]},"source": {"type": "string"},"label": {"type": "string"}},"required": ["lang","source"],"additionalProperties": false},"Import": {"type": "object","properties": {"description": {"type": "string"},"input": {"$ref": "#/$defs/Parameter"},"output": {"$ref": "#/$defs/Parameter"}},"additionalProperties": false},"Schema": {"oneOf": [{"$ref": "#/$defs/ObjectSchema"},{"$ref": "#/$defs/EnumSchema"}]},"ObjectSchema": {"type": "object","properties": {"description": {"type": "string"},"properties": {"type": "object","patternProperties": {"^[a-zA-Z_$][a-zA-Z0-9_$]*$": {"$ref": "#/$defs/Property"}},"additionalProperties": false},"required": {"type": "array","items": {"type": "string"}}},"required": ["properties"],"additionalProperties": false},"EnumSchema": {"type": "object","properties": {"type": {"type": "string","enum": ["string"]},"description": {"type": "string"},"enum": {"type": "array","items": {"type": "string","pattern": "^[a-zA-Z_$][a-zA-Z0-9_$]*$"}}},"required": ["enum"],"additionalProperties": false},"Parameter": {"oneOf": [{"$ref": "#/$defs/ValueParameter"},{"$ref": "#/$defs/RefParameter"},{"$ref": "#/$defs/MapParameter"}]},"RefParameter": {"type": "object","properties": {"$ref": {"$ref": "#/$defs/SchemaReference"},"description": {"type": "string"},"nullable": {"type": "boolean","default": false},"contentType": {"$ref": "#/$defs/ContentType"}},"required": ["$ref","contentType"],"additionalProperties": false},"ValueParameter": {"type": "object","properties": {"contentType": {"$ref": "#/$defs/ContentType"},"type": {"$ref": "#/$defs/XtpType"},"format": {"$ref": "#/$defs/XtpFormat"},"nullable": {"type": "boolean","default": false},"description": {"type": "string"},"items": {"type": "object","$ref": "#/$defs/ArrayItem"}},"required": ["type","contentType"],"additionalProperties": false},"MapParameter": {"type": "object","properties": {"type": {"const": "object"},"description": {"type": "string"},"additionalProperties": {"allOf": [{"$ref": "#/$defs/NonMapProperty"},{"type": "object","properties": {"description": false},"additionalProperties": false}]},"nullable": {"type": "boolean","default": false},"contentType": {"$ref": "#/$defs/ContentType"}},"required": ["additionalProperties","contentType"]},"NonMapProperty": {"oneOf": [{"$ref": "#/$defs/ValueProperty"},{"$ref": "#/$defs/RefProperty"}]},"Property": {"oneOf": [{"$ref": "#/$defs/ValueProperty"},{"$ref": "#/$defs/RefProperty"},{"$ref": "#/$defs/MapProperty"}]},"ValueProperty": {"type": "object","properties": {"type": {"$ref": "#/$defs/XtpType"},"format": {"$ref": "#/$defs/XtpFormat"},"nullable": {"type": "boolean","default": false},"description": {"type": "string"},"items": {"type": "object","$ref": "#/$defs/ArrayItem"}},"required": ["type"],"additionalProperties": false},"MapProperty": {"type": "object","properties": {"type": {"const": "object"},"description": {"type": "string"},"additionalProperties": {"allOf": [{"$ref": "#/$defs/NonMapProperty"},{"not": {"type": "object","required": ["description"]}}]},"nullable": {"type": "boolean","default": false}},"required": ["additionalProperties"],"additionalProperties": false},"RefProperty": {"type": "object","properties": {"$ref": {"$ref": "#/$defs/SchemaReference"},"description": {"type": "string"},"nullable": {"type": "boolean","default": false}},"required": ["$ref"],"additionalProperties": false},"ContentType": {"type": "string","enum": ["application/json","application/x-binary","text/plain; charset=utf-8"]},"SchemaReference": {"type": "string","pattern": "^#/components/schemas/[^/]+$"},"XtpType": {"type": "string","enum": ["integer","string","number","boolean","object","array","buffer"]},"XtpFormat": {"type": "string","enum": ["int32","int64","float","double","date-time","byte"]},"ArrayItem": {"type": "object","oneOf": [{"$ref": "#/$defs/ValueArrayItem"},{"$ref": "#/$defs/RefArrayItem"},{"$ref": "#/$defs/MapArrayItem"}]},"ValueArrayItem": {"type": "object","properties": {"type": {"$ref": "#/$defs/XtpType"},"format": {"$ref": "#/$defs/XtpFormat"},"nullable": {"type": "boolean"}},"required": ["type"],"additionalProperties": false},"RefArrayItem": {"type": "object","properties": {"$ref": {"$ref": "#/$defs/SchemaReference"},"nullable": {"type": "boolean","default": false}},"required": ["$ref"],"additionalProperties": false},"MapArrayItem": {"type": "object","properties": {"type": {"const": "object"},"additionalProperties": {"allOf": [{"$ref": "#/$defs/NonMapProperty"},{"not": {"type": "object","required": ["description"]}}]}},"required": ["additionalProperties"],"additionalProperties": false}}}