AI Foundry Pipeline Job

The AI Foundry Pipeline Job job type submits an Azure Machine Learning Pipeline job in an Azure AI Foundry workspace. Polysync clones a template Pipeline's definition (the jobs / settings blocks) and submits a new job whose inputs are overridden by the Polysync parameter values. The template Pipeline is identified by its job name — Polysync stores that in the External Id.

This job type is supported on the Azure AI Foundry platform.

Required job fields

  • External Id — the template ML Pipeline job's name.
  • Job TypeAI Foundry Pipeline Job (set automatically on import).

Job discovery

GET /jobs?api-version=2024-10-01&$filter=jobType eq 'Pipeline'&$top=200

(scoped to the workspace ARM URL). Each returned name, properties.displayName, and properties.description becomes a Polysync Job.

Parameter handling

Input + Input&Output parameter values are sent as the inputs block. Each value is wrapped as { value, type: "literal" } (the only ML job input shape Polysync supports — literals, not data assets):

{
  "properties": {
    "jobType": "Pipeline",
    "displayName": "<polysync-name>",
    "computeId": "<from-template-or-attr>",
    "jobs": { "...": "(copied from template)" },
    "settings": { "...": "(copied from template)" },
    "inputs": {
      "<name>": { "value": <typed-value>, "type": "literal" }
    }
  }
}
Direction Sent in inputs Updated from properties.outputs
Input
Output
Input&Output

On completion, Polysync reads the job's properties.outputs and writes any matching Output / Input&Output parameter back to the Polysync RunParameters.

Execution flow

  1. Polysync reads the template via GET /jobs/{externalId}, then PUT /jobs/{newJobName} with the cloned + overlaid body.

  2. The new name becomes the Polysync RunId.

  3. Status is polled via GET /jobs/{runId} and decoded from properties.status:

    Azure ML status Polysync status
    notstarted / starting / provisioning / preparing / queued Starting
    running / finalizing Running
    completed Success
    failed Failed
    canceled Cancelled
    (other) Unknown

    Start / end timestamps come from properties.startTime / properties.endTime; failure detail from properties.error.message.

  4. Cancel is supported via POST /jobs/{runId}/cancel.

Monitor URL

https://ml.azure.com/runs/{runId}
  ?wsid=/subscriptions/{subId}/resourceGroups/{rg}
   /providers/Microsoft.MachineLearningServices/workspaces/{workspaceName}

Best practices

  • Keep the template Pipeline minimal — Polysync clones jobs and settings verbatim, so a working template makes for working clones.
  • Declare your Pipeline inputs block in the template so the Polysync importer (and overlay logic) can map parameter names 1:1.
  • For data-asset inputs that Polysync should not override, leave them out of the Polysync parameter list — only Input parameters are sent in inputs.

Troubleshooting

  • InputNotFound on submit — the parameter name doesn't exist on the template's inputs. Add the input to the template or rename the Polysync parameter.
  • Status failed with empty message — Azure ML hides some errors in the run's child jobs; open the Monitor URL to inspect the pipeline graph.