{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/solo/main/json-schema/solo-gloo-virtual-service-schema.json", "title": "VirtualService", "description": "A Gloo Gateway VirtualService defining routing rules, domain bindings, security policies, and traffic management configuration for incoming HTTP/HTTPS traffic.", "type": "object", "properties": { "apiVersion": { "type": "string", "description": "API version (gateway.solo.io/v1)" }, "kind": { "type": "string", "const": "VirtualService" }, "metadata": { "type": "object", "properties": { "name": { "type": "string" }, "namespace": { "type": "string" }, "labels": { "type": "object" }, "annotations": { "type": "object" } } }, "spec": { "type": "object", "properties": { "displayName": { "type": "string", "description": "Human-readable name for the virtual service" }, "virtualHost": { "type": "object", "description": "Virtual host configuration", "properties": { "domains": { "type": "array", "items": { "type": "string" }, "description": "List of domains this virtual service handles" }, "routes": { "type": "array", "description": "Ordered list of routing rules", "items": { "type": "object", "properties": { "name": { "type": "string" }, "matchers": { "type": "array", "items": { "type": "object", "properties": { "prefix": { "type": "string" }, "exact": { "type": "string" }, "regex": { "type": "string" }, "headers": { "type": "array", "items": { "type": "object" } }, "methods": { "type": "array", "items": { "type": "string" } } } } }, "routeAction": { "type": "object" }, "redirectAction": { "type": "object" }, "options": { "type": "object" } } } }, "options": { "type": "object", "description": "Virtual host level options (rate limiting, auth, CORS, etc.)" } } }, "sslConfig": { "type": "object", "description": "TLS configuration for HTTPS" } } }, "status": { "type": "object", "properties": { "statuses": { "type": "object", "additionalProperties": { "type": "object", "properties": { "state": { "type": "string", "enum": ["Pending", "Accepted", "Rejected", "Warning"] }, "reason": { "type": "string" } } } } } } } }