{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://github.com/api-evangelist/wiremock/blob/main/json-schema/wiremock-stub-mapping-schema.json", "title": "Stub Mapping", "description": "A WireMock stub mapping that defines how the mock server responds to matched incoming requests.", "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "description": "The UUID identifier for this stub mapping." }, "uuid": { "type": "string", "format": "uuid", "description": "Alias for the stub mapping UUID." }, "name": { "type": "string", "description": "A human-readable name for this stub mapping." }, "priority": { "type": "integer", "minimum": 1, "description": "Priority of this stub mapping (lower number = higher priority). Used when multiple stubs match." }, "request": { "type": "object", "description": "The request pattern that incoming requests must match.", "properties": { "method": { "type": "string", "enum": ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS", "TRACE", "ANY"], "description": "The HTTP method to match." }, "url": { "type": "string", "description": "Exact URL to match (including query string)." }, "urlPath": { "type": "string", "description": "Exact URL path to match (ignoring query string)." }, "urlPattern": { "type": "string", "description": "Regex pattern to match against the full URL." }, "urlPathPattern": { "type": "string", "description": "Regex pattern to match against the URL path only." }, "headers": { "type": "object", "description": "Request headers that must be present and match." }, "queryParameters": { "type": "object", "description": "Query parameters that must be present and match." }, "bodyPatterns": { "type": "array", "items": { "type": "object" }, "description": "Patterns that the request body must match." } } }, "response": { "type": "object", "description": "The response to return when a request matches.", "properties": { "status": { "type": "integer", "description": "The HTTP status code to return." }, "statusMessage": { "type": "string", "description": "The HTTP status message." }, "body": { "type": "string", "description": "The response body as a string." }, "jsonBody": { "type": "object", "description": "The response body as a JSON object (automatically serialized)." }, "base64Body": { "type": "string", "description": "The response body as a base64-encoded string." }, "bodyFileName": { "type": "string", "description": "Path to a file containing the response body." }, "headers": { "type": "object", "description": "Response headers to include." }, "fixedDelayMilliseconds": { "type": "integer", "description": "Fixed delay in milliseconds before the response is sent." }, "fault": { "type": "string", "enum": ["CONNECTION_RESET_BY_PEER", "EMPTY_RESPONSE", "MALFORMED_RESPONSE_CHUNK", "RANDOM_DATA_THEN_CLOSE"], "description": "Simulate a network fault instead of returning a normal response." }, "transformers": { "type": "array", "items": { "type": "string" }, "description": "List of response transformer names to apply." }, "proxyBaseUrl": { "type": "string", "description": "Base URL to proxy requests to (for proxy stubs)." } } }, "scenarioName": { "type": "string", "description": "The name of the scenario this stub participates in for stateful behavior." }, "requiredScenarioState": { "type": "string", "description": "The scenario state that must be active for this stub to match." }, "newScenarioState": { "type": "string", "description": "The scenario state to transition to after this stub is matched." }, "persistent": { "type": "boolean", "description": "Whether this stub mapping should be persisted to the backing store." }, "metadata": { "type": "object", "description": "Arbitrary metadata attached to the stub mapping for categorization." } }, "required": ["request", "response"] }