import {z} from 'zod' export type RunStatusEnum = 'Created' | 'Scheduled' | 'Running' | 'Post-Processing' | 'Failed' | 'Cancelled' | 'Succeeded' | 'Unknown'; export type GetApiProjectsOwnerNameResultsArgs = {owner: string, name: string, job_id?: Array | undefined, status?: RunStatusEnum | undefined, page?: number | undefined, 'per-page'?: number | undefined}; export type GetApiProjectsOwnerNameResultsOptions = {baseUrl: string, JWTAuth?: string | undefined, fetch?: typeof fetch | undefined}; export const iOAliasHandler = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), language: z.string(), module: z.string(), function: z.string(), index: z.number().int().optional()}); export const dAGGenericInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.string().optional(), required: z.boolean().optional(), spec: z.object({}).optional()}); export const dAGStringInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.string().optional(), required: z.boolean().optional(), spec: z.object({}).optional()}); export const dAGIntegerInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.number().int().optional(), required: z.boolean().optional(), spec: z.object({}).optional()}); export const dAGNumberInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.number().optional(), required: z.boolean().optional(), spec: z.object({}).optional()}); export const dAGBooleanInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.boolean().optional(), required: z.boolean().optional(), spec: z.object({}).optional()}); export const hTTP = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), url: z.string()}); export const s3 = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), key: z.string(), endpoint: z.string(), bucket: z.string(), credentials_path: z.string().optional()}); export const projectFolder = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), path: z.string().optional()}); export const dAGFolderInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.union([hTTP, s3, projectFolder]).optional(), required: z.boolean().optional(), spec: z.object({}).optional()}); export const dAGFileInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.union([hTTP, s3, projectFolder]).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), extensions: z.array(z.string()).optional()}); export const dAGPathInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.union([hTTP, s3, projectFolder]).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), extensions: z.array(z.string()).optional()}); export const itemType = z.enum(["Generic", "String", "Integer", "Number", "Boolean", "Array", "JSONObject"]); export const dAGArrayInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.array(z.unknown()).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), items_type: itemType.optional()}); export const dAGJSONObjectInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.object({}).optional(), required: z.boolean().optional(), spec: z.object({}).optional()}); export const dAGLinkedInputAlias = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), platform: z.array(z.string()), handler: z.array(iOAliasHandler), default: z.string().optional(), required: z.boolean().optional(), spec: z.object({}).optional()}); export const stepStringInput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), default: z.string().optional(), alias: z.array(z.union([dAGGenericInputAlias, dAGStringInputAlias, dAGIntegerInputAlias, dAGNumberInputAlias, dAGBooleanInputAlias, dAGFolderInputAlias, dAGFileInputAlias, dAGPathInputAlias, dAGArrayInputAlias, dAGJSONObjectInputAlias, dAGLinkedInputAlias])).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), value: z.string()}); export const stepIntegerInput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), default: z.number().int().optional(), alias: z.array(z.union([dAGGenericInputAlias, dAGStringInputAlias, dAGIntegerInputAlias, dAGNumberInputAlias, dAGBooleanInputAlias, dAGFolderInputAlias, dAGFileInputAlias, dAGPathInputAlias, dAGArrayInputAlias, dAGJSONObjectInputAlias, dAGLinkedInputAlias])).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), value: z.number().int()}); export const stepNumberInput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), default: z.number().optional(), alias: z.array(z.union([dAGGenericInputAlias, dAGStringInputAlias, dAGIntegerInputAlias, dAGNumberInputAlias, dAGBooleanInputAlias, dAGFolderInputAlias, dAGFileInputAlias, dAGPathInputAlias, dAGArrayInputAlias, dAGJSONObjectInputAlias, dAGLinkedInputAlias])).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), value: z.number()}); export const stepBooleanInput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), default: z.boolean().optional(), alias: z.array(z.union([dAGGenericInputAlias, dAGStringInputAlias, dAGIntegerInputAlias, dAGNumberInputAlias, dAGBooleanInputAlias, dAGFolderInputAlias, dAGFileInputAlias, dAGPathInputAlias, dAGArrayInputAlias, dAGJSONObjectInputAlias, dAGLinkedInputAlias])).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), value: z.boolean()}); export const stepFolderInput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), default: z.union([hTTP, s3, projectFolder]).optional(), alias: z.array(z.union([dAGGenericInputAlias, dAGStringInputAlias, dAGIntegerInputAlias, dAGNumberInputAlias, dAGBooleanInputAlias, dAGFolderInputAlias, dAGFileInputAlias, dAGPathInputAlias, dAGArrayInputAlias, dAGJSONObjectInputAlias, dAGLinkedInputAlias])).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), path: z.string().optional(), source: z.union([hTTP, s3, projectFolder])}); export const stepFileInput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), default: z.union([hTTP, s3, projectFolder]).optional(), alias: z.array(z.union([dAGGenericInputAlias, dAGStringInputAlias, dAGIntegerInputAlias, dAGNumberInputAlias, dAGBooleanInputAlias, dAGFolderInputAlias, dAGFileInputAlias, dAGPathInputAlias, dAGArrayInputAlias, dAGJSONObjectInputAlias, dAGLinkedInputAlias])).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), path: z.string().optional(), extensions: z.array(z.string()).optional(), source: z.union([hTTP, s3, projectFolder])}); export const stepPathInput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), default: z.union([hTTP, s3, projectFolder]).optional(), alias: z.array(z.union([dAGGenericInputAlias, dAGStringInputAlias, dAGIntegerInputAlias, dAGNumberInputAlias, dAGBooleanInputAlias, dAGFolderInputAlias, dAGFileInputAlias, dAGPathInputAlias, dAGArrayInputAlias, dAGJSONObjectInputAlias, dAGLinkedInputAlias])).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), path: z.string().optional(), extensions: z.array(z.string()).optional(), source: z.union([hTTP, s3, projectFolder])}); export const stepArrayInput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), default: z.array(z.unknown()).optional(), alias: z.array(z.union([dAGGenericInputAlias, dAGStringInputAlias, dAGIntegerInputAlias, dAGNumberInputAlias, dAGBooleanInputAlias, dAGFolderInputAlias, dAGFileInputAlias, dAGPathInputAlias, dAGArrayInputAlias, dAGJSONObjectInputAlias, dAGLinkedInputAlias])).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), items_type: itemType.optional(), value: z.array(z.unknown())}); export const stepJSONObjectInput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), default: z.object({}).optional(), alias: z.array(z.union([dAGGenericInputAlias, dAGStringInputAlias, dAGIntegerInputAlias, dAGNumberInputAlias, dAGBooleanInputAlias, dAGFolderInputAlias, dAGFileInputAlias, dAGPathInputAlias, dAGArrayInputAlias, dAGJSONObjectInputAlias, dAGLinkedInputAlias])).optional(), required: z.boolean().optional(), spec: z.object({}).optional(), value: z.object({})}); export const stepStringOutput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), path: z.string(), required: z.boolean().optional(), value: z.string()}); export const stepIntegerOutput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), path: z.string(), required: z.boolean().optional(), value: z.number().int()}); export const stepNumberOutput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), path: z.string(), required: z.boolean().optional(), value: z.number()}); export const stepBooleanOutput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), path: z.string(), required: z.boolean().optional(), value: z.boolean()}); export const stepFolderOutput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), path: z.string(), required: z.boolean().optional(), source: z.union([hTTP, s3, projectFolder])}); export const stepFileOutput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), path: z.string(), required: z.boolean().optional(), source: z.union([hTTP, s3, projectFolder])}); export const stepPathOutput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), path: z.string(), required: z.boolean().optional(), source: z.union([hTTP, s3, projectFolder])}); export const stepArrayOutput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), path: z.string(), required: z.boolean().optional(), items_type: itemType.optional(), value: z.array(z.unknown())}); export const stepJSONObjectOutput = z.object({type: z.string().optional(), annotations: z.record(z.string(), z.string()).optional(), name: z.string(), description: z.string().optional(), path: z.string(), required: z.boolean().optional(), value: z.object({})}); export const runResultList = z.object({page: z.number().int(), per_page: z.number().int(), next_page: z.number().int().optional(), page_count: z.number().int(), total_count: z.number().int(), resources: z.array(z.array(z.union([stepStringInput, stepIntegerInput, stepNumberInput, stepBooleanInput, stepFolderInput, stepFileInput, stepPathInput, stepArrayInput, stepJSONObjectInput, stepStringOutput, stepIntegerOutput, stepNumberOutput, stepBooleanOutput, stepFolderOutput, stepFileOutput, stepPathOutput, stepArrayOutput, stepJSONObjectOutput])))}); 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 }; /** * Query run results * * GET /projects/{owner}/{name}/results * * Also accepts auth: APIKeyAuth */ export const getApiProjectsOwnerNameResults = async (args: GetApiProjectsOwnerNameResultsArgs, options: GetApiProjectsOwnerNameResultsOptions) => { const {baseUrl, fetch: fetchFn = fetch, JWTAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") for (const item of args.job_id ?? []) query.append("job_id", String(item)) if (args.status != null) query.append("status", String(args.status)) if (args.page != null) query.append("page", String(args.page)) if (args['per-page'] != null) query.append("per-page", String(args['per-page'])) if (JWTAuth !== undefined) headers.set('authorization', `Bearer ${JWTAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/projects/${encodeURIComponent(String(args.owner))}/${encodeURIComponent(String(args.name))}/results${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(runResultList, await res.json()) };