{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "pebl.xsd.PEBL",
    "type": "object",
    "properties": {
        "pebl": {
            "type": "object",
            "properties": {
                "benchmark": {
                    "$ref": "#/definitions/Benchmark"
                },
                "result": {
                    "$ref": "#/definitions/Result"
                }
            },
            "additionalProperties": false
        }
    },
    "definitions": {
        "Benchmark": {
            "type": "object",
            "properties": {
                "capabilities": {
                    "type": "object",
                    "properties": {
                        "capability": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Capability"
                            }
                        }
                    }
                },
                "tests": {
                    "type": "object",
                    "properties": {
                        "test": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Test"
                            }
                        }
                    }
                },
                "metricTypes": {
                    "type": "object",
                    "properties": {
                        "metricType": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/MetricType"
                            }
                        }
                    }
                }
            },
            "additionalProperties": false
        },
        "Capability": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "languages": {
                    "type": "object",
                    "properties": {
                        "language": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Language"
                            }
                        }
                    }
                },
                "metrics": {
                    "type": "object",
                    "properties": {
                        "metric": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Metric"
                            }
                        }
                    }
                },
                "characteristics": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "enum": [
                            "FUNCTIONAL_COMPLETENESS",
                            "LEARNABILITY",
                            "ADAPTABILITY",
                            "AVAILABILITY",
                            "INTEGRITY",
                            "REPLACEABILITY",
                            "USER_INTERFACE_AESTHETICS",
                            "INTEROPERABILITY",
                            "ANALYSABILITY",
                            "FUNCTIONAL_SUITABILITY",
                            "PERFORMANCE_EFFICIENCY",
                            "COMPATABILITY",
                            "ACCESSIBILITY",
                            "FAULT_TOLERANCE",
                            "FUNCTIONAL_APPROPRIATENESS",
                            "RECOVERABILITY",
                            "ACCOUNTABILITY",
                            "MAINTAINABILITY",
                            "AUTHENTICITY",
                            "TIME_BEHAVIOUR",
                            "MODULARITY",
                            "MATURITY",
                            "NON_REPUDIATION",
                            "INSTALLABILITY",
                            "CONFIDENTIALITY",
                            "TESTABILITY",
                            "REUSABILITY",
                            "MODIFIABILITY",
                            "FUNCTIONAL_CORRECTNESS",
                            "USABILITY",
                            "RELIABILITY",
                            "SECURITY",
                            "CO_EXISTENCE",
                            "OPERABILITY",
                            "CAPACITY",
                            "APPROPRIATENESS_RECOGNISABILITY",
                            "PORTABILITY",
                            "RESOURCE_UTILISATION",
                            "USER_ERROR_PROTECTION"
                        ]
                    }
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "id": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "Language": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "groups": {
                    "type": "object",
                    "properties": {
                        "group": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Group"
                            }
                        }
                    }
                },
                "id": {
                    "type": "string"
                },
                "metrics": {
                    "type": "object",
                    "properties": {
                        "metric": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Metric"
                            }
                        }
                    }
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                }
            },
            "additionalProperties": false
        },
        "Group": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "featureSets": {
                    "type": "object",
                    "properties": {
                        "featureSet": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/FeatureSet"
                            }
                        }
                    }
                },
                "id": {
                    "type": "string"
                },
                "metrics": {
                    "type": "object",
                    "properties": {
                        "metric": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Metric"
                            }
                        }
                    }
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                }
            },
            "additionalProperties": false
        },
        "FeatureSet": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "features": {
                    "type": "object",
                    "properties": {
                        "feature": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Feature"
                            }
                        }
                    }
                },
                "id": {
                    "type": "string"
                },
                "metrics": {
                    "type": "object",
                    "properties": {
                        "metric": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Metric"
                            }
                        }
                    }
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                }
            },
            "additionalProperties": false
        },
        "Feature": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "metrics": {
                    "type": "object",
                    "properties": {
                        "metric": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Metric"
                            }
                        }
                    }
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                }
            },
            "additionalProperties": false
        },
        "Metric": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "metricType": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "AdaptedMap": {
            "type": "object",
            "properties": {},
            "additionalProperties": false
        },
        "Test": {
            "type": "object",
            "properties": {
                "feature": {
                    "type": "string"
                },
                "process": {
                    "type": "object"
                },
                "description": {
                    "type": "string"
                },
                "testCases": {
                    "type": "object",
                    "properties": {
                        "testCase": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/TestCase"
                            }
                        }
                    }
                },
                "files": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "testPartners": {
                    "type": "object",
                    "properties": {
                        "ruleBasedWSDLTestPartner": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/RuleBasedWSDLTestPartner"
                                    },
                                    {
                                        "$ref": "#/definitions/WSDLTestPartner"
                                    },
                                    {
                                        "$ref": "#/definitions/TestPartner"
                                    }
                                ]
                            }
                        },
                        "wsdlTestPartner": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/WSDLTestPartner"
                                    },
                                    {
                                        "$ref": "#/definitions/RuleBasedWSDLTestPartner"
                                    },
                                    {
                                        "$ref": "#/definitions/ScriptBasedWSDLTestPartner"
                                    },
                                    {
                                        "$ref": "#/definitions/TestPartner"
                                    }
                                ]
                            }
                        },
                        "scriptBasedWSDLTestPartner": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/ScriptBasedWSDLTestPartner"
                                    },
                                    {
                                        "$ref": "#/definitions/WSDLTestPartner"
                                    },
                                    {
                                        "$ref": "#/definitions/TestPartner"
                                    }
                                ]
                            }
                        }
                    }
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "metrics": {
                    "type": "object",
                    "properties": {
                        "metric": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Metric"
                            }
                        }
                    }
                },
                "id": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "TestCase": {
            "type": "object",
            "properties": {
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "name": {
                    "type": "string"
                },
                "number": {
                    "type": "integer"
                },
                "testSteps": {
                    "type": "object",
                    "properties": {
                        "startProcess": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/StartProcess"
                                    },
                                    {
                                        "$ref": "#/definitions/TestStep"
                                    }
                                ]
                            }
                        },
                        "delayTesting": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/DelayTesting"
                                    },
                                    {
                                        "$ref": "#/definitions/TestStep"
                                    }
                                ]
                            }
                        },
                        "executeScript": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/ExecuteScript"
                                    },
                                    {
                                        "$ref": "#/definitions/TestStep"
                                    }
                                ]
                            }
                        },
                        "sendSoapMessage": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/SendSoapMessage"
                                    },
                                    {
                                        "$ref": "#/definitions/TestStep"
                                    }
                                ]
                            }
                        },
                        "checkDeployment": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/CheckDeployment"
                                    },
                                    {
                                        "$ref": "#/definitions/TestStep"
                                    }
                                ]
                            }
                        },
                        "gatherTraces": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/GatherTraces"
                                    },
                                    {
                                        "$ref": "#/definitions/TestStep"
                                    }
                                ]
                            }
                        }
                    }
                }
            },
            "additionalProperties": false
        },
        "StartProcess": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "description": {
                    "type": "string"
                },
                "testAssertions": {
                    "type": "object",
                    "properties": {
                        "assertScript": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertScript"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertXpath": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertXpath"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertSoapFault": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertSoapFault"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertExit": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertExit"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertTrace": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertTrace"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertNotDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertNotDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        }
                    }
                },
                "variables": {
                    "type": "object",
                    "properties": {
                        "variable": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Variable"
                            }
                        }
                    }
                },
                "processName": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "AssertScript": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "groovyScript": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "TestAssertion": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                }
            },
            "additionalProperties": false
        },
        "AssertXpath": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "xpathExpression": {
                    "type": "string"
                },
                "expectedOutput": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "AssertDeployed": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                }
            },
            "additionalProperties": false
        },
        "AssertSoapFault": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "faultString": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "AssertExit": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                }
            },
            "additionalProperties": false
        },
        "AssertTrace": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "trace": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "AssertNotDeployed": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                }
            },
            "additionalProperties": false
        },
        "Variable": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "TestStep": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "description": {
                    "type": "string"
                },
                "testAssertions": {
                    "type": "object",
                    "properties": {
                        "assertScript": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertScript"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertXpath": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertXpath"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertSoapFault": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertSoapFault"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertExit": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertExit"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertTrace": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertTrace"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertNotDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertNotDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        }
                    }
                }
            },
            "additionalProperties": false
        },
        "DelayTesting": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "description": {
                    "type": "string"
                },
                "testAssertions": {
                    "type": "object",
                    "properties": {
                        "assertScript": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertScript"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertXpath": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertXpath"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertSoapFault": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertSoapFault"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertExit": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertExit"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertTrace": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertTrace"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertNotDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertNotDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        }
                    }
                },
                "milliseconds": {
                    "type": "integer"
                }
            },
            "additionalProperties": false
        },
        "ExecuteScript": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "description": {
                    "type": "string"
                },
                "testAssertions": {
                    "type": "object",
                    "properties": {
                        "assertScript": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertScript"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertXpath": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertXpath"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertSoapFault": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertSoapFault"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertExit": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertExit"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertTrace": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertTrace"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertNotDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertNotDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        }
                    }
                },
                "name": {
                    "type": "string"
                },
                "parameters": {
                    "$ref": "#/definitions/AdaptedMap"
                }
            },
            "additionalProperties": false
        },
        "SendSoapMessage": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "description": {
                    "type": "string"
                },
                "testAssertions": {
                    "type": "object",
                    "properties": {
                        "assertScript": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertScript"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertXpath": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertXpath"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertSoapFault": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertSoapFault"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertExit": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertExit"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertTrace": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertTrace"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertNotDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertNotDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        }
                    }
                },
                "operation": {
                    "$ref": "#/definitions/WsdlOperation"
                },
                "service": {
                    "$ref": "#/definitions/WsdlService"
                },
                "soapMessage": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "WsdlOperation": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "isOneWay": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false
        },
        "WsdlService": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "CheckDeployment": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "description": {
                    "type": "string"
                },
                "testAssertions": {
                    "type": "object",
                    "properties": {
                        "assertScript": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertScript"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertXpath": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertXpath"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertSoapFault": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertSoapFault"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertExit": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertExit"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertTrace": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertTrace"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertNotDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertNotDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        }
                    }
                }
            },
            "additionalProperties": false
        },
        "GatherTraces": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "description": {
                    "type": "string"
                },
                "testAssertions": {
                    "type": "object",
                    "properties": {
                        "assertScript": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertScript"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertXpath": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertXpath"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertSoapFault": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertSoapFault"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertExit": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertExit"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertTrace": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertTrace"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        },
                        "assertNotDeployed": {
                            "type": "array",
                            "items": {
                                "anyOf": [
                                    {
                                        "$ref": "#/definitions/AssertNotDeployed"
                                    },
                                    {
                                        "$ref": "#/definitions/TestAssertion"
                                    }
                                ]
                            }
                        }
                    }
                }
            },
            "additionalProperties": false
        },
        "RuleBasedWSDLTestPartner": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "url": {
                    "type": "string"
                },
                "wsdl": {
                    "type": "object"
                },
                "WSDLUrl": {
                    "type": "string"
                },
                "publishedURL": {
                    "type": "string"
                },
                "rules": {
                    "type": "object",
                    "properties": {
                        "rule": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/OperationInputOutputRule"
                            }
                        }
                    }
                }
            },
            "additionalProperties": false
        },
        "OperationInputOutputRule": {
            "type": "object",
            "properties": {
                "operation": {
                    "type": "string"
                },
                "scriptPredicate": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/ScriptPredicate"
                        },
                        {
                            "$ref": "#/definitions/AnyInput"
                        }
                    ]
                },
                "anyInput": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/AnyInput"
                        },
                        {
                            "$ref": "#/definitions/XpathPredicate"
                        },
                        {
                            "$ref": "#/definitions/ScriptPredicate"
                        }
                    ]
                },
                "xpathPredicate": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/XpathPredicate"
                        },
                        {
                            "$ref": "#/definitions/AnyInput"
                        }
                    ]
                },
                "soapFaultOutput": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/SoapFaultOutput"
                        },
                        {
                            "$ref": "#/definitions/SoapMessageOutput"
                        },
                        {
                            "$ref": "#/definitions/HttpOutput"
                        },
                        {
                            "$ref": "#/definitions/NoOutput"
                        }
                    ]
                },
                "soapMessageOutput": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/SoapMessageOutput"
                        },
                        {
                            "$ref": "#/definitions/SoapFaultOutput"
                        },
                        {
                            "$ref": "#/definitions/HttpOutput"
                        },
                        {
                            "$ref": "#/definitions/NoOutput"
                        }
                    ]
                },
                "scriptBasedOutput": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/ScriptBasedOutput"
                        },
                        {
                            "$ref": "#/definitions/NoOutput"
                        }
                    ]
                },
                "noOutput": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/NoOutput"
                        },
                        {
                            "$ref": "#/definitions/HttpOutput"
                        },
                        {
                            "$ref": "#/definitions/SoapMessageOutput"
                        },
                        {
                            "$ref": "#/definitions/SoapFaultOutput"
                        },
                        {
                            "$ref": "#/definitions/ScriptBasedOutput"
                        }
                    ]
                },
                "httpOutput": {
                    "anyOf": [
                        {
                            "$ref": "#/definitions/HttpOutput"
                        },
                        {
                            "$ref": "#/definitions/SoapMessageOutput"
                        },
                        {
                            "$ref": "#/definitions/SoapFaultOutput"
                        },
                        {
                            "$ref": "#/definitions/NoOutput"
                        }
                    ]
                }
            },
            "additionalProperties": false
        },
        "ScriptPredicate": {
            "type": "string",
            "additionalProperties": false
        },
        "AnyInput": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "XpathPredicate": {
            "type": "string",
            "additionalProperties": false
        },
        "SoapFaultOutput": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "statusCode": {
                    "type": "integer"
                },
                "mimetype": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "SoapMessageOutput": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "statusCode": {
                    "type": "integer"
                },
                "mimetype": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "HttpOutput": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "statusCode": {
                    "type": "integer"
                },
                "mimetype": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "NoOutput": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "ScriptBasedOutput": {
            "type": "string",
            "additionalProperties": false
        },
        "WSDLTestPartner": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "url": {
                    "type": "string"
                },
                "wsdl": {
                    "type": "object"
                },
                "WSDLUrl": {
                    "type": "string"
                },
                "publishedURL": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "TestPartner": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                }
            },
            "additionalProperties": false
        },
        "ScriptBasedWSDLTestPartner": {
            "type": "object",
            "properties": {
                "type": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "url": {
                    "type": "string"
                },
                "wsdl": {
                    "type": "object"
                },
                "WSDLUrl": {
                    "type": "string"
                },
                "publishedURL": {
                    "type": "string"
                },
                "groovyScript": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "MetricType": {
            "type": "object",
            "properties": {
                "dataType": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "unit": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "Result": {
            "type": "object",
            "properties": {
                "engines": {
                    "type": "object",
                    "properties": {
                        "engine": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Engine"
                            }
                        }
                    }
                },
                "testResults": {
                    "type": "object",
                    "properties": {
                        "testResult": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/TestResult"
                            }
                        }
                    }
                },
                "aggregatedResults": {
                    "type": "object",
                    "properties": {
                        "aggregatedResult": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/AggregatedResult"
                            }
                        }
                    }
                }
            },
            "additionalProperties": false
        },
        "Engine": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "version": {
                    "type": "string"
                },
                "configuration": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "language": {
                    "type": "string"
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "id": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "TestResult": {
            "type": "object",
            "properties": {
                "test": {
                    "type": "string"
                },
                "engine": {
                    "type": "string"
                },
                "tool": {
                    "type": "string"
                },
                "logs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "deploymentPackage": {
                    "type": "object"
                },
                "files": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "measurements": {
                    "type": "object",
                    "properties": {
                        "measurement": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Measurement"
                            }
                        }
                    }
                },
                "extensions": {
                    "$ref": "#/definitions/AdaptedMap"
                },
                "testCaseResults": {
                    "type": "object",
                    "properties": {
                        "testCaseResult": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/TestCaseResult"
                            }
                        }
                    }
                }
            },
            "additionalProperties": false
        },
        "Measurement": {
            "type": "object",
            "properties": {
                "metric": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "TestCaseResult": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "number": {
                    "type": "integer"
                },
                "value": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "AggregatedResult": {
            "type": "object",
            "properties": {
                "measurements": {
                    "type": "object",
                    "properties": {
                        "measurement": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Measurement"
                            }
                        }
                    }
                },
                "engine": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        }
    }
}