Sets who to reach if this job needs to be stopped or is causing a problem -- name, email, phone. All three fields are optional; send null for any you want cleared.

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

  1. Authenticate to the API.
  2. Get the job's id (by name or from the list).
  3. Send the new contact info.

The call

PATCH /api/jobs/{jobId}/contact

Permission needed: Job.Edit on this job.

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 new contact info.
var contact = new UpdateContactRequest(ContactName: "Data Team", ContactEmail: "data-team@example.com", ContactPhone: null);
var response = await client.PatchAsJsonAsync($"/api/jobs/{job!.JobID}/contact", contact, jsonOptions);
response.EnsureSuccessStatusCode();
Console.WriteLine("Updated.");

record JobRef(int JobID);
record UpdateContactRequest(string? ContactName, string? ContactEmail, string? ContactPhone);

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 new contact info.
$body = @{ ContactName = "Data Team"; ContactEmail = "data-team@example.com"; ContactPhone = $null } | ConvertTo-Json
Invoke-RestMethod -Uri "http://your-minion-agent-server:5443/api/jobs/$($job.jobID)/contact" `
    -Method Patch -Body $body -ContentType "application/json" -UseDefaultCredentials -AllowUnencryptedAuthentication -Headers $headers

"Updated."

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 -- updated.
  • 403 -- you don't have Job.Edit on this job.

See also: Get a Job.