{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://www.genorbex.com/docs/orbex-pipelines/schema","title":"Genorbex Orbex Pipeline Manifest","description":"Schema for repository-root orbex.pipeline.yml DAG definitions.","type":"object","required":["version","tasks"],"additionalProperties":true,"properties":{"version":{"const":1},"defaults":{"type":"object","additionalProperties":true,"properties":{"maxRetries":{"type":"integer","minimum":0,"maximum":10},"retryDelaySeconds":{"type":"integer","minimum":0},"timeoutSeconds":{"type":"integer","minimum":10,"maximum":3600},"maxOutputRows":{"type":"integer","minimum":1,"maximum":100000},"computeProfile":{"type":"string"},"databaseId":{"type":"string"},"databaseName":{"type":"string"}}},"tasks":{"type":"array","minItems":1,"items":{"type":"object","required":["id"],"additionalProperties":true,"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]+$"},"name":{"type":"string"},"type":{"enum":["PYTHON","PYSPARK","JUPYTER","SQL"]},"path":{"type":"string"},"notebookPath":{"type":"string"},"code":{"type":"string"},"dependsOn":{"type":"array","items":{"type":"string"},"uniqueItems":true},"parameters":{"type":"object"},"maxRetries":{"type":"integer","minimum":0,"maximum":10},"retryDelaySeconds":{"type":"integer","minimum":0},"timeoutSeconds":{"type":"integer","minimum":10,"maximum":3600},"maxOutputRows":{"type":"integer","minimum":1,"maximum":100000},"computeProfile":{"type":"string"},"sparkConfig":{"type":"object","additionalProperties":{"type":["string","number","boolean"]}},"databaseId":{"type":"string"},"databaseName":{"type":"string"},"input":{"$ref":"#/$defs/cloudLocation"},"output":{"$ref":"#/$defs/output"}},"anyOf":[{"required":["path"]},{"required":["notebookPath"]},{"required":["code"]}]}}},"$defs":{"cloudLocation":{"type":"object","required":["type"],"additionalProperties":true,"properties":{"type":{"enum":["AWS_S3","GCS","AZURE_BLOB"]},"connectorInstanceId":{"type":"string"},"credentialsSource":{"enum":["connector","secret_handler"]},"credentialSecretId":{"type":"string"},"bucketName":{"type":"string"},"containerName":{"type":"string"},"path":{"type":"string"},"format":{"enum":["auto","csv","json","xlsx","xls"]},"mode":{"enum":["REPLACE","APPEND"]},"filePattern":{"type":"string"}}},"output":{"type":"object","required":["type"],"additionalProperties":true,"properties":{"type":{"enum":["TABLE","BUCKET","AWS_S3","GCS","AZURE_BLOB"]},"databaseId":{"type":"string"},"databaseName":{"type":"string"},"schemaName":{"type":"string"},"tableName":{"type":"string"},"bucketName":{"type":"string"},"containerName":{"type":"string"},"path":{"type":"string"},"fileName":{"type":"string"},"connectorInstanceId":{"type":"string"},"credentialSecretId":{"type":"string"},"format":{"enum":["json","csv"]},"mode":{"enum":["APPEND","OVERWRITE","TRUNCATE","UPDATE","MERGE","UPSERT"]},"keyColumns":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"updateKeyColumn":{"type":"string"},"partitionColumns":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}}}}