{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/mock-service-worker/main/json-schema/mock-service-worker-handler-schema.json", "title": "Mock Service Worker Handler", "description": "Schema describing a Mock Service Worker (MSW) request handler definition. Captures the protocol, matching pattern, and mocked response so handler definitions can be portable across MSW environments.", "type": "object", "required": ["protocol"], "oneOf": [ { "title": "REST handler", "properties": { "protocol": { "const": "http" }, "method": { "type": "string", "enum": ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS", "ALL"] }, "path": { "type": "string", "description": "URL pattern, supports path parameters via :param syntax." }, "response": { "$ref": "#/$defs/response" } }, "required": ["protocol", "method", "path"] }, { "title": "GraphQL handler", "properties": { "protocol": { "const": "graphql" }, "operationKind": { "type": "string", "enum": ["query", "mutation", "subscription", "operation"] }, "operationName": { "type": "string" }, "endpoint": { "type": "string", "format": "uri" }, "response": { "$ref": "#/$defs/response" } }, "required": ["protocol", "operationKind"] }, { "title": "WebSocket handler", "properties": { "protocol": { "const": "ws" }, "url": { "type": "string", "format": "uri" } }, "required": ["protocol", "url"] }, { "title": "Server-Sent Events handler", "properties": { "protocol": { "const": "sse" }, "url": { "type": "string", "format": "uri" } }, "required": ["protocol", "url"] } ], "$defs": { "response": { "type": "object", "properties": { "status": { "type": "integer", "minimum": 100, "maximum": 599 }, "headers": { "type": "object", "additionalProperties": { "type": "string" } }, "body": {}, "delayMs": { "type": "integer", "minimum": 0 } } } } }