Moves a job into a different folder, or to the root (no folder) by passing null.
Having trouble reaching the API, or logging in from another machine? See Network Access & Authentication Security -- by default the Api only answers
localhost, and PowerShell needs an extra flag once it does answer elsewhere.
Order of Operations
- Authenticate to the API.
- Get the job's id (by name or from the list).
- Send the destination folder.
The call
PATCH /api/jobs/{jobId}/folder
Permission needed: Job.Edit on this job. (This checks only the job itself, not the destination folder.)
C# example
var jsonOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web);
// Step 1: Authenticate to the API.
using var handler = new HttpClientHandler { UseDefaultCredentials = true };
using var client = new HttpClient(handler) { BaseAddress = new Uri("http://your-minion-agent-server:5443") };
client.DefaultRequestHeaders.Add("X-App-Name", "MyIntegration");
// Step 2: Get the job's id by name.
var jobName = Uri.EscapeDataString("Nightly ETL Load");
var job = await (await client.GetAsync($"/api/jobs/by-name/{jobName}")).Content.ReadFromJsonAsync<JobRef>(jsonOptions);
// Step 3: Send the destination folder (null moves it to the root).
var response = await client.PatchAsJsonAsync($"/api/jobs/{job!.JobID}/folder", new MoveRequest(FolderId: 5), jsonOptions);
response.EnsureSuccessStatusCode();
Console.WriteLine("Moved.");
record JobRef(int JobID);
record MoveRequest(int? FolderId);
Not on a domain machine? Swap in the app-account login from Calling the API From Your Own Code.
PowerShell example
# Step 1: Authenticate to the API.
$headers = @{ "X-App-Name" = "MyIntegration" }
# Step 2: Get the job's id by name. (-AllowUnencryptedAuthentication: PowerShell requires this for Windows auth over plain http to anything but localhost -- see "Network Access & Authentication Security".)
$jobName = [Uri]::EscapeDataString("Nightly ETL Load")
$job = Invoke-RestMethod -Uri "http://your-minion-agent-server:5443/api/jobs/by-name/$jobName" -UseDefaultCredentials -AllowUnencryptedAuthentication -Headers $headers
# Step 3: Send the destination folder (null moves it to the root).
$body = @{ FolderId = 5 } | ConvertTo-Json
Invoke-RestMethod -Uri "http://your-minion-agent-server:5443/api/jobs/$($job.jobID)/folder" `
-Method Patch -Body $body -ContentType "application/json" -UseDefaultCredentials -AllowUnencryptedAuthentication -Headers $headers
"Moved."
What you get back
204 No Content -- no body.
Codes this call can return
See API Response Codes for what each one means in general. For this specific call:
- 204 -- moved.
- 403 -- you don't have
Job.Editon this job.
Neither the job id nor the destination folder id is checked for existence -- passing a bad id for either still returns 204.
See also: Get a Job.