{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "$ref": "#/definitions/SuiteResult",
    "definitions": {
        "SuiteResult": {
            "required": [
                "projectName",
                "timestamp",
                "successRate",
                "environment",
                "tags",
                "executionTime",
                "executionStatus",
                "specResults",
                "beforeSuiteHookFailure",
                "afterSuiteHookFailure",
                "passedSpecsCount",
                "failedSpecsCount",
                "skippedSpecsCount",
                "basePath"
            ],
            "properties": {
                "afterSuiteHookFailure": {
                    "$ref": "#/definitions/hookFailure"
                },
                "basePath": {
                    "type": "string"
                },
                "beforeSuiteHookFailure": {
                    "$ref": "#/definitions/hookFailure"
                },
                "environment": {
                    "type": "string"
                },
                "executionStatus": {
                    "type": "string"
                },
                "executionTime": {
                    "type": "integer"
                },
                "failedSpecsCount": {
                    "type": "integer"
                },
                "passedSpecsCount": {
                    "type": "integer"
                },
                "projectName": {
                    "type": "string"
                },
                "skippedSpecsCount": {
                    "type": "integer"
                },
                "specResults": {
                    "items": {
                        "$schema": "http://json-schema.org/draft-04/schema#",
                        "$ref": "#/definitions/spec"
                    },
                    "type": "array"
                },
                "successRate": {
                    "type": "number"
                },
                "tags": {
                    "type": "string"
                },
                "timestamp": {
                    "type": "string"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "buildError": {
            "required": [
                "ErrorType",
                "FileName",
                "LineNumber",
                "Message"
            ],
            "properties": {
                "ErrorType": {
                    "type": "string"
                },
                "FileName": {
                    "type": "string"
                },
                "LineNumber": {
                    "type": "integer"
                },
                "Message": {
                    "type": "string"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "comment": {
            "required": [
                "Text"
            ],
            "properties": {
                "Text": {
                    "type": "string"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "concept": {
            "required": [
                "itemType",
                "conceptStep",
                "items",
                "result"
            ],
            "properties": {
                "conceptStep": {
                    "$ref": "#/definitions/step"
                },
                "itemType": {
                    "type": "string"
                },
                "items": {
                    "items": {
                        "$ref": "#/definitions/item"
                    },
                    "type": "array"
                },
                "result": {
                    "$ref": "#/definitions/result"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "fragment": {
            "required": [
                "FragmentKind",
                "Text",
                "Name",
                "Table",
                "FileName"
            ],
            "properties": {
                "FileName": {
                    "type": "string"
                },
                "FragmentKind": {
                    "type": "integer"
                },
                "Name": {
                    "type": "string"
                },
                "Table": {
                    "$schema": "http://json-schema.org/draft-04/schema#",
                    "$ref": "#/definitions/table"
                },
                "Text": {
                    "type": "string"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "hookFailure": {
            "required": [
                "hookName",
                "errorMessage",
                "screenshot",
                "stackTrace",
                "tableRowIndex"
            ],
            "properties": {
                "errorMessage": {
                    "type": "string"
                },
                "hookName": {
                    "type": "string"
                },
                "screenshot": {
                    "type": "string"
                },
                "stackTrace": {
                    "type": "string"
                },
                "tableRowIndex": {
                    "type": "integer"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "item": {
            "required": [
                "Kind",
                "Step",
                "Concept",
                "Comment"
            ],
            "properties": {
                "Comment": {
                    "$schema": "http://json-schema.org/draft-04/schema#",
                    "$ref": "#/definitions/comment"
                },
                "Concept": {
                    "$schema": "http://json-schema.org/draft-04/schema#",
                    "$ref": "#/definitions/concept"
                },
                "Kind": {
                    "type": "string"
                },
                "Step": {
                    "$schema": "http://json-schema.org/draft-04/schema#",
                    "$ref": "#/definitions/step"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "result": {
            "required": [
                "status",
                "stackTrace",
                "screenshot",
                "errorMessage",
                "executionTime",
                "skippedReason",
                "messages",
                "errorType"
            ],
            "properties": {
                "errorMessage": {
                    "type": "string"
                },
                "errorType": {
                    "type": "string"
                },
                "executionTime": {
                    "type": "string"
                },
                "messages": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "screenshot": {
                    "type": "string"
                },
                "skippedReason": {
                    "type": "string"
                },
                "stackTrace": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "row": {
            "required": [
                "cells",
                "status"
            ],
            "properties": {
                "cells": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "status": {
                    "type": "string"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "scenario": {
            "required": [
                "scenarioHeading",
                "tags",
                "executionTime",
                "executionStatus",
                "contexts",
                "teardowns",
                "items",
                "beforeScenarioHookFailure",
                "afterScenarioHookFailure",
                "skipErrors",
                "tableRowIndex"
            ],
            "properties": {
                "afterScenarioHookFailure": {
                    "$ref": "#/definitions/hookFailure"
                },
                "beforeScenarioHookFailure": {
                    "$ref": "#/definitions/hookFailure"
                },
                "contexts": {
                    "items": {
                        "$schema": "http://json-schema.org/draft-04/schema#",
                        "$ref": "#/definitions/item"
                    },
                    "type": "array"
                },
                "executionStatus": {
                    "type": "string"
                },
                "executionTime": {
                    "type": "string"
                },
                "items": {
                    "items": {
                        "$ref": "#/definitions/item"
                    },
                    "type": "array"
                },
                "scenarioHeading": {
                    "type": "string"
                },
                "skipErrors": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "tableRowIndex": {
                    "type": "integer"
                },
                "tags": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "teardowns": {
                    "items": {
                        "$ref": "#/definitions/item"
                    },
                    "type": "array"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "spec": {
            "required": [
                "commentsBeforeDatatable",
                "comentsAfterDatatable",
                "specHeading",
                "fileName",
                "tags",
                "executionTime",
                "executionStatus",
                "scenarios",
                "isTableDriven",
                "datatable",
                "beforeSpecHookFailures",
                "afterSpecHookFailures",
                "passedScenarioCount",
                "failedScenarioCount",
                "skippedScenarioCount",
                "errors"
            ],
            "properties": {
                "afterSpecHookFailures": {
                    "items": {
                        "$ref": "#/definitions/hookFailure"
                    },
                    "type": "array"
                },
                "beforeSpecHookFailures": {
                    "items": {
                        "$ref": "#/definitions/hookFailure"
                    },
                    "type": "array"
                },
                "comentsAfterDatatable": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "commentsBeforeDatatable": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "datatable": {
                    "$ref": "#/definitions/table"
                },
                "errors": {
                    "items": {
                        "$schema": "http://json-schema.org/draft-04/schema#",
                        "$ref": "#/definitions/buildError"
                    },
                    "type": "array"
                },
                "executionStatus": {
                    "type": "string"
                },
                "executionTime": {
                    "type": "integer"
                },
                "failedScenarioCount": {
                    "type": "integer"
                },
                "fileName": {
                    "type": "string"
                },
                "isTableDriven": {
                    "type": "boolean"
                },
                "passedScenarioCount": {
                    "type": "integer"
                },
                "scenarios": {
                    "items": {
                        "$schema": "http://json-schema.org/draft-04/schema#",
                        "$ref": "#/definitions/scenario"
                    },
                    "type": "array"
                },
                "skippedScenarioCount": {
                    "type": "integer"
                },
                "specHeading": {
                    "type": "string"
                },
                "tags": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "step": {
            "required": [
                "fragments",
                "itemType",
                "stepText",
                "table",
                "beforeStepHookFailure",
                "afterStepHookFailure",
                "result"
            ],
            "properties": {
                "afterStepHookFailure": {
                    "$ref": "#/definitions/hookFailure"
                },
                "beforeStepHookFailure": {
                    "$schema": "http://json-schema.org/draft-04/schema#",
                    "$ref": "#/definitions/hookFailure"
                },
                "fragments": {
                    "items": {
                        "$schema": "http://json-schema.org/draft-04/schema#",
                        "$ref": "#/definitions/fragment"
                    },
                    "type": "array"
                },
                "itemType": {
                    "type": "string"
                },
                "result": {
                    "$schema": "http://json-schema.org/draft-04/schema#",
                    "$ref": "#/definitions/result"
                },
                "stepText": {
                    "type": "string"
                },
                "table": {
                    "$ref": "#/definitions/table"
                }
            },
            "additionalProperties": false,
            "type": "object"
        },
        "table": {
            "required": [
                "headers",
                "rows"
            ],
            "properties": {
                "headers": {
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                },
                "rows": {
                    "items": {
                        "$schema": "http://json-schema.org/draft-04/schema#",
                        "$ref": "#/definitions/row"
                    },
                    "type": "array"
                }
            },
            "additionalProperties": false,
            "type": "object"
        }
    }
}