Skip to content

SDK API Reference / WorkflowSDK

Class: WorkflowSDK ​

Workflow operations API

Methods ​

applyPullProject() ​

applyPullProject(result, options?): Promise<void>

Apply pull result - extract files and update tdx.json

Parameters ​

result ​

PullWorkflowResult

Result from pullProject()

options? ​

PullWorkflowOptions

Original pull options (for revision)

Returns ​

Promise<void>


attempt() ​

attempt(attemptId): Promise<WorkflowAttempt>

Get a specific attempt

Parameters ​

attemptId ​

string

Attempt ID

Returns ​

Promise<WorkflowAttempt>

Workflow attempt details

Throws ​

When the get operation fails

Example ​

typescript
const attempt = await workflow.attempt('67890');

attempts() ​

attempts(options?): Promise<WorkflowAttempt[]>

List attempts (optionally filtered by project/workflow)

Parameters ​

options? ​

Filter and pagination options

includeRetried? ​

boolean

last_id? ​

string

limit? ​

number

projectName? ​

string

workflowName? ​

string

Returns ​

Promise<WorkflowAttempt[]>

Paginated list of attempts

Throws ​

When the list operation fails

Example ​

typescript
// List all attempts
const result = await workflow.attempts();

// List attempts for a project
const result = await workflow.attempts({ projectName: 'myproject' });

// List attempts for a workflow
const result = await workflow.attempts({
  projectName: 'myproject',
  workflowName: 'daily_etl'
});

delete() ​

delete(projectIdOrName): Promise<{ projectId: string; projectName: string; }>

Delete workflow project

Deletes a workflow project from Treasure AI

Parameters ​

projectIdOrName ​

string

Project ID or name

Returns ​

Promise<{ projectId: string; projectName: string; }>

Deleted project information

Throws ​

When the delete operation fails

Example ​

typescript
// Delete project by name
await workflow.delete('my_project');

// Delete project by ID
await workflow.delete('12345');

deleteSecret() ​

deleteSecret(projectIdOrName, key): Promise<{ key: string; projectName: string; }>

Delete a secret from a project

Parameters ​

projectIdOrName ​

string

Project ID or name

key ​

string

Secret key

Returns ​

Promise<{ key: string; projectName: string; }>

Project name and deleted secret key

Throws ​

When project is not found

Example ​

typescript
// Delete secret by project name
await workflow.deleteSecret('my_project', 'td.apikey');

// Delete secret by project ID
await workflow.deleteSecret('12345', 'db.password');

disableSchedule() ​

disableSchedule(scheduleId): Promise<WorkflowSchedule>

Disable a workflow schedule

Parameters ​

scheduleId ​

string

Schedule ID

Returns ​

Promise<WorkflowSchedule>

Updated schedule


download() ​

download(projectIdOrName, outputDir, options?): Promise<{ filesExtracted: number; projectName: string; revision: string; }>

Download workflow project

Downloads a workflow project archive to a local directory

Parameters ​

projectIdOrName ​

string

Project ID or name

outputDir ​

string

Output directory path

options? ​

Download options

revision? ​

string

Returns ​

Promise<{ filesExtracted: number; projectName: string; revision: string; }>

Download result with project details

Throws ​

When the download operation fails

Example ​

typescript
// Download project by name
await workflow.download('my_project', './workflows');

// Download specific revision
await workflow.download('my_project', './workflows', {
  revision: 'v1.0.0'
});

enableSchedule() ​

enableSchedule(scheduleId, params?): Promise<WorkflowSchedule>

Enable a disabled workflow schedule

Parameters ​

scheduleId ​

string

Schedule ID

params? ​

EnableScheduleParams

Optional enable parameters

Returns ​

Promise<WorkflowSchedule>

Updated schedule


executeCloneProject() ​

executeCloneProject(preview): Promise<CloneWorkflowResult>

Execute a workflow clone

Parameters ​

preview ​

CloneWorkflowPreview

Preview result from prepareCloneProject()

Returns ​

Promise<CloneWorkflowResult>

Clone result with project details


executePushProject() ​

executePushProject(result): Promise<{ projectId: string; projectName: string; revision: string; }>

Execute push - create archive and upload

Parameters ​

result ​

PushWorkflowResult

Result from preparePushProject()

Returns ​

Promise<{ projectId: string; projectName: string; revision: string; }>

Upload result with project ID, name, and revision


getSchedule() ​

getSchedule(scheduleId): Promise<WorkflowSchedule>

Get a single workflow schedule by ID

Parameters ​

scheduleId ​

string

Schedule ID

Returns ​

Promise<WorkflowSchedule>

Schedule details


getWorkflow() ​

getWorkflow(workflow): Promise<Workflow>

Get a single workflow definition by project.workflow name.

Resolves the project first, then fetches just that workflow via Digdag's GET /api/projects/{id}/workflows/{name} — avoiding the bounded-page cost of listing every workflow in the project.

Parameters ​

workflow ​

string

Returns ​

Promise<Workflow>


kill() ​

kill(attemptId, reason?): Promise<string>

Kill a running attempt

Parameters ​

attemptId ​

string

Attempt ID to kill

reason? ​

string

Optional reason for killing

Returns ​

Promise<string>

Kill response message

Throws ​

When the kill operation fails

Example ​

typescript
await workflow.kill('67890');
await workflow.kill('67890', 'manual stop');

listProjectSchedules() ​

listProjectSchedules(projectIdOrName, options?): Promise<WorkflowSchedule[]>

List schedules for a single project

Parameters ​

projectIdOrName ​

string

Project ID or name (name is resolved to an ID)

options? ​

Optional workflow exact-name filter and limit

limit? ​

number

workflow? ​

string

Returns ​

Promise<WorkflowSchedule[]>

Array of workflow schedules in the project


listSchedules() ​

listSchedules(options?): Promise<WorkflowSchedule[]>

List workflow schedules

Parameters ​

options? ​

Optional limit (capped at MAX_PAGINATION_LIMIT)

limit? ​

number

Returns ​

Promise<WorkflowSchedule[]>

Array of workflow schedules


listSecrets() ​

listSecrets(projectIdOrName): Promise<{ projectName: string; secrets: object[]; }>

List secret keys for a project

Parameters ​

projectIdOrName ​

string

Project ID or name

Returns ​

Promise<{ projectName: string; secrets: object[]; }>

Project name and array of secret keys

Throws ​

When project is not found

Example ​

typescript
// List secrets by project name
const result = await workflow.listSecrets('my_project');
console.log(result.secrets); // [{ key: 'td.apikey' }, ...]

// List secrets by project ID
const result = await workflow.listSecrets('12345');

logFiles() ​

logFiles(attemptId, taskName?): Promise<LogFileHandle[]>

List log files for an attempt

Parameters ​

attemptId ​

string

Attempt ID

taskName? ​

string

Optional task name to filter by

Returns ​

Promise<LogFileHandle[]>

Array of log file handles with pre-signed S3 URLs

Throws ​

When the list operation fails

Example ​

typescript
// List all log files
const files = await workflow.logFiles('67890');

// Filter by task
const files = await workflow.logFiles('67890', '+step1');

logs() ​

logs(attemptId, taskName?): Promise<string>

Get log content for an attempt/task

Downloads and decompresses log files from pre-signed S3 URLs

Parameters ​

attemptId ​

string

Attempt ID

taskName? ​

string

Optional task name to filter by

Returns ​

Promise<string>

Decompressed log content as string

Throws ​

When the get operation fails

Example ​

typescript
// Get all logs for an attempt
const logs = await workflow.logs('67890');

// Get logs for a specific task
const logs = await workflow.logs('67890', '+step1');

prepareCloneProject() ​

prepareCloneProject(sourceDir, newProjectName, options?): Promise<CloneWorkflowPreview>

Prepare a workflow clone - check if target exists and gather info

Creates a preview of a clone operation without executing it. Use executeCloneProject() to perform the actual clone.

Parameters ​

sourceDir ​

string

Source directory containing workflow files

newProjectName ​

string

Name for the new project

options? ​

CloneWorkflowOptions

Clone options

Returns ​

Promise<CloneWorkflowPreview>

Clone preview with existence check

Example ​

typescript
// Check if clone would overwrite existing project
const preview = await workflow.prepareCloneProject('./workflows/my-project', 'my-project-staging');
if (preview.targetExists) {
  console.log('Warning: Project already exists!');
}

// Execute the clone
const result = await workflow.executeCloneProject(preview);

preparePushProject() ​

preparePushProject(options?): Promise<PushWorkflowResult>

Prepare workflow push (sync-style)

Calculates changes between local files and remote project. Returns the result without pushing - use executePushProject() to upload.

Parameters ​

options? ​

PushWorkflowOptions

Push options

Returns ​

Promise<PushWorkflowResult>

Push result with changes

Example ​

typescript
// Prepare push and preview changes
const result = await workflow.preparePushProject();
console.log(result.summary); // { new: 1, modified: 2, deleted: 0, unchanged: 3 }

// Execute the push
const uploaded = await workflow.executePushProject(result);
console.log(uploaded.revision);

projects() ​

projects(pattern?, options?): Promise<WorkflowProject[]>

List all workflow projects

Parameters ​

pattern? ​

string

Optional glob pattern to filter project names (supports * and ?)

options? ​

Pagination options

last_id? ​

string

limit? ​

number

Returns ​

Promise<WorkflowProject[]>

Paginated list of workflow projects

Throws ​

When the list operation fails

Example ​

typescript
// List all projects
const result = await workflow.projects();

// Filter by pattern
const result = await workflow.projects('cdp_segment_*');

// Paginate results
const result = await workflow.projects(undefined, { limit: 50 });

pullProject() ​

pullProject(projectIdOrName, options?): Promise<PullWorkflowResult>

Pull workflow project (sync-style)

Downloads a workflow project and calculates changes against local files. Returns the result without applying changes - use applyPullProject() to write files.

Parameters ​

projectIdOrName ​

string

Project ID or name

options? ​

PullWorkflowOptions

Pull options

Returns ​

Promise<PullWorkflowResult>

Pull result with changes

Example ​

typescript
// Pull project and preview changes
const result = await workflow.pullProject('my_project');
console.log(result.summary); // { new: 2, modified: 1, deleted: 0, unchanged: 5 }

// Apply the changes
await workflow.applyPullProject(result);

push() ​

push(projectDir, options?): Promise<{ projectId: string; projectName: string; revision: string; }>

Push workflow project

Pushes a local workflow project directory to Treasure AI

Parameters ​

projectDir ​

string

Project directory path

options? ​

Push options

clearSchedule? ​

string[]

clearScheduleAll? ​

boolean

projectName? ​

string

revision? ​

string

scheduleFrom? ​

string

skipValidation? ​

boolean

Returns ​

Promise<{ projectId: string; projectName: string; revision: string; }>

Push result with project details

Throws ​

When the push operation fails

Example ​

typescript
// Push project with auto-generated revision
await workflow.push('./my_project');

// Push with specific revision
await workflow.push('./my_project', {
  revision: 'v1.0.0'
});

// Push with project name override
await workflow.push('./my_project', {
  projectName: 'production_workflow',
  revision: '2025-01-11'
});

resolveProjectId() ​

resolveProjectId(projectIdOrName): Promise<{ id: string; name: string; }>

Resolve project name or ID to project ID and name

Always returns both ID and the actual project name. If given a numeric ID, fetches the project to get its name. If given a name, searches for the project and returns its ID.

Parameters ​

projectIdOrName ​

string

Project ID or name

Returns ​

Promise<{ id: string; name: string; }>

Project ID and name

Throws ​

When project is not found


retryAttempt() ​

retryAttempt(attemptId, options?): Promise<{ attemptId: string; sessionId: string; }>

Retry an attempt

Parameters ​

attemptId ​

string

Attempt ID to retry

options? ​

Retry options

force? ​

boolean

resumeFrom? ​

string

retryParams? ​

Record<string, unknown>

Returns ​

Promise<{ attemptId: string; sessionId: string; }>

Retry response with new session/attempt IDs

Throws ​

When the retry operation fails

Example ​

typescript
// Retry attempt
const result = await workflow.retryAttempt('67890');

// Resume from specific task
const result = await workflow.retryAttempt('67890', {
  resumeFrom: '+step2'
});

// Force retry with parameter override
const result = await workflow.retryAttempt('67890', {
  force: true,
  retryParams: { key: 'value' }
});

retrySession() ​

retrySession(sessionId, options?): Promise<{ attemptId: string; sessionId: string; }>

Retry a session

Parameters ​

sessionId ​

string

Session ID to retry

options? ​

Retry options

fromTask? ​

string

retryParams? ​

Record<string, unknown>

Returns ​

Promise<{ attemptId: string; sessionId: string; }>

Retry response with new session/attempt IDs

Throws ​

When the retry operation fails

Example ​

typescript
// Retry entire session
const result = await workflow.retrySession('12345');

// Resume from specific task
const result = await workflow.retrySession('12345', {
  fromTask: '+step2'
});

// Override parameters
const result = await workflow.retrySession('12345', {
  retryParams: { key: 'value' }
});

run() ​

run(workflow, params?, options?): Promise<StartAttemptResponse>

Start a workflow run

Parameters ​

workflow ​

string

Workflow identifier in format "project.workflow"

params? ​

Record<string, unknown> = {}

Workflow parameters

options? ​

Optional session time (defaults to now)

sessionTime? ​

string

Returns ​

Promise<StartAttemptResponse>

Started attempt information

Throws ​

When workflow format is invalid or workflow not found

Example ​

typescript
// Start with project.workflow format
const result = await workflow.run('myproject.myworkflow', { key: 'value' });

// Start with custom session time
const result = await workflow.run('myproject.myworkflow', { key: 'value' }, {
  sessionTime: '2023-08-17T18:56:24+09:00'
});

sessions() ​

sessions(options?): Promise<WorkflowSession[]>

List workflow sessions

Parameters ​

options? ​

Session filter and pagination options

fromTime? ​

string

last_id? ​

string

limit? ​

number

projectName? ​

string

status? ​

SessionStatus

toTime? ​

string

workflowName? ​

string

Returns ​

Promise<WorkflowSession[]>

Paginated list of sessions

Throws ​

When the list operation fails

Example ​

typescript
// List all sessions
const result = await workflow.sessions();

// List sessions for specific workflow
const result = await workflow.sessions({
  projectName: 'myproject',
  workflowName: 'daily_etl'
});

// Filter by status
const result = await workflow.sessions({ status: 'error' });

setSecret() ​

setSecret(projectIdOrName, key, value): Promise<{ key: string; projectName: string; }>

Set a secret for a project

Parameters ​

projectIdOrName ​

string

Project ID or name

key ​

string

Secret key

value ​

string

Secret value

Returns ​

Promise<{ key: string; projectName: string; }>

Project name and secret key

Throws ​

When project is not found

Example ​

typescript
// Set secret by project name
await workflow.setSecret('my_project', 'td.apikey', 'xxx');

// Set secret by project ID
await workflow.setSecret('12345', 'db.password', 'secret');

setSecrets() ​

setSecrets(projectIdOrName, secrets): Promise<{ keys: string[]; projectName: string; }>

Set multiple secrets for a project from a key-value map

Parameters ​

projectIdOrName ​

string

Project ID or name

secrets ​

Record<string, string>

Map of secret key-value pairs

Returns ​

Promise<{ keys: string[]; projectName: string; }>

Project name and array of set keys

Throws ​

When project is not found


tasks() ​

tasks(attemptId, includeSubtasks?): Promise<WorkflowTask[]>

Get tasks for an attempt

Parameters ​

attemptId ​

string

Attempt ID

includeSubtasks? ​

boolean = false

Whether to include subtasks

Returns ​

Promise<WorkflowTask[]>

Array of workflow tasks

Throws ​

When the get operation fails

Example ​

typescript
const tasks = await workflow.tasks('67890');
const allTasks = await workflow.tasks('67890', true); // Include subtasks

workflows() ​

workflows(projectName?, options?): Promise<Workflow[]>

List workflows (optionally filtered by project)

Parameters ​

projectName? ​

string

Optional project name to filter by

options? ​

Pagination options

last_id? ​

string

limit? ​

number

Returns ​

Promise<Workflow[]>

Paginated list of workflows

Throws ​

When the list operation fails

Example ​

typescript
// List all workflows
const result = await workflow.workflows();

// List workflows for a specific project
const result = await workflow.workflows('myproject');