{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "description": "A schema to describe a target gene web request graph for Targetscope, building a tree of individual operations, inputs and outputs",
    "properties": {
        "client_id": {
            "description": "Unique identifier for client making request",
            "type": "string"
        },
        "dtsubmission": {
            "_format": "date-time",
            "description": "An RFC3339-formatted request graph submission timestamp in UTC time",
            "type": "string"
        },
        "id": {
            "description": "A unique identifier for a target gene request graph instance",
            "type": "string"
        },
        "name": {
            "description": "Name of the operation request graph instance",
            "type": "string"
        },
        "operations": {
            "description": "List of request graph Operation components",
            "items": {
                "properties": {
                    "id": {
                        "description": "A unique identifier for this Operation",
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of this Operation",
                        "type": "string"
                    },
                    "parameters": {
                        "description": "List of Operation parameters",
                        "items": {
                            "properties": {
                                "arguments": {
                                    "description": "Operation parameter arguments",
                                    "items": {
                                        "properties": {
                                            "options": {
                                                "items": {
                                                    "properties": {
                                                        "kind": {
                                                            "description": "Operation option kind",
                                                            "enum": [
                                                                "range_start",
                                                                "range_stop",
                                                                "filter_score",
                                                                "filter_name",
                                                                "filter_strand",
                                                                "filter_chromosome",
                                                                "filter_interaction_component",
                                                                "set_range_left",
                                                                "set_range_right",
                                                                "set_dhs_range_left",
                                                                "set_dhs_range_right",
                                                                "equal_operation",
                                                                "greater_operation",
                                                                "less_operation",
                                                                "greater_equal_operation",
                                                                "less_equal_operation",
                                                                "precision",
                                                                "inverse_operation",
                                                                "set_overlap_bases",
                                                                "set_overlap_fraction_both",
                                                                "set_overlap_fraction_either",
                                                                "set_overlap_fraction_map",
                                                                "set_overlap_fraction_ref",
                                                                "set_overlap_exact",
                                                                "set_overlap_range_start",
                                                                "set_overlap_range_stop",
                                                                "summary_report_type",
                                                                "kth_report_argument",
                                                                "kth_mean_report_lower_bound",
                                                                "kth_mean_report_upper_bound",
                                                                "mad_report_argument"
                                                            ],
                                                            "type": "string"
                                                        },
                                                        "value": {
                                                            "description": "Operation option value",
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "value",
                                                        "kind"
                                                    ],
                                                    "type": "object"
                                                },
                                                "type": "array"
                                            },
                                            "sets": {
                                                "description": "List of Operation input or output sets (either Element or Interaction Set)",
                                                "items": {
                                                    "properties": {
                                                        "id": {
                                                            "description": "A unique identifier for a defined input Element or Interaction Set",
                                                            "type": "string"
                                                        },
                                                        "kind": {
                                                            "description": "Set input/output kind",
                                                            "enum": [
                                                                "input",
                                                                "input_reference",
                                                                "input_map",
                                                                "output"
                                                            ],
                                                            "type": "string"
                                                        }
                                                    },
                                                    "required": [
                                                        "id",
                                                        "kind"
                                                    ],
                                                    "type": "object"
                                                },
                                                "type": "array"
                                            }
                                        },
                                        "type": "object"
                                    },
                                    "type": "array"
                                },
                                "kind": {
                                    "description": "Operation kind",
                                    "enum": [
                                        "element_set_inclusive_filter",
                                        "element_set_range",
                                        "interaction_set_range",
                                        "element_set_filter_score",
                                        "element_set_filter_name",
                                        "element_set_filter_strand",
                                        "element_set_filter_chromosome",
                                        "interaction_set_filter_component",
                                        "element_set_union",
                                        "element_set_merge",
                                        "element_set_element_of",
                                        "element_set_not_element_of",
                                        "element_set_component",
                                        "element_set_difference",
                                        "element_set_complement",
                                        "element_set_symmetric_difference",
                                        "element_set_partition",
                                        "element_set_map_on_element_set",
                                        "element_set_map_on_interaction_set",
                                        "element_set_attributes",
                                        "interaction_set_union",
                                        "summary_report"
                                    ],
                                    "type": "string"
                                }
                            },
                            "required": [
                                "kind",
                                "arguments"
                            ],
                            "type": "object"
                        },
                        "type": "array"
                    },
                    "summary": {
                        "description": "Optional details about this Operation instance",
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "name"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "save_intermediate": {
            "description": "Save intermediate results of the pipeline",
            "type": "boolean"
        },
        "sets": {
            "description": "List of request graph Element and/or Interaction Set components",
            "items": {
                "properties": {
                    "id": {
                        "description": "A unique identifier for this Element or Interaction Set",
                        "type": "string"
                    },
                    "kind": {
                        "description": "Set kind",
                        "enum": [
                            "element",
                            "interaction"
                        ],
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "kind"
                ],
                "type": "object"
            },
            "type": "array"
        },
        "version": {
            "description": "Schema version associated with request",
            "enum": [
                "v1.0.0",
                "v1.1.0",
                "v1.2.0"
            ]
        }
    },
    "required": [
        "id",
        "name",
        "dtsubmission",
        "version"
    ],
    "title": "Targetscope target gene request graph schema",
    "type": "object"
}