import {z} from 'zod' export type GetApiPipelineRunsPipelineRunIdTaskRunsArgs = {pipeline_run_id: unknown, page_size?: number | undefined, page?: number | undefined, include_superseded?: boolean | undefined, 'X-Orchestra-Account-Id'?: (unknown | null) | undefined}; export type GetApiPipelineRunsPipelineRunIdTaskRunsOptions = {baseUrl?: string | undefined, ApiKey?: string | undefined, fetch?: typeof fetch | undefined}; export const integrationsEnum = z.enum(["AIRBYTE_CLOUD", "AIRBYTE_SERVER", "AIRFLOW", "ARCH", "ALTERYX_SERVER", "ANTHROPIC", "AWS_EC2", "AWS_ECS", "AWS_EMR", "AWS_EKS", "AWS_FIREHOSE", "AWS_GLUE", "AWS_LAMBDA", "AWS_RDS", "AWS_REDSHIFT", "AWS_S3", "AWS_BATCH", "AWS_BEDROCK", "AWS_SAGEMAKER", "AWS_SECRETS_MANAGER", "AWS_SES", "AWS_STEP_FUNCTIONS", "AZURE", "AZURE_CONTAINER_APPS", "AZURE_DATA_FACTORY", "AZURE_DATA_LAKE_STORAGE", "AZURE_KEY_VAULT", "AZURE_KUBERNETES_SERVICE", "AZURE_LOGIC_APPS", "AZURE_SYNAPSE_ANALYTICS", "AZURE_VM", "BAUPLAN", "BOOMI", "CDATA", "CENSUS", "CLICKHOUSE", "COALESCE", "COUNT", "DATADOG", "DATABRICKS", "DATAPROC", "DATAZEN", "DBT", "DBT_CORE", "DLT", "DOMO", "DREMIO", "DUCKDB", "EMAIL", "ESTUARY", "ETLEAP", "FABRIC", "FABRIC_SYNAPSE", "FIVETRAN", "FORTRA", "GCP_BIG_QUERY", "GCP_CLOUD_RUN", "GCP_CLOUD_FUNCTIONS", "GCP_CLOUD_STORAGE", "GCP_DATAFLOW", "GCP_DATAFORM", "GCP_DATASTREAM", "GCP_LOOKER", "GKE", "GITHUB_ACTIONS", "GITLAB", "GOOGLE_CLOUD", "HEVO", "HEX", "HIGHTOUCH", "HTTP", "HUBSPOT", "INFORMATICA_IICS", "INFORMATICA_POWERCENTER", "KAFKA", "KEBOOLA", "KLEENE", "LIGHTDASH", "LINUX_SSH", "MARIADB", "MATILLION", "MATILLION_ETL", "METAPLANE", "MICROSOFT_TEAMS", "MICROSTRATEGY", "MONGODB", "MOTHERDUCK", "MYSQL", "N8N", "NIMBLE", "NOTION", "OMNI", "OPEN_AI", "ORCHESTRA", "PARADIME", "PAGER_DUTY", "PINECONE", "PORTABLE", "POSTGRES", "POWER_AUTOMATE", "POWER_BI", "PREFECT_CLOUD", "PYTHON", "QLIK", "QLIK_REPLICATE", "QUICKBOOKS", "RENDER", "RIVERY", "RUDDERSTACK", "SALESFORCE", "SAP", "SFTP", "SHAREPOINT", "SIGMA", "SISENSE", "SLACK", "SNOWFLAKE", "SNOWPLOW", "SODA", "SQL_MESH", "SQL_SERVER", "STITCH", "STREAMKAP", "TABLEAU_CLOUD", "TALEND_CLOUD", "THOUGHTSPOT", "TOBIKO_CLOUD", "TYPESAFE", "WEAVIATE", "WEBHOOK", "WELD", "WINDOWS_SSH"]); export const integrationJobsEnum = z.enum(["ACA_RUN_JOB", "ADF_PIPELINE_RUN", "ADLS_SENSOR", "AIRBYTE_CLOUD_JOB", "AIRBYTE_SERVER_JOB", "AIRFLOW_RUN_DAG", "AKS_RUN_JOB", "ALTERYX_SERVER_TRIGGER_WORKFLOW", "ANTHROPIC_CLAUDE_CHAT", "APPROVAL", "ARCH_SYNC_PIPELINE", "AWS_EC2_SSM_RUN_SCRIPT", "AWS_ECS_RUN_TASK", "AWS_EKS_RUN_JOB", "AWS_EMR_RUN_JOB", "AWS_FIREHOSE_CHECK_STREAM", "AWS_GLUE_RUN_JOB", "AWS_LAMBDA_EXECUTE_ASYNC_FUNCTION", "AWS_REDSHIFT_EXECUTE_STATEMENT", "AWS_S3_GET_FILE", "AWS_S3_PUT_FILE", "AWS_BATCH_SUBMIT_JOB", "AWS_BEDROCK_INVOKE_MODEL", "AWS_SAGEMAKER_DEPLOY_MODEL", "AWS_SAGEMAKER_TRAIN_MODEL", "AWS_SES_SEND_EMAIL", "AWS_STEP_FUNCTIONS_START_EXECUTION", "AZURE_LOGIC_APPS_RUN_WORKFLOW", "AZURE_VM_RUN_COMMAND", "BAUPLAN_DATA_QUALITY_TEST", "BAUPLAN_EXECUTE_PIPELINE", "BOOMI_EXECUTE_PROCESS", "CDATA_SYNC_JOB", "CENSUS_SYNC", "CLICKHOUSE_RUN_QUERY", "CLICKHOUSE_RUN_TEST", "COALESCE_RUNJOB", "DATA_RECONCILIATION_MANUAL_QUERY", "DATA_RECONCILIATION_CURSOR_FIELD", "DATABRICKS_EXECUTE_STATEMENT", "DATABRICKS_ONE_TIME_RUN", "DATABRICKS_RUN_TEST", "DATABRICKS_RUN_WORKFLOW", "DATAPROC_RUN_JOB", "DATAZEN_CHECK_JOB", "DATAZEN_RUN_JOB", "DBT_CORE_EXECUTE", "DBT_RUNJOB", "DLT_EXECUTE_JOB", "DREMIO_RUN_QUERY", "DUCKDB_EXECUTE_QUERY", "ESTUARY_CHECK_FLOW", "ETLEAP_REFRESH_PIPELINE", "FABRIC_RUN_DATA_PIPELINE", "FABRIC_RUN_NOTEBOOK", "FABRIC_SYNAPSE_RUN_QUERY", "FABRIC_SYNAPSE_RUN_DQ_TEST", "FIVETRAN_SYNC_ALL", "GCP_BQ_RUN_QUERY_JOB", "GCP_BQ_RUN_SCHEDULED_QUERY_JOB", "GCP_BQ_RUN_TEST", "GCP_CLOUD_RUN_EXECUTE_JOB", "GCP_CLOUD_FUNCTIONS_EXECUTE_ASYNC_FUNCTION", "GCP_CLOUD_STORAGE_GET_FILE", "GCP_CLOUD_STORAGE_PUT_FILE", "GCP_DATAFLOW_RUN_PIPELINE", "GCP_DATAFORM_INVOKE_WORKFLOW", "GCP_DATASTREAM_MONITOR", "GCP_LOOKER_RUN_SCHEDULED_PLAN", "GITHUB_RUN_WORKFLOW", "GITLAB_RUN_PIPELINE", "GKE_RUN_JOB", "HEVO_CHECK_DESTINATION_STATUS", "HEX_RUN_PROJECT", "HIGHTOUCH_SYNC", "HTTP_REQUEST", "HTTP_REQUEST_ASYNC", "HUBSPOT_IMPORT_RECORDS", "KAFKA_CHECK_TOPIC", "KEBOOLA_RUN_FLOW", "LIGHTDASH_CLEAR_RESULTS_CACHE", "LIGHTDASH_REFRESH_DASHBOARD", "LIGHTDASH_REFRESH_PRE_AGGREGATE", "LINUX_SSH_EXECUTE_COMMAND", "MARIADB_RUN_QUERY", "MATILLION_ETL_RUN_JOB", "MATILLION_EXECUTE_PIPELINE", "METAPLANE_RUN_MONITOR", "MONGODB_RUN_COMMAND", "MONGODB_RUN_TEST", "MOTHERDUCK_EXECUTE_QUERY", "MYSQL_RUN_QUERY", "N8N_RUN_WORKFLOW", "NIMBLE_SERP_API", "NIMBLE_WEB_API", "NOTION_APPEND_BLOCKS", "NOTION_CREATE_DATABASE_PAGE", "NOTION_CREATE_PAGE", "NOTION_UPDATE_DATABASE_PAGE", "OMNI_TRIGGER_SCHEDULE", "OPEN_AI_CHAT", "PORTABLE_RUN_FLOW", "POSTGRES_RUN_QUERY", "POSTGRES_RUN_TEST", "POWER_AUTOMATE_RUN_FLOW", "POWER_BI_REFRESH_DATAFLOW", "POWER_BI_REFRESH_DATASET", "PREFECT_CLOUD_RUN_FLOW", "PYTHON_EXECUTE_SCRIPT", "QLIK_REPLICATE_TASK_FULL_LOAD", "QUICKBOOKS_CREATE_ENTITY", "RENDER_RUN_JOB", "RIVERY_RUN_RIVER", "RUDDERSTACK_RETL_SYNC", "RUN_AGENT", "SALESFORCE_RUN_ANALYTICS_DATAFLOW", "SEND_SLACK_MESSAGE", "SEND_MICROSOFT_TEAMS_MESSAGE", "SFTP_GET_FILE", "SFTP_PUT_FILE", "SHAREPOINT_GET_FILE", "SHAREPOINT_PUT_FILE", "SIGMA_DATAMODEL_MATERIALIZATION", "SIGMA_DATASET_MATERIALIZATION", "SIGMA_WORKBOOK_MATERIALIZATION", "SNOWFLAKE_ANOMALY_DETECTION", "SNOWFLAKE_RUN_QUERY", "SNOWFLAKE_RUN_TEST", "SNOWFLAKE_SCHEMA_VALIDATION", "SQL_MESH_EXECUTE_JOB", "SQL_SERVER_RUN_QUERY", "STITCH_SYNC", "SYNAPSE_NOTEBOOK_RUN", "SYNAPSE_PIPELINE_RUN", "TABLEAU_REFRESH_EXTRACT", "TABLEAU_REFRESH_WORKBOOK", "TABLEAU_UPDATE_SUBSCRIPTION", "TALEND_CLOUD_EXECUTE_TASK", "THOUGHTSPOT_FETCH_LIVEBOARD_DATA", "TOBIKO_CLOUD_EXECUTE", "TRIGGER_PIPELINE", "TYPESAFE_JEV_EVALUATE", "WAIT", "WINDOWS_SSH_COMMAND"]); export const taskRunStatus = z.enum(["CREATED", "SKIPPED", "PAUSED", "QUEUED", "RUNNING", "SUCCEEDED", "WARNING", "FAILED", "CANCELLING", "CANCELLED"]); export const anomalyType = z.enum(["pipeline_duration_above_baseline", "pipeline_duration_below_baseline", "task_duration_above_baseline", "task_duration_below_baseline", "operation_duration_above_baseline", "operation_duration_below_baseline"]); export const pipelineDurationAboveBaselineResponseData = z.object({medianSeconds: z.number().int(), thresholdSeconds: z.number().int(), comparedRuns: z.number().int(), observedSeconds: z.number().int(), percentageAboveBaseline: z.number().int(), type: z.literal("pipeline_duration_above_baseline").optional()}); export const pipelineDurationBelowBaselineResponseData = z.object({medianSeconds: z.number().int(), thresholdSeconds: z.number().int(), comparedRuns: z.number().int(), observedSeconds: z.number().int(), percentageBelowBaseline: z.number().int(), type: z.literal("pipeline_duration_below_baseline").optional()}); export const taskDurationAboveBaselineResponseData = z.object({medianSeconds: z.number().int(), thresholdSeconds: z.number().int(), comparedRuns: z.number().int(), observedSeconds: z.number().int(), percentageAboveBaseline: z.number().int(), type: z.literal("task_duration_above_baseline").optional()}); export const taskDurationBelowBaselineResponseData = z.object({medianSeconds: z.number().int(), thresholdSeconds: z.number().int(), comparedRuns: z.number().int(), observedSeconds: z.number().int(), percentageBelowBaseline: z.number().int(), type: z.literal("task_duration_below_baseline").optional()}); export const operationDurationAboveBaselineResponseData = z.object({medianSeconds: z.number().int(), thresholdSeconds: z.number().int(), comparedRuns: z.number().int(), observedSeconds: z.number().int(), percentageAboveBaseline: z.number().int(), type: z.literal("operation_duration_above_baseline").optional()}); export const operationDurationBelowBaselineResponseData = z.object({medianSeconds: z.number().int(), thresholdSeconds: z.number().int(), comparedRuns: z.number().int(), observedSeconds: z.number().int(), percentageBelowBaseline: z.number().int(), type: z.literal("operation_duration_below_baseline").optional()}); export const anomalyResponse = z.object({type: anomalyType, data: z.discriminatedUnion("type", [pipelineDurationAboveBaselineResponseData, pipelineDurationBelowBaselineResponseData, taskDurationAboveBaselineResponseData, taskDurationBelowBaselineResponseData, operationDurationAboveBaselineResponseData, operationDurationBelowBaselineResponseData])}); export const taskRunResponse = z.object({id: z.string(), pipelineRunId: z.string(), taskName: z.string(), taskId: z.string(), accountId: z.string(), pipelineId: z.string(), integration: integrationsEnum, integrationJob: integrationJobsEnum, status: taskRunStatus, message: z.string().nullable().optional(), externalStatus: z.string().nullable().optional(), externalMessage: z.string().nullable().optional(), taskParameters: z.record(z.string(), z.unknown()).nullable().optional(), runParameters: z.record(z.string(), z.unknown()).nullable().optional(), connectionId: z.string().nullable().optional(), computeResourceId: z.string().nullable().optional(), platformLink: z.string().nullable().optional(), attemptNumber: z.number().int().optional(), superseded: z.boolean().optional(), matrixParent: z.boolean().optional(), matrixParentId: z.string().nullable().optional(), createdAt: z.string(), updatedAt: z.string(), completedAt: z.string().nullable().optional(), startedAt: z.string().nullable().optional(), dependsOn: z.array(z.string()).nullable().optional(), hasOperationAnomalies: z.boolean().nullable().optional(), anomalies: z.record(z.string(), anomalyResponse).nullable().optional()}); export const paginatedResponseTaskRunResponse = z.object({page: z.number().int(), pageSize: z.number().int(), total: z.number().int(), results: z.array(taskRunResponse)}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * List task runs for a pipeline run * * GET /pipeline_runs/{pipeline_run_id}/task_runs * * Also accepts auth: OAuth */ export const getApiPipelineRunsPipelineRunIdTaskRuns = async (args: GetApiPipelineRunsPipelineRunIdTaskRunsArgs, options?: GetApiPipelineRunsPipelineRunIdTaskRunsOptions) => { const {baseUrl = "https://app.getorchestra.io/api/engine/public", fetch: fetchFn = fetch, ApiKey} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.page_size != null) query.append("page_size", String(args.page_size)) if (args.page != null) query.append("page", String(args.page)) if (args.include_superseded != null) query.append("include_superseded", String(args.include_superseded)) if (args['X-Orchestra-Account-Id'] != null) headers.set("X-Orchestra-Account-Id", String(args['X-Orchestra-Account-Id'])) if (ApiKey !== undefined) headers.set('authorization', `Bearer ${ApiKey}`) const url = `${baseUrl.replace(/\/+$/, '')}/pipeline_runs/${encodeURIComponent(String(args.pipeline_run_id))}/task_runs${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(paginatedResponseTaskRunResponse, await res.json()) };