Documentation Index
Fetch the complete documentation index at: https://docs.hotglue.com/llms.txt
Use this file to discover all available pages before exploring further.
Programmatically view, clone, and manage jobs using the commands below.
Jobs Download
Description
Clones a remote job to your local machine, under a new directory with the name of the job_id.
Sample
$ hotglue jobs download <job_root>
✔ Finished: Verifying user and authorizing.
✔ Finished: Scanning for downloadable files.
┌─────────────────────────────────────────────────┬─────────┬──────────────────────┐
│ File │ Size │ LastModified │
├─────────────────────────────────────────────────┼─────────┼──────────────────────┤
│ job-details.json │ 571 │ 2/9/2022, 6:29:30 PM │
├─────────────────────────────────────────────────┼─────────┼──────────────────────┤
│ sync-output/products-20220209T222727.csv │ 3226419 │ 2/9/2022, 5:27:34 PM │
└─────────────────────────────────────────────────┴─────────┴──────────────────────┘
✔ Finished: Downloading file: default/flows/bTHIweD0W/jobs/2022/02/2/09/22/KfKW1X/job-details.json.
✔ Finished: Downloading file: default/flows/bTHIweD0W/jobs/2022/02/2/09/22/KfKW1X/sync-output/products-20220209T222727.csv.
Parameters
| Option | Description |
|---|
job_root | The s3_root (known as the job root) of the job to clone. Can be found in Job Details or in the URL of the hotglue job page. |
The job root is of the form: tenant_id/flows/flow_id/jobs/2025/01/1/01/01/job_id
Jobs List
Description
Lists the most recent jobs in the hotglue environment for a specific tenant/flow in chronological order.
Sample
$ hotglue jobs list
✔ Finished: Retrieving jobs for environment: dev.hotglue.acme.com flow: bTHIweD0W tenant: default....
┌────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ name │ details │
├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ test:H3XnhScoo │ { │
│ │ "job_id": "KfKW1X", │
│ │ "env_id": "dev.hotglue.acme.com", │
│ │ "flow_id": "bTHIweD0W", │
│ │ "job_name": "test:H3XnhScoo", │
│ │ "tenant": "default", │
│ │ "started_by": "default", │
│ │ "s3_root": "default/flows/bTHIweD0W/jobs/2022/02/2/09/22/KfKW1X", │
│ │ "start_time": "2022-02-09T22:22:19.173879+00:00", │
│ │ "state": {}, │
│ │ "tap": "cin7", │
│ │ "status": "JOB_COMPLETED", │
│ │ "scheduled_job": false, │
│ │ "message": "Status for Job (KfKW1X) was updated to JobStatus.JOB_COMPLETED; (flow: bTHIweD0W) ", │
│ │ "task_id": "864256547fa34584aa61d46eac0d08c5", │
│ │ "last_updated": "2022-02-09T23:29:29.791107+00:00", │
│ │ "processed_rows": 0 │
│ │ } │
├────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
Parameters
| Option | Default | Description |
|---|
--count | 5 | Number of jobs to return. Defaults to 5. |
--tenant | | |
-u | default | Tenant Id to query jobs for. Defaults to default, the admin user. |
--env | | |
-e | | Environment Id to query jobs for. |
Jobs Bulk Run
Description
Runs multiple jobs in bulk from a JSON file. The command reads a JSON file containing an array of job configurations, validates each job, checks flow versions, and runs all jobs in parallel. Results are displayed in a table format with a summary of successes and failures.
Sample
$ hotglue jobs bulk-run --file ./jobs.json
✔ Finished: Reading jobs file: ./jobs.json.
✔ Finished: Checking flow versions....
✔ Finished: Running 3 job(s)....
┌───────┬──────────┬─────────┬─────────┬────────────────────────────────────────────────────────────┐
│ Index │ Flow │ Tenant │ Status │ Response/Error │
├───────┼──────────┼─────────┼─────────┼────────────────────────────────────────────────────────────┤
│ 0 │ bTHIweD0W│ default │ SUCCESS │ { │
│ │ │ │ │ "job_id": "KfKW1X", │
│ │ │ │ │ "status": "JOB_STARTED" │
│ │ │ │ │ } │
├───────┼──────────┼─────────┼─────────┼────────────────────────────────────────────────────────────┤
│ 1 │ cXYZ1234 │ default │ SUCCESS │ { │
│ │ │ │ │ "job_id": "AbC123", │
│ │ │ │ │ "status": "JOB_STARTED" │
│ │ │ │ │ } │
├───────┼──────────┼─────────┼─────────┼────────────────────────────────────────────────────────────┤
│ 2 │ dEFG5678 │ tenant1 │ FAILED │ { │
│ │ │ │ │ "statusCode": 404, │
│ │ │ │ │ "statusText": "Not Found", │
│ │ │ │ │ "message": "Flow not found" │
│ │ │ │ │ } │
└───────┴──────────┴─────────┴─────────┴────────────────────────────────────────────────────────────┘
Summary: 2 succeeded, 1 failed out of 3 total.
Example JSON file format (jobs.json):
[
{
"flow": "bTHIweD0W",
"tenant": "tenant1",
"tap": "salesforce"
},
{
"flow": "cXYZ1234",
"tenant": "tenant2",
"tap": "salesforce",
"override_start_date": "2023-11-07T05:31:56Z"
},
{
"flow": "dEFG5678",
"tenant": "tenant3",
"tap": "quickbooks",
"job_name": "test-job"
}
]
Parameters
| Option | Description |
|---|
--file -f | Required. Path to JSON file containing an array of job objects to run. Each job object must include flow and tenant fields. Additional job arguments can be included and will be passed to the body of the job trigger endpoint. |
Jobs Bulk Kill
Description
Kills multiple running jobs in bulk. The command fetches jobs from the last month with statuses JOB_CREATED, SYNC_STARTED, SYNC_SUCCESS, ETL_STARTED, ETL_SUCCESS, or EXPORT_STARTED, optionally filters them by tenant IDs and/or flow IDs, and kills all matching jobs in parallel. Results are displayed in a table format with a summary of successes and failures.
Sample
$ hotglue jobs bulk-kill --tenant-ids tenant1,tenant2 --flow-ids bTHIweD0W --reason "Maintenance"
✔ Found 5 job(s) with specified status.
✔ Finished: Killing 5 job(s)....
┌───────┬──────────┬─────────┬──────────────────────────────────────────────────────┬─────────┬────────────────────────────────────────────────────────────┐
│ Index │ Flow │ Tenant │ Job Root │ Status │ Response/Error │
├───────┼──────────┼─────────┼──────────────────────────────────────────────────────┼─────────┼────────────────────────────────────────────────────────────┤
│ 0 │ bTHIweD0W│ tenant1 │ tenant1/flows/bTHIweD0W/jobs/2025/01/1/01/01/KfKW1X │ SUCCESS │ { │
│ │ │ │ │ │ "status": "JOB_KILLED" │
│ │ │ │ │ │ } │
├───────┼──────────┼─────────┼──────────────────────────────────────────────────────┼─────────┼────────────────────────────────────────────────────────────┤
│ 1 │ bTHIweD0W│ tenant2 │ tenant2/flows/bTHIweD0W/jobs/2025/01/1/01/02/AbC123 │ SUCCESS │ { │
│ │ │ │ │ │ "status": "JOB_KILLED" │
│ │ │ │ │ │ } │
├───────┼──────────┼─────────┼──────────────────────────────────────────────────────┼─────────┼────────────────────────────────────────────────────────────┤
│ 2 │ bTHIweD0W│ tenant1 │ tenant1/flows/bTHIweD0W/jobs/2025/01/1/01/03/dEF567 │ FAILED │ { │
│ │ │ │ │ │ "statusCode": 404, │
│ │ │ │ │ │ "statusText": "Not Found", │
│ │ │ │ │ │ "message": "Job not found" │
│ │ │ │ │ │ } │
└───────┴──────────┴─────────┴──────────────────────────────────────────────────────┴─────────┴────────────────────────────────────────────────────────────┘
Summary: 2 succeeded, 1 failed out of 3 total.
Parameters
| Option | Description |
|---|
--tenant-ids --tenants | Comma-separated list of tenant IDs to filter jobs by. Only jobs belonging to these tenants will be killed. If not provided, all matching jobs will be considered. |
--flow-ids | |
--flows | Comma-separated list of flow IDs to filter jobs by. Only jobs for these flows will be killed. If not provided, all matching jobs will be considered. |
--reason | Optional reason for killing the jobs. This reason will be included in the kill request for all jobs. |
Jobs Bulk Retrigger
Description
Retriggers multiple jobs in bulk from a JSON file containing job roots. The command reads a JSON file containing an array of job root strings, groups them by tenant and flow, and retriggers jobs with parallel processing across groups and sequential processing within each group. For each group, the command waits for a job to complete before retriggering the next job in that group. Results are displayed in a table format with a summary of successes and failures.
Sample
$ hotglue jobs bulk-retrigger --file ./jobRoots.json
✔ Finished: Reading jobRoots file: ./jobRoots.json.
Found 5 jobRoot(s) grouped into 2 tenant/flow group(s).
✔ Finished: Retriggering 5 job(s) across 2 group(s)....
┌─────────┬──────────┬──────────────────────────────────────────────────────┬─────────┬────────────────────────────────────────────────────────────┐
│ Tenant │ Flow │ Job Root │ Status │ Response/Error │
├─────────┼──────────┼──────────────────────────────────────────────────────┼─────────┼────────────────────────────────────────────────────────────┤
│ tenant1 │ bTHIweD0W│ tenant1/flows/bTHIweD0W/jobs/2025/01/1/01/01/KfKW1X│ SUCCESS │ { │
│ │ │ │ │ "job_id": "KfKW1X", │
│ │ │ │ │ "status": "JOB_STARTED" │
│ │ │ │ │ } │
├─────────┼──────────┼──────────────────────────────────────────────────────┼─────────┼────────────────────────────────────────────────────────────┤
│ tenant1 │ bTHIweD0W│ tenant1/flows/bTHIweD0W/jobs/2025/01/1/01/02/AbC123 │ SUCCESS │ { │
│ │ │ │ │ "job_id": "AbC123", │
│ │ │ │ │ "status": "JOB_STARTED" │
│ │ │ │ │ } │
├─────────┼──────────┼──────────────────────────────────────────────────────┼─────────┼────────────────────────────────────────────────────────────┤
│ tenant2 │ cXYZ1234 │ tenant2/flows/cXYZ1234/jobs/2025/01/1/01/03/dEF567 │ FAILED │ { │
│ │ │ │ │ "statusCode": 404, │
│ │ │ │ │ "statusText": "Not Found", │
│ │ │ │ │ "message": "Job not found" │
│ │ │ │ │ } │
└─────────┴──────────┴──────────────────────────────────────────────────────┴─────────┴────────────────────────────────────────────────────────────┘
Summary: 2 succeeded, 1 failed out of 3 total.
Example JSON file format (jobRoots.json):
[
"tenant1/flows/bTHIweD0W/jobs/2025/01/1/01/01/KfKW1X",
"tenant1/flows/bTHIweD0W/jobs/2025/01/1/01/02/AbC123",
"tenant2/flows/cXYZ1234/jobs/2025/01/1/01/03/dEF567"
]
Parameters
| Option | Description |
|---|
--file -f | Required. Path to JSON file containing an array of job root strings to retrigger. Each job root must follow the format: {tenantId}/flows/{flowId}/jobs/.... Jobs are automatically grouped by tenant and flow, and processed sequentially within each group (waiting for completion) while groups are processed in parallel. |