databuild/databuild.schema.json

102 lines
No EOL
2.8 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://databuild.example.com/schemas/v1",
"title": "DataBuild Core Schemas",
"description": "Schema definitions for DataBuild core components",
"definitions": {
"DepType": {
"type": "string",
"enum": ["query", "materialize"],
"description": "The type of dependency"
},
"DataDep": {
"type": "object",
"required": ["depType", "ref"],
"properties": {
"depType": {
"$ref": "#/definitions/DepType"
},
"ref": {
"type": "string"
}
}
},
"JobConfig": {
"type": "object",
"required": ["outputs", "inputs","args","env"],
"properties": {
"outputs": {
"type": "array",
"items": { "type": "string" },
"description": "The partitions that this parameterization produces"
},
"inputs": {
"type": "array",
"items": { "$ref": "#/definitions/DataDep" },
"description": "Required data dependencies"
},
"args": {
"type": "array",
"items": { "type": "string" },
"description": "Command line arguments"
},
"env": {
"type": "object",
"additionalProperties": { "type": "string" },
"description": "Environment variables"
}
}
},
"PartitionManifest": {
"type": "object",
"required": ["outputs", "inputs", "startTime", "endTime", "config"],
"properties": {
"outputs": {
"type": "array",
"items": { "type": "string" },
"description": "The refs of the partitions produced by this job"
},
"inputs": {
"type": "array",
"items": { "$ref": "#/definitions/PartitionManifest" },
"description": "Input partition manifests"
},
"startTime": {
"type": "integer",
"format": "int64",
"description": "Start time of job execution (Unix timestamp)"
},
"endTime": {
"type": "integer",
"format": "int64",
"description": "End time of job execution (Unix timestamp)"
},
"config": {
"$ref": "#/definitions/JobConfig",
"description": "The configuration used to run the job"
}
}
},
"JobGraph": {
"type": "object",
"required": ["outputs", "nodes"],
"properties": {
"outputs": {
"type": "array",
"items": { "type": "string" },
"description": "The output partitions to be produced by this graph"
},
"nodes": {
"type": "array",
"items": { "$ref": "#/definitions/JobConfig" },
"description": "The job configurations that make up this graph"
}
}
}
}
}