{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/specmatic-configuration/latest.json",
  "title": "Specmatic Configuration",
  "description": "Configuration file for Specmatic, a contract-driven testing tool\n<https://specmatic.io/documentation/>",
  "x-lintel": {
    "source": "https://www.schemastore.org/specmatic.json",
    "sourceSha256": "252ce76106b193615c5a45bdf45988b5ef3c07c375a6af267fef19171b0006b9",
    "fileMatch": [
      "specmatic.json",
      "specmatic.yaml",
      "specmatic.yml"
    ],
    "parsers": [
      "json",
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "version": {
      "type": "integer",
      "default": 2
    }
  },
  "required": [
    "version"
  ],
  "$defs": {
    "ConfigV3": {
      "type": "object",
      "required": [
        "version"
      ],
      "properties": {
        "version": {
          "type": "integer",
          "enum": [
            3
          ]
        },
        "systemUnderTest": {
          "$ref": "#/$defs/SystemUnderTestServiceDefinition"
        },
        "dependencies": {
          "$ref": "#/$defs/DependenciesDefinition"
        },
        "proxies": {
          "$ref": "#/$defs/ProxyDefinitionsArray"
        },
        "mcp": {
          "$ref": "#/$defs/McpDefinition"
        },
        "specmatic": {
          "$ref": "#/$defs/SpecmaticDefinition"
        },
        "components": {
          "type": "object",
          "properties": {
            "sources": {
              "type": "object",
              "additionalProperties": {
                "$ref": "#/$defs/SourceSchema"
              }
            },
            "services": {
              "type": "object",
              "additionalProperties": {
                "$ref": "#/$defs/StaticServiceDefinition"
              }
            },
            "runOptions": {
              "type": "object",
              "additionalProperties": {
                "$ref": "#/$defs/RunOptions"
              }
            },
            "examples": {
              "$ref": "#/$defs/ExamplesConfiguration"
            },
            "dictionaries": {
              "type": "object",
              "additionalProperties": {
                "$ref": "#/$defs/DictionaryConfiguration"
              }
            },
            "adapters": {
              "type": "object",
              "additionalProperties": {
                "$ref": "#/$defs/AdapterConfiguration"
              }
            },
            "certificates": {
              "type": "object",
              "additionalProperties": {
                "$ref": "#/$defs/CertConfiguration"
              }
            },
            "settings": {
              "type": "object",
              "additionalProperties": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/ConcreteSettings"
                  },
                  {
                    "$ref": "#/$defs/ModeSpecificSettings"
                  }
                ]
              }
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "ConfigV2": {
      "type": "object",
      "required": [
        "version",
        "contracts"
      ],
      "properties": {
        "version": {
          "type": "integer",
          "enum": [
            2
          ],
          "description": "Configuration version for Specmatic"
        },
        "contracts": {
          "type": "array",
          "description": "Array of contract configurations",
          "items": {
            "$ref": "#/$defs/ContractConfig"
          }
        },
        "auth": {
          "$ref": "#/$defs/Auth",
          "description": "Authentication configuration"
        },
        "pipeline": {
          "$ref": "#/$defs/Pipeline",
          "description": "Pipeline configuration for Azure DevOps"
        },
        "environments": {
          "type": "object",
          "description": "Environment-specific configurations",
          "additionalProperties": {
            "$ref": "#/$defs/Environment"
          }
        },
        "hooks": {
          "type": "object",
          "description": "Custom hooks configuration",
          "additionalProperties": {
            "type": "string"
          }
        },
        "repository": {
          "$ref": "#/$defs/RepositoryInfo",
          "description": "Repository information"
        },
        "report": {
          "$ref": "#/$defs/ReportConfigurationDetails",
          "description": "Report generation configuration"
        },
        "security": {
          "$ref": "#/$defs/SecurityConfiguration",
          "description": "Security configuration for API testing"
        },
        "test": {
          "$ref": "#/$defs/TestConfiguration",
          "description": "Test execution configuration"
        },
        "stub": {
          "$ref": "#/$defs/StubConfiguration",
          "description": "Stub/mock server configuration"
        },
        "virtualService": {
          "$ref": "#/$defs/VirtualServiceConfiguration",
          "description": "Virtual service configuration"
        },
        "examples": {
          "type": "array",
          "description": "List of example file paths",
          "items": {
            "type": "string"
          }
        },
        "workflow": {
          "$ref": "#/$defs/WorkflowConfiguration",
          "description": "Workflow configuration for ID management"
        },
        "ignoreInlineExamples": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether to ignore inline examples in specifications"
        },
        "additionalExampleParamsFilePath": {
          "type": [
            "string",
            "null"
          ],
          "description": "Path to additional example parameters file"
        },
        "attributeSelectionPattern": {
          "$ref": "#/$defs/AttributeSelectionPattern",
          "description": "Pattern for selecting attributes in responses"
        },
        "allPatternsMandatory": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether all patterns are mandatory"
        },
        "defaultPatternValues": {
          "type": "object",
          "description": "Default values for patterns",
          "additionalProperties": true
        },
        "disable_telemetry": {
          "type": [
            "boolean"
          ],
          "description": "Whether to disable telemetry data collection"
        }
      },
      "additionalProperties": false
    },
    "ContractConfig": {
      "type": "object",
      "title": "ContractConfig",
      "description": "Defines a contract source and its provides/consumes configuration.",
      "required": [],
      "properties": {
        "git": {
          "type": "object",
          "description": "Git contract source details.",
          "required": [],
          "properties": {
            "url": {
              "type": [
                "string",
                "null"
              ],
              "description": "URL of the git repository."
            },
            "branch": {
              "type": [
                "string",
                "null"
              ],
              "description": "Branch name in the git repository."
            },
            "matchBranch": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "filesystem": {
          "type": "object",
          "description": "Filesystem contract source details.",
          "required": [],
          "properties": {
            "directory": {
              "type": "string",
              "description": "Directory path for contract files."
            }
          },
          "additionalProperties": false
        },
        "provides": {
          "type": [
            "array",
            "null"
          ],
          "description": "List of specs provided for testing. Each entry can be a string or an object.",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/StringValue"
              },
              {
                "$ref": "#/$defs/ObjectValueFullUrl"
              },
              {
                "$ref": "#/$defs/ObjectValuePartialUrl"
              },
              {
                "$ref": "#/$defs/ConfigValue"
              }
            ]
          }
        },
        "consumes": {
          "type": [
            "array",
            "null"
          ],
          "description": "List of specs consumed for stubbing. Each entry can be a string or an object.",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/StringValue"
              },
              {
                "$ref": "#/$defs/ObjectValueFullUrl"
              },
              {
                "$ref": "#/$defs/ObjectValuePartialUrl"
              },
              {
                "$ref": "#/$defs/ConfigValue"
              }
            ]
          }
        }
      },
      "additionalProperties": false
    },
    "Auth": {
      "type": "object",
      "properties": {
        "bearer-file": {
          "type": "string",
          "description": "Path to file containing bearer token"
        },
        "bearer-environment-variable": {
          "type": [
            "string",
            "null"
          ],
          "description": "Environment variable name containing bearer token"
        }
      },
      "description": "Authentication configuration",
      "additionalProperties": false
    },
    "Pipeline": {
      "type": "object",
      "properties": {
        "provider": {
          "type": "string",
          "enum": [
            "azure"
          ],
          "description": "Pipeline provider type"
        },
        "organization": {
          "type": "string",
          "description": "Azure DevOps organization name"
        },
        "project": {
          "type": "string",
          "description": "Azure DevOps project name"
        },
        "definitionId": {
          "type": "integer",
          "description": "Pipeline definition ID"
        }
      },
      "description": "Azure DevOps pipeline configuration",
      "additionalProperties": false
    },
    "Environment": {
      "type": "object",
      "properties": {
        "baseurls": {
          "type": [
            "object",
            "null"
          ],
          "description": "Base URLs for different services",
          "additionalProperties": {
            "type": "string"
          }
        },
        "variables": {
          "type": [
            "object",
            "null"
          ],
          "description": "Environment variables",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "description": "Environment-specific configuration",
      "additionalProperties": false
    },
    "RepositoryInfo": {
      "type": "object",
      "properties": {
        "provider": {
          "type": "string",
          "description": "Repository provider type"
        },
        "collectionName": {
          "type": "string",
          "description": "Name of the collection"
        }
      },
      "description": "Repository information",
      "additionalProperties": false
    },
    "ReportConfigurationDetails": {
      "type": "object",
      "properties": {
        "formatters": {
          "type": [
            "array",
            "null"
          ],
          "description": "List of report formatters",
          "items": {
            "$ref": "#/$defs/ReportFormatterDetails"
          },
          "deprecated": true
        },
        "types": {
          "$ref": "#/$defs/ReportTypes"
        }
      },
      "description": "Report generation configuration",
      "additionalProperties": false
    },
    "ReportFormatterDetails": {
      "type": "object",
      "properties": {
        "type": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "text",
            "html",
            "ctrf"
          ],
          "description": "Type of report formatter"
        },
        "layout": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "table"
          ],
          "description": "Layout style for the report"
        },
        "lite": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether to generate a lite version of the report"
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "description": "Title for the report"
        },
        "logo": {
          "type": [
            "string",
            "null"
          ],
          "description": "Path to logo image for the report"
        },
        "logoAltText": {
          "type": [
            "string",
            "null"
          ],
          "description": "Alt text for the logo"
        },
        "heading": {
          "type": [
            "string",
            "null"
          ],
          "description": "Heading for the report"
        },
        "outputDirectory": {
          "type": [
            "string",
            "null"
          ],
          "description": "Directory to output the report"
        }
      },
      "deprecated": true,
      "description": "Configuration for a specific report formatter",
      "additionalProperties": false
    },
    "ReportTypes": {
      "type": "object",
      "properties": {
        "APICoverage": {
          "$ref": "#/$defs/APICoverage"
        }
      },
      "description": "Configuration for different report types",
      "additionalProperties": false
    },
    "APICoverage": {
      "type": "object",
      "properties": {
        "OpenAPI": {
          "$ref": "#/$defs/APICoverageConfiguration"
        }
      },
      "description": "API coverage report configuration",
      "additionalProperties": false
    },
    "APICoverageConfiguration": {
      "type": "object",
      "properties": {
        "successCriteria": {
          "$ref": "#/$defs/SuccessCriteria"
        },
        "excludedEndpoints": {
          "type": [
            "array",
            "null"
          ],
          "description": "List of endpoints to exclude from coverage",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "OpenAPI coverage configuration",
      "additionalProperties": false
    },
    "SuccessCriteria": {
      "type": "object",
      "properties": {
        "minThresholdPercentage": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Minimum coverage percentage threshold"
        },
        "maxMissedEndpointsInSpec": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Maximum number of missed endpoints allowed"
        },
        "enforce": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether to enforce the success criteria"
        }
      },
      "description": "Success criteria for API coverage",
      "additionalProperties": false
    },
    "SecurityConfiguration": {
      "type": "object",
      "properties": {
        "OpenAPI": {
          "$ref": "#/$defs/OpenAPISecurityConfiguration"
        }
      },
      "description": "Security configuration",
      "additionalProperties": false
    },
    "OpenAPISecurityConfiguration": {
      "type": "object",
      "properties": {
        "securitySchemes": {
          "type": "object",
          "description": "Security scheme configurations",
          "additionalProperties": {
            "$ref": "#/$defs/SecuritySchemeConfiguration"
          }
        }
      },
      "description": "OpenAPI security configuration",
      "additionalProperties": false
    },
    "SecuritySchemeConfiguration": {
      "type": "object",
      "description": "Configuration for a security scheme",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "oauth2",
            "basicAuth",
            "bearer",
            "apiKey"
          ],
          "description": "Type of security scheme"
        },
        "token": {
          "type": [
            "string",
            "null"
          ],
          "description": "Authentication token"
        },
        "value": {
          "type": [
            "string",
            "null"
          ],
          "description": "Authentication value"
        }
      },
      "additionalProperties": false
    },
    "TestConfiguration": {
      "type": "object",
      "description": "Test execution configuration",
      "properties": {
        "resiliencyTests": {
          "$ref": "#/$defs/ResiliencyTestsConfig"
        },
        "validateResponseValues": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether to validate response values"
        },
        "allowExtensibleSchema": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether to allow extensible schema validation"
        },
        "timeoutInMilliseconds": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Test timeout in milliseconds"
        },
        "strictMode": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether to enable strict mode for contract testing"
        },
        "https": {
          "$ref": "#/$defs/CertConfiguration"
        }
      },
      "additionalProperties": false
    },
    "ResiliencyTestsConfig": {
      "type": "object",
      "description": "Configuration for resiliency tests",
      "properties": {
        "enable": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "all",
            "positiveOnly",
            "none"
          ],
          "description": "Level of resiliency tests to enable"
        }
      },
      "additionalProperties": false
    },
    "StubConfiguration": {
      "type": "object",
      "description": "Stub/mock server configuration",
      "properties": {
        "generative": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether to enable generative stubbing"
        },
        "delayInMilliseconds": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Delay to add to stub responses in milliseconds"
        },
        "dictionary": {
          "type": [
            "string",
            "null"
          ],
          "description": "Path to dictionary file for generative stubbing"
        },
        "includeMandatoryAndRequestedKeysInResponse": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether to include mandatory and requested keys in response"
        },
        "startTimeoutInMilliseconds": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Timeout for stub server startup in milliseconds"
        },
        "hotReload": {
          "type": [
            "string",
            "null"
          ],
          "description": "Hot reload configuration"
        },
        "strictMode": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Whether to enable strict mode for stubbing"
        },
        "https": {
          "$ref": "#/$defs/CertConfiguration"
        }
      },
      "additionalProperties": false
    },
    "VirtualServiceConfiguration": {
      "type": "object",
      "description": "Virtual service configuration",
      "properties": {
        "nonPatchableKeys": {
          "type": "array",
          "description": "List of keys that cannot be patched",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "WorkflowConfiguration": {
      "type": "object",
      "description": "Workflow configuration for ID management",
      "properties": {
        "ids": {
          "type": "object",
          "description": "ID operation configurations",
          "additionalProperties": {
            "$ref": "#/$defs/WorkflowIDOperation"
          }
        }
      },
      "additionalProperties": false
    },
    "WorkflowIDOperation": {
      "type": "object",
      "description": "Configuration for ID operations in workflow",
      "properties": {
        "extract": {
          "type": [
            "string",
            "null"
          ],
          "description": "JSONPath expression to extract ID"
        },
        "use": {
          "type": [
            "string",
            "null"
          ],
          "description": "JSONPath expression to use extracted ID"
        }
      },
      "additionalProperties": false
    },
    "AttributeSelectionPattern": {
      "type": "object",
      "properties": {
        "default_fields": {
          "type": [
            "array",
            "null"
          ],
          "description": "Default fields to include",
          "items": {
            "type": "string"
          }
        },
        "query_param_key": {
          "type": [
            "string",
            "null"
          ],
          "description": "Query parameter key for field selection"
        }
      },
      "description": "Pattern for selecting attributes in API responses",
      "additionalProperties": false
    },
    "SpecsArray": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1
    },
    "StringValue": {
      "type": "string",
      "description": "A single spec path."
    },
    "ObjectValueFullUrl": {
      "type": "object",
      "properties": {
        "baseUrl": {
          "type": "string"
        },
        "specs": {
          "$ref": "#/$defs/SpecsArray"
        },
        "resiliencyTests": {
          "$ref": "#/$defs/ResiliencyTestsConfig"
        }
      },
      "required": [
        "baseUrl",
        "specs"
      ],
      "additionalProperties": false
    },
    "ObjectValuePartialUrl": {
      "type": "object",
      "required": [
        "specs"
      ],
      "anyOf": [
        {
          "required": [
            "host"
          ],
          "properties": {
            "host": {
              "type": "string"
            }
          },
          "type": "object"
        },
        {
          "required": [
            "port"
          ],
          "properties": {
            "port": {
              "type": "integer"
            }
          },
          "type": "object"
        }
      ],
      "properties": {
        "specs": {
          "$ref": "#/$defs/SpecsArray"
        },
        "host": {
          "type": "string"
        },
        "port": {
          "type": "integer"
        },
        "basePath": {
          "type": "string"
        },
        "resiliencyTests": {
          "$ref": "#/$defs/ResiliencyTestsConfig"
        }
      }
    },
    "ConfigValue": {
      "type": "object",
      "properties": {
        "specs": {
          "$ref": "#/$defs/SpecsArray"
        },
        "specType": {
          "type": "string"
        },
        "config": {
          "type": "object",
          "additionalProperties": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "array",
                "items": {
                  "$ref": "#/$defs/ConfigValueScalarOrComposite"
                }
              },
              {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/$defs/ConfigValueScalarOrComposite"
                }
              }
            ]
          }
        }
      },
      "required": [
        "specs",
        "specType",
        "config"
      ],
      "additionalProperties": false
    },
    "ConfigValueScalarOrComposite": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ConfigValueScalarOrComposite"
          }
        },
        {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/ConfigValueScalarOrComposite"
          }
        }
      ]
    },
    "SubstitutionExpression": {
      "type": "string",
      "pattern": "^\\$\\{[^}]+\\}$"
    },
    "GuardedSubstitutionString": {
      "type": "string",
      "allOf": [
        {
          "if": {
            "pattern": "^\\$\\{"
          },
          "then": {
            "$ref": "#/$defs/SubstitutionExpression"
          },
          "else": {}
        }
      ]
    },
    "SubstitutableString": {
      "type": "string"
    },
    "SubstitutableStringArray": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/SubstitutableString"
      }
    },
    "SubstitutableInteger": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "$ref": "#/$defs/GuardedSubstitutionString"
        }
      ]
    },
    "SubstitutableFloat": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "$ref": "#/$defs/GuardedSubstitutionString"
        }
      ]
    },
    "SubstitutableBoolean": {
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "$ref": "#/$defs/GuardedSubstitutionString"
        }
      ]
    },
    "SubstitutableStringOrArray": {
      "oneOf": [
        {
          "$ref": "#/$defs/SubstitutableString"
        },
        {
          "$ref": "#/$defs/SubstitutableStringArray"
        }
      ]
    },
    "Reference": {
      "type": "object",
      "properties": {
        "$ref": {
          "type": "string",
          "format": "uri-reference"
        }
      },
      "additionalProperties": true
    },
    "DependenciesDefinition": {
      "type": "object",
      "properties": {
        "services": {
          "$ref": "#/$defs/MockRuntimeServiceDefinitionOrRefArray"
        },
        "data": {
          "$ref": "#/$defs/DataDefinition"
        },
        "settings": {
          "$ref": "#/$defs/MockSettingsOrRef"
        }
      },
      "additionalProperties": false
    },
    "MockRuntimeServiceDefinitionOrRefArray": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "service": {
            "$ref": "#/$defs/MockRuntimeServiceDefinition"
          }
        },
        "required": [
          "service"
        ],
        "additionalProperties": false
      }
    },
    "MockRuntimeServiceDefinition": {
      "type": "object",
      "oneOf": [
        {
          "required": [
            "$ref"
          ],
          "properties": {
            "$ref": {}
          },
          "not": {
            "required": [
              "definitions"
            ],
            "properties": {
              "definitions": {}
            },
            "type": "object"
          },
          "type": "object"
        },
        {
          "required": [
            "definitions"
          ],
          "properties": {
            "definitions": {}
          },
          "not": {
            "required": [
              "$ref"
            ],
            "properties": {
              "$ref": {}
            },
            "type": "object"
          },
          "type": "object"
        }
      ],
      "properties": {
        "$ref": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "definitions": {
          "$ref": "#/$defs/SpecificationStaticDefinitionArray"
        },
        "runOptions": {
          "$ref": "#/$defs/MockRunOptionsOrRef"
        },
        "data": {
          "$ref": "#/$defs/DataDefinition"
        },
        "settings": {
          "$ref": "#/$defs/MockSettingsOrRef"
        }
      },
      "additionalProperties": false
    },
    "SystemUnderTestServiceDefinition": {
      "type": "object",
      "properties": {
        "service": {
          "$ref": "#/$defs/TestRuntimeServiceDefinition"
        }
      },
      "additionalProperties": false
    },
    "TestRuntimeServiceDefinition": {
      "type": "object",
      "oneOf": [
        {
          "required": [
            "$ref"
          ],
          "properties": {
            "$ref": {}
          },
          "not": {
            "required": [
              "definitions"
            ],
            "properties": {
              "definitions": {}
            },
            "type": "object"
          },
          "type": "object"
        },
        {
          "required": [
            "definitions"
          ],
          "properties": {
            "definitions": {}
          },
          "not": {
            "required": [
              "$ref"
            ],
            "properties": {
              "$ref": {}
            },
            "type": "object"
          },
          "type": "object"
        }
      ],
      "properties": {
        "$ref": {
          "type": "string"
        },
        "definitions": {
          "$ref": "#/$defs/SpecificationStaticDefinitionArray"
        },
        "description": {
          "type": "string"
        },
        "runOptions": {
          "$ref": "#/$defs/TestRunOptionsOrRef"
        },
        "data": {
          "$ref": "#/$defs/DataDefinition"
        },
        "settings": {
          "$ref": "#/$defs/TestSettingsOrRef"
        }
      },
      "additionalProperties": false
    },
    "DataDefinition": {
      "type": "object",
      "properties": {
        "examples": {
          "$ref": "#/$defs/ArrayExampleConfigurationOrRef"
        },
        "dictionary": {
          "$ref": "#/$defs/DictionaryConfigurationOrRef"
        },
        "adapters": {
          "$ref": "#/$defs/AdapterConfigurationOrRef"
        }
      },
      "additionalProperties": false
    },
    "ProxyDefinitionsArray": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "proxy": {
            "$ref": "#/$defs/ProxyDefinition"
          }
        },
        "required": [
          "proxy"
        ],
        "additionalProperties": false
      }
    },
    "ProxyDefinition": {
      "type": "object",
      "properties": {
        "target": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "baseUrl": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "timeoutInMilliseconds": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "adapters": {
          "$ref": "#/$defs/AdapterConfigurationOrRef"
        },
        "mock": {
          "$ref": "#/$defs/SubstitutableStringOrArray"
        },
        "cert": {
          "$ref": "#/$defs/CertConfigurationOrRef"
        },
        "recordingsDirectory": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "required": [
        "target"
      ],
      "additionalProperties": false
    },
    "McpDefinition": {
      "type": "object",
      "properties": {
        "test": {
          "$ref": "#/$defs/McpTestRunOptions"
        }
      },
      "additionalProperties": false
    },
    "McpTestRunOptions": {
      "type": "object",
      "properties": {
        "baseUrl": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "transportKind": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "STREAMABLE_HTTP"
              ]
            },
            {
              "$ref": "#/$defs/SubstitutableString"
            }
          ]
        },
        "enableResiliencyTests": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "dictionaryFile": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "bearerToken": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "filterTools": {
          "$ref": "#/$defs/SubstitutableStringArray"
        },
        "skipTools": {
          "$ref": "#/$defs/SubstitutableStringArray"
        }
      },
      "additionalProperties": false
    },
    "SpecmaticDefinition": {
      "type": "object",
      "properties": {
        "license": {
          "$ref": "#/$defs/LicenseDefinition"
        },
        "governance": {
          "type": "object",
          "properties": {
            "report": {
              "$ref": "#/$defs/ReportsDefinition"
            },
            "successCriteria": {
              "$ref": "#/$defs/SuccessCriteriaDefinition"
            }
          },
          "additionalProperties": false
        },
        "settings": {
          "$ref": "#/$defs/ConcreteSettingsOrRef"
        }
      },
      "additionalProperties": false
    },
    "LicenseDefinition": {
      "type": "object",
      "properties": {
        "path": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "additionalProperties": false
    },
    "ReportsDefinition": {
      "type": "object",
      "properties": {
        "formats": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "html",
                  "ctrf"
                ]
              }
            },
            {
              "$ref": "#/$defs/SubstitutableString"
            }
          ]
        },
        "outputDirectory": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "additionalProperties": false
    },
    "SuccessCriteriaDefinition": {
      "type": "object",
      "properties": {
        "minCoveragePercentage": {
          "$ref": "#/$defs/SubstitutableFloat"
        },
        "maxMissedOperationsInSpec": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "enforce": {
          "$ref": "#/$defs/SubstitutableBoolean"
        }
      },
      "additionalProperties": false
    },
    "StaticServiceDefinition": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "definitions": {
          "$ref": "#/$defs/SpecificationStaticDefinitionArray"
        }
      },
      "additionalProperties": false
    },
    "SpecificationStaticDefinitionArray": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "definition": {
            "$ref": "#/$defs/SpecificationStaticDefinition"
          }
        },
        "required": [
          "definition"
        ],
        "additionalProperties": false
      }
    },
    "SpecificationStaticDefinition": {
      "type": "object",
      "properties": {
        "source": {
          "$ref": "#/$defs/SourceSchemaOrRef"
        },
        "specs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SpecificationSchema"
          }
        }
      },
      "required": [
        "source",
        "specs"
      ],
      "additionalProperties": false
    },
    "SpecificationSchema": {
      "oneOf": [
        {
          "$ref": "#/$defs/SpecificationPath"
        },
        {
          "type": "object",
          "properties": {
            "spec": {
              "$ref": "#/$defs/SpecificationObject"
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "SpecificationPath": {
      "type": "string"
    },
    "SpecificationObject": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "path": {
          "type": "string"
        },
        "urlPathPrefix": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "required": [
        "path"
      ],
      "additionalProperties": false
    },
    "SourceSchemaOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/SourceSchema"
      }
    },
    "SourceSchema": {
      "oneOf": [
        {
          "$ref": "#/$defs/GitSourceSchema"
        },
        {
          "$ref": "#/$defs/FileSystemSourceSchema"
        }
      ]
    },
    "GitSourceSchema": {
      "type": "object",
      "properties": {
        "git": {
          "$ref": "#/$defs/GitSourceOptions"
        }
      },
      "required": [
        "git"
      ],
      "additionalProperties": false
    },
    "GitSourceOptions": {
      "type": "object",
      "properties": {
        "url": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "branch": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "matchBranch": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "auth": {
          "$ref": "#/$defs/GitSourceAuthentication"
        }
      },
      "required": [
        "url"
      ],
      "additionalProperties": false
    },
    "GitSourceAuthentication": {
      "oneOf": [
        {
          "$ref": "#/$defs/GitSourceBearerFileAuthentication"
        },
        {
          "$ref": "#/$defs/GitSourceBearerEnvAuthentication"
        },
        {
          "$ref": "#/$defs/GitSourcePersonalAccessTokenAuthentication"
        }
      ]
    },
    "GitSourceBearerFileAuthentication": {
      "type": "object",
      "properties": {
        "bearerFile": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "required": [
        "bearerFile"
      ],
      "additionalProperties": false
    },
    "GitSourceBearerEnvAuthentication": {
      "type": "object",
      "properties": {
        "bearerEnvironmentVariable": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "required": [
        "bearerEnvironmentVariable"
      ],
      "additionalProperties": false
    },
    "GitSourcePersonalAccessTokenAuthentication": {
      "type": "object",
      "properties": {
        "personalAccessToken": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "required": [
        "personalAccessToken"
      ],
      "additionalProperties": false
    },
    "FileSystemSourceSchema": {
      "type": "object",
      "properties": {
        "filesystem": {
          "$ref": "#/$defs/FileSystemSourceOptions"
        }
      },
      "required": [
        "filesystem"
      ],
      "additionalProperties": false
    },
    "FileSystemSourceOptions": {
      "type": "object",
      "properties": {
        "directory": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "additionalProperties": false
    },
    "RunOptions": {
      "type": "object",
      "properties": {
        "openapi": {
          "$ref": "#/$defs/OpenApiRunOptions"
        },
        "wsdl": {
          "$ref": "#/$defs/WsdlRunOptions"
        },
        "asyncapi": {
          "$ref": "#/$defs/AsyncApiRunOptions"
        },
        "graphqlsdl": {
          "$ref": "#/$defs/GraphQLSdlRunOptions"
        },
        "protobuf": {
          "$ref": "#/$defs/ProtobufRunOptions"
        }
      },
      "additionalProperties": false
    },
    "TestRunOptionsOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/TestRunOptions"
      }
    },
    "TestRunOptions": {
      "type": "object",
      "properties": {
        "openapi": {
          "$ref": "#/$defs/OpenApiTestRunOptions"
        },
        "wsdl": {
          "$ref": "#/$defs/WsdlTestRunOptions"
        },
        "asyncapi": {
          "$ref": "#/$defs/AsyncApiTestRunOptions"
        },
        "graphqlsdl": {
          "$ref": "#/$defs/GraphqlSdlTestRunOptions"
        },
        "protobuf": {
          "$ref": "#/$defs/ProtobufTestRunOptions"
        }
      },
      "additionalProperties": false
    },
    "MockRunOptionsOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/MockRunOptions"
      }
    },
    "MockRunOptions": {
      "type": "object",
      "properties": {
        "openapi": {
          "$ref": "#/$defs/OpenApiMockRunOptions"
        },
        "wsdl": {
          "$ref": "#/$defs/WsdlMockRunOptions"
        },
        "asyncapi": {
          "$ref": "#/$defs/AsyncApiMockRunOptions"
        },
        "graphqlsdl": {
          "$ref": "#/$defs/GraphqlSdlMockRunOptions"
        },
        "protobuf": {
          "$ref": "#/$defs/ProtobufMockRunOptions"
        }
      },
      "additionalProperties": false
    },
    "OpenApiRunOptions": {
      "type": "object",
      "required": [
        "type"
      ],
      "if": {
        "properties": {
          "type": {
            "const": "test"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/OpenApiTestRunOptions"
      },
      "else": {
        "$ref": "#/$defs/OpenApiMockRunOptions"
      }
    },
    "AsyncApiRunOptions": {
      "type": "object",
      "required": [
        "type"
      ],
      "if": {
        "properties": {
          "type": {
            "const": "test"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/AsyncApiTestRunOptions"
      },
      "else": {
        "$ref": "#/$defs/AsyncApiMockRunOptions"
      }
    },
    "GraphQLSdlRunOptions": {
      "type": "object",
      "required": [
        "type"
      ],
      "if": {
        "properties": {
          "type": {
            "const": "test"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/GraphqlSdlTestRunOptions"
      },
      "else": {
        "$ref": "#/$defs/GraphqlSdlMockRunOptions"
      }
    },
    "ProtobufRunOptions": {
      "type": "object",
      "required": [
        "type"
      ],
      "if": {
        "properties": {
          "type": {
            "const": "test"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/ProtobufTestRunOptions"
      },
      "else": {
        "$ref": "#/$defs/ProtobufMockRunOptions"
      }
    },
    "WsdlRunOptions": {
      "type": "object",
      "required": [
        "type"
      ],
      "if": {
        "properties": {
          "type": {
            "const": "test"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/WsdlTestRunOptions"
      },
      "else": {
        "$ref": "#/$defs/WsdlMockRunOptions"
      }
    },
    "WsdlTestRunOptions": {
      "type": "object",
      "properties": {
        "type": {
          "const": "test"
        },
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "port": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "baseUrl": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "specs": {
          "$ref": "#/$defs/SpecificationRuntimeDefinitionArray"
        }
      },
      "additionalProperties": false
    },
    "WsdlMockRunOptions": {
      "type": "object",
      "properties": {
        "type": {
          "const": "mock"
        },
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "port": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "baseUrl": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "cert": {
          "$ref": "#/$defs/CertConfigurationOrRef"
        },
        "specs": {
          "$ref": "#/$defs/SpecificationRuntimeDefinitionArray"
        }
      },
      "additionalProperties": false
    },
    "AsyncApiTestRunOptions": {
      "type": "object",
      "properties": {
        "type": {
          "const": "test"
        },
        "replyTimeout": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "subscriberReadinessWaitTimeout": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "servers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AsyncApiServerDefinition"
          }
        },
        "schemaRegistry": {
          "$ref": "#/$defs/AsyncApiSchemaRegistry"
        },
        "specs": {
          "$ref": "#/$defs/SpecificationRuntimeDefinitionArray"
        }
      },
      "additionalProperties": false
    },
    "AsyncApiServerDefinition": {
      "type": "object",
      "properties": {
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "protocol": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "adminCredentials": {
          "$ref": "#/$defs/FreeFormObject"
        },
        "client": {
          "type": "object",
          "properties": {
            "consumer": {
              "$ref": "#/$defs/CertConfigurationOrRef"
            },
            "producer": {
              "$ref": "#/$defs/CertConfigurationOrRef"
            }
          },
          "additionalProperties": false
        }
      },
      "required": [
        "host",
        "protocol"
      ],
      "additionalProperties": false
    },
    "AsyncApiMockRunOptions": {
      "type": "object",
      "properties": {
        "type": {
          "const": "mock"
        },
        "specs": {
          "$ref": "#/$defs/SpecificationRuntimeDefinitionArray"
        },
        "servers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AsyncApiServerDefinition"
          }
        },
        "schemaRegistry": {
          "$ref": "#/$defs/AsyncApiSchemaRegistry"
        },
        "inMemoryBroker": {
          "type": "object",
          "properties": {
            "host": {
              "$ref": "#/$defs/SubstitutableString"
            },
            "port": {
              "$ref": "#/$defs/SubstitutableInteger"
            },
            "logDir": {
              "$ref": "#/$defs/SubstitutableString"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "AsyncApiSchemaRegistry": {
      "type": "object",
      "properties": {
        "kind": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "CONFLUENT",
                "DEFAULT"
              ]
            },
            {
              "$ref": "#/$defs/SubstitutableString"
            }
          ]
        },
        "url": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "username": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "password": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "required": [
        "kind"
      ],
      "additionalProperties": false
    },
    "GraphqlSdlTestRunOptions": {
      "type": "object",
      "properties": {
        "type": {
          "const": "test"
        },
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "port": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "specs": {
          "$ref": "#/$defs/SpecificationRuntimeDefinitionArray"
        }
      },
      "additionalProperties": false
    },
    "GraphqlSdlMockRunOptions": {
      "type": "object",
      "properties": {
        "type": {
          "const": "mock"
        },
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "port": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "specs": {
          "$ref": "#/$defs/SpecificationRuntimeDefinitionArray"
        }
      },
      "additionalProperties": false
    },
    "ProtobufTestRunOptions": {
      "type": "object",
      "properties": {
        "type": {
          "const": "test"
        },
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "port": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "importPaths": {
          "$ref": "#/$defs/SubstitutableStringArray"
        },
        "protocVersion": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "requestTimeout": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "specs": {
          "$ref": "#/$defs/SpecificationRuntimeDefinitionArray"
        }
      },
      "additionalProperties": false
    },
    "ProtobufMockRunOptions": {
      "type": "object",
      "properties": {
        "type": {
          "const": "mock"
        },
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "port": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "importPaths": {
          "$ref": "#/$defs/SubstitutableStringArray"
        },
        "protocVersion": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "specs": {
          "$ref": "#/$defs/SpecificationRuntimeDefinitionArray"
        }
      },
      "additionalProperties": false
    },
    "OpenApiTestRunOptions": {
      "type": "object",
      "properties": {
        "type": {
          "const": "test"
        },
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "port": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "baseUrl": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "filter": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "workflow": {
          "$ref": "#/$defs/WorkflowConfigurationV3"
        },
        "swaggerUiBaseUrl": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "swaggerUrl": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "actuatorUrl": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "cert": {
          "$ref": "#/$defs/CertConfigurationOrRef"
        },
        "specs": {
          "$ref": "#/$defs/OpenApiSpecificationRuntimeDefinitionArray"
        }
      },
      "additionalProperties": false
    },
    "OpenApiMockRunOptions": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "mock",
            "stateful-mock"
          ]
        },
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "port": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "baseUrl": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "filter": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "logMode": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "ALL",
                "REQUEST_RESPONSE"
              ]
            },
            {
              "$ref": "#/$defs/SubstitutableString"
            }
          ]
        },
        "logsDirPath": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "cert": {
          "$ref": "#/$defs/CertConfigurationOrRef"
        },
        "specs": {
          "$ref": "#/$defs/OpenApiSpecificationRuntimeDefinitionArray"
        }
      },
      "additionalProperties": false
    },
    "OpenApiSpecificationRuntimeDefinitionArray": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "spec": {
            "$ref": "#/$defs/OpenApiSpecificationRuntimeDefinition"
          }
        },
        "required": [
          "spec"
        ],
        "additionalProperties": false
      }
    },
    "SpecificationRuntimeDefinitionArray": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "spec": {
            "$ref": "#/$defs/SpecificationRuntimeDefinition"
          }
        },
        "required": [
          "spec"
        ],
        "additionalProperties": false
      }
    },
    "FreeFormObject": {
      "type": "object",
      "additionalProperties": {}
    },
    "SpecificationRuntimeDefinition": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "port": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "overlayFilePath": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "additionalProperties": false
    },
    "OpenApiSpecificationRuntimeDefinition": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "host": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "port": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "baseUrl": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "overlayFilePath": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "securitySchemes": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/SecuritySchemeConfigurationV3"
          }
        }
      },
      "additionalProperties": false
    },
    "SecuritySchemeConfigurationV3": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "oauth2",
            "basicAuth",
            "bearer",
            "apiKey"
          ]
        },
        "token": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "required": [
        "type",
        "token"
      ],
      "additionalProperties": false
    },
    "WorkflowConfigurationV3": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "properties": {
              "extract": {
                "$ref": "#/$defs/SubstitutableString"
              },
              "use": {
                "$ref": "#/$defs/SubstitutableString"
              }
            }
          }
        }
      },
      "additionalProperties": false
    },
    "ExamplesConfiguration": {
      "type": "object",
      "properties": {
        "testExamples": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BaseExampleConfigurationOrRef"
          }
        },
        "mockExamples": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BaseExampleConfigurationOrRef"
          }
        },
        "commonExamples": {
          "$ref": "#/$defs/BaseExampleConfiguration"
        }
      },
      "additionalProperties": false
    },
    "ArrayExampleConfigurationOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/ArrayExampleConfiguration"
      }
    },
    "ArrayExampleConfiguration": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/BaseExampleConfigurationOrRef"
      }
    },
    "BaseExampleConfigurationOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/BaseExampleConfiguration"
      }
    },
    "BaseExampleConfiguration": {
      "type": "object",
      "properties": {
        "directories": {
          "$ref": "#/$defs/SubstitutableStringArray"
        }
      },
      "required": [
        "directories"
      ],
      "additionalProperties": false
    },
    "DictionaryConfigurationOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/DictionaryConfiguration"
      }
    },
    "DictionaryConfiguration": {
      "type": "object",
      "properties": {
        "path": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "required": [
        "path"
      ],
      "additionalProperties": false
    },
    "AdapterConfigurationOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/AdapterConfiguration"
      }
    },
    "AdapterConfiguration": {
      "type": "object",
      "properties": {
        "pre_specmatic_request_processor": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "post_specmatic_response_processor": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "pre_specmatic_response_processor": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "stub_load_contract": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "test_load_contract": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "additionalProperties": false
    },
    "CertConfigurationOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/CertConfiguration"
      }
    },
    "CertConfiguration": {
      "type": "object",
      "properties": {
        "keyStore": {
          "$ref": "#/$defs/KeyStoreConfiguration"
        },
        "keyStorePassword": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "mtlsEnabled": {
          "$ref": "#/$defs/SubstitutableBoolean"
        }
      },
      "required": [
        "keyStore"
      ],
      "additionalProperties": false
    },
    "ConcreteSettingsOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/ConcreteSettings"
      }
    },
    "ModeSpecificSettings": {
      "type": "object",
      "anyOf": [
        {
          "$ref": "#/$defs/TestSettings"
        },
        {
          "$ref": "#/$defs/MockSettings"
        }
      ]
    },
    "ConcreteSettings": {
      "type": "object",
      "properties": {
        "general": {
          "$ref": "#/$defs/GeneralSettings"
        },
        "test": {
          "$ref": "#/$defs/TestSettings"
        },
        "mock": {
          "$ref": "#/$defs/MockSettings"
        },
        "proxy": {
          "$ref": "#/$defs/ProxySettings"
        },
        "backwardCompatibility": {
          "$ref": "#/$defs/BackwardCompatibilitySettings"
        }
      },
      "additionalProperties": false
    },
    "KeyStoreConfiguration": {
      "oneOf": [
        {
          "$ref": "#/$defs/KeyStoreFileConfiguration"
        },
        {
          "$ref": "#/$defs/KeyStoreDirectoryConfiguration"
        }
      ]
    },
    "KeyStoreFileConfiguration": {
      "type": "object",
      "properties": {
        "file": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "password": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "alias": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "required": [
        "file"
      ],
      "additionalProperties": false
    },
    "KeyStoreDirectoryConfiguration": {
      "type": "object",
      "properties": {
        "directory": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "password": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "alias": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "required": [
        "directory"
      ],
      "additionalProperties": false
    },
    "BackwardCompatibilitySettings": {
      "type": "object",
      "properties": {
        "baseBranch": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "targetPath": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "repoDirectory": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "strictMode": {
          "$ref": "#/$defs/SubstitutableBoolean"
        }
      },
      "additionalProperties": false
    },
    "ProxySettings": {
      "type": "object",
      "properties": {
        "recordRequests": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "ignoreHeaders": {
          "$ref": "#/$defs/SubstitutableStringArray"
        }
      },
      "additionalProperties": false
    },
    "MockSettingsOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/MockSettings"
      }
    },
    "MockSettings": {
      "type": "object",
      "properties": {
        "generative": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "delayInMilliseconds": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "startTimeoutInMilliseconds": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "hotReload": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "strictMode": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "lenientMode": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "gracefulRestartTimeoutInMilliseconds": {
          "$ref": "#/$defs/SubstitutableInteger"
        }
      },
      "additionalProperties": false
    },
    "TestSettingsOrRef": {
      "if": {
        "type": "object",
        "required": [
          "$ref"
        ],
        "properties": {
          "$ref": {
            "type": "string"
          }
        }
      },
      "then": {
        "$ref": "#/$defs/Reference"
      },
      "else": {
        "$ref": "#/$defs/TestSettings"
      }
    },
    "TestSettings": {
      "type": "object",
      "properties": {
        "schemaResiliencyTests": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "all",
                "none",
                "positiveOnly"
              ]
            },
            {
              "$ref": "#/$defs/SubstitutableString"
            }
          ]
        },
        "timeoutInMilliseconds": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "strictMode": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "lenientMode": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "parallelism": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "maxTestRequestCombinations": {
          "$ref": "#/$defs/SubstitutableInteger"
        },
        "junitReportDir": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "validateResponseValues": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "maxTestCount": {
          "$ref": "#/$defs/SubstitutableInteger"
        }
      },
      "additionalProperties": false
    },
    "GeneralSettings": {
      "type": "object",
      "properties": {
        "disableTelemetry": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "ignoreInlineExamples": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "ignoreInlineExampleWarnings": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "prettyPrint": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "logging": {
          "$ref": "#/$defs/LoggingSettings"
        },
        "featureFlags": {
          "$ref": "#/$defs/FeatureFlags"
        },
        "specExamplesDirectoryTemplate": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "sharedExamplesDirectoryTemplate": {
          "$ref": "#/$defs/SubstitutableStringArray"
        }
      },
      "additionalProperties": false
    },
    "LoggingSettings": {
      "type": "object",
      "properties": {
        "level": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "DEBUG",
                "INFO"
              ]
            },
            {
              "$ref": "#/$defs/SubstitutableString"
            }
          ]
        },
        "text": {
          "$ref": "#/$defs/LogOutputSettings"
        },
        "json": {
          "$ref": "#/$defs/LogOutputSettings"
        }
      },
      "additionalProperties": false
    },
    "LogOutputSettings": {
      "type": "object",
      "properties": {
        "directory": {
          "$ref": "#/$defs/SubstitutableString"
        },
        "console": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "logFilePrefix": {
          "$ref": "#/$defs/SubstitutableString"
        }
      },
      "additionalProperties": false
    },
    "FeatureFlags": {
      "type": "object",
      "properties": {
        "fuzzyMatcherForPayloads": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "schemaExampleDefault": {
          "$ref": "#/$defs/SubstitutableBoolean"
        },
        "escapeSoapAction": {
          "$ref": "#/$defs/SubstitutableBoolean"
        }
      },
      "additionalProperties": false
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "version": {
            "const": 3
          }
        }
      },
      "then": {
        "$ref": "#/$defs/ConfigV3"
      },
      "else": {
        "$ref": "#/$defs/ConfigV2"
      }
    }
  ]
}
